ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
cnf_reader.c File Reference
#include <assert.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "satoko.h"
#include "solver.h"
#include "utils/mem.h"
#include "utils/vec/vec_uint.h"
#include "misc/util/abc_global.h"
Include dependency graph for cnf_reader.c:

Go to the source code of this file.

Functions

int satoko_parse_dimacs (char *fname, satoko_t **solver)
 

Function Documentation

◆ satoko_parse_dimacs()

int satoko_parse_dimacs ( char * fname,
satoko_t ** solver )

Start the solver and reads the DIMAC file.

Returns false upon immediate conflict.

Definition at line 108 of file cnf_reader.c.

109{
110 satoko_t *p = NULL;
111 vec_uint_t *lits = NULL;
112 int n_var;
113 int n_clause;
114 char *buffer = file_open(fname);
115 char *token;
116
117 if (buffer == NULL)
118 return -1;
119
120 token = buffer;
121 while (1) {
122 skip_spaces(&token);
123 if (*token == 0)
124 break;
125 else if (*token == 'c')
126 skip_line(&token);
127 else if (*token == 'p') {
128 token++;
129 skip_spaces(&token);
130 for(; !isspace(*token); token++); /* skip 'cnf' */
131
132 n_var = read_int(&token);
133 n_clause = read_int(&token);
134 skip_line(&token);
135 lits = vec_uint_alloc((unsigned) n_var);
136 p = satoko_create();
137 } else {
138 if (lits == NULL) {
139 printf("There is no parameter line.\n");
140 satoko_free(buffer);
141 return -1;
142 }
143 read_clause(&token, lits);
144 if (!satoko_add_clause(p, (int*)vec_uint_data(lits), vec_uint_size(lits))) {
145 printf("Unable to add clause: ");
146 vec_uint_print(lits);
147 return SATOKO_ERR;
148 }
149 }
150 }
151 vec_uint_free(lits);
152 satoko_free(buffer);
153 *solver = p;
154 return SATOKO_OK;
155}
void skip_line()
Cube * p
Definition exorList.c:222
#define solver
Definition kitten.c:211
#define satoko_free(p)
Definition mem.h:20
int satoko_add_clause(satoko_t *, int *, int)
Definition solver_api.c:255
struct solver_t_ satoko_t
Definition satoko.h:35
satoko_t * satoko_create(void)
Definition solver_api.c:88
@ SATOKO_OK
Definition satoko.h:19
@ SATOKO_ERR
Definition satoko.h:18
typedefABC_NAMESPACE_HEADER_START struct vec_uint_t_ vec_uint_t
Definition vec_uint.h:21
Here is the call graph for this function: