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)