36static inline int Aig_FanoutCreate(
int FanId,
int Num ) {
assert( Num < 2 );
return (FanId << 1) | Num; }
37static inline int * Aig_FanoutObj(
int * pData,
int ObjId ) {
return pData + 5*ObjId; }
38static inline int * Aig_FanoutPrev(
int * pData,
int iFan ) {
return pData + 5*(iFan >> 1) + 1 + (iFan & 1); }
39static inline int * Aig_FanoutNext(
int * pData,
int iFan ) {
return pData + 5*(iFan >> 1) + 3 + (iFan & 1); }
60 assert( Aig_ManBufNum(
p) == 0 );
63 p->nFansAlloc = 2 * Aig_ManObjNumMax(
p);
64 if (
p->nFansAlloc < (1<<12) )
65 p->nFansAlloc = (1<<12);
67 memset(
p->pFanData, 0,
sizeof(
int) * 5 *
p->nFansAlloc );
71 if ( Aig_ObjChild0(pObj) )
73 if ( Aig_ObjChild1(pObj) )
109 int iFan, * pFirst, * pPrevC, * pNextC, * pPrev, * pNext;
111 assert( !Aig_IsComplement(pObj) && !Aig_IsComplement(pFanout) );
113 if ( pObj->
Id >=
p->nFansAlloc || pFanout->
Id >=
p->nFansAlloc )
115 int nFansAlloc = 2 * Abc_MaxInt( pObj->
Id, pFanout->
Id );
116 p->pFanData =
ABC_REALLOC(
int,
p->pFanData, 5 * nFansAlloc );
117 memset(
p->pFanData + 5 *
p->nFansAlloc, 0,
sizeof(
int) * 5 * (nFansAlloc -
p->nFansAlloc) );
118 p->nFansAlloc = nFansAlloc;
120 assert( pObj->
Id <
p->nFansAlloc && pFanout->
Id <
p->nFansAlloc );
121 iFan = Aig_FanoutCreate( pFanout->
Id, Aig_ObjWhatFanin(pFanout, pObj) );
122 pPrevC = Aig_FanoutPrev(
p->pFanData, iFan );
123 pNextC = Aig_FanoutNext(
p->pFanData, iFan );
124 pFirst = Aig_FanoutObj(
p->pFanData, pObj->
Id );
133 pPrev = Aig_FanoutPrev(
p->pFanData, *pFirst );
134 pNext = Aig_FanoutNext(
p->pFanData, *pPrev );
135 assert( *pNext == *pFirst );
156 int iFan, * pFirst, * pPrevC, * pNextC, * pPrev, * pNext;
157 assert(
p->pFanData && pObj->
Id <
p->nFansAlloc && pFanout->
Id <
p->nFansAlloc );
158 assert( !Aig_IsComplement(pObj) && !Aig_IsComplement(pFanout) );
160 iFan = Aig_FanoutCreate( pFanout->
Id, Aig_ObjWhatFanin(pFanout, pObj) );
161 pPrevC = Aig_FanoutPrev(
p->pFanData, iFan );
162 pNextC = Aig_FanoutNext(
p->pFanData, iFan );
163 pPrev = Aig_FanoutPrev(
p->pFanData, *pNextC );
164 pNext = Aig_FanoutNext(
p->pFanData, *pPrevC );
167 pFirst = Aig_FanoutObj(
p->pFanData, pObj->
Id );
169 if ( *pFirst == iFan )
171 if ( *pNextC == iFan )
#define ABC_ALLOC(type, num)
#define ABC_REALLOC(type, obj, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_ManFanoutStart(Aig_Man_t *p)
FUNCTION DEFINITIONS ///.
void Aig_ManFanoutStop(Aig_Man_t *p)
void Aig_ObjAddFanout(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pFanout)
void Aig_ObjRemoveFanout(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t *pFanout)
#define Aig_ManForEachObj(p, pObj, i)
struct Aig_Obj_t_ Aig_Obj_t
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.