예제 #1
0
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();
}
예제 #2
0
/*
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();
}