package es.tid.pce.computingEngine.algorithms.wson.wa;
import java.util.List;
import es.tid.ospf.ospfv2.lsa.tlv.subtlv.complexFields.BitmapLabelSet;
import es.tid.tedb.IntraDomainEdge;
public class FirstFit {
public FirstFit(){
}
public static int getLambda(List<IntraDomainEdge> edge_list){
int max_lambdas=((BitmapLabelSet)edge_list.get(0).getTE_info().getAvailableLabels().getLabelSet()).getNumLabels();
int num_bytes=((BitmapLabelSet)edge_list.get(0).getTE_info().getAvailableLabels().getLabelSet()).getBytesBitMap().length;
byte [] bitmap=new byte[num_bytes];
for (int i=0;i<num_bytes;++i){
bitmap[i]=(byte)(((BitmapLabelSet)edge_list.get(0).getTE_info().getAvailableLabels().getLabelSet()).getBytesBitMap()[i]|((BitmapLabelSet)edge_list.get(0).getTE_info().getAvailableLabels().getLabelSet()).getBytesBitmapReserved()[i]);
}
for (int j=1;j<edge_list.size();++j){
for (int i=0;i<num_bytes;++i){
bitmap[i]=(byte)(bitmap[i] | (((BitmapLabelSet)edge_list.get(j).getTE_info().getAvailableLabels().getLabelSet()).getBytesBitMap()[i]|((BitmapLabelSet)edge_list.get(j).getTE_info().getAvailableLabels().getLabelSet()).getBytesBitmapReserved()[i]));
}
}
for (int i=0; i<max_lambdas;++i){
int num_byte=i/8;
if ( (bitmap[num_byte]&(0x80>>>(i%8)))==0){
return i;
}
}
return -1;
}
}