00001 00021 #include "cutInt.h" 00022 00026 00030 00042 Cut_Cut_t * Cut_NodeReadCutsNew( Cut_Man_t * p, int Node ) 00043 { 00044 if ( Node >= p->vCutsNew->nSize ) 00045 return NULL; 00046 return Vec_PtrEntry( p->vCutsNew, Node ); 00047 } 00048 00060 Cut_Cut_t * Cut_NodeReadCutsOld( Cut_Man_t * p, int Node ) 00061 { 00062 assert( Node < p->vCutsOld->nSize ); 00063 return Vec_PtrEntry( p->vCutsOld, Node ); 00064 } 00065 00077 Cut_Cut_t * Cut_NodeReadCutsTemp( Cut_Man_t * p, int Node ) 00078 { 00079 assert( Node < p->vCutsTemp->nSize ); 00080 return Vec_PtrEntry( p->vCutsTemp, Node ); 00081 } 00082 00094 void Cut_NodeWriteCutsNew( Cut_Man_t * p, int Node, Cut_Cut_t * pList ) 00095 { 00096 Vec_PtrWriteEntry( p->vCutsNew, Node, pList ); 00097 } 00098 00110 void Cut_NodeWriteCutsOld( Cut_Man_t * p, int Node, Cut_Cut_t * pList ) 00111 { 00112 Vec_PtrWriteEntry( p->vCutsOld, Node, pList ); 00113 } 00114 00126 void Cut_NodeWriteCutsTemp( Cut_Man_t * p, int Node, Cut_Cut_t * pList ) 00127 { 00128 Vec_PtrWriteEntry( p->vCutsTemp, Node, pList ); 00129 } 00130 00142 void Cut_NodeSetTriv( Cut_Man_t * p, int Node ) 00143 { 00144 assert( Cut_NodeReadCutsNew(p, Node) == NULL ); 00145 Cut_NodeWriteCutsNew( p, Node, Cut_CutCreateTriv(p, Node) ); 00146 } 00147 00159 void Cut_NodeTryDroppingCuts( Cut_Man_t * p, int Node ) 00160 { 00161 int nFanouts; 00162 assert( p->vFanCounts ); 00163 nFanouts = Vec_IntEntry( p->vFanCounts, Node ); 00164 assert( nFanouts > 0 ); 00165 if ( --nFanouts == 0 ) 00166 Cut_NodeFreeCuts( p, Node ); 00167 Vec_IntWriteEntry( p->vFanCounts, Node, nFanouts ); 00168 } 00169 00181 void Cut_NodeFreeCuts( Cut_Man_t * p, int Node ) 00182 { 00183 Cut_Cut_t * pList, * pCut, * pCut2; 00184 pList = Cut_NodeReadCutsNew( p, Node ); 00185 if ( pList == NULL ) 00186 return; 00187 Cut_ListForEachCutSafe( pList, pCut, pCut2 ) 00188 Cut_CutRecycle( p, pCut ); 00189 Cut_NodeWriteCutsNew( p, Node, NULL ); 00190 } 00191 00192 00196 00197