29static char * file_open(
const char *fname)
31 FILE *
file = fopen(fname,
"rb");
37 printf(
"Couldn't open file: %s\n", fname);
41 sz_file = ftell(
file);
44 ret = fread(buffer, sz_file, 1,
file);
45 buffer[sz_file + 0] =
'\n';
46 buffer[sz_file + 1] =
'\0';
50static void skip_spaces(
char **
pos)
53 for (; isspace(**
pos); (*pos)++);
59 for(; **
pos !=
'\n' && **
pos !=
'\r' && **
pos != EOF; (*pos)++);
65static int read_int(
char **token)
74 }
else if (**token ==
'+')
77 if (!isdigit(**token)) {
78 printf(
"Parsing error. Unexpected char: %c.\n", **token);
81 while (isdigit(**token)) {
88static void read_clause(
char **token,
vec_uint_t *lits)
95 var = read_int(token);
100 vec_uint_push_back(lits, var2lit((
unsigned) var, (
char)!sign));
114 char *buffer = file_open(fname);
125 else if (*token ==
'c')
127 else if (*token ==
'p') {
130 for(; !isspace(*token); token++);
132 n_var = read_int(&token);
133 n_clause = read_int(&token);
135 lits = vec_uint_alloc((
unsigned) n_var);
139 printf(
"There is no parameter line.\n");
143 read_clause(&token, lits);
145 printf(
"Unable to add clause: ");
146 vec_uint_print(lits);
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_NAMESPACE_IMPL_START typedef signed char value
int satoko_parse_dimacs(char *fname, satoko_t **solver)
#define satoko_alloc(type, n_elements)
int satoko_add_clause(satoko_t *, int *, int)
struct solver_t_ satoko_t
satoko_t * satoko_create(void)
typedefABC_NAMESPACE_HEADER_START struct vec_uint_t_ vec_uint_t