21 #ifndef ABC__misc__vec__vecWec_h 
   22 #define ABC__misc__vec__vecWec_h 
   55 #define Vec_WecForEachLevel( vGlob, vVec, i )                                              \ 
   56     for ( i = 0; (i < Vec_WecSize(vGlob)) && (((vVec) = Vec_WecEntry(vGlob, i)), 1); i++ ) 
   57 #define Vec_WecForEachLevelVec( vLevels, vGlob, vVec, i )                                  \ 
   58     for ( i = 0; (i < Vec_IntSize(vLevels)) && (((vVec) = Vec_WecEntry(vGlob, Vec_IntEntry(vLevels, i))), 1); i++ ) 
   59 #define Vec_WecForEachLevelStart( vGlob, vVec, i, LevelStart )                             \ 
   60     for ( i = LevelStart; (i < Vec_WecSize(vGlob)) && (((vVec) = Vec_WecEntry(vGlob, i)), 1); i++ ) 
   61 #define Vec_WecForEachLevelStop( vGlob, vVec, i, LevelStop )                               \ 
   62     for ( i = 0; (i < LevelStop) && (((vVec) = Vec_WecEntry(vGlob, i)), 1); i++ ) 
   63 #define Vec_WecForEachLevelStartStop( vGlob, vVec, i, LevelStart, LevelStop )              \ 
   64     for ( i = LevelStart; (i < LevelStop) && (((vVec) = Vec_WecEntry(vGlob, i)), 1); i++ ) 
   65 #define Vec_WecForEachLevelReverse( vGlob, vVec, i )                                       \ 
   66     for ( i = Vec_WecSize(vGlob)-1; (i >= 0) && (((vVec) = Vec_WecEntry(vGlob, i)), 1); i-- ) 
   67 #define Vec_WecForEachLevelReverseStartStop( vGlob, vVec, i, LevelStart, LevelStop )       \ 
   68     for ( i = LevelStart-1; (i >= LevelStop) && (((vVec) = Vec_WecEntry(vGlob, i)), 1); i-- ) 
   69 #define Vec_WecForEachLevelTwo( vGlob1, vGlob2, vVec1, vVec2, i )                          \ 
   70     for ( i = 0; (i < Vec_WecSize(vGlob1)) && (((vVec1) = Vec_WecEntry(vGlob1, i)), 1) && (((vVec2) = Vec_WecEntry(vGlob2, i)), 1); i++ ) 
   91     if ( nCap > 0 && nCap < 8 )
 
  119     if ( p->nCap >= nCapMin )
 
  122     memset( p->pArray + p->nCap, 0, 
sizeof(
Vec_Int_t) * (nCapMin - p->nCap) );
 
  144     assert( i >= 0 && i < p->nSize );
 
  145     return p->pArray + i;
 
  150     return p->pArray + p->nSize - 1;
 
  174     assert( p->pArray <= vLevel && vLevel < p->pArray + p->nSize );
 
  175     return vLevel - p->pArray;
 
  199     assert( i >= 0 && i < p->nSize );
 
  240     assert( p->nSize >= nSizeNew );
 
  277     if ( p->nSize < Level + 1 )
 
  280         p->nSize = Level + 1;
 
  286     if ( p->nSize == p->nCap )
 
  312     if ( p == NULL )  
return 0.0;
 
  314     for ( i = 0; i < p->nSize; i++ )
 
  339     for ( i = 0; i < p->nCap; i++ )
 
  371     if ( p->nSize < Level + 1 )
 
  430         qsort( (
void *)p->pArray, p->nSize, 
sizeof(
Vec_Int_t), 
 
  433         qsort( (
void *)p->pArray, p->nSize, 
sizeof(
Vec_Int_t), 
 
  468         qsort( (
void *)p->pArray, p->nSize, 
sizeof(
Vec_Int_t), 
 
  471         qsort( (
void *)p->pArray, p->nSize, 
sizeof(
Vec_Int_t), 
 
  505         qsort( (
void *)p->pArray, p->nSize, 
sizeof(
Vec_Int_t), 
 
  508         qsort( (
void *)p->pArray, p->nSize, 
sizeof(
Vec_Int_t), 
 
  531         printf( 
" %4d : {", i );
 
  533             printf( 
" %d", Entry );
 
  682             vCubes->pArray[k++] = *vCube;
 
static void Vec_WecShrink(Vec_Wec_t *p, int nSizeNew)
static void Vec_WecRemoveEmpty(Vec_Wec_t *vCubes)
static void Vec_WecSort(Vec_Wec_t *p, int fReverse)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///. 
static int Vec_WecLevelSize(Vec_Wec_t *p, int i)
static Vec_Wec_t * Vec_WecAlloc(int nCap)
FUNCTION DEFINITIONS ///. 
static void Vec_WecSortByLastInt(Vec_Wec_t *p, int fReverse)
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///. 
static Vec_Int_t * Vec_WecCollectFirsts(Vec_Wec_t *p)
static Vec_Int_t * Vec_IntDup(Vec_Int_t *pVec)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///. 
static Vec_Ptr_t * Vec_WecConvertToVecPtr(Vec_Wec_t *p)
#define ABC_REALLOC(type, obj, num)
static void Vec_WecFree(Vec_Wec_t *p)
static void Vec_WecMarkLevels(Vec_Wec_t *vCubes, Vec_Int_t *vLevels)
static int Vec_WecSortCompare6(Vec_Int_t *p1, Vec_Int_t *p2)
static Vec_Wec_t * Vec_WecStart(int nSize)
static double Vec_WecMemory(Vec_Wec_t *p)
static Vec_Int_t * Vec_WecPushLevel(Vec_Wec_t *p)
static void Vec_WecUnmarkLevels(Vec_Wec_t *vCubes, Vec_Int_t *vLevels)
static int Vec_WecSortCompare2(Vec_Int_t *p1, Vec_Int_t *p2)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
#define ABC_ALLOC(type, num)
static int Vec_WecSizeUsed(Vec_Wec_t *p)
static int Abc_MaxInt(int a, int b)
static int Vec_WecSize(Vec_Wec_t *p)
static int Vec_WecCap(Vec_Wec_t *p)
static void Vec_WecZero(Vec_Wec_t *p)
static void Vec_WecClear(Vec_Wec_t *p)
#define Vec_WecForEachLevelStartStop(vGlob, vVec, i, LevelStart, LevelStop)
static void Vec_IntZero(Vec_Int_t *p)
#define Vec_WecForEachLevel(vGlob, vVec, i)
MACRO DEFINITIONS ///. 
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///. 
static void Vec_WecErase(Vec_Wec_t *p)
static int Vec_IntEntry(Vec_Int_t *p, int i)
static int Vec_IntFindMax(Vec_Int_t *p)
static int Vec_WecEntryEntry(Vec_Wec_t *p, int i, int k)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///. 
static Vec_Wec_t * Vec_WecDup(Vec_Wec_t *p)
static int Vec_IntCap(Vec_Int_t *p)
static void Vec_WecPrint(Vec_Wec_t *p, int fSkipSingles)
static void Vec_WecIntSetMark(Vec_Int_t *vVec)
#define ABC_NAMESPACE_HEADER_END
static int Vec_WecSortCompare4(Vec_Int_t *p1, Vec_Int_t *p2)
static Vec_Int_t * Vec_WecArray(Vec_Wec_t *p)
#define Vec_WecForEachLevelVec(vLevels, vGlob, vVec, i)
static Vec_Int_t * Vec_WecEntry(Vec_Wec_t *p, int i)
static int Vec_IntEntryLast(Vec_Int_t *p)
static int Vec_WecSortCompare3(Vec_Int_t *p1, Vec_Int_t *p2)
static int Vec_IntSize(Vec_Int_t *p)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///. 
static Vec_Int_t * Vec_WecEntryLast(Vec_Wec_t *p)
static void Vec_WecPushUnique(Vec_Wec_t *p, int Level, int Entry)
static int Vec_WecLevelId(Vec_Wec_t *p, Vec_Int_t *vLevel)
static void Vec_WecIntXorMark(Vec_Int_t *vVec)
static int Vec_WecIntHasMark(Vec_Int_t *vVec)
static void Vec_WecGrow(Vec_Wec_t *p, int nCapMin)
#define ABC_CALLOC(type, num)
static void Vec_WecFreeP(Vec_Wec_t **p)
static int Vec_WecSortCompare5(Vec_Int_t *p1, Vec_Int_t *p2)
static int Vec_WecCountNonTrivial(Vec_Wec_t *p, int *pnUsed)
static int Vec_IntPushUnique(Vec_Int_t *p, int Entry)
static void Vec_IntClear(Vec_Int_t *p)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///. 
static void Vec_WecSortByFirstInt(Vec_Wec_t *p, int fReverse)
static int Vec_WecSizeUsedLimits(Vec_Wec_t *p, int iStart, int iStop)
static int Vec_WecSortCompare1(Vec_Int_t *p1, Vec_Int_t *p2)
static Vec_Wec_t * Vec_WecCreateClasses(Vec_Int_t *vMap)
static int Vec_WecSizeSize(Vec_Wec_t *p)
static void Vec_WecInit(Vec_Wec_t *p, int nSize)
static void Vec_WecPush(Vec_Wec_t *p, int Level, int Entry)