svf-lib 1.0.1825 → 1.0.1827
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-linux/Release-build/svf/libSvfCore.a +0 -0
- package/{SVF-osx → SVF-linux}/Release-build/svf-llvm/extapi.bc +459 -460
- package/SVF-linux/Release-build/svf-llvm/libSvfLLVM.a +0 -0
- package/SVF-osx/svf/include/Util/WorkList.h +0 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/CPPUtil.h +37 -12
- package/SVF-osx/svf-llvm/include/SVF-LLVM/DCHG.h +1 -9
- package/SVF-osx/svf-llvm/include/SVF-LLVM/ICFGBuilder.h +1 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMModule.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMUtil.h +4 -108
- package/package.json +1 -1
- package/SVF-osx/Release-build/svf/libSvfCore.a +0 -0
- package/SVF-osx/Release-build/svf-llvm/libSvfLLVM.a +0 -0
- package/SVF-osx/svf/include/AbstractExecution/WTO.h +0 -892
- package/SVF-osx/svf/include/CFL/CFLData.h +0 -316
- package/SVF-osx/svf/include/CFL/CFLDataBuilder.h +0 -91
- package/SVF-osx/svf/include/CFL/CFLGrammar.h +0 -468
- package/SVF-osx/svf/include/CFL/CFLGrammar.txt +0 -15
- package/SVF-osx/svf/include/CFL/CFLGrammarDev.txt +0 -16
- package/SVF-osx/svf/include/CFL/PEGGrammar.txt +0 -11
- package/SVF-osx/svf/include/CFL/VFG.txt +0 -7
- package/SVF-osx/svf/include/CUDD/cudd.h +0 -688
- package/SVF-osx/svf/include/CUDD/cuddInt.h +0 -1145
- package/SVF-osx/svf/include/CUDD/epd.h +0 -192
- package/SVF-osx/svf/include/CUDD/mtr.h +0 -180
- package/SVF-osx/svf/include/CUDD/mtrInt.h +0 -92
- package/SVF-osx/svf/include/CUDD/st.h +0 -230
- package/SVF-osx/svf/include/CUDD/util.h +0 -196
- package/SVF-osx/svf/include/Graphs/ExternalPAG.h +0 -147
- package/SVF-osx/svf/include/Graphs/ICFGWrapper.h +0 -726
- package/SVF-osx/svf/include/Graphs/OfflineConsG.h +0 -151
- package/SVF-osx/svf/include/Graphs/PAG.h +0 -932
- package/SVF-osx/svf/include/Graphs/PAGEdge.h +0 -738
- package/SVF-osx/svf/include/Graphs/PAGNode.h +0 -843
- package/SVF-osx/svf/include/MTA/LockResultValidator.h +0 -118
- package/SVF-osx/svf/include/MTA/MTAAnnotator.h +0 -118
- package/SVF-osx/svf/include/MemoryModel/LocationSet.h +0 -157
- package/SVF-osx/svf/include/MemoryModel/MemModel.h +0 -414
- package/SVF-osx/svf/include/MemoryModel/PAGBuilderFromFile.h +0 -80
- package/SVF-osx/svf/include/MemoryModel/PTAStat.h +0 -174
- package/SVF-osx/svf/include/MemoryModel/PTAType.h +0 -368
- package/SVF-osx/svf/include/MemoryModel/PointsToDFDS.h +0 -514
- package/SVF-osx/svf/include/MemoryModel/PointsToDS.h +0 -289
- package/SVF-osx/svf/include/MemoryModel/SVFIR.h +0 -650
- package/SVF-osx/svf/include/MemoryModel/SVFStatements.h +0 -1101
- package/SVF-osx/svf/include/MemoryModel/SVFSymbols.h +0 -648
- package/SVF-osx/svf/include/MemoryModel/SVFVariables.h +0 -721
- package/SVF-osx/svf/include/MemoryModel/SymbolTableInfo.h +0 -713
- package/SVF-osx/svf/include/SABER/PathCondAllocator.h +0 -303
- package/SVF-osx/svf/include/SABER/SaberAnnotator.h +0 -72
- package/SVF-osx/svf/include/SVFIR/SVFIRRW.h +0 -1302
- package/SVF-osx/svf/include/SVFIR/SVFModuleRW.h +0 -197
- package/SVF-osx/svf/include/Util/BDDExpr.h +0 -198
- package/SVF-osx/svf/include/Util/BasicTypes.h +0 -768
- package/SVF-osx/svf/include/Util/CFLSolver.h +0 -186
- package/SVF-osx/svf/include/Util/Conditions.h +0 -421
- package/SVF-osx/svf/include/Util/CppUtil.h +0 -81
- package/SVF-osx/svf/include/Util/ExeState.h +0 -197
- package/SVF-osx/svf/include/Util/ExtAPI.json +0 -5853
- package/SVF-osx/svf/include/Util/IRAnnotator.h +0 -321
- package/SVF-osx/svf/include/Util/PathCondAllocator.h +0 -286
- package/SVF-osx/svf/include/Util/PathDPItem.h +0 -310
- package/SVF-osx/svf/include/Util/SCC.h +0 -352
- package/SVF-osx/svf/include/Util/SVFBasicTypes.h +0 -245
- package/SVF-osx/svf/include/Util/SVFInstruction.h +0 -40
- package/SVF-osx/svf/include/Util/SVFModule.h +0 -278
- package/SVF-osx/svf/include/Util/SymState.h +0 -118
- package/SVF-osx/svf/include/Util/TypeBasedHeapCloning.h +0 -188
- package/SVF-osx/svf/include/WPA/AndersenSFR.h +0 -160
- package/SVF-osx/svf/include/WPA/FlowSensitiveTBHC.h +0 -122
- package/SVF-osx/svf/include/WPA/TypeBasedHeapCloning.h +0 -188
- package/SVF-osx/svf-llvm/include/SVF-LLVM/IRAnnotator.h +0 -324
|
@@ -1,688 +0,0 @@
|
|
|
1
|
-
/**CHeaderFile*****************************************************************
|
|
2
|
-
|
|
3
|
-
FileName [cudd.h]
|
|
4
|
-
|
|
5
|
-
PackageName [cudd]
|
|
6
|
-
|
|
7
|
-
Synopsis [The University of Colorado decision diagram package.]
|
|
8
|
-
|
|
9
|
-
Description [External functions and data strucures of the CUDD package.
|
|
10
|
-
<ul>
|
|
11
|
-
<li> To turn on the gathering of statistics, define DD_STATS.
|
|
12
|
-
<li> To link with mis, define DD_MIS.
|
|
13
|
-
</ul>
|
|
14
|
-
Modified by Abelardo Pardo to interface it to VIS.
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
SeeAlso []
|
|
18
|
-
|
|
19
|
-
Author [Fabio Somenzi]
|
|
20
|
-
|
|
21
|
-
Copyright [Copyright (c) 1995-2012, Regents of the University of Colorado
|
|
22
|
-
|
|
23
|
-
All rights reserved.
|
|
24
|
-
|
|
25
|
-
Redistribution and use in source and binary forms, with or without
|
|
26
|
-
modification, are permitted provided that the following conditions
|
|
27
|
-
are met:
|
|
28
|
-
|
|
29
|
-
Redistributions of source code must retain the above copyright
|
|
30
|
-
notice, this list of conditions and the following disclaimer.
|
|
31
|
-
|
|
32
|
-
Redistributions in binary form must reproduce the above copyright
|
|
33
|
-
notice, this list of conditions and the following disclaimer in the
|
|
34
|
-
documentation and/or other materials provided with the distribution.
|
|
35
|
-
|
|
36
|
-
Neither the name of the University of Colorado nor the names of its
|
|
37
|
-
contributors may be used to endorse or promote products derived from
|
|
38
|
-
this software without specific prior written permission.
|
|
39
|
-
|
|
40
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
41
|
-
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
42
|
-
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
43
|
-
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
44
|
-
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
45
|
-
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
46
|
-
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
47
|
-
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
48
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
49
|
-
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
50
|
-
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
51
|
-
POSSIBILITY OF SUCH DAMAGE.]
|
|
52
|
-
|
|
53
|
-
Revision [$Id: cudd.h,v 1.180 2012/02/05 01:07:18 fabio Exp $]
|
|
54
|
-
|
|
55
|
-
******************************************************************************/
|
|
56
|
-
|
|
57
|
-
#ifndef _CUDD
|
|
58
|
-
#define _CUDD
|
|
59
|
-
|
|
60
|
-
/*---------------------------------------------------------------------------*/
|
|
61
|
-
/* Nested includes */
|
|
62
|
-
/*---------------------------------------------------------------------------*/
|
|
63
|
-
|
|
64
|
-
#include "mtr.h"
|
|
65
|
-
#include "epd.h"
|
|
66
|
-
|
|
67
|
-
#ifdef __cplusplus
|
|
68
|
-
extern "C" {
|
|
69
|
-
#endif
|
|
70
|
-
|
|
71
|
-
/*---------------------------------------------------------------------------*/
|
|
72
|
-
/* Constant declarations */
|
|
73
|
-
/*---------------------------------------------------------------------------*/
|
|
74
|
-
|
|
75
|
-
#ifndef SIZEOF_VOID_P
|
|
76
|
-
#define SIZEOF_VOID_P 4
|
|
77
|
-
#endif
|
|
78
|
-
#ifndef SIZEOF_INT
|
|
79
|
-
#define SIZEOF_INT 4
|
|
80
|
-
#endif
|
|
81
|
-
#ifndef SIZEOF_LONG
|
|
82
|
-
#define SIZEOF_LONG 4
|
|
83
|
-
#endif
|
|
84
|
-
|
|
85
|
-
#define CUDD_TRUE 1
|
|
86
|
-
|
|
87
|
-
#define CUDD_VALUE_TYPE double
|
|
88
|
-
#define CUDD_OUT_OF_MEM -1
|
|
89
|
-
/* The sizes of the subtables and the cache must be powers of two. */
|
|
90
|
-
#define CUDD_UNIQUE_SLOTS 256 /* initial size of subtables */
|
|
91
|
-
#define CUDD_CACHE_SLOTS 262144 /* default size of the cache */
|
|
92
|
-
|
|
93
|
-
/* Constants for residue functions. */
|
|
94
|
-
|
|
95
|
-
/* CUDD_MAXINDEX is defined in such a way that on 32-bit and 64-bit
|
|
96
|
-
** machines one can cast an index to (int) without generating a negative
|
|
97
|
-
** number.
|
|
98
|
-
*/
|
|
99
|
-
#if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
|
|
100
|
-
#define CUDD_MAXINDEX (((DdHalfWord) ~0) >> 1)
|
|
101
|
-
#else
|
|
102
|
-
#define CUDD_MAXINDEX ((DdHalfWord) ~0)
|
|
103
|
-
#endif
|
|
104
|
-
|
|
105
|
-
/* CUDD_CONST_INDEX is the index of constant nodes. Currently this
|
|
106
|
-
** is a synonim for CUDD_MAXINDEX. */
|
|
107
|
-
#define CUDD_CONST_INDEX CUDD_MAXINDEX
|
|
108
|
-
|
|
109
|
-
/* These constants define the digits used in the representation of
|
|
110
|
-
** arbitrary precision integers. The configurations tested use 8, 16,
|
|
111
|
-
** and 32 bits for each digit. The typedefs should be in agreement
|
|
112
|
-
** with these definitions.
|
|
113
|
-
*/
|
|
114
|
-
#if SIZEOF_LONG == 8
|
|
115
|
-
#define DD_APA_BITS 32
|
|
116
|
-
#define DD_APA_BASE (1L << DD_APA_BITS)
|
|
117
|
-
#define DD_APA_HEXPRINT "%08x"
|
|
118
|
-
#else
|
|
119
|
-
#define DD_APA_BITS 16
|
|
120
|
-
#define DD_APA_BASE (1 << DD_APA_BITS)
|
|
121
|
-
#define DD_APA_HEXPRINT "%04x"
|
|
122
|
-
#endif
|
|
123
|
-
#define DD_APA_MASK (DD_APA_BASE - 1)
|
|
124
|
-
|
|
125
|
-
/*---------------------------------------------------------------------------*/
|
|
126
|
-
/* Stucture declarations */
|
|
127
|
-
/*---------------------------------------------------------------------------*/
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
/*---------------------------------------------------------------------------*/
|
|
131
|
-
/* Type declarations */
|
|
132
|
-
/*---------------------------------------------------------------------------*/
|
|
133
|
-
|
|
134
|
-
/**Enum************************************************************************
|
|
135
|
-
|
|
136
|
-
Synopsis [Type of reordering algorithm.]
|
|
137
|
-
|
|
138
|
-
Description [Type of reordering algorithm.]
|
|
139
|
-
|
|
140
|
-
******************************************************************************/
|
|
141
|
-
typedef enum
|
|
142
|
-
{
|
|
143
|
-
CUDD_REORDER_SAME,
|
|
144
|
-
CUDD_REORDER_NONE,
|
|
145
|
-
CUDD_REORDER_RANDOM,
|
|
146
|
-
CUDD_REORDER_RANDOM_PIVOT,
|
|
147
|
-
CUDD_REORDER_SIFT,
|
|
148
|
-
CUDD_REORDER_SIFT_CONVERGE,
|
|
149
|
-
CUDD_REORDER_SYMM_SIFT,
|
|
150
|
-
CUDD_REORDER_SYMM_SIFT_CONV,
|
|
151
|
-
CUDD_REORDER_WINDOW2,
|
|
152
|
-
CUDD_REORDER_WINDOW3,
|
|
153
|
-
CUDD_REORDER_WINDOW4,
|
|
154
|
-
CUDD_REORDER_WINDOW2_CONV,
|
|
155
|
-
CUDD_REORDER_WINDOW3_CONV,
|
|
156
|
-
CUDD_REORDER_WINDOW4_CONV,
|
|
157
|
-
CUDD_REORDER_GROUP_SIFT,
|
|
158
|
-
CUDD_REORDER_GROUP_SIFT_CONV,
|
|
159
|
-
CUDD_REORDER_ANNEALING,
|
|
160
|
-
CUDD_REORDER_GENETIC,
|
|
161
|
-
CUDD_REORDER_LINEAR,
|
|
162
|
-
CUDD_REORDER_LINEAR_CONVERGE,
|
|
163
|
-
CUDD_REORDER_LAZY_SIFT,
|
|
164
|
-
CUDD_REORDER_EXACT
|
|
165
|
-
} Cudd_ReorderingType;
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
/**Enum************************************************************************
|
|
169
|
-
|
|
170
|
-
Synopsis [Type of aggregation methods.]
|
|
171
|
-
|
|
172
|
-
Description [Type of aggregation methods.]
|
|
173
|
-
|
|
174
|
-
******************************************************************************/
|
|
175
|
-
typedef enum
|
|
176
|
-
{
|
|
177
|
-
CUDD_NO_CHECK,
|
|
178
|
-
CUDD_GROUP_CHECK,
|
|
179
|
-
CUDD_GROUP_CHECK2,
|
|
180
|
-
CUDD_GROUP_CHECK3,
|
|
181
|
-
CUDD_GROUP_CHECK4,
|
|
182
|
-
CUDD_GROUP_CHECK5,
|
|
183
|
-
CUDD_GROUP_CHECK6,
|
|
184
|
-
CUDD_GROUP_CHECK7,
|
|
185
|
-
CUDD_GROUP_CHECK8,
|
|
186
|
-
CUDD_GROUP_CHECK9
|
|
187
|
-
} Cudd_AggregationType;
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
/**Enum************************************************************************
|
|
191
|
-
|
|
192
|
-
Synopsis [Type of hooks.]
|
|
193
|
-
|
|
194
|
-
Description [Type of hooks.]
|
|
195
|
-
|
|
196
|
-
******************************************************************************/
|
|
197
|
-
typedef enum
|
|
198
|
-
{
|
|
199
|
-
CUDD_PRE_GC_HOOK,
|
|
200
|
-
CUDD_POST_GC_HOOK,
|
|
201
|
-
CUDD_PRE_REORDERING_HOOK,
|
|
202
|
-
CUDD_POST_REORDERING_HOOK
|
|
203
|
-
} Cudd_HookType;
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
/**Enum************************************************************************
|
|
207
|
-
|
|
208
|
-
Synopsis [Type of error codes.]
|
|
209
|
-
|
|
210
|
-
Description [Type of error codes.]
|
|
211
|
-
|
|
212
|
-
******************************************************************************/
|
|
213
|
-
typedef enum
|
|
214
|
-
{
|
|
215
|
-
CUDD_NO_ERROR,
|
|
216
|
-
CUDD_MEMORY_OUT,
|
|
217
|
-
CUDD_TOO_MANY_NODES,
|
|
218
|
-
CUDD_MAX_MEM_EXCEEDED,
|
|
219
|
-
CUDD_TIMEOUT_EXPIRED,
|
|
220
|
-
CUDD_INVALID_ARG,
|
|
221
|
-
CUDD_INTERNAL_ERROR
|
|
222
|
-
} Cudd_ErrorType;
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
/**Enum************************************************************************
|
|
226
|
-
|
|
227
|
-
Synopsis [Group type for lazy sifting.]
|
|
228
|
-
|
|
229
|
-
Description [Group type for lazy sifting.]
|
|
230
|
-
|
|
231
|
-
******************************************************************************/
|
|
232
|
-
typedef enum
|
|
233
|
-
{
|
|
234
|
-
CUDD_LAZY_NONE,
|
|
235
|
-
CUDD_LAZY_SOFT_GROUP,
|
|
236
|
-
CUDD_LAZY_HARD_GROUP,
|
|
237
|
-
CUDD_LAZY_UNGROUP
|
|
238
|
-
} Cudd_LazyGroupType;
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
/**Enum************************************************************************
|
|
242
|
-
|
|
243
|
-
Synopsis [Variable type.]
|
|
244
|
-
|
|
245
|
-
Description [Variable type. Currently used only in lazy sifting.]
|
|
246
|
-
|
|
247
|
-
******************************************************************************/
|
|
248
|
-
typedef enum
|
|
249
|
-
{
|
|
250
|
-
CUDD_VAR_PRIMARY_INPUT,
|
|
251
|
-
CUDD_VAR_PRESENT_STATE,
|
|
252
|
-
CUDD_VAR_NEXT_STATE
|
|
253
|
-
} Cudd_VariableType;
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
#if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
|
|
257
|
-
typedef unsigned int DdHalfWord;
|
|
258
|
-
#else
|
|
259
|
-
typedef unsigned short DdHalfWord;
|
|
260
|
-
#endif
|
|
261
|
-
|
|
262
|
-
typedef struct DdNode DdNode;
|
|
263
|
-
|
|
264
|
-
typedef struct DdChildren
|
|
265
|
-
{
|
|
266
|
-
struct DdNode *T;
|
|
267
|
-
struct DdNode *E;
|
|
268
|
-
} DdChildren;
|
|
269
|
-
|
|
270
|
-
/* The DdNode structure is the only one exported out of the package */
|
|
271
|
-
struct DdNode
|
|
272
|
-
{
|
|
273
|
-
DdHalfWord index;
|
|
274
|
-
DdHalfWord ref; /* reference count */
|
|
275
|
-
DdNode *next; /* next pointer for unique table */
|
|
276
|
-
union
|
|
277
|
-
{
|
|
278
|
-
CUDD_VALUE_TYPE value; /* for constant nodes */
|
|
279
|
-
DdChildren kids; /* for internal nodes */
|
|
280
|
-
} type;
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
typedef struct DdManager DdManager;
|
|
284
|
-
|
|
285
|
-
typedef struct DdGen DdGen;
|
|
286
|
-
|
|
287
|
-
/* These typedefs for arbitrary precision arithmetic should agree with
|
|
288
|
-
** the corresponding constant definitions above. */
|
|
289
|
-
#if SIZEOF_LONG == 8
|
|
290
|
-
typedef unsigned int DdApaDigit;
|
|
291
|
-
typedef unsigned long int DdApaDoubleDigit;
|
|
292
|
-
#else
|
|
293
|
-
typedef unsigned short int DdApaDigit;
|
|
294
|
-
typedef unsigned int DdApaDoubleDigit;
|
|
295
|
-
#endif
|
|
296
|
-
|
|
297
|
-
/* Return type for function computing two-literal clauses. */
|
|
298
|
-
typedef struct DdTlcInfo DdTlcInfo;
|
|
299
|
-
|
|
300
|
-
/* Type of hook function. */
|
|
301
|
-
typedef int (*DD_HFP)(DdManager *, const char *, void *);
|
|
302
|
-
/* Type of priority function */
|
|
303
|
-
/* Type of apply operator. */
|
|
304
|
-
/* Type of monadic apply operator. */
|
|
305
|
-
/* Types of cache tag functions. */
|
|
306
|
-
typedef DdNode * (*DD_CTFP)(DdManager *, DdNode *, DdNode *);
|
|
307
|
-
typedef DdNode * (*DD_CTFP1)(DdManager *, DdNode *);
|
|
308
|
-
/* Type of memory-out function. */
|
|
309
|
-
typedef void (*DD_OOMFP)(long);
|
|
310
|
-
/* Type of comparison function for qsort. */
|
|
311
|
-
typedef int (*DD_QSFP)(const void *, const void *);
|
|
312
|
-
|
|
313
|
-
/*---------------------------------------------------------------------------*/
|
|
314
|
-
/* Variable declarations */
|
|
315
|
-
/*---------------------------------------------------------------------------*/
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
/*---------------------------------------------------------------------------*/
|
|
319
|
-
/* Macro declarations */
|
|
320
|
-
/*---------------------------------------------------------------------------*/
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
/**Macro***********************************************************************
|
|
324
|
-
|
|
325
|
-
Synopsis [Returns 1 if the node is a constant node.]
|
|
326
|
-
|
|
327
|
-
Description [Returns 1 if the node is a constant node (rather than an
|
|
328
|
-
internal node). All constant nodes have the same index
|
|
329
|
-
(CUDD_CONST_INDEX). The pointer passed to Cudd_IsConstant may be either
|
|
330
|
-
regular or complemented.]
|
|
331
|
-
|
|
332
|
-
SideEffects [none]
|
|
333
|
-
|
|
334
|
-
SeeAlso []
|
|
335
|
-
|
|
336
|
-
******************************************************************************/
|
|
337
|
-
#define Cudd_IsConstant(node) ((Cudd_Regular(node))->index == CUDD_CONST_INDEX)
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
/**Macro***********************************************************************
|
|
341
|
-
|
|
342
|
-
Synopsis [Complements a DD.]
|
|
343
|
-
|
|
344
|
-
Description [Complements a DD by flipping the complement attribute of
|
|
345
|
-
the pointer (the least significant bit).]
|
|
346
|
-
|
|
347
|
-
SideEffects [none]
|
|
348
|
-
|
|
349
|
-
SeeAlso [Cudd_NotCond]
|
|
350
|
-
|
|
351
|
-
******************************************************************************/
|
|
352
|
-
#define Cudd_Not(node) ((DdNode *)((long)(node) ^ 01))
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
/**Macro***********************************************************************
|
|
356
|
-
|
|
357
|
-
Synopsis [Complements a DD if a condition is true.]
|
|
358
|
-
|
|
359
|
-
Description [Complements a DD if condition c is true; c should be
|
|
360
|
-
either 0 or 1, because it is used directly (for efficiency). If in
|
|
361
|
-
doubt on the values c may take, use "(c) ? Cudd_Not(node) : node".]
|
|
362
|
-
|
|
363
|
-
SideEffects [none]
|
|
364
|
-
|
|
365
|
-
SeeAlso [Cudd_Not]
|
|
366
|
-
|
|
367
|
-
******************************************************************************/
|
|
368
|
-
#define Cudd_NotCond(node,c) ((DdNode *)((long)(node) ^ (c)))
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
/**Macro***********************************************************************
|
|
372
|
-
|
|
373
|
-
Synopsis [Returns the regular version of a pointer.]
|
|
374
|
-
|
|
375
|
-
Description []
|
|
376
|
-
|
|
377
|
-
SideEffects [none]
|
|
378
|
-
|
|
379
|
-
SeeAlso [Cudd_Complement Cudd_IsComplement]
|
|
380
|
-
|
|
381
|
-
******************************************************************************/
|
|
382
|
-
#define Cudd_Regular(node) ((DdNode *)((unsigned long)(node) & ~01))
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
/**Macro***********************************************************************
|
|
386
|
-
|
|
387
|
-
Synopsis [Returns the complemented version of a pointer.]
|
|
388
|
-
|
|
389
|
-
Description []
|
|
390
|
-
|
|
391
|
-
SideEffects [none]
|
|
392
|
-
|
|
393
|
-
SeeAlso [Cudd_Regular Cudd_IsComplement]
|
|
394
|
-
|
|
395
|
-
******************************************************************************/
|
|
396
|
-
#define Cudd_Complement(node) ((DdNode *)((unsigned long)(node) | 01))
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
/**Macro***********************************************************************
|
|
400
|
-
|
|
401
|
-
Synopsis [Returns 1 if a pointer is complemented.]
|
|
402
|
-
|
|
403
|
-
Description []
|
|
404
|
-
|
|
405
|
-
SideEffects [none]
|
|
406
|
-
|
|
407
|
-
SeeAlso [Cudd_Regular Cudd_Complement]
|
|
408
|
-
|
|
409
|
-
******************************************************************************/
|
|
410
|
-
#define Cudd_IsComplement(node) ((int) ((long) (node) & 01))
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
/**Macro***********************************************************************
|
|
414
|
-
|
|
415
|
-
Synopsis [Returns the then child of an internal node.]
|
|
416
|
-
|
|
417
|
-
Description [Returns the then child of an internal node. If
|
|
418
|
-
<code>node</code> is a constant node, the result is unpredictable.]
|
|
419
|
-
|
|
420
|
-
SideEffects [none]
|
|
421
|
-
|
|
422
|
-
SeeAlso [Cudd_E Cudd_V]
|
|
423
|
-
|
|
424
|
-
******************************************************************************/
|
|
425
|
-
#define Cudd_T(node) ((Cudd_Regular(node))->type.kids.T)
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
/**Macro***********************************************************************
|
|
429
|
-
|
|
430
|
-
Synopsis [Returns the else child of an internal node.]
|
|
431
|
-
|
|
432
|
-
Description [Returns the else child of an internal node. If
|
|
433
|
-
<code>node</code> is a constant node, the result is unpredictable.]
|
|
434
|
-
|
|
435
|
-
SideEffects [none]
|
|
436
|
-
|
|
437
|
-
SeeAlso [Cudd_T Cudd_V]
|
|
438
|
-
|
|
439
|
-
******************************************************************************/
|
|
440
|
-
#define Cudd_E(node) ((Cudd_Regular(node))->type.kids.E)
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
/**Macro***********************************************************************
|
|
444
|
-
|
|
445
|
-
Synopsis [Returns the value of a constant node.]
|
|
446
|
-
|
|
447
|
-
Description [Returns the value of a constant node. If
|
|
448
|
-
<code>node</code> is an internal node, the result is unpredictable.]
|
|
449
|
-
|
|
450
|
-
SideEffects [none]
|
|
451
|
-
|
|
452
|
-
SeeAlso [Cudd_T Cudd_E]
|
|
453
|
-
|
|
454
|
-
******************************************************************************/
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
/**Macro***********************************************************************
|
|
458
|
-
|
|
459
|
-
Synopsis [Returns the current position in the order of variable
|
|
460
|
-
index.]
|
|
461
|
-
|
|
462
|
-
Description [Returns the current position in the order of variable
|
|
463
|
-
index. This macro is obsolete and is kept for compatibility. New
|
|
464
|
-
applications should use Cudd_ReadPerm instead.]
|
|
465
|
-
|
|
466
|
-
SideEffects [none]
|
|
467
|
-
|
|
468
|
-
SeeAlso [Cudd_ReadPerm]
|
|
469
|
-
|
|
470
|
-
******************************************************************************/
|
|
471
|
-
#define Cudd_ReadIndex(dd,index) (Cudd_ReadPerm(dd,index))
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
/**Macro***********************************************************************
|
|
475
|
-
|
|
476
|
-
Synopsis [Iterates over the cubes of a decision diagram.]
|
|
477
|
-
|
|
478
|
-
Description [Iterates over the cubes of a decision diagram f.
|
|
479
|
-
<ul>
|
|
480
|
-
<li> DdManager *manager;
|
|
481
|
-
<li> DdNode *f;
|
|
482
|
-
<li> DdGen *gen;
|
|
483
|
-
<li> int *cube;
|
|
484
|
-
<li> CUDD_VALUE_TYPE value;
|
|
485
|
-
</ul>
|
|
486
|
-
Cudd_ForeachCube allocates and frees the generator. Therefore the
|
|
487
|
-
application should not try to do that. Also, the cube is freed at the
|
|
488
|
-
end of Cudd_ForeachCube and hence is not available outside of the loop.<p>
|
|
489
|
-
CAUTION: It is assumed that dynamic reordering will not occur while
|
|
490
|
-
there are open generators. It is the user's responsibility to make sure
|
|
491
|
-
that dynamic reordering does not occur. As long as new nodes are not created
|
|
492
|
-
during generation, and dynamic reordering is not called explicitly,
|
|
493
|
-
dynamic reordering will not occur. Alternatively, it is sufficient to
|
|
494
|
-
disable dynamic reordering. It is a mistake to dispose of a diagram
|
|
495
|
-
on which generation is ongoing.]
|
|
496
|
-
|
|
497
|
-
SideEffects [none]
|
|
498
|
-
|
|
499
|
-
SeeAlso [Cudd_ForeachNode Cudd_FirstCube Cudd_NextCube Cudd_GenFree
|
|
500
|
-
Cudd_IsGenEmpty Cudd_AutodynDisable]
|
|
501
|
-
|
|
502
|
-
******************************************************************************/
|
|
503
|
-
#define Cudd_ForeachCube(manager, f, gen, cube, value)\
|
|
504
|
-
for((gen) = Cudd_FirstCube(manager, f, &cube, &value);\
|
|
505
|
-
Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : CUDD_TRUE;\
|
|
506
|
-
(void) Cudd_NextCube(gen, &cube, &value))
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
/**Macro***********************************************************************
|
|
510
|
-
|
|
511
|
-
Synopsis [Iterates over the primes of a Boolean function.]
|
|
512
|
-
|
|
513
|
-
Description [Iterates over the primes of a Boolean function producing
|
|
514
|
-
a prime and irredundant cover.
|
|
515
|
-
<ul>
|
|
516
|
-
<li> DdManager *manager;
|
|
517
|
-
<li> DdNode *l;
|
|
518
|
-
<li> DdNode *u;
|
|
519
|
-
<li> DdGen *gen;
|
|
520
|
-
<li> int *cube;
|
|
521
|
-
</ul>
|
|
522
|
-
The Boolean function is described by an upper bound and a lower bound. If
|
|
523
|
-
the function is completely specified, the two bounds coincide.
|
|
524
|
-
Cudd_ForeachPrime allocates and frees the generator. Therefore the
|
|
525
|
-
application should not try to do that. Also, the cube is freed at the
|
|
526
|
-
end of Cudd_ForeachPrime and hence is not available outside of the loop.<p>
|
|
527
|
-
CAUTION: It is a mistake to change a diagram on which generation is ongoing.]
|
|
528
|
-
|
|
529
|
-
SideEffects [none]
|
|
530
|
-
|
|
531
|
-
SeeAlso [Cudd_ForeachCube Cudd_FirstPrime Cudd_NextPrime Cudd_GenFree
|
|
532
|
-
Cudd_IsGenEmpty]
|
|
533
|
-
|
|
534
|
-
******************************************************************************/
|
|
535
|
-
#define Cudd_ForeachPrime(manager, l, u, gen, cube)\
|
|
536
|
-
for((gen) = Cudd_FirstPrime(manager, l, u, &cube);\
|
|
537
|
-
Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : CUDD_TRUE;\
|
|
538
|
-
(void) Cudd_NextPrime(gen, &cube))
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
/**Macro***********************************************************************
|
|
542
|
-
|
|
543
|
-
Synopsis [Iterates over the nodes of a decision diagram.]
|
|
544
|
-
|
|
545
|
-
Description [Iterates over the nodes of a decision diagram f.
|
|
546
|
-
<ul>
|
|
547
|
-
<li> DdManager *manager;
|
|
548
|
-
<li> DdNode *f;
|
|
549
|
-
<li> DdGen *gen;
|
|
550
|
-
<li> DdNode *node;
|
|
551
|
-
</ul>
|
|
552
|
-
The nodes are returned in a seemingly random order.
|
|
553
|
-
Cudd_ForeachNode allocates and frees the generator. Therefore the
|
|
554
|
-
application should not try to do that.<p>
|
|
555
|
-
CAUTION: It is assumed that dynamic reordering will not occur while
|
|
556
|
-
there are open generators. It is the user's responsibility to make sure
|
|
557
|
-
that dynamic reordering does not occur. As long as new nodes are not created
|
|
558
|
-
during generation, and dynamic reordering is not called explicitly,
|
|
559
|
-
dynamic reordering will not occur. Alternatively, it is sufficient to
|
|
560
|
-
disable dynamic reordering. It is a mistake to dispose of a diagram
|
|
561
|
-
on which generation is ongoing.]
|
|
562
|
-
|
|
563
|
-
SideEffects [none]
|
|
564
|
-
|
|
565
|
-
SeeAlso [Cudd_ForeachCube Cudd_FirstNode Cudd_NextNode Cudd_GenFree
|
|
566
|
-
Cudd_IsGenEmpty Cudd_AutodynDisable]
|
|
567
|
-
|
|
568
|
-
******************************************************************************/
|
|
569
|
-
#define Cudd_ForeachNode(manager, f, gen, node)\
|
|
570
|
-
for((gen) = Cudd_FirstNode(manager, f, &node);\
|
|
571
|
-
Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : CUDD_TRUE;\
|
|
572
|
-
(void) Cudd_NextNode(gen, &node))
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
/**Macro***********************************************************************
|
|
576
|
-
|
|
577
|
-
Synopsis [Iterates over the paths of a ZDD.]
|
|
578
|
-
|
|
579
|
-
Description [Iterates over the paths of a ZDD f.
|
|
580
|
-
<ul>
|
|
581
|
-
<li> DdManager *manager;
|
|
582
|
-
<li> DdNode *f;
|
|
583
|
-
<li> DdGen *gen;
|
|
584
|
-
<li> int *path;
|
|
585
|
-
</ul>
|
|
586
|
-
Cudd_zddForeachPath allocates and frees the generator. Therefore the
|
|
587
|
-
application should not try to do that. Also, the path is freed at the
|
|
588
|
-
end of Cudd_zddForeachPath and hence is not available outside of the loop.<p>
|
|
589
|
-
CAUTION: It is assumed that dynamic reordering will not occur while
|
|
590
|
-
there are open generators. It is the user's responsibility to make sure
|
|
591
|
-
that dynamic reordering does not occur. As long as new nodes are not created
|
|
592
|
-
during generation, and dynamic reordering is not called explicitly,
|
|
593
|
-
dynamic reordering will not occur. Alternatively, it is sufficient to
|
|
594
|
-
disable dynamic reordering. It is a mistake to dispose of a diagram
|
|
595
|
-
on which generation is ongoing.]
|
|
596
|
-
|
|
597
|
-
SideEffects [none]
|
|
598
|
-
|
|
599
|
-
SeeAlso [Cudd_zddFirstPath Cudd_zddNextPath Cudd_GenFree
|
|
600
|
-
Cudd_IsGenEmpty Cudd_AutodynDisable]
|
|
601
|
-
|
|
602
|
-
******************************************************************************/
|
|
603
|
-
#define Cudd_zddForeachPath(manager, f, gen, path)\
|
|
604
|
-
for((gen) = Cudd_zddFirstPath(manager, f, &path);\
|
|
605
|
-
Cudd_IsGenEmpty(gen) ? Cudd_GenFree(gen) : CUDD_TRUE;\
|
|
606
|
-
(void) Cudd_zddNextPath(gen, &path))
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
/**AutomaticStart*************************************************************/
|
|
611
|
-
|
|
612
|
-
/*---------------------------------------------------------------------------*/
|
|
613
|
-
/* Function prototypes */
|
|
614
|
-
/*---------------------------------------------------------------------------*/
|
|
615
|
-
|
|
616
|
-
extern DdNode * Cudd_bddIthVar (DdManager *dd, int i);
|
|
617
|
-
extern DdNode * Cudd_ReadOne (DdManager *dd);
|
|
618
|
-
extern DdNode * Cudd_ReadLogicZero (DdManager *dd);
|
|
619
|
-
extern void Cudd_SetMinHit (DdManager *dd, unsigned int hr);
|
|
620
|
-
extern int Cudd_ReadSize (DdManager *dd);
|
|
621
|
-
extern void Cudd_FreeTree (DdManager *dd);
|
|
622
|
-
extern void Cudd_FreeZddTree (DdManager *dd);
|
|
623
|
-
extern int Cudd_ReadPerm (DdManager *dd, int i);
|
|
624
|
-
extern CUDD_VALUE_TYPE Cudd_ReadEpsilon (DdManager *dd);
|
|
625
|
-
extern void Cudd_SetEpsilon (DdManager *dd, CUDD_VALUE_TYPE ep);
|
|
626
|
-
extern unsigned long Cudd_ReadMemoryInUse (DdManager *dd);
|
|
627
|
-
extern long Cudd_ReadNodeCount (DdManager *dd);
|
|
628
|
-
extern int Cudd_RemoveHook (DdManager *dd, DD_HFP f, Cudd_HookType where);
|
|
629
|
-
extern DdNode * Cudd_addIteConstant (DdManager *dd, DdNode *f, DdNode *g, DdNode *h);
|
|
630
|
-
extern DdNode * Cudd_addEvalConst (DdManager *dd, DdNode *f, DdNode *g);
|
|
631
|
-
extern int Cudd_addLeq (DdManager * dd, DdNode * f, DdNode * g);
|
|
632
|
-
extern DdNode * Cudd_addCmpl (DdManager *dd, DdNode *f);
|
|
633
|
-
extern DdNode * Cudd_bddExistAbstract (DdManager *manager, DdNode *f, DdNode *cube);
|
|
634
|
-
extern int Cudd_bddVarIsDependent (DdManager *dd, DdNode *f, DdNode *var);
|
|
635
|
-
extern DdNode * Cudd_bddIteConstant (DdManager *dd, DdNode *f, DdNode *g, DdNode *h);
|
|
636
|
-
extern DdNode * Cudd_bddIntersect (DdManager *dd, DdNode *f, DdNode *g);
|
|
637
|
-
extern DdNode * Cudd_bddAnd (DdManager *dd, DdNode *f, DdNode *g);
|
|
638
|
-
extern DdNode * Cudd_bddAndLimit (DdManager *dd, DdNode *f, DdNode *g, unsigned int limit);
|
|
639
|
-
extern DdNode * Cudd_bddOrLimit (DdManager *dd, DdNode *f, DdNode *g, unsigned int limit);
|
|
640
|
-
extern DdNode * Cudd_bddXor (DdManager *dd, DdNode *f, DdNode *g);
|
|
641
|
-
extern int Cudd_bddLeq (DdManager *dd, DdNode *f, DdNode *g);
|
|
642
|
-
extern int Cudd_DebugCheck (DdManager *table);
|
|
643
|
-
extern int Cudd_CheckKeys (DdManager *table);
|
|
644
|
-
extern DdNode * Cudd_Cofactor (DdManager *dd, DdNode *f, DdNode *g);
|
|
645
|
-
extern int Cudd_CheckCube (DdManager *dd, DdNode *g);
|
|
646
|
-
extern DdManager * Cudd_Init (unsigned int numVars, unsigned int numVarsZ, unsigned int numSlots, unsigned int cacheSize, unsigned long maxMemory);
|
|
647
|
-
extern void Cudd_Quit (DdManager *unique);
|
|
648
|
-
extern int Cudd_PrintLinear (DdManager *table);
|
|
649
|
-
extern void Cudd_Ref (DdNode *n);
|
|
650
|
-
extern void Cudd_RecursiveDeref (DdManager *table, DdNode *n);
|
|
651
|
-
extern void Cudd_IterDerefBdd (DdManager *table, DdNode *n);
|
|
652
|
-
extern void Cudd_RecursiveDerefZdd (DdManager *table, DdNode *n);
|
|
653
|
-
extern void Cudd_Deref (DdNode *node);
|
|
654
|
-
extern int Cudd_ReduceHeap (DdManager *table, Cudd_ReorderingType heuristic, int minsize);
|
|
655
|
-
extern DdNode * Cudd_LargestCube (DdManager *manager, DdNode *f, int *length);
|
|
656
|
-
extern DdNode * Cudd_Decreasing (DdManager *dd, DdNode *f, int i);
|
|
657
|
-
extern int Cudd_EquivDC (DdManager *dd, DdNode *F, DdNode *G, DdNode *D);
|
|
658
|
-
extern int Cudd_bddLeqUnless (DdManager *dd, DdNode *f, DdNode *g, DdNode *D);
|
|
659
|
-
extern int Cudd_EqualSupNorm (DdManager *dd, DdNode *f, DdNode *g, CUDD_VALUE_TYPE tolerance, int pr);
|
|
660
|
-
extern DdNode * Cudd_bddMakePrime (DdManager *dd, DdNode *cube, DdNode *f);
|
|
661
|
-
extern double Cudd_CountMinterm (DdManager *manager, DdNode *node, int nvars);
|
|
662
|
-
extern DdGen * Cudd_FirstCube (DdManager *dd, DdNode *f, int **cube, CUDD_VALUE_TYPE *value);
|
|
663
|
-
extern int Cudd_NextCube (DdGen *gen, int **cube, CUDD_VALUE_TYPE *value);
|
|
664
|
-
extern DdGen * Cudd_FirstPrime(DdManager *dd, DdNode *l, DdNode *u, int **cube);
|
|
665
|
-
extern int Cudd_NextPrime(DdGen *gen, int **cube);
|
|
666
|
-
extern int Cudd_BddToCubeArray (DdManager *dd, DdNode *cube, int *array);
|
|
667
|
-
extern DdGen * Cudd_FirstNode (DdManager *dd, DdNode *f, DdNode **node);
|
|
668
|
-
extern int Cudd_NextNode (DdGen *gen, DdNode **node);
|
|
669
|
-
extern int Cudd_GenFree (DdGen *gen);
|
|
670
|
-
extern int Cudd_IsGenEmpty (DdGen *gen);
|
|
671
|
-
extern long Cudd_Random (void);
|
|
672
|
-
extern void Cudd_Srandom (long seed);
|
|
673
|
-
extern void Cudd_OutOfMem (long size);
|
|
674
|
-
extern int Cudd_zddReduceHeap (DdManager *table, Cudd_ReorderingType heuristic, int minsize);
|
|
675
|
-
extern DdNode * Cudd_zddDiffConst (DdManager *zdd, DdNode *P, DdNode *Q);
|
|
676
|
-
extern DdGen * Cudd_zddFirstPath (DdManager *zdd, DdNode *f, int **path);
|
|
677
|
-
extern int Cudd_zddNextPath (DdGen *gen, int **path);
|
|
678
|
-
extern int Cudd_bddReadPairIndex (DdManager *dd, int index);
|
|
679
|
-
extern int Cudd_bddIsVarToBeGrouped (DdManager *dd, int index);
|
|
680
|
-
extern int Cudd_bddIsVarToBeUngrouped (DdManager *dd, int index);
|
|
681
|
-
|
|
682
|
-
/**AutomaticEnd***************************************************************/
|
|
683
|
-
|
|
684
|
-
#ifdef __cplusplus
|
|
685
|
-
} /* end of extern "C" */
|
|
686
|
-
#endif
|
|
687
|
-
|
|
688
|
-
#endif /* _CUDD */
|