19 #ifndef polybori_pbori_defs_h_
20 #define polybori_pbori_defs_h_
31 #ifndef PBORI_UNIQUE_SLOTS
32 # define PBORI_UNIQUE_SLOTS CUDD_UNIQUE_SLOTS // initial size of subtables
35 #ifndef PBORI_CACHE_SLOTS
36 # define PBORI_CACHE_SLOTS CUDD_CACHE_SLOTS // default size of the cache
39 #ifndef PBORI_MAX_MEMORY
40 # define PBORI_MAX_MEMORY 0 // target maximum memory occupation
49 #define PBORI_LIKELY(expression) (__builtin_expect(!!(expression), 1))
51 #ifndef PBORI_UNLIKELY
52 #define PBORI_UNLIKELY(expression) (__builtin_expect(!!(expression), 0))
56 #define PBORI_LIKELY(expression) (expression)
58 #ifndef PBORI_UNLIKELY
59 #define PBORI_UNLIKELY(expression) (expression)
64 #define PBORINAME polybori
67 #ifndef PBORI_NO_DEVELOPER
68 # define PBORI_DEVELOPER
71 #ifndef PBORI_NO_NAMESPACES
74 # define BEGIN_NAMESPACE_PBORI namespace PBORINAME {
77 # define END_NAMESPACE_PBORI } // end of namespace
80 # define USING_NAMESPACE_PBORI using namespace PBORINAME;
83 # define PBORI PBORINAME
86 # define USING_PBORI using PBORI
89 # define PBORI_BEGIN_NAMESPACE( sub_space ) namespace sub_space {
92 # define PBORI_END_NAMESPACE }
96 # define BEGIN_NAMESPACE_PBORI
97 # define END_NAMESPACE_PBORI
98 # define USING_NAMESPACE_PBORI
101 # define PBORI_BEGIN_NAMESPACE( sub_space )
102 # define PBORI_END_NAMESPACE
104 #endif // PBORI_NO_NAMESPACES
107 #ifdef PBORI_DEBUG_TRACE
109 # define PBORI_TRACE_FUNC(text) std::cerr << text << std::endl;
111 # define PBORI_TRACE_FUNC(text)
115 #if defined(PBORI_NDEBUG)
116 #define PBORI_ASSERT(arg) (static_cast<void>(0))
118 #define PBORI_ASSERT(arg) assert(arg)
122 #ifndef PBORI_NO_STDSTREAMS
125 # define PBORI_OSTREAM std::ostream
134 template <
class StreamedType>
141 #endif // of #ifndef PBORI_NO_STDSTREAMS
199 less_or_equal_max = 0,
200 greater_or_equal_min = 0
203 enum { max_idx = CUDD_MAXINDEX };
295 #ifdef PBORI_DEVELOPER
296 # define PBORI_NOT_IMPLEMENTED \
297 throw PBORI::PBoRiError(PBORI::CTypes::not_implemented);
299 # define PBORI_NOT_IMPLEMENTED
303 #if defined(PBORI_ADD_BY_ITE) || defined(PBORI_ADD_BY_OR) \
304 || defined(PBORI_ADD_BY_UNION) || defined(PBORI_ADD_BY_EXTRA_XOR) \
305 || defined(PBORI_ADD_BY_XOR)
307 # define PBORI_ADD_BY_XOR
312 #ifdef PBORI_ADD_BY_XOR
313 # define PBORI_LOWLEVEL_XOR
317 #if defined(PBORI_USEDVARS_BY_IDX) || defined(PBORI_USEDVARS_BY_TRANSFORM) \
318 || defined(PBORI_USEDVARS_HIGHLEVEL)|| defined(PBORI_USEDVARS_BY_SUPPORT)\
319 || defined(PBORI_USEDVARS_EXTRA)
321 # define PBORI_USEDVARS_BY_IDX
326 #endif // of #ifndef polybori_pbori_defs_h_
const char * errortext_type
Type used to verbose error information.
Definition: pbori_defs.h:243
Definition: pbori_defs.h:180
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
ordercodes
Codes For orderings.
Definition: pbori_defs.h:154
Definition: pbori_defs.h:158
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
static idx_type max_index()
Type of interface to binary decicion diagrams.
Definition: pbori_defs.h:290
int deg_type
Type for polynomial degrees (ranges from -1 to maxint)
Definition: pbori_defs.h:222
This struct contains type definitions and enumerations to be used for order codes.
Definition: pbori_defs.h:152
short int comp_type
Type for comparisons.
Definition: pbori_defs.h:237
Definition: pbori_defs.h:172
#define PBORI_OSTREAM
Get output stream type.
Definition: pbori_defs.h:125
This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and v...
Definition: BoolePolyRing.h:40
This struct contains auxiliary type definitions.
Definition: pbori_defs.h:210
std::ostream ostream_type
Type for out-stream.
Definition: pbori_defs.h:246
Definition: pbori_defs.h:175
Definition: pbori_defs.h:156
Definition: pbori_defs.h:181
int integer_type
Type for integer numbers.
Definition: pbori_defs.h:225
std::size_t hash_type
Type for hashing.
Definition: pbori_defs.h:231
Definition: pbori_defs.h:182
Definition: pbori_defs.h:173
unsigned int errornum_type
Type used to store error codes.
Definition: pbori_defs.h:234
int idx_type
Type for indices.
Definition: pbori_defs.h:228
CErrorEnums errorenums_type
Definition: pbori_defs.h:279
This struct contains type definitions and enumerations to be used for error codes.
Definition: pbori_defs.h:168
errorcodes
Error codes enumeration.
Definition: pbori_defs.h:170
Definition: pbori_defs.h:157
COrderEnums orderenums_type
Definition: pbori_defs.h:278
CCompareEnums compenums_type
Definition: pbori_defs.h:280
comparecodes
Comparision codes enumeration.
Definition: pbori_defs.h:195
Definition: pbori_defs.h:174
Definition: pbori_defs.h:176
const char * vartext_type
Type for setting/getting names of variables.
Definition: pbori_defs.h:249
CTypes::ostream_type & operator<<(CTypes::ostream_type &os, const BooleConstant &rhs)
Stream output operator.
Definition: BooleConstant.h:109
std::size_t size_type
Type for lengths, dimensions, etc.
Definition: pbori_defs.h:219
unsigned long large_size_type
large size_type (necessary?)
Definition: pbori_defs.h:252
Definition: pbori_defs.h:178
std::size_t refcount_type
Type for counting references.
Definition: pbori_defs.h:255
Definition: BooleSet.h:57
Definition: pbori_defs.h:179
Definition: pbori_defs.h:155
bool bool_type
Type for standard true/false statements.
Definition: pbori_defs.h:216
This struct contains type definitions to be used in library classes.
Definition: pbori_defs.h:269
Definition: pbori_defs.h:177
This struct contains type definitions and enumerations to be used for comparisons.
Definition: pbori_defs.h:193
int ordercode_type
Type for ordering codes.
Definition: pbori_defs.h:240
CAuxTypes auxtypes_type
Definition: pbori_defs.h:281