summaryrefslogtreecommitdiffstats
path: root/src/base/cba/cba.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/cba/cba.h')
-rw-r--r--src/base/cba/cba.h63
1 files changed, 23 insertions, 40 deletions
diff --git a/src/base/cba/cba.h b/src/base/cba/cba.h
index 852c2907..b38fee90 100644
--- a/src/base/cba/cba.h
+++ b/src/base/cba/cba.h
@@ -29,10 +29,9 @@
#include "aig/gia/gia.h"
#include "misc/extra/extra.h"
#include "misc/util/utilNam.h"
-#include "misc/mem/mem.h"
#include "misc/extra/extra.h"
#include "misc/util/utilTruth.h"
-#include "misc/vec/vecWec.h"
+#include "misc/vec/vecSet.h"
////////////////////////////////////////////////////////////////////////
/// PARAMETERS ///
@@ -89,7 +88,7 @@ struct Cba_Man_t_
Abc_Nam_t * pFuncs; // functionality manager
Cba_Man_t * pLib; // library
// internal data
- Mem_Flex_t * pMem; // memory
+ Vec_Set_t Mem; // memory
Vec_Ptr_t vNtks; // networks
int iRoot; // root network
};
@@ -109,7 +108,7 @@ struct Cba_Ntk_t_
Vec_Int_t vTypes; // types (used by parser to store Cba_PrsType_t)
Vec_Int_t vFuncs; // functions (used by parser to store function)
Vec_Int_t vInstIds; // instance names (used by parser to store instance name as NameId)
- Vec_Wec_t vFanins; // fanins (used by parser to store fanin/fanout/range as NameId)
+ Vec_Int_t vFanins; // fanins (used by parser to store fanin/fanout/range as NameId)
// attributes
Vec_Int_t vNameIds; // original names as NameId
Vec_Int_t vRanges; // ranges as NameId
@@ -121,17 +120,28 @@ static inline char * Cba_ManName( Cba_Man_t * p ) { re
static inline int Cba_ManNtkNum( Cba_Man_t * p ) { return Vec_PtrSize(&p->vNtks) - 1; }
static inline Cba_Ntk_t * Cba_ManNtk( Cba_Man_t * p, int i ) { assert( i > 0 ); return (Cba_Ntk_t *)Vec_PtrEntry(&p->vNtks, i); }
static inline Cba_Ntk_t * Cba_ManRoot( Cba_Man_t * p ) { return Cba_ManNtk(p, p->iRoot); }
+static inline Vec_Set_t * Cba_ManMem( Cba_Man_t * p ) { return &p->Mem; }
+static inline int Cba_ManMemSave( Cba_Man_t * p, int * d, int s ) { return Vec_SetAppend(Cba_ManMem(p), d, s); }
+static inline int * Cba_ManMemRead( Cba_Man_t * p, int h ) { return (int *)Vec_SetEntry(Cba_ManMem(p), h); }
static inline char * Cba_NtkName( Cba_Ntk_t * p ) { return p->pName; }
-static inline int Cba_NtkObjNum( Cba_Ntk_t * p ) { return Vec_WecSize(&p->vFanins); }
+static inline Cba_Man_t * Cba_NtkMan( Cba_Ntk_t * p ) { return p->pDesign; }
+static inline int Cba_NtkObjNum( Cba_Ntk_t * p ) { return Vec_IntSize(&p->vFanins); }
static inline char * Cba_NtkStr( Cba_Ntk_t * p, int i ) { return Abc_NamStr(p->pDesign->pNames, i); }
static inline char * Cba_NtkModelStr( Cba_Ntk_t * p, int i ) { return Abc_NamStr(p->pDesign->pModels, i); }
static inline char * Cba_NtkFuncStr( Cba_Ntk_t * p, int i ) { return Abc_NamStr(p->pDesign->pFuncs, i); }
+static inline Vec_Set_t * Cba_NtkMem( Cba_Ntk_t * p ) { return Cba_ManMem(p->pDesign); }
+static inline int Cba_NtkMemSave( Cba_Ntk_t * p, int * d, int s ) { return Cba_ManMemSave(p->pDesign, d, s); }
+static inline int * Cba_NtkMemRead( Cba_Ntk_t * p, int h ) { return Cba_ManMemRead(p->pDesign, h); }
static inline Cba_ObjType_t Cba_ObjType( Cba_Ntk_t * p, int i ) { return Vec_IntEntry(&p->vTypes, i); }
static inline int Cba_ObjFuncId( Cba_Ntk_t * p, int i ) { return Vec_IntEntry(&p->vFuncs, i); }
static inline int Cba_ObjInstId( Cba_Ntk_t * p, int i ) { return Vec_IntEntry(&p->vInstIds, i); }
-static inline Vec_Int_t * Cba_ObjFanins( Cba_Ntk_t * p, int i ) { return Vec_WecEntry(&p->vFanins, i); }
+static inline int * Cba_ObjFaninArray( Cba_Ntk_t * p, int i ) { return Cba_NtkMemRead(p, Vec_IntEntry(&p->vFanins, i)); }
+static inline int Cba_ObjFaninNum( Cba_Ntk_t * p, int i ) { return *Cba_ObjFaninArray(p, i); }
+static inline int * Cba_ObjFanins( Cba_Ntk_t * p, int i ) { return Cba_ObjFaninArray(p, i) + 1; }
+static inline Vec_Int_t * Cba_ObjFaninVec( Cba_Ntk_t * p, int i ) { static Vec_Int_t V; V.pArray = Cba_ObjFaninArray(p, i); V.nSize = V.nCap = *V.pArray++; return &V; }
+static inline Vec_Int_t * Cba_ObjFaninVec2( Cba_Ntk_t * p, int i ) { static Vec_Int_t W; W.pArray = Cba_ObjFaninArray(p, i); W.nSize = W.nCap = *W.pArray++; return &W; }
static inline int Cba_ObjNameId( Cba_Ntk_t * p, int i ) { return Vec_IntEntry(&p->vNameIds, i); }
static inline int Cba_ObjRangeId( Cba_Ntk_t * p, int i ) { return Vec_IntEntry(&p->vRanges, i); }
@@ -158,7 +168,7 @@ static inline char * Cba_ObjRangeStr( Cba_Ntk_t * p, int i ) { re
#define Cba_NtkForEachObjType( p, Type, i ) \
for ( i = 0; (i < Cba_NtkObjNum(p)) && (((Type) = Cba_ObjType(p, i)), 1); i++ )
#define Cba_NtkForEachObjTypeFuncFanins( p, Type, Func, vFanins, i ) \
- for ( i = 0; (i < Cba_NtkObjNum(p)) && (((Type) = Cba_ObjType(p, i)), 1) && (((Func) = Cba_ObjFuncId(p, i)), 1) && (((vFanins) = Cba_ObjFanins(p, i)), 1); i++ )
+ for ( i = 0; (i < Cba_NtkObjNum(p)) && (((Type) = Cba_ObjType(p, i)), 1) && (((Func) = Cba_ObjFuncId(p, i)), 1) && (((vFanins) = Cba_ObjFaninVec(p, i)), 1); i++ )
////////////////////////////////////////////////////////////////////////
@@ -167,34 +177,13 @@ static inline char * Cba_ObjRangeStr( Cba_Ntk_t * p, int i ) { re
static inline Cba_Ntk_t * Cba_NtkAlloc( Cba_Man_t * p, char * pName )
{
- Cba_Ntk_t * pNtk = ABC_CALLOC( Cba_Ntk_t, 1 );
+ Cba_Ntk_t * pNtk = Vec_SetFetch( Cba_ManMem(p), sizeof(Cba_Ntk_t) );
+ memset( pNtk, 0, sizeof(Cba_Ntk_t) );
pNtk->pDesign = p;
- pNtk->pName = Abc_UtilStrsav(pName);
+ pNtk->pName = Vec_SetStrsav( Cba_ManMem(p), pName );
Vec_PtrPush( &p->vNtks, pNtk );
return pNtk;
}
-static inline void Cba_NtkFree( Cba_Ntk_t * p )
-{
-// Vec_IntErase( &p->vInouts );
-// Vec_IntErase( &p->vInputs );
-// Vec_IntErase( &p->vOutputs );
-// Vec_IntErase( &p->vWires );
-
-// Vec_IntErase( &p->vTypes );
-// Vec_IntErase( &p->vFuncs );
-// Vec_IntErase( &p->vInstIds );
- ABC_FREE( p->vFanins.pArray );
-
- Vec_IntErase( &p->vNameIds );
- Vec_IntErase( &p->vRanges );
- Vec_IntErase( &p->vCopies );
- ABC_FREE( p->pName );
- ABC_FREE( p );
-}
-static inline int Cba_NtkMemory( Cba_Ntk_t * p )
-{
- return Vec_WecMemory(&p->vFanins);
-}
static inline Cba_Man_t * Cba_ManAlloc( char * pFileName )
{
@@ -207,17 +196,14 @@ static inline Cba_Man_t * Cba_ManAlloc( char * pFileName )
p->pModels = Abc_NamStart( 1000, 20 );
p->pFuncs = Abc_NamStart( 1000, 20 );
// internal data
- p->pMem = Mem_FlexStart();
+ Vec_SetAlloc_( &p->Mem, 20 );
Vec_PtrPush( &p->vNtks, NULL );
return p;
}
static inline void Cba_ManFree( Cba_Man_t * p )
{
- Cba_Ntk_t * pNtk; int i;
- Cba_ManForEachNtk( p, pNtk, i )
- Cba_NtkFree( pNtk );
ABC_FREE( p->vNtks.pArray );
- Mem_FlexStop( p->pMem, 0 );
+ Vec_SetFree_( &p->Mem );
// design names
Abc_NamStop( p->pNames );
Abc_NamStop( p->pModels );
@@ -228,15 +214,12 @@ static inline void Cba_ManFree( Cba_Man_t * p )
}
static inline int Cba_ManMemory( Cba_Man_t * p )
{
- Cba_Ntk_t * pNtk; int i;
int nMem = sizeof(Cba_Man_t);
nMem += Abc_NamMemUsed(p->pNames);
nMem += Abc_NamMemUsed(p->pModels);
nMem += Abc_NamMemUsed(p->pFuncs);
- nMem += Mem_FlexReadMemUsage(p->pMem);
+ nMem += Vec_SetMemoryAll(&p->Mem);
nMem += (int)Vec_PtrMemory(&p->vNtks);
- Cba_ManForEachNtk( p, pNtk, i )
- nMem += Cba_NtkMemory( pNtk );
return nMem;
}