56 nFileSize = ftell( pFile );
60 pBuffer =
ABC_ALLOC(
char, nFileSize + 3 );
61 RetValue = fread( pBuffer, nFileSize, 1, pFile );
63 pBuffer[ nFileSize + 0] =
'\n';
64 pBuffer[ nFileSize + 1] =
'\0';
79static void skipLine(
char ** pIn )
105static int xSAT_ReadInt(
char ** pIn )
110 for(; isspace(**pIn); (*pIn)++);
114 else if ( **pIn ==
'+' )
116 if ( !isdigit(**pIn) )
117 fprintf(stderr,
"PARSE ERROR! Unexpected char: %c\n", **pIn),
119 while ( isdigit(**pIn) )
120 val = val*10 + (**pIn -
'0'),
122 return neg ? -val : val;
140 Vec_IntClear( vLits );
143 token = xSAT_ReadInt( pIn );
146 var = abs(token) - 1;
148 Vec_IntPush( vLits, xSAT_Var2Lit( var, !sign ) );
163static int xSAT_ParseDimacs(
char * pText,
xSAT_Solver_t ** pS )
171 for(; isspace(*pIn); pIn++);
174 else if ( *pIn ==
'c' )
176 else if ( *pIn ==
'p' )
179 for(; isspace(*pIn); pIn++);
180 for(; !isspace(*pIn); pIn++);
182 nVars = xSAT_ReadInt( &pIn );
183 nClas = xSAT_ReadInt( &pIn );
189 vLits = Vec_IntAlloc( nVars );
195 printf(
"There is no parameter line.\n" );
198 xSAT_ReadClause( &pIn,
p, vLits );
206 Vec_IntFree( vLits );
227 Value = xSAT_ParseDimacs( pText,
p );
#define ABC_ALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
int xSAT_SolverParseDimacs(FILE *pFile, xSAT_Solver_t **p)
FUNCTION DECLARATIONS ///.
ABC_NAMESPACE_IMPL_START char * xSAT_FileRead(FILE *pFile)
INCLUDES ///.
int xSAT_SolverAddClause(xSAT_Solver_t *, Vec_Int_t *)
xSAT_Solver_t * xSAT_SolverCreate()
int xSAT_SolverSimplify(xSAT_Solver_t *)
struct xSAT_Solver_t_ xSAT_Solver_t