void cIncListInterv::AddInterv(const cIncIntervale & anInterv,bool CanOverlap) { if (anInterv.Sz()==0 ) return; for (tCSetIII anIt = mMap.begin() ; anIt!= mMap.end() ; anIt++) { ELISE_ASSERT ( anIt->Id() != anInterv.Id(), "Ambiguous Key in cIncListInterv::AddInterv" ); if (CanOverlap) mMayOverlap = true; else { ELISE_ASSERT ( ! (anInterv.Overlap(*anIt)), "Overlapping interval in cIncListInterv::AddInterv" ); } } mMap.insert(anInterv); ElSetMin(mI0Min,anInterv.I0Alloc()); ElSetMax(mI1Max,anInterv.I1Alloc()); mSurf += anInterv.Sz(); }
/* class cIdIntCmp { public : bool operator()(const cIncIntervale & anII1,const cIncIntervale & anII2) const { return anII1.Id() < anII2.Id(); } }; class cMapIncInterv : public std::set<cIncIntervale,cIdIntCmp> { }; */ bool cIdIntCmp::operator()(const cIncIntervale & anII1,const cIncIntervale & anII2) const { return anII1.Id() < anII2.Id(); }