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.
Files changed (71) hide show
  1. package/SVF-linux/Release-build/svf/libSvfCore.a +0 -0
  2. package/{SVF-osx → SVF-linux}/Release-build/svf-llvm/extapi.bc +459 -460
  3. package/SVF-linux/Release-build/svf-llvm/libSvfLLVM.a +0 -0
  4. package/SVF-osx/svf/include/Util/WorkList.h +0 -0
  5. package/SVF-osx/svf-llvm/include/SVF-LLVM/CPPUtil.h +37 -12
  6. package/SVF-osx/svf-llvm/include/SVF-LLVM/DCHG.h +1 -9
  7. package/SVF-osx/svf-llvm/include/SVF-LLVM/ICFGBuilder.h +1 -0
  8. package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMModule.h +0 -1
  9. package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMUtil.h +4 -108
  10. package/package.json +1 -1
  11. package/SVF-osx/Release-build/svf/libSvfCore.a +0 -0
  12. package/SVF-osx/Release-build/svf-llvm/libSvfLLVM.a +0 -0
  13. package/SVF-osx/svf/include/AbstractExecution/WTO.h +0 -892
  14. package/SVF-osx/svf/include/CFL/CFLData.h +0 -316
  15. package/SVF-osx/svf/include/CFL/CFLDataBuilder.h +0 -91
  16. package/SVF-osx/svf/include/CFL/CFLGrammar.h +0 -468
  17. package/SVF-osx/svf/include/CFL/CFLGrammar.txt +0 -15
  18. package/SVF-osx/svf/include/CFL/CFLGrammarDev.txt +0 -16
  19. package/SVF-osx/svf/include/CFL/PEGGrammar.txt +0 -11
  20. package/SVF-osx/svf/include/CFL/VFG.txt +0 -7
  21. package/SVF-osx/svf/include/CUDD/cudd.h +0 -688
  22. package/SVF-osx/svf/include/CUDD/cuddInt.h +0 -1145
  23. package/SVF-osx/svf/include/CUDD/epd.h +0 -192
  24. package/SVF-osx/svf/include/CUDD/mtr.h +0 -180
  25. package/SVF-osx/svf/include/CUDD/mtrInt.h +0 -92
  26. package/SVF-osx/svf/include/CUDD/st.h +0 -230
  27. package/SVF-osx/svf/include/CUDD/util.h +0 -196
  28. package/SVF-osx/svf/include/Graphs/ExternalPAG.h +0 -147
  29. package/SVF-osx/svf/include/Graphs/ICFGWrapper.h +0 -726
  30. package/SVF-osx/svf/include/Graphs/OfflineConsG.h +0 -151
  31. package/SVF-osx/svf/include/Graphs/PAG.h +0 -932
  32. package/SVF-osx/svf/include/Graphs/PAGEdge.h +0 -738
  33. package/SVF-osx/svf/include/Graphs/PAGNode.h +0 -843
  34. package/SVF-osx/svf/include/MTA/LockResultValidator.h +0 -118
  35. package/SVF-osx/svf/include/MTA/MTAAnnotator.h +0 -118
  36. package/SVF-osx/svf/include/MemoryModel/LocationSet.h +0 -157
  37. package/SVF-osx/svf/include/MemoryModel/MemModel.h +0 -414
  38. package/SVF-osx/svf/include/MemoryModel/PAGBuilderFromFile.h +0 -80
  39. package/SVF-osx/svf/include/MemoryModel/PTAStat.h +0 -174
  40. package/SVF-osx/svf/include/MemoryModel/PTAType.h +0 -368
  41. package/SVF-osx/svf/include/MemoryModel/PointsToDFDS.h +0 -514
  42. package/SVF-osx/svf/include/MemoryModel/PointsToDS.h +0 -289
  43. package/SVF-osx/svf/include/MemoryModel/SVFIR.h +0 -650
  44. package/SVF-osx/svf/include/MemoryModel/SVFStatements.h +0 -1101
  45. package/SVF-osx/svf/include/MemoryModel/SVFSymbols.h +0 -648
  46. package/SVF-osx/svf/include/MemoryModel/SVFVariables.h +0 -721
  47. package/SVF-osx/svf/include/MemoryModel/SymbolTableInfo.h +0 -713
  48. package/SVF-osx/svf/include/SABER/PathCondAllocator.h +0 -303
  49. package/SVF-osx/svf/include/SABER/SaberAnnotator.h +0 -72
  50. package/SVF-osx/svf/include/SVFIR/SVFIRRW.h +0 -1302
  51. package/SVF-osx/svf/include/SVFIR/SVFModuleRW.h +0 -197
  52. package/SVF-osx/svf/include/Util/BDDExpr.h +0 -198
  53. package/SVF-osx/svf/include/Util/BasicTypes.h +0 -768
  54. package/SVF-osx/svf/include/Util/CFLSolver.h +0 -186
  55. package/SVF-osx/svf/include/Util/Conditions.h +0 -421
  56. package/SVF-osx/svf/include/Util/CppUtil.h +0 -81
  57. package/SVF-osx/svf/include/Util/ExeState.h +0 -197
  58. package/SVF-osx/svf/include/Util/ExtAPI.json +0 -5853
  59. package/SVF-osx/svf/include/Util/IRAnnotator.h +0 -321
  60. package/SVF-osx/svf/include/Util/PathCondAllocator.h +0 -286
  61. package/SVF-osx/svf/include/Util/PathDPItem.h +0 -310
  62. package/SVF-osx/svf/include/Util/SCC.h +0 -352
  63. package/SVF-osx/svf/include/Util/SVFBasicTypes.h +0 -245
  64. package/SVF-osx/svf/include/Util/SVFInstruction.h +0 -40
  65. package/SVF-osx/svf/include/Util/SVFModule.h +0 -278
  66. package/SVF-osx/svf/include/Util/SymState.h +0 -118
  67. package/SVF-osx/svf/include/Util/TypeBasedHeapCloning.h +0 -188
  68. package/SVF-osx/svf/include/WPA/AndersenSFR.h +0 -160
  69. package/SVF-osx/svf/include/WPA/FlowSensitiveTBHC.h +0 -122
  70. package/SVF-osx/svf/include/WPA/TypeBasedHeapCloning.h +0 -188
  71. 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 */