31static void Io_ReadEqnStrCompact(
char * pStr );
32static int Io_ReadEqnStrFind(
Vec_Ptr_t * vTokens,
char * pName );
33static void Io_ReadEqnStrCutAt(
char * pStr,
char * pStop,
int fUniqueOnly,
Vec_Ptr_t * vTokens );
61 pNtk = Io_ReadEqnNetwork(
p );
69 printf(
"Io_ReadEqn: The network check has failed.\n" );
94 char * pNodeName, * pFormula, * pFormulaCopy, * pVarName;
104 vVars = Vec_PtrAlloc( 100 );
111 Io_ReadEqnStrCompact( (
char *)vTokens->pArray[0] );
112 if (
strlen((
char *)vTokens->pArray[0]) == 0 )
116 if ( vTokens->nSize != 2 )
124 if (
strncmp( (
char *)vTokens->pArray[0],
"INORDER", 7 ) == 0 )
126 Io_ReadEqnStrCutAt( (
char *)vTokens->pArray[1],
" \n\r\t", 0, vVars );
130 else if (
strncmp( (
char *)vTokens->pArray[0],
"OUTORDER", 8 ) == 0 )
132 Io_ReadEqnStrCutAt( (
char *)vTokens->pArray[1],
" \n\r\t", 0, vVars );
141 pNodeName = (
char *)vTokens->pArray[0];
142 pFormula = (
char *)vTokens->pArray[1];
144 Io_ReadEqnStrCompact( pFormula );
147 if ( pFormula[1] == 0 && (pFormula[0] ==
'0' || pFormula[0] ==
'1') )
150 Vec_PtrClear( vVars );
157 Io_ReadEqnStrCutAt( pFormulaCopy,
"!*+()", 1, vVars );
160 pNode =
Io_ReadCreateNode( pNtk, pNodeName, (
char **)Vec_PtrArray(vVars), Vec_PtrSize(vVars) );
168 Vec_PtrFree( vVars );
186void Io_ReadEqnStrCompact(
char * pStr )
189 for ( pNew = pCur = pStr; *pCur; pCur++ )
190 if ( !(*pCur ==
' ' || *pCur ==
'\n' || *pCur ==
'\r' || *pCur ==
'\t') )
206int Io_ReadEqnStrFind(
Vec_Ptr_t * vTokens,
char * pName )
211 if (
strcmp( pToken, pName ) == 0 )
227void Io_ReadEqnStrCutAt(
char * pStr,
char * pStop,
int fUniqueOnly,
Vec_Ptr_t * vTokens )
230 Vec_PtrClear( vTokens );
231 for ( pToken =
strtok( pStr, pStop ); pToken; pToken =
strtok( NULL, pStop ) )
232 if ( !fUniqueOnly || Io_ReadEqnStrFind( vTokens, pToken ) == -1 )
233 Vec_PtrPush( vTokens, pToken );
struct Abc_Obj_t_ Abc_Obj_t
ABC_DLL Abc_Ntk_t * Abc_NtkAlloc(Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan)
DECLARATIONS ///.
ABC_DLL int Abc_NtkCheckRead(Abc_Ntk_t *pNtk)
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL void Abc_NtkFinalizeRead(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_NAMESPACE_IMPL_START typedef char ProgressBar
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
struct Hop_Obj_t_ Hop_Obj_t
Abc_Obj_t * Io_ReadCreatePo(Abc_Ntk_t *pNtk, char *pName)
Abc_Obj_t * Io_ReadCreatePi(Abc_Ntk_t *pNtk, char *pName)
Abc_Obj_t * Io_ReadCreateNode(Abc_Ntk_t *pNtk, char *pNameOut, char *pNamesIn[], int nInputs)
Abc_Ntk_t * Io_ReadEqn(char *pFileName, int fCheck)
FUNCTION DEFINITIONS ///.
Hop_Obj_t * Parse_FormulaParserEqn(FILE *pOutput, char *pFormInit, Vec_Ptr_t *vVarNames, Hop_Man_t *pMan)
FUNCTION DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.