ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
logging.h
Go to the documentation of this file.
1#ifndef _logging_h_INCLUDED
2#define _logging_h_INCLUDED
3
4#include "attribute.h"
5#include "extend.h"
6#include "reference.h"
7#include "watch.h"
8
9#include <stdarg.h>
10
11#include "global.h"
13
14#if defined(LOGGING) && !defined(KISSAT_QUIET)
15
16// clang-format off
17
18const char * kissat_log_lit (kissat *, unsigned lit);
19const char * kissat_log_var (kissat *, unsigned idx);
20const char * kissat_log_repr (kissat *, unsigned lit, const unsigned *);
21
22void kissat_begin_logging (kissat *, const char *prefix,
23 const char *fmt, ...)
24ATTRIBUTE_FORMAT (3, 4);
25
26void kissat_end_logging (void);
27
28void kissat_log_msg (kissat *, const char*, const char *fmt, ...)
29ATTRIBUTE_FORMAT (3, 4);
30
31void kissat_log_clause (kissat *, const char*, const clause *,
32 const char *, ...)
33ATTRIBUTE_FORMAT (4, 5);
34
35void kissat_log_counted_clause (kissat *, const char*, const clause *,
36 const unsigned *, const char *, ...)
37ATTRIBUTE_FORMAT (5, 6);
38
39void kissat_log_repr_clause (kissat *, const char*, const clause *,
40 const unsigned *, const char *, ...)
41ATTRIBUTE_FORMAT (5, 6);
42
43void kissat_log_binary (kissat *, const char*,
44 unsigned, unsigned, const char *, ...)
45ATTRIBUTE_FORMAT (5, 6);
46
47void kissat_log_unary (kissat *, const char*, unsigned, const char *, ...)
48ATTRIBUTE_FORMAT (4, 5);
49
50void kissat_log_lits (kissat *, const char*,
51 size_t, const unsigned *, const char *, ...)
52ATTRIBUTE_FORMAT (5, 6);
53
54void kissat_log_litset (kissat *, const char*,
55 size_t, const unsigned *, const char *, ...)
56ATTRIBUTE_FORMAT (5, 6);
57
58void kissat_log_litpart (kissat *, const char*,
59 size_t, const unsigned *, const char *, ...)
60ATTRIBUTE_FORMAT (5, 6);
61
62void kissat_log_counted_ref_lits (kissat *, const char*, reference,
63 size_t, const unsigned *,
64 const unsigned * counts, const char *, ...)
65ATTRIBUTE_FORMAT (7, 8);
66
67void kissat_log_counted_lits (kissat *, const char*,
68 size_t, const unsigned *,
69 const unsigned * counts, const char *, ...)
70ATTRIBUTE_FORMAT (6, 7);
71
72void kissat_log_unsigneds (kissat *, const char*,
73 size_t, const unsigned *, const char *, ...)
74ATTRIBUTE_FORMAT (5, 6);
75
76#define INVALID_GATE_ID (~(size_t)0)
77
78void kissat_log_and_gate (kissat *, const char*, size_t id, unsigned * repr,
79 unsigned lhs, size_t, const unsigned * rhs,
80 const char *, ...)
81ATTRIBUTE_FORMAT (8, 9);
82
83void kissat_log_xor_gate (kissat *, const char*, size_t id, unsigned * repr,
84 unsigned lhs, size_t, const unsigned * rhs,
85 const char *, ...)
86ATTRIBUTE_FORMAT (8, 9);
87
88void kissat_log_ite_gate (kissat *, const char*, size_t id, unsigned * repr,
89 unsigned lhs, unsigned cond, unsigned then_lit,
90 unsigned else_lit, const char *, ...)
91ATTRIBUTE_FORMAT (9, 10);
92
93void kissat_log_ints (kissat *, const char*,
94 size_t, const int *, const char *, ...)
95ATTRIBUTE_FORMAT (5, 6);
96
97void kissat_log_extensions (kissat *, const char *,
98 size_t, const extension *, const char *, ...)
99ATTRIBUTE_FORMAT (5, 6);
100
101void kissat_log_xor (struct kissat *, const char*, unsigned lit,
102 unsigned size, const unsigned *lits, const char *fmt, ...)
103ATTRIBUTE_FORMAT (6, 7);
104
105void kissat_log_ref (kissat *, const char*, reference, const char *, ...)
106ATTRIBUTE_FORMAT (4, 5);
107
108void kissat_log_resolvent (kissat *, const char*, const char *, ...)
109ATTRIBUTE_FORMAT (3, 4);
110
111void kissat_log_watch (kissat *, const char*,
112 unsigned, watch, const char *, ...)
113ATTRIBUTE_FORMAT (5, 6);
114
115// clang-format on
116
117#ifndef LOGPREFIX
118#define LOGPREFIX "LOG"
119#endif
120
121#define LOG(...) \
122 do { \
123 if (solver && GET_OPTION (log)) \
124 kissat_log_msg (solver, LOGPREFIX, __VA_ARGS__); \
125 } while (0)
126
127#define LOG2(...) \
128 do { \
129 if (solver && GET_OPTION (log) > 1) \
130 kissat_log_msg (solver, LOGPREFIX, __VA_ARGS__); \
131 } while (0)
132
133#define LOG3(...) \
134 do { \
135 if (solver && GET_OPTION (log) > 2) \
136 kissat_log_msg (solver, LOGPREFIX, __VA_ARGS__); \
137 } while (0)
138
139#define LOG4(...) \
140 do { \
141 if (solver && GET_OPTION (log) > 3) \
142 kissat_log_msg (solver, LOGPREFIX, __VA_ARGS__); \
143 } while (0)
144
145#define LOG5(...) \
146 do { \
147 if (solver && GET_OPTION (log) > 4) \
148 kissat_log_msg (solver, LOGPREFIX, __VA_ARGS__); \
149 } while (0)
150
151#define LOGLITS(...) \
152 do { \
153 if (solver && GET_OPTION (log)) \
154 kissat_log_lits (solver, LOGPREFIX, __VA_ARGS__); \
155 } while (0)
156
157#define LOGLITSET(...) \
158 do { \
159 if (solver && GET_OPTION (log)) \
160 kissat_log_litset (solver, LOGPREFIX, __VA_ARGS__); \
161 } while (0)
162
163#define LOGLITPART(...) \
164 do { \
165 if (solver && GET_OPTION (log)) \
166 kissat_log_litpart (solver, LOGPREFIX, __VA_ARGS__); \
167 } while (0)
168
169#define LOGCOUNTEDREFLITS(...) \
170 do { \
171 if (solver && GET_OPTION (log)) \
172 kissat_log_counted_ref_lits (solver, LOGPREFIX, __VA_ARGS__); \
173 } while (0)
174
175#define LOGCOUNTEDLITS(...) \
176 do { \
177 if (solver && GET_OPTION (log)) \
178 kissat_log_counted_lits (solver, LOGPREFIX, __VA_ARGS__); \
179 } while (0)
180
181#define LOGLITS3(...) \
182 do { \
183 if (GET_OPTION (log) > 2) \
184 kissat_log_lits (solver, LOGPREFIX, __VA_ARGS__); \
185 } while (0)
186
187#define LOGRES(...) \
188 do { \
189 if (solver && GET_OPTION (log)) \
190 kissat_log_resolvent (solver, LOGPREFIX, __VA_ARGS__); \
191 } while (0)
192
193#define LOGRES2(...) \
194 do { \
195 if (solver && GET_OPTION (log) > 1) \
196 kissat_log_resolvent (solver, LOGPREFIX, __VA_ARGS__); \
197 } while (0)
198
199#define LOGEXT(...) \
200 do { \
201 if (GET_OPTION (log)) \
202 kissat_log_extensions (solver, LOGPREFIX, __VA_ARGS__); \
203 } while (0)
204
205#define LOGEXT2(...) \
206 do { \
207 if (GET_OPTION (log) > 1) \
208 kissat_log_extensions (solver, LOGPREFIX, __VA_ARGS__); \
209 } while (0)
210
211#define LOGINTS(...) \
212 do { \
213 if (solver && GET_OPTION (log)) \
214 kissat_log_ints (solver, LOGPREFIX, __VA_ARGS__); \
215 } while (0)
216
217#define LOGINTS3(...) \
218 do { \
219 if (GET_OPTION (log) > 2) \
220 kissat_log_ints (solver, LOGPREFIX, __VA_ARGS__); \
221 } while (0)
222
223#define LOGUNSIGNEDS2(...) \
224 do { \
225 if (GET_OPTION (log) > 1) \
226 kissat_log_unsigneds (solver, LOGPREFIX, __VA_ARGS__); \
227 } while (0)
228
229#define LOGUNSIGNEDS3(...) \
230 do { \
231 if (GET_OPTION (log) > 2) \
232 kissat_log_unsigneds (solver, LOGPREFIX, __VA_ARGS__); \
233 } while (0)
234
235#define LOGANDGATE(...) \
236 do { \
237 if (GET_OPTION (log) > 0) \
238 kissat_log_and_gate (solver, LOGPREFIX, __VA_ARGS__); \
239 } while (0)
240
241#define LOGXORGATE(...) \
242 do { \
243 if (GET_OPTION (log) > 0) \
244 kissat_log_xor_gate (solver, LOGPREFIX, __VA_ARGS__); \
245 } while (0)
246
247#define LOGITEGATE(...) \
248 do { \
249 if (GET_OPTION (log) > 0) \
250 kissat_log_ite_gate (solver, LOGPREFIX, __VA_ARGS__); \
251 } while (0)
252
253#define LOGCLS(...) \
254 do { \
255 if (solver && GET_OPTION (log)) \
256 kissat_log_clause (solver, LOGPREFIX, __VA_ARGS__); \
257 } while (0)
258
259#define LOGCOUNTEDCLS(...) \
260 do { \
261 if (solver && GET_OPTION (log)) \
262 kissat_log_counted_clause (solver, LOGPREFIX, __VA_ARGS__); \
263 } while (0)
264
265#define LOGREPRCLS(...) \
266 do { \
267 if (solver && GET_OPTION (log)) \
268 kissat_log_repr_clause (solver, LOGPREFIX, __VA_ARGS__); \
269 } while (0)
270
271#define LOGLINE(...) \
272 do { \
273 if (solver && GET_OPTION (log)) \
274 kissat_log_line (solver, LOGPREFIX, __VA_ARGS__); \
275 } while (0)
276
277#define LOGCLS2(...) \
278 do { \
279 if (GET_OPTION (log) > 1) \
280 kissat_log_clause (solver, LOGPREFIX, __VA_ARGS__); \
281 } while (0)
282
283#define LOGCLS3(...) \
284 do { \
285 if (GET_OPTION (log) > 2) \
286 kissat_log_clause (solver, LOGPREFIX, __VA_ARGS__); \
287 } while (0)
288
289#define LOGREF(...) \
290 do { \
291 if (solver && GET_OPTION (log)) \
292 kissat_log_ref (solver, LOGPREFIX, __VA_ARGS__); \
293 } while (0)
294
295#define LOGREF2(...) \
296 do { \
297 if (solver && GET_OPTION (log) > 1) \
298 kissat_log_ref (solver, LOGPREFIX, __VA_ARGS__); \
299 } while (0)
300
301#define LOGREF3(...) \
302 do { \
303 if (solver && GET_OPTION (log) > 2) \
304 kissat_log_ref (solver, LOGPREFIX, __VA_ARGS__); \
305 } while (0)
306
307#define LOGBINARY(...) \
308 do { \
309 if (solver && GET_OPTION (log)) \
310 kissat_log_binary (solver, LOGPREFIX, __VA_ARGS__); \
311 } while (0)
312
313#define LOGBINARY2(...) \
314 do { \
315 if (GET_OPTION (log) > 1) \
316 kissat_log_binary (solver, LOGPREFIX, __VA_ARGS__); \
317 } while (0)
318
319#define LOGBINARY3(...) \
320 do { \
321 if (GET_OPTION (log) > 2) \
322 kissat_log_binary (solver, LOGPREFIX, __VA_ARGS__); \
323 } while (0)
324
325#define LOGUNARY(...) \
326 do { \
327 if (solver && GET_OPTION (log)) \
328 kissat_log_unary (solver, LOGPREFIX, __VA_ARGS__); \
329 } while (0)
330
331#define LOGLIT(LIT) kissat_log_lit (solver, (LIT))
332#define LOGVAR(IDX) kissat_log_var (solver, (IDX))
333#define LOGREPR(LIT, REPR) kissat_log_repr (solver, (LIT), (REPR))
334
335#define LOGWATCH(...) \
336 do { \
337 if (GET_OPTION (log)) \
338 kissat_log_watch (solver, LOGPREFIX, __VA_ARGS__); \
339 } while (0)
340
341#define LOGXOR(...) \
342 do { \
343 if (GET_OPTION (log)) \
344 kissat_log_xor (solver, LOGPREFIX, __VA_ARGS__); \
345 } while (0)
346
347#else
348
349#define LOG(...) \
350 do { \
351 } while (0)
352#define LOG2(...) \
353 do { \
354 } while (0)
355#define LOG3(...) \
356 do { \
357 } while (0)
358#define LOG4(...) \
359 do { \
360 } while (0)
361#define LOG5(...) \
362 do { \
363 } while (0)
364#define LOGRES(...) \
365 do { \
366 } while (0)
367#define LOGRES2(...) \
368 do { \
369 } while (0)
370#define LOGLITS(...) \
371 do { \
372 } while (0)
373#define LOGLITSET(...) \
374 do { \
375 } while (0)
376#define LOGLITPART(...) \
377 do { \
378 } while (0)
379#define LOGLITS3(...) \
380 do { \
381 } while (0)
382#define LOGCOUNTEDREFLITS(...) \
383 do { \
384 } while (0)
385#define LOGCOUNTEDLITS(...) \
386 do { \
387 } while (0)
388#define LOGEXT(...) \
389 do { \
390 } while (0)
391#define LOGEXT2(...) \
392 do { \
393 } while (0)
394#define LOGINTS(...) \
395 do { \
396 } while (0)
397#define LOGINTS3(...) \
398 do { \
399 } while (0)
400#define LOGUNSIGNEDS2(...) \
401 do { \
402 } while (0)
403#define LOGUNSIGNEDS3(...) \
404 do { \
405 } while (0)
406#define LOGANDGATE(...) \
407 do { \
408 } while (0)
409#define LOGXORGATE(...) \
410 do { \
411 } while (0)
412#define LOGITEGATE(...) \
413 do { \
414 } while (0)
415#define LOGCLS(...) \
416 do { \
417 } while (0)
418#define LOGCLS2(...) \
419 do { \
420 } while (0)
421#define LOGCLS3(...) \
422 do { \
423 } while (0)
424#define LOGCOUNTEDCLS(...) \
425 do { \
426 } while (0)
427#define LOGREPRCLS(...) \
428 do { \
429 } while (0)
430#define LOGLINE(...) \
431 do { \
432 } while (0)
433#define LOGREF(...) \
434 do { \
435 } while (0)
436#define LOGREF2(...) \
437 do { \
438 } while (0)
439#define LOGREF3(...) \
440 do { \
441 } while (0)
442#define LOGBINARY(...) \
443 do { \
444 } while (0)
445#define LOGBINARY2(...) \
446 do { \
447 } while (0)
448#define LOGBINARY3(...) \
449 do { \
450 } while (0)
451#define LOGUNARY(...) \
452 do { \
453 } while (0)
454#define LOGWATCH(...) \
455 do { \
456 } while (0)
457#define LOGXOR(...) \
458 do { \
459 } while (0)
460
461#endif
462
463#define LOGTMP(...) \
464 LOGLITS (SIZE_STACK (solver->clause), BEGIN_STACK (solver->clause), \
465 __VA_ARGS__)
466
468
469#endif
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
#define ATTRIBUTE_FORMAT(FORMAT_POSITION, VARIADIC_ARGUMENT_POSITION)
Definition attribute.h:11
ABC_NAMESPACE_HEADER_START typedef unsigned reference
Definition reference.h:9
int lit
Definition satVec.h:130
Definition watch.h:41
#define const
Definition zconf.h:196