48 while ( (c = Vec_StrEntry(vOut, (*pPos)++)) !=
'\n' && pBuffer < pLimit )
51 return pBuffer < pLimit;
55 *Num1 = *Num2 = *Num3 = *Num4 = -1;
57 while ( *pBuffer && *pBuffer !=
' ' )
64 *Num1 = atoi(++pBuffer);
65 while ( *pBuffer && *pBuffer !=
' ' )
71 *Num2 = atoi(++pBuffer);
72 while ( *pBuffer && *pBuffer !=
' ' )
78 *Num3 = atoi(++pBuffer);
79 while ( *pBuffer && *pBuffer !=
' ' )
85 *Num4 = atoi(++pBuffer);
90 memcpy( Vec_StrArray(
p), Vec_StrArray(vOut) + *pPos, (
size_t)nSize );
93 assert( Vec_StrSize(
p) == Vec_StrCap(
p) );
97 memcpy( Vec_IntArray(
p), Vec_StrArray(vOut) + *pPos, (
size_t)nSize );
100 assert( Vec_IntSize(
p) == Vec_IntCap(
p) );
112 Vec_IntPush( &pNtk->
vInputs, i );
116 assert( Bac_NtkPiNum(pNtk) == Bac_NtkPiNumAlloc(pNtk) );
117 assert( Bac_NtkPoNum(pNtk) == Bac_NtkPoNumAlloc(pNtk) );
118 assert( Bac_NtkObjNum(pNtk) == Bac_NtkObjNumAlloc(pNtk) );
119 assert( Bac_NtkInfoNum(pNtk) == Bac_NtkInfoNumAlloc(pNtk) );
146 char Buffer[1000] =
"#";
147 int i, NameId,
Pos = 0, nNtks, Num1, Num2, Num3, Num4;
148 while ( Buffer[0] ==
'#' )
155 p = Bac_ManAlloc( Buffer, nNtks );
169 assert( Num1 >= 0 && Num2 >= 0 && Num3 >= 0 );
171 Bac_NtkAlloc( pNtk, NameId, Num1, Num2, Num3 );
172 Vec_IntFill( &pNtk->
vInfo, 3 * Num4, -1 );
177 assert( Bac_ManNtkNum(
p) == nNtks );
187 pFile = fopen( pFileName,
"rb" );
190 printf(
"Cannot open file \"%s\" for reading.\n", pFileName );
195 nFileSize = ftell( pFile );
198 vOut = Vec_StrAlloc( nFileSize );
200 assert( nFileSize == Vec_StrSize(vOut) );
201 nFileSize = fread( Vec_StrArray(vOut), 1, Vec_StrSize(vOut), pFile );
202 assert( nFileSize == Vec_StrSize(vOut) );
209 p->pSpec = Abc_UtilStrsav( pFileName );
229 Vec_StrPushBuffer( vOut, (
char *)Vec_StrArray(&pNtk->
vType), Bac_NtkObjNum(pNtk) );
230 Vec_StrPushBuffer( vOut, (
char *)Vec_IntArray(&pNtk->
vFanin), 4 * Bac_NtkObjNum(pNtk) );
231 Vec_StrPushBuffer( vOut, (
char *)Vec_IntArray(&pNtk->
vInfo), 12 * Bac_NtkInfoNum(pNtk) );
259 Vec_StrPrintStr( vOut, Buffer );
261 sprintf( Buffer,
"%s %d \n", Bac_ManName(
p), Bac_ManNtkNum(
p) );
262 Vec_StrPrintStr( vOut, Buffer );
265 sprintf( Buffer,
"%s %d %d %d %d \n", Bac_NtkName(pNtk),
266 Bac_NtkPiNum(pNtk), Bac_NtkPoNum(pNtk), Bac_NtkObjNum(pNtk), Bac_NtkInfoNum(pNtk) );
267 Vec_StrPrintStr( vOut, Buffer );
276 vOut = Vec_StrAlloc( 10000 );
278 if ( Vec_StrSize(vOut) > 0 )
280 FILE * pFile = fopen( pFileName,
"wb" );
282 printf(
"Cannot open file \"%s\" for writing.\n", pFileName );
285 fwrite( Vec_StrArray(vOut), 1, Vec_StrSize(vOut), pFile );
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Bac_ManReadBacVecInt(Vec_Str_t *vOut, int *pPos, Vec_Int_t *p, int nSize)
void Bac_ManWriteBac(char *pFileName, Bac_Man_t *p)
int BacManReadBacNameAndNums(char *pBuffer, int *Num1, int *Num2, int *Num3, int *Num4)
Bac_Man_t * Bac_ManReadBac(char *pFileName)
void Bac_ManWriteBacNtk(Vec_Str_t *vOut, Bac_Ntk_t *pNtk)
void Bac_ManReadBacNtk(Vec_Str_t *vOut, int *pPos, Bac_Ntk_t *pNtk)
ABC_NAMESPACE_IMPL_START int BacManReadBacLine(Vec_Str_t *vOut, int *pPos, char *pBuffer, char *pLimit)
DECLARATIONS ///.
void Bac_ManWriteBacInt(Vec_Str_t *vOut, Bac_Man_t *p)
void Bac_ManReadBacVecStr(Vec_Str_t *vOut, int *pPos, Vec_Str_t *p, int nSize)
Bac_Man_t * Bac_ManReadBacInt(Vec_Str_t *vOut)
#define Bac_NtkForEachObjType(p, Type, i)
struct Bac_Man_t_ Bac_Man_t
struct Bac_Ntk_t_ Bac_Ntk_t
#define Bac_ManForEachNtk(p, pNtk, i)
MACRO DEFINITIONS ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
struct Vec_Str_t_ Vec_Str_t
int Abc_NamStrFindOrAdd(Abc_Nam_t *p, char *pStr, int *pfFound)