/**Function************************************************************* Synopsis [Adds entry to the hash table.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ int Tru_ManInsert( Tru_Man_t * p, word * pTruth ) { int fCompl, * pSpot; if ( Tru_ManEqual0(pTruth, p->nWords) ) return 0; if ( Tru_ManEqual1(pTruth, p->nWords) ) return 1; p->nTableLookups++; if ( Vec_SetEntryNum(p->pMem) > 2 * p->nTableSize ) Tru_ManResize( p ); fCompl = pTruth[0] & 1; if ( fCompl ) Tru_ManNot( pTruth, p->nWords ); pSpot = Tru_ManLookup( p, pTruth ); if ( *pSpot == 0 ) { Tru_One_t * pEntry; *pSpot = Vec_SetAppend( p->pMem, NULL, p->nEntrySize ); assert( (*pSpot & 1) == 0 ); pEntry = Tru_ManReadOne( p, *pSpot ); Tru_ManCopy( pEntry->pTruth, pTruth, p->nWords ); pEntry->Handle = *pSpot; pEntry->Next = 0; } if ( fCompl ) Tru_ManNot( pTruth, p->nWords ); return *pSpot ^ fCompl; }
static inline void Kf_ObjSetCuts( Kf_Man_t * p, int i, Vec_Int_t * vVec ) { Vec_IntWriteEntry(&p->vCuts, i, Vec_SetAppend(&p->pMem, Vec_IntArray(vVec), Vec_IntSize(vVec))); }