示例#1
0
void cIncListInterv::ResetInterv(const cIncIntervale & anInterv)
{
   mMayOverlap = true;
   ELISE_ASSERT
   (
        anInterv.I1Alloc()<=mI1Max,
        "Increase I1max in cIncListInterv::ResetInterv"
    );

   cIncIntervale & It = const_cast<cIncIntervale &>
	                (cIncListInterv::FindEquiv(anInterv));
   It.SetI0I1Alloc(anInterv.I0Alloc(),anInterv.I1Alloc());
}
示例#2
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();
}
示例#3
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();
}
cSsBloc cSetEqFormelles::GetBlocOfI0Alloc(const cIncIntervale & anI) const
{
   // NO::BlocSetInt
   return GetBlocOfI0Alloc(anI.I0Alloc(),anI.I1Alloc());
}