Doxygen Generated Documentation of Ben-Jose Trainable SAT Solver Library
print_macros.h
1 
2 
3 /*************************************************************
4 
5 This file is part of ben-jose.
6 
7 ben-jose is free software: you can redistribute it and/or modify
8 it under the terms of the version 3 of the GNU General Public
9 License as published by the Free Software Foundation.
10 
11 ben-jose is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with ben-jose. If not, see <http://www.gnu.org/licenses/>.
18 
19 ------------------------------------------------------------
20 
21 Copyright (C) 2007-2012, 2014-2016. QUIROGA BELTRAN, Jose Luis.
22 Id (cedula): 79523732 de Bogota - Colombia.
23 See https://github.com/joseluisquiroga/ben-jose
24 
25 ben-jose is free software thanks to The Glory of Our Lord
26  Yashua Melej Hamashiaj.
27 Our Resurrected and Living, both in Body and Spirit,
28  Prince of Peace.
29 
30 ------------------------------------------------------------
31 
32 print_macros.h
33 
34 macros to declare and define print operators.
35 
36 --------------------------------------------------------------*/
37 
38 #ifndef PRINT_MACROS_H
39 #define PRINT_MACROS_H
40 
41 
42 
43 //=================================================================
44 // printing declarations
45 
46 #define DECLARE_PRINT_FUNCS(obj_t) \
47 bj_ostream& operator << (bj_ostream& os, obj_t& obj1); \
48 bj_ostream& operator << (bj_ostream& os, obj_t* obj1); \
49 \
50 
51 // end_of_define
52 
53 #define DEFINE_PRINT_FUNCS(obj_t) \
54 inline \
55 bj_ostream& operator << (bj_ostream& os, obj_t& obj1){ \
56  obj1.print_##obj_t(os); \
57  os.flush(); \
58  return os; \
59 } \
60 \
61 inline \
62 bj_ostream& operator << (bj_ostream& os, obj_t* obj1){ \
63  if(obj1 == NULL_PT){ \
64  os << "NULL_" << #obj_t; \
65  } else { \
66  obj1->print_##obj_t(os, true); \
67  } \
68  os.flush(); \
69  return os; \
70 } \
71 \
72 
73 // end_of_define
74 
75 
76 #endif // PRINT_MACROS_H
77 
78