YAP 7.1.0
cuddSupport.h
1// @file cuddSuport.h
2//
3//This file contains declarations of cudd internals for support of
4// simplecudd.h. It also calls cudd.h, so you shouldn't need anything else
5// to interface with cudd.
6
7
8// cudd.h should be available from external source.
9
10#include <cudd/cudd.h>
11
12
20#if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
21#define CUDD_MAXINDEX (((DdHalfWord) ~0) >> 1)
22#else
23#define CUDD_MAXINDEX ((DdHalfWord) ~0)
24#endif
25
31#define CUDD_CONST_INDEX CUDD_MAXINDEX
32
36#if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
37typedef uint32_t DdHalfWord;
38#else
39typedef uint16_t DdHalfWord;
40#endif
41
45struct DdChildren {
46 struct DdNode *T;
47 struct DdNode *E;
48};
49
50
51
55struct DdNode {
56 DdHalfWord index;
57 DdHalfWord ref;
59 union {
60 CUDD_VALUE_TYPE value;
62 } type;
63};
64
65
66
79#define cuddRef(n) cuddSatInc(Cudd_Regular(n)->ref)
80
81#define cuddV(node) ((node)->type.value)
82
83extern DdNode * cuddAllocNode(DdManager *unique);
84
85#define statLine(dd)
86
87
88extern DdNode * cuddCacheLookup1(DdManager *table, DdNode * (*)(DdManager *, DdNode *), DdNode *f);
89extern void cuddCacheInsert1(DdManager *table, DdNode * (*)(DdManager *, DdNode *), DdNode *f, DdNode *data);
90
91
107#define cuddDeref(n) cuddSatDec(Cudd_Regular(n)->ref)
108
120#define cuddT(node) ((node)->type.kids.T)
121
122
134#define cuddE(node) ((node)->type.kids.E)
135
136
137
138extern DdNode * cuddUniqueInter(DdManager *unique, int index, DdNode *T, DdNode *E);
139
151#if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
152#define cuddSatInc(x) ((x)++)
153#else
154#define cuddSatInc(x) ((x) += (x) != (DdHalfWord)DD_MAXREF)
155#endif
156
157
169#if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
170#define cuddSatDec(x) ((x)--)
171#else
172#define cuddSatDec(x) ((x) -= (x) != (DdHalfWord)DD_MAXREF)
173#endif
174
175extern DdNode * cuddUniqueConst(DdManager *unique, CUDD_VALUE_TYPE value);
176
no_error E(DOMAIN_ERROR_ABSOLUTE_FILE_NAME_OPTION, DOMAIN_ERROR, "absolute_file_name_option") E(DOMAIN_ERROR_ARRAY_OVERFLOW
default state
@ index
index
Definition: YapGFlagInfo.h:354
If you like being short, use T instead of YapTerm.
Definition: yapt.hh:266
The two children of a non-terminal node.
Definition: cuddSupport.h:45
struct DdNode * T
then (true) child
Definition: cuddSupport.h:46
struct DdNode * E
else (false) child
Definition: cuddSupport.h:47
Decision diagram node.
Definition: cuddSupport.h:55
CUDD_VALUE_TYPE value
for constant (terminal) nodes
Definition: cuddSupport.h:60
union DdNode::@110 type
terminal or internal
DdNode * next
next pointer for unique table
Definition: cuddSupport.h:58
DdHalfWord ref
reference count
Definition: cuddSupport.h:57
DdHalfWord index
variable index
Definition: cuddSupport.h:56
struct DdChildren kids
for internal nodes
Definition: cuddSupport.h:61