/**Function************************************************************* Synopsis [Collects internal nodes in the DFS order.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Vec_Ptr_t * Hop_ManDfs( Hop_Man_t * p ) { Vec_Ptr_t * vNodes; Hop_Obj_t * pObj; int i; vNodes = Vec_PtrAlloc( Hop_ManNodeNum(p) ); Hop_ManForEachNode( p, pObj, i ) Hop_ManDfs_rec( pObj, vNodes ); Hop_ManForEachNode( p, pObj, i ) Hop_ObjClearMarkA(pObj); return vNodes; }
/**Function************************************************************* Synopsis [Cleans the data pointers for the nodes.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ void Hop_ManCleanData( Hop_Man_t * p ) { Hop_Obj_t * pObj; int i; p->nTravIds = 1; Hop_ManConst1(p)->pData = NULL; Hop_ManForEachPi( p, pObj, i ) pObj->pData = NULL; Hop_ManForEachPo( p, pObj, i ) pObj->pData = NULL; Hop_ManForEachNode( p, pObj, i ) pObj->pData = NULL; }
/**Function************************************************************* Synopsis [Stops the AIG manager.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ void Hop_ManStop( Hop_Man_t * p ) { Hop_Obj_t * pObj; int i; // make sure the nodes have clean marks pObj = Hop_ManConst1(p); assert( !pObj->fMarkA && !pObj->fMarkB ); Hop_ManForEachPi( p, pObj, i ) assert( !pObj->fMarkA && !pObj->fMarkB ); Hop_ManForEachPo( p, pObj, i ) assert( !pObj->fMarkA && !pObj->fMarkB ); Hop_ManForEachNode( p, pObj, i ) assert( !pObj->fMarkA && !pObj->fMarkB ); // print time if ( p->time1 ) { PRT( "time1", p->time1 ); } if ( p->time2 ) { PRT( "time2", p->time2 ); } // Hop_TableProfile( p ); if ( p->vChunks ) Hop_ManStopMemory( p ); if ( p->vPis ) Vec_PtrFree( p->vPis ); if ( p->vPos ) Vec_PtrFree( p->vPos ); if ( p->vObjs ) Vec_PtrFree( p->vObjs ); free( p->pTable ); free( p ); }