本文整理匯總了C++中ABC_FREE函數的典型用法代碼示例。如果您正苦於以下問題:C++ ABC_FREE函數的具體用法?C++ ABC_FREE怎麽用?C++ ABC_FREE使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了ABC_FREE函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。
示例1: Io_ReadBlifGetTokens
/**Function*************************************************************
Synopsis [Gets the tokens taking into account the line breaks.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Vec_Ptr_t * Io_ReadBlifGetTokens( Io_ReadBlif_t * p )
{
Vec_Ptr_t * vTokens;
char * pLastToken;
int i;
// get rid of the old tokens
if ( p->vNewTokens->nSize > 0 )
{
for ( i = 0; i < p->vNewTokens->nSize; i++ )
ABC_FREE( p->vNewTokens->pArray[i] );
p->vNewTokens->nSize = 0;
}
// get the new tokens
vTokens = (Vec_Ptr_t *)Extra_FileReaderGetTokens(p->pReader);
if ( vTokens == NULL )
return vTokens;
// check if there is a transfer to another line
pLastToken = (char *)vTokens->pArray[vTokens->nSize - 1];
if ( pLastToken[ strlen(pLastToken)-1 ] != '\\' )
return vTokens;
// remove the slash
pLastToken[ strlen(pLastToken)-1 ] = 0;
if ( pLastToken[0] == 0 )
vTokens->nSize--;
// load them into the new array
for ( i = 0; i < vTokens->nSize; i++ )
Vec_PtrPush( p->vNewTokens, Extra_UtilStrsav((char *)vTokens->pArray[i]) );
// load as long as there is the line break
while ( 1 )
{
// get the new tokens
vTokens = (Vec_Ptr_t *)Extra_FileReaderGetTokens(p->pReader);
if ( vTokens->nSize == 0 )
return p->vNewTokens;
// check if there is a transfer to another line
pLastToken = (char *)vTokens->pArray[vTokens->nSize - 1];
if ( pLastToken[ strlen(pLastToken)-1 ] == '\\' )
{
// remove the slash
pLastToken[ strlen(pLastToken)-1 ] = 0;
if ( pLastToken[0] == 0 )
vTokens->nSize--;
// load them into the new array
for ( i = 0; i < vTokens->nSize; i++ )
Vec_PtrPush( p->vNewTokens, Extra_UtilStrsav((char *)vTokens->pArray[i]) );
continue;
}
// otherwise, load them and break
for ( i = 0; i < vTokens->nSize; i++ )
Vec_PtrPush( p->vNewTokens, Extra_UtilStrsav((char *)vTokens->pArray[i]) );
break;
}
return p->vNewTokens;
}
示例2: Extra_SymmPairsCreateFromZdd
/**Function********************************************************************
Synopsis [Creates the symmetry information structure from ZDD.]
Description [ZDD representation of symmetries is the set of cubes, each
of which has two variables in the positive polarity. These variables correspond
to the symmetric variable pair.]
SideEffects []
SeeAlso []
******************************************************************************/
Extra_SymmInfo_t * Extra_SymmPairsCreateFromZdd( DdManager * dd, DdNode * zPairs, DdNode * bSupp )
{
int i;
int nSuppSize;
Extra_SymmInfo_t * p;
int * pMapVars2Nums;
DdNode * bTemp;
DdNode * zSet, * zCube, * zTemp;
int iVar1, iVar2;
nSuppSize = Extra_bddSuppSize( dd, bSupp );
// allocate and clean the storage for symmetry info
p = Extra_SymmPairsAllocate( nSuppSize );
// allocate the storage for the temporary map
pMapVars2Nums = ABC_ALLOC( int, dd->size );
memset( pMapVars2Nums, 0, dd->size * sizeof(int) );
// assign the variables
p->nVarsMax = dd->size;
// p->nNodes = Cudd_DagSize( zPairs );
p->nNodes = 0;
for ( i = 0, bTemp = bSupp; bTemp != b1; bTemp = cuddT(bTemp), i++ )
{
p->pVars[i] = bTemp->index;
pMapVars2Nums[bTemp->index] = i;
}
// write the symmetry info into the structure
zSet = zPairs; Cudd_Ref( zSet );
while ( zSet != z0 )
{
// get the next cube
zCube = Extra_zddSelectOneSubset( dd, zSet ); Cudd_Ref( zCube );
// add these two variables to the data structure
assert( cuddT( cuddT(zCube) ) == z1 );
iVar1 = zCube->index/2;
iVar2 = cuddT(zCube)->index/2;
if ( pMapVars2Nums[iVar1] < pMapVars2Nums[iVar2] )
p->pSymms[ pMapVars2Nums[iVar1] ][ pMapVars2Nums[iVar2] ] = 1;
else
p->pSymms[ pMapVars2Nums[iVar2] ][ pMapVars2Nums[iVar1] ] = 1;
// count the symmetric pairs
p->nSymms ++;
// update the cuver and deref the cube
zSet = Cudd_zddDiff( dd, zTemp = zSet, zCube ); Cudd_Ref( zSet );
Cudd_RecursiveDerefZdd( dd, zTemp );
Cudd_RecursiveDerefZdd( dd, zCube );
} // for each cube
Cudd_RecursiveDerefZdd( dd, zSet );
ABC_FREE( pMapVars2Nums );
return p;
} /* end of Extra_SymmPairsCreateFromZdd */
示例3: bddAnnotateMintermCount
/**Function********************************************************************
Synopsis [Annotates every node in the BDD node with its minterm count.]
Description [Annotates every node in the BDD node with its minterm count.
In this function, every node and the minterm count represented by it are
stored in a hash table.]
SideEffects [Fills up 'table' with the pair <node,minterm_count>.]
******************************************************************************/
static double
bddAnnotateMintermCount(
DdManager * manager,
DdNode * node,
double max,
st_table * table)
{
DdNode *N,*Nv,*Nnv;
register double min_v,min_nv;
register double min_N;
double *pmin;
double *dummy;
statLine(manager);
N = Cudd_Regular(node);
if (cuddIsConstant(N)) {
if (node == DD_ONE(manager)) {
return(max);
} else {
return(0.0);
}
}
if (st_lookup(table,(char *)node,(char **)&dummy)) {
return(*dummy);
}
Nv = cuddT(N);
Nnv = cuddE(N);
if (N != node) {
Nv = Cudd_Not(Nv);
Nnv = Cudd_Not(Nnv);
}
/* Recur on the two branches. */
min_v = bddAnnotateMintermCount(manager,Nv,max,table) / 2.0;
if (min_v == (double)CUDD_OUT_OF_MEM)
return ((double)CUDD_OUT_OF_MEM);
min_nv = bddAnnotateMintermCount(manager,Nnv,max,table) / 2.0;
if (min_nv == (double)CUDD_OUT_OF_MEM)
return ((double)CUDD_OUT_OF_MEM);
min_N = min_v + min_nv;
pmin = ABC_ALLOC(double,1);
if (pmin == NULL) {
manager->errorCode = CUDD_MEMORY_OUT;
return((double)CUDD_OUT_OF_MEM);
}
*pmin = min_N;
if (st_insert(table,(char *)node, (char *)pmin) == ST_OUT_OF_MEM) {
ABC_FREE(pmin);
return((double)CUDD_OUT_OF_MEM);
}
return(min_N);
} /* end of bddAnnotateMintermCount */
示例4: st_free_table
void
st_free_table(st_table *table)
{
st_table_entry *ptr, *next;
int i;
for(i = 0; i < table->num_bins ; i++) {
ptr = table->bins[i];
while (ptr != NULL) {
next = ptr->next;
ABC_FREE(ptr);
ptr = next;
}
}
ABC_FREE(table->bins);
ABC_FREE(table);
}
示例5: Llb_NonlinRemovePart
/**Function*************************************************************
Synopsis [Removes one partition.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Llb_NonlinRemovePart( Llb_Mgr_t * p, Llb_Prt_t * pPart )
{
assert( p->pParts[pPart->iPart] == pPart );
p->pParts[pPart->iPart] = NULL;
Vec_IntFree( pPart->vVars );
Cudd_RecursiveDeref( p->dd, pPart->bFunc );
ABC_FREE( pPart );
}
示例6: object
/**Function*************************************************************
Synopsis [Performs simulation of a word-level network.]
Description [Returns vRes, a 2D array of simulation information for
the output of each bit of each object listed in vNodes. In particular,
Vec_Ptr_t * vSimObj = (Vec_Ptr_t *)Vec_PtrEntry(vRes, iObj) and
Vec_Ptr_t * vSimObjBit = (Vec_Ptr_t *)Vec_PtrEntry(vSimObj, iBit)
are arrays containing the simulation info for each object (vSimObj)
and for each output bit of this object (vSimObjBit). Alternatively,
Vec_Ptr_t * vSimObjBit = Vec_VecEntryEntry( (Vec_Vec_t *)vRes, iObj, iBit ).
The output bitwidth of an object is Wlc_ObjRange( Wlc_NtkObj(pNtk, iObj) ).
Simulation information is binary data constaining the given number (nWords)
of 64-bit machine words for the given number (nFrames) of consecutive
timeframes. The total number of timeframes is nWords * nFrames for
each bit of each object.]
SideEffects []
SeeAlso []
***********************************************************************/
void Wlc_NtkDeleteSim( Vec_Ptr_t * p )
{
word * pInfo; int i, k;
Vec_Vec_t * vVec = (Vec_Vec_t *)p;
Vec_VecForEachEntry( word *, vVec, pInfo, i, k )
ABC_FREE( pInfo );
Vec_VecFree( vVec );
}
示例7: reoUnitsStopDispenser
/**Function*************************************************************
Synopsis [Stops the unit dispenser.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void reoUnitsStopDispenser( reo_man * p )
{
int i;
for ( i = 0; i < p->nMemChunks; i++ )
ABC_FREE( p->pMemChunks[i] );
// printf("\nThe number of chunks used is %d, each of them %d units\n", p->nMemChunks, REO_CHUNK_SIZE );
p->nMemChunks = 0;
}
示例8: Mvc_ManagerFree
/**Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Mvc_ManagerFree( Mvc_Manager_t * p )
{
Extra_MmFixedStop( p->pMan1 );
Extra_MmFixedStop( p->pMan2 );
Extra_MmFixedStop( p->pMan4 );
Extra_MmFixedStop( p->pManC );
ABC_FREE( p );
}
示例9: Cudd_Quit
/**Function********************************************************************
Synopsis [Deletes resources associated with a DD manager.]
Description [Deletes resources associated with a DD manager and
resets the global statistical counters. (Otherwise, another manaqger
subsequently created would inherit the stats of this one.)]
SideEffects [None]
SeeAlso [Cudd_Init]
******************************************************************************/
void
Cudd_Quit(
DdManager * unique)
{
if (unique->stash != NULL) ABC_FREE(unique->stash);
cuddFreeTable(unique);
} /* end of Cudd_Quit */
示例10: main
int main(int argc, char *argv[])
{
tABC_CC cc;
tABC_Error error;
unsigned char seed[] = {1, 2, 3};
tABC_SyncKeys *pKeys = NULL;
tABC_U08Buf data;
if (argc != 8)
{
fprintf(stderr, "usage: %s <dir> <user> <pass> <wallet-name> <addr> <start> <end>\n", argv[0]);
return 1;
}
long start = atol(argv[6]);
long end = atol(argv[7]);
char *szMatchAddr = argv[5];
MAIN_CHECK(ABC_Initialize(argv[1], CA_CERT, seed, sizeof(seed), &error));
MAIN_CHECK(ABC_LoginShimGetSyncKeys(argv[2], argv[3], &pKeys, &error));
MAIN_CHECK(ABC_WalletGetBitcoinPrivateSeed(ABC_WalletID(pKeys, argv[4]), &data, &error));
for (long i = start, c = 0; i <= end; i++, ++c)
{
char *szPubAddress = NULL;
ABC_BridgeGetBitcoinPubAddress(&szPubAddress, data, (int32_t) i, NULL);
if (strncmp(szPubAddress, szMatchAddr, strlen(szMatchAddr)) == 0)
{
printf("Found %s at %ld\n", szMatchAddr, i);
ABC_FREE(szPubAddress);
break;
}
ABC_FREE(szPubAddress);
if (c == 100000)
{
printf("%ld\n", i);
c = 0;
}
}
ABC_SyncFreeKeys(pKeys);
ABC_BUF_FREE(data);
return 0;
}
示例11: Nm_ManResize
/**Function*************************************************************
Synopsis [Resizes the table.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Nm_ManResize( Nm_Man_t * p )
{
Nm_Entry_t ** pBinsNewI2N, ** pBinsNewN2I, * pEntry, * pEntry2, ** ppSpot;
int nBinsNew, Counter, e;
clock_t clk;
clk = clock();
// get the new table size
nBinsNew = Abc_PrimeCudd( p->nGrowthFactor * p->nBins );
// allocate a new array
pBinsNewI2N = ABC_ALLOC( Nm_Entry_t *, nBinsNew );
pBinsNewN2I = ABC_ALLOC( Nm_Entry_t *, nBinsNew );
memset( pBinsNewI2N, 0, sizeof(Nm_Entry_t *) * nBinsNew );
memset( pBinsNewN2I, 0, sizeof(Nm_Entry_t *) * nBinsNew );
// rehash entries in Id->Name table
Counter = 0;
for ( e = 0; e < p->nBins; e++ )
for ( pEntry = p->pBinsI2N[e], pEntry2 = pEntry? pEntry->pNextI2N : NULL;
pEntry; pEntry = pEntry2, pEntry2 = pEntry? pEntry->pNextI2N : NULL )
{
ppSpot = pBinsNewI2N + Nm_HashNumber(pEntry->ObjId, nBinsNew);
pEntry->pNextI2N = *ppSpot;
*ppSpot = pEntry;
Counter++;
}
// rehash entries in Name->Id table
for ( e = 0; e < p->nBins; e++ )
for ( pEntry = p->pBinsN2I[e], pEntry2 = pEntry? pEntry->pNextN2I : NULL;
pEntry; pEntry = pEntry2, pEntry2 = pEntry? pEntry->pNextN2I : NULL )
{
ppSpot = pBinsNewN2I + Nm_HashString(pEntry->Name, nBinsNew);
pEntry->pNextN2I = *ppSpot;
*ppSpot = pEntry;
}
assert( Counter == p->nEntries );
// printf( "Increasing the structural table size from %6d to %6d. ", p->nBins, nBinsNew );
// ABC_PRT( "Time", clock() - clk );
// replace the table and the parameters
ABC_FREE( p->pBinsI2N );
ABC_FREE( p->pBinsN2I );
p->pBinsI2N = pBinsNewI2N;
p->pBinsN2I = pBinsNewN2I;
p->nBins = nBinsNew;
// Nm_ManProfile( p );
}
示例12: Abc_NodeFreeNames
/**Function*************************************************************
Synopsis [Gets fanin node names.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
void Abc_NodeFreeNames( Vec_Ptr_t * vNames )
{
int i;
if ( vNames == NULL )
return;
for ( i = 0; i < vNames->nSize; i++ )
ABC_FREE( vNames->pArray[i] );
Vec_PtrFree( vNames );
}
示例13: Gia_ManReadMiniAig
/**Function*************************************************************
Synopsis [Procedures to read/write GIA to/from MiniAIG file.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
Gia_Man_t * Gia_ManReadMiniAig( char * pFileName )
{
Mini_Aig_t * p = Mini_AigLoad( pFileName );
Gia_Man_t * pGia = Gia_ManFromMiniAig( p );
ABC_FREE( pGia->pName );
pGia->pName = Extra_FileNameGeneric( pFileName );
Mini_AigStop( p );
return pGia;
}
示例14: st_copy
st_table *
st_copy(st_table *old_table)
{
st_table *newEntry_table;
st_table_entry *ptr, *newEntryptr, *next, *newEntry;
int i, j, num_bins = old_table->num_bins;
newEntry_table = ABC_ALLOC(st_table, 1);
if (newEntry_table == NULL) {
return NULL;
}
*newEntry_table = *old_table;
newEntry_table->bins = ABC_ALLOC(st_table_entry *, num_bins);
if (newEntry_table->bins == NULL) {
ABC_FREE(newEntry_table);
return NULL;
}
for(i = 0; i < num_bins ; i++) {
newEntry_table->bins[i] = NULL;
ptr = old_table->bins[i];
while (ptr != NULL) {
newEntry = ABC_ALLOC(st_table_entry, 1);
if (newEntry == NULL) {
for (j = 0; j <= i; j++) {
newEntryptr = newEntry_table->bins[j];
while (newEntryptr != NULL) {
next = newEntryptr->next;
ABC_FREE(newEntryptr);
newEntryptr = next;
}
}
ABC_FREE(newEntry_table->bins);
ABC_FREE(newEntry_table);
return NULL;
}
*newEntry = *ptr;
newEntry->next = newEntry_table->bins[i];
newEntry_table->bins[i] = newEntry;
ptr = ptr->next;
}
}
return newEntry_table;
}
示例15: cuddZddFreeUniv
/**Function********************************************************************
Synopsis [Frees the ZDD universe.]
Description [Frees the ZDD universe.]
SideEffects [None]
SeeAlso [cuddZddInitUniv]
******************************************************************************/
void
cuddZddFreeUniv(
DdManager * zdd)
{
if (zdd->univ) {
Cudd_RecursiveDerefZdd(zdd, zdd->univ[0]);
ABC_FREE(zdd->univ);
}
} /* end of cuddZddFreeUniv */