You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3704 lines
125 KiB
3704 lines
125 KiB
<html>
|
|
<head><title>The dddmp package: all functions </title></head>
|
|
<body>
|
|
|
|
A set of internal low-level routines of the dddmp package
|
|
doing:
|
|
<ul>
|
|
<li> read and write of node codes in binary mode,
|
|
<li> read and write of integers in binary mode,
|
|
<li> marking/unmarking nodes as visited,
|
|
<li> numbering nodes.
|
|
</ul>
|
|
<HR>
|
|
<DL>
|
|
<dt><pre>
|
|
<A NAME="DddmpBddReadHeaderCnf"></A>
|
|
static Dddmp_Hdr_t * <I></I>
|
|
<B>DddmpBddReadHeaderCnf</B>(
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b> <i>IN: file pointer</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads the header of a dump file. Builds a Dddmp_Hdr_t struct
|
|
containing all infos in the header, for next manipulations.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> none
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoadCnf.c"TARGET="ABSTRACT"><CODE>dddmpLoadCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpBddReadHeader"></A>
|
|
static Dddmp_Hdr_t * <I></I>
|
|
<B>DddmpBddReadHeader</B>(
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b> <i>IN: file pointer</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads the header of a dump file. Builds a Dddmp_Hdr_t struct
|
|
containing all infos in the header, for next manipulations.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> none
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoad.c"TARGET="ABSTRACT"><CODE>dddmpLoad.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpClearVisitedAdd"></A>
|
|
void <I></I>
|
|
<B>DddmpClearVisitedAdd</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as not visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as not visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisitedAdd">DddmpVisitedAdd</a>
|
|
()
|
|
<a href="#DddmpSetVisitedAdd">DddmpSetVisitedAdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpClearVisitedBdd"></A>
|
|
void <I></I>
|
|
<B>DddmpClearVisitedBdd</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as not visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as not visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisited">DddmpVisited</a>
|
|
()
|
|
<a href="#DddmpSetVisited">DddmpSetVisited</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpClearVisitedCnfRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpClearVisitedCnfRecur</B>(
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be marked</i>
|
|
)
|
|
</pre>
|
|
<dd> Mark ALL nodes as not visited (it recurs on the node children)
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpClearVisitedCnfRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpClearVisitedCnfRecur</B>(
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be marked</i>
|
|
)
|
|
</pre>
|
|
<dd> Mark ALL nodes as not visited (it recurs on the node children)
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpClearVisitedCnf"></A>
|
|
static void <I></I>
|
|
<B>DddmpClearVisitedCnf</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as not visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as not visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpClearVisitedCnf"></A>
|
|
static void <I></I>
|
|
<B>DddmpClearVisitedCnf</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as not visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as not visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpClearVisited"></A>
|
|
void <I></I>
|
|
<B>DddmpClearVisited</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as not visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as not visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisited">DddmpVisited</a>
|
|
()
|
|
<a href="#DddmpSetVisited">DddmpSetVisited</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCnfClauses2Bdd"></A>
|
|
static int <I></I>
|
|
<B>DddmpCnfClauses2Bdd</B>(
|
|
Dddmp_Hdr_t * <b>Hdr</b>, <i>IN: file header</i>
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
int ** <b>cnfTable</b>, <i>IN: CNF table for clauses</i>
|
|
int <b>mode</b>, <i>IN: computation mode</i>
|
|
DdNode *** <b>rootsPtrPtr</b> <i>OUT: array of returned BDD roots (by reference)</i>
|
|
)
|
|
</pre>
|
|
<dd> Transforms CNF clauses into BDDs. Clauses are stored in an
|
|
internal structure previously read. The results can be given in
|
|
different format according to the mode selection:
|
|
IFF mode == 0 Return the Clauses without Conjunction
|
|
IFF mode == 1 Return the sets of BDDs without Quantification
|
|
IFF mode == 2 Return the sets of BDDs AFTER Existential Quantification
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoadCnf.c"TARGET="ABSTRACT"><CODE>dddmpLoadCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddBddArrayStoreCnf"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddBddArrayStoreCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDD roots to be stored</i>
|
|
int <b>rootN</b>, <i>IN: # of output BDD roots to be stored</i>
|
|
Dddmp_DecompCnfStoreType <b>mode</b>, <i>IN: format selection</i>
|
|
int <b>noHeader</b>, <i>IN: do not store header iff 1</i>
|
|
char ** <b>varNames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
int * <b>bddIds</b>, <i>IN: array of BDD node Ids (or NULL)</i>
|
|
int * <b>bddAuxIds</b>, <i>IN: array of BDD Aux Ids (or NULL)</i>
|
|
int * <b>cnfIds</b>, <i>IN: array of CNF ids (or NULL)</i>
|
|
int <b>idInitial</b>, <i>IN: starting id for cutting variables</i>
|
|
int <b>edgeInTh</b>, <i>IN: Max # Incoming Edges</i>
|
|
int <b>pathLengthTh</b>, <i>IN: Max Path Length</i>
|
|
char * <b>fname</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b>, <i>IN: pointer to the store file</i>
|
|
int * <b>clauseNPtr</b>, <i>OUT: number of clause stored</i>
|
|
int * <b>varNewNPtr</b> <i>OUT: number of new variable created</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument array of BDDs/ADDs to file in CNF format.
|
|
The following arrays: varNames, bddIds, bddAuxIds, and cnfIds
|
|
fix the correspondence among variable names, BDD ids, BDD
|
|
auxiliary ids and the ids used to store the CNF problem.
|
|
All these arrays are automatically created iff NULL.
|
|
Auxiliary variable, iff necessary, are created starting from value
|
|
idInitial.
|
|
Iff idInitial is <= 0 its value is selected as the number of internal
|
|
CUDD variable + 2.
|
|
Auxiliary variables, i.e., cut points are inserted following these
|
|
criterias:
|
|
* edgeInTh
|
|
indicates the maximum number of incoming edges up to which
|
|
no cut point (auxiliary variable) is inserted.
|
|
If edgeInTh:
|
|
* is equal to -1 no cut point due to incoming edges are inserted
|
|
(MaxtermByMaxterm method.)
|
|
* is equal to 0 a cut point is inserted for each node with a single
|
|
incoming edge, i.e., each node, (NodeByNode method).
|
|
* is equal to n a cut point is inserted for each node with (n+1)
|
|
incoming edges.
|
|
* pathLengthTh
|
|
indicates the maximum length path up to which no cut points
|
|
(auxiliary variable) is inserted.
|
|
If the path length between two nodes exceeds this value, a cut point
|
|
is inserted.
|
|
If pathLengthTh:
|
|
* is equal to -1 no cut point due path length are inserted
|
|
(MaxtermByMaxterm method.)
|
|
* is equal to 0 a cut point is inserted for each node (NodeByNode
|
|
method).
|
|
* is equal to n a cut point is inserted on path whose length is
|
|
equal to (n+1).
|
|
Notice that the maximum number of literals in a clause is equal
|
|
to (pathLengthTh + 2), i.e., for each path we have to keep into
|
|
account a CNF variable for each node plus 2 added variables for
|
|
the bottom and top-path cut points.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from the unique hash table.
|
|
They are re-linked after the store operation in a modified
|
|
order.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddStore">Dddmp_cuddBddStore</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddBddArrayStore"></A>
|
|
int <I></I>
|
|
<B>DddmpCuddBddArrayStore</B>(
|
|
Dddmp_DecompType <b>ddType</b>, <i>IN: Selects the decomp type BDD</i>
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
char * <b>ddname</b>, <i>IN: DD name (or NULL)</i>
|
|
int <b>nRoots</b>, <i>IN: number of output BDD roots to be stored</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of DD roots to be stored</i>
|
|
char ** <b>rootnames</b>, <i>IN: array of root names (or NULL)</i>
|
|
char ** <b>varnames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
int * <b>auxids</b>, <i>IN: array of converted var IDs</i>
|
|
int <b>mode</b>, <i>IN: storing mode selector</i>
|
|
Dddmp_VarInfoType <b>varinfo</b>, <i>IN: extra info for variables in text mode</i>
|
|
char * <b>fname</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument array of BDDs to file.
|
|
Internal function doing inner steps of store for BDDs.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from the unique hash
|
|
table. They are re-linked after the store operation in a
|
|
modified order.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddStore">Dddmp_cuddBddStore</a>
|
|
<a href="#Dddmp_cuddBddLoad">Dddmp_cuddBddLoad</a>
|
|
<a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreBdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayLoadCnf"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayLoadCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
Dddmp_RootMatchType <b>rootmatchmode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>rootmatchnames</b>, <i>IN: sorted names for loaded roots</i>
|
|
Dddmp_VarMatchType <b>varmatchmode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>varmatchnames</b>, <i>IN: array of variable names, by ids</i>
|
|
int * <b>varmatchauxids</b>, <i>IN: array of variable auxids, by ids</i>
|
|
int * <b>varcomposeids</b>, <i>IN: array of new ids, by ids</i>
|
|
int <b>mode</b>, <i>IN: computation mode</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
DdNode *** <b>rootsPtrPtr</b>, <i>OUT: array of BDD roots</i>
|
|
int * <b>nRoots</b> <i>OUT: number of BDDs returned</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads a dump file representing the argument BDDs in CNF
|
|
format.
|
|
IFF mode == 0 Return the Clauses without Conjunction
|
|
IFF mode == 1 Return the sets of BDDs without Quantification
|
|
IFF mode == 2 Return the sets of BDDs AFTER Existential Quantification
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> A vector of pointers to DD nodes is allocated and freed.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoadCnf.c"TARGET="ABSTRACT"><CODE>dddmpLoadCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayLoad"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayLoad</B>(
|
|
Dddmp_DecompType <b>ddType</b>, <i>IN: Selects decomp type</i>
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
Dddmp_RootMatchType <b>rootMatchMode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>rootmatchnames</b>, <i>IN: sorted names for loaded roots</i>
|
|
Dddmp_VarMatchType <b>varMatchMode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>varmatchnames</b>, <i>IN: array of variable names, by ids</i>
|
|
int * <b>varmatchauxids</b>, <i>IN: array of variable auxids, by ids</i>
|
|
int * <b>varcomposeids</b>, <i>IN: array of new ids, by ids</i>
|
|
int <b>mode</b>, <i>IN: requested input file format</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
DdNode *** <b>pproots</b> <i>OUT: array BDD roots (by reference)</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads a dump file representing the argument BDDs. The header is
|
|
common to both text and binary mode. The node list is either
|
|
in text or binary format. A dynamic vector of DD pointers
|
|
is allocated to support conversion from DD indexes to pointers.
|
|
Several criteria are supported for variable match between file
|
|
and dd manager. Several changes/permutations/compositions are allowed
|
|
for variables while loading DDs. Variable of the dd manager are allowed
|
|
to match with variables on file on ids, permids, varnames,
|
|
varauxids; also direct composition between ids and
|
|
composeids is supported. More in detail:
|
|
<ol>
|
|
<li> varMatchMode=DDDMP_VAR_MATCHIDS <p>
|
|
allows the loading of a DD keeping variable IDs unchanged
|
|
(regardless of the variable ordering of the reading manager); this
|
|
is useful, for example, when swapping DDs to file and restoring them
|
|
later from file, after possible variable reordering activations.
|
|
|
|
<li> varMatchMode=DDDMP_VAR_MATCHPERMIDS <p>
|
|
is used to allow variable match according to the position in the ordering.
|
|
|
|
<li> varMatchMode=DDDMP_VAR_MATCHNAMES <p>
|
|
requires a non NULL varmatchnames parameter; this is a vector of
|
|
strings in one-to-one correspondence with variable IDs of the
|
|
reading manager. Variables in the DD file read are matched with
|
|
manager variables according to their name (a non NULL varnames
|
|
parameter was required while storing the DD file).
|
|
|
|
<li> varMatchMode=DDDMP_VAR_MATCHIDS <p>
|
|
has a meaning similar to DDDMP_VAR_MATCHNAMES, but integer auxiliary
|
|
IDs are used instead of strings; the additional non NULL
|
|
varmatchauxids parameter is needed.
|
|
|
|
<li> varMatchMode=DDDMP_VAR_COMPOSEIDS <p>
|
|
uses the additional varcomposeids parameter is used as array of
|
|
variable ids to be composed with ids stored in file.
|
|
</ol>
|
|
|
|
In the present implementation, the array varnames (3), varauxids (4)
|
|
and composeids (5) need to have one entry for each variable in the
|
|
DD manager (NULL pointers are allowed for unused variables
|
|
in varnames). Hence variables need to be already present in the
|
|
manager. All arrays are sorted according to IDs.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> A vector of pointers to DD nodes is allocated and freed.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayStore">Dddmp_cuddBddArrayStore</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoad.c"TARGET="ABSTRACT"><CODE>dddmpLoad.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStoreBdd"></A>
|
|
int <I></I>
|
|
<B>DddmpCuddDdArrayStoreBdd</B>(
|
|
Dddmp_DecompType <b>ddType</b>, <i>IN: Selects the decomp type: BDD or ADD</i>
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
char * <b>ddname</b>, <i>IN: DD name (or NULL)</i>
|
|
int <b>nRoots</b>, <i>IN: number of output BDD roots to be stored</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of DD roots to be stored</i>
|
|
char ** <b>rootnames</b>, <i>IN: array of root names (or NULL)</i>
|
|
char ** <b>varnames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
int * <b>auxids</b>, <i>IN: array of converted var IDs</i>
|
|
int <b>mode</b>, <i>IN: storing mode selector</i>
|
|
Dddmp_VarInfoType <b>varinfo</b>, <i>IN: extra info for variables in text mode</i>
|
|
char * <b>fname</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument array of BDDs/ADDs to file. Internal
|
|
function doing inner steps of store for BDDs and ADDs.
|
|
ADD store is presently supported only with the text format.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from the unique hash
|
|
table. They are re-linked after the store operation in a
|
|
modified order.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddStore">Dddmp_cuddBddStore</a>
|
|
<a href="#Dddmp_cuddBddLoad">Dddmp_cuddBddLoad</a>
|
|
<a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreAdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStoreBlifBody"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayStoreBlifBody</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: Manager</i>
|
|
int <b>n</b>, <i>IN: Number of output nodes to be dumped</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of output nodes to be dumped</i>
|
|
char ** <b>inputNames</b>, <i>IN: Array of input names (or NULL)</i>
|
|
char ** <b>outputNames</b>, <i>IN: Array of output names (or NULL)</i>
|
|
FILE * <b>fp</b> <i>IN: Pointer to the dump file</i>
|
|
)
|
|
</pre>
|
|
<dd> Writes a blif body representing the argument BDDs as a
|
|
network of multiplexers. One multiplexer is written for each BDD
|
|
node. It returns 1 in case of success; 0 otherwise (e.g.,
|
|
out-of-memory, file system full, or an ADD with constants different
|
|
from 0 and 1).
|
|
DddmpCuddDdArrayStoreBlif does not close the file: This is the
|
|
caller responsibility.
|
|
DddmpCuddDdArrayStoreBlif uses a minimal unique subset of
|
|
the hexadecimal address of a node as name for it. If the argument
|
|
inputNames is non-null, it is assumed to hold the pointers to the names
|
|
of the inputs. Similarly for outputNames. This function prints out only
|
|
.names part.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStoreBlifStep"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayStoreBlifStep</B>(
|
|
DdManager * <b>ddMgr</b>, <i></i>
|
|
DdNode * <b>f</b>, <i></i>
|
|
FILE * <b>fp</b>, <i></i>
|
|
st_table * <b>visited</b>, <i></i>
|
|
char ** <b>names</b> <i></i>
|
|
)
|
|
</pre>
|
|
<dd> Performs the recursive step of DddmpCuddDdArrayStoreBlif.
|
|
Traverses the BDD f and writes a multiplexer-network description to
|
|
the file pointed by fp in blif format.
|
|
f is assumed to be a regular pointer and DddmpCuddDdArrayStoreBlifStep
|
|
guarantees this assumption in the recursive calls.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStoreBlif"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayStoreBlif</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: Manager</i>
|
|
int <b>n</b>, <i>IN: Number of output nodes to be dumped</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of output nodes to be dumped</i>
|
|
char ** <b>inputNames</b>, <i>IN: Array of input names (or NULL)</i>
|
|
char ** <b>outputNames</b>, <i>IN: Array of output names (or NULL)</i>
|
|
char * <b>modelName</b>, <i>IN: Model name (or NULL)</i>
|
|
FILE * <b>fp</b> <i>IN: Pointer to the dump file</i>
|
|
)
|
|
</pre>
|
|
<dd> Writes a blif file representing the argument BDDs as a
|
|
network of multiplexers. One multiplexer is written for each BDD
|
|
node. It returns 1 in case of success; 0 otherwise (e.g.,
|
|
out-of-memory, file system full, or an ADD with constants different
|
|
from 0 and 1).
|
|
DddmpCuddDdArrayStoreBlif does not close the file: This is the
|
|
caller responsibility.
|
|
DddmpCuddDdArrayStoreBlif uses a minimal unique subset of
|
|
the hexadecimal address of a node as name for it. If the argument
|
|
inames is non-null, it is assumed to hold the pointers to the names
|
|
of the inputs. Similarly for outputNames.
|
|
It prefixes the string "NODE" to each nome to have "regular" names
|
|
for each elements.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpCuddDdArrayStoreBlifBody">DddmpCuddDdArrayStoreBlifBody</a>
|
|
<a href="#Cudd_DumpBlif">Cudd_DumpBlif</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStorePrefixBody"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayStorePrefixBody</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: Manager</i>
|
|
int <b>n</b>, <i>IN: Number of output nodes to be dumped</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of output nodes to be dumped</i>
|
|
char ** <b>inputNames</b>, <i>IN: Array of input names (or NULL)</i>
|
|
char ** <b>outputNames</b>, <i>IN: Array of output names (or NULL)</i>
|
|
FILE * <b>fp</b> <i>IN: Pointer to the dump file</i>
|
|
)
|
|
</pre>
|
|
<dd> One multiplexer is written for each BDD node.
|
|
It returns 1 in case of success; 0 otherwise (e.g., out-of-memory, file
|
|
system full, or an ADD with constants different from 0 and 1).
|
|
It does not close the file: This is the caller responsibility.
|
|
It uses a minimal unique subset of the hexadecimal address of a node as
|
|
name for it.
|
|
If the argument inputNames is non-null, it is assumed to hold the
|
|
pointers to the names of the inputs. Similarly for outputNames.
|
|
For each BDD node of function f, variable v, then child T, and else
|
|
child E it stores:
|
|
f = v * T + v' * E
|
|
that is
|
|
(OR f (AND v T) (AND (NOT v) E))
|
|
If E is a complemented child this results in the following
|
|
(OR f (AND v T) (AND (NOT v) (NOT E)))
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpCuddDdArrayStoreBlif">DddmpCuddDdArrayStoreBlif</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStorePrefixStep"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayStorePrefixStep</B>(
|
|
DdManager * <b>ddMgr</b>, <i></i>
|
|
DdNode * <b>f</b>, <i></i>
|
|
FILE * <b>fp</b>, <i></i>
|
|
st_table * <b>visited</b>, <i></i>
|
|
char ** <b>names</b> <i></i>
|
|
)
|
|
</pre>
|
|
<dd> Performs the recursive step of
|
|
DddmpCuddDdArrayStorePrefixBody.
|
|
Traverses the BDD f and writes a multiplexer-network description to the
|
|
file pointed by fp.
|
|
For each BDD node of function f, variable v, then child T, and else
|
|
child E it stores:
|
|
f = v * T + v' * E
|
|
that is
|
|
(OR f (AND v T) (AND (NOT v) E))
|
|
If E is a complemented child this results in the following
|
|
(OR f (AND v T) (AND (NOT v) (NOT E)))
|
|
f is assumed to be a regular pointer and the function guarantees this
|
|
assumption in the recursive calls.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStorePrefix"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayStorePrefix</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: Manager</i>
|
|
int <b>n</b>, <i>IN: Number of output nodes to be dumped</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of output nodes to be dumped</i>
|
|
char ** <b>inputNames</b>, <i>IN: Array of input names (or NULL)</i>
|
|
char ** <b>outputNames</b>, <i>IN: Array of output names (or NULL)</i>
|
|
char * <b>modelName</b>, <i>IN: Model name (or NULL)</i>
|
|
FILE * <b>fp</b> <i>IN: Pointer to the dump file</i>
|
|
)
|
|
</pre>
|
|
<dd> One multiplexer is written for each BDD node.
|
|
It returns 1 in case of success; 0 otherwise (e.g., out-of-memory, file
|
|
system full, or an ADD with constants different from 0 and 1).
|
|
It does not close the file: This is the caller responsibility.
|
|
It uses a minimal unique subset of the hexadecimal address of a node as
|
|
name for it.
|
|
If the argument inputNames is non-null, it is assumed to hold the
|
|
pointers to the names of the inputs. Similarly for outputNames.
|
|
For each BDD node of function f, variable v, then child T, and else
|
|
child E it stores:
|
|
f = v * T + v' * E
|
|
that is
|
|
(OR f (AND v T) (AND (NOT v) E))
|
|
If E is a complemented child this results in the following
|
|
(OR f (AND v T) (AND (NOT v) (NOT E)))
|
|
Comments (COMMENT) are added at the beginning of the description to
|
|
describe inputs and outputs of the design.
|
|
A buffer (BUF) is add on the output to cope with complemented functions.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpCuddDdArrayStoreBlif">DddmpCuddDdArrayStoreBlif</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStoreSmvBody"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayStoreSmvBody</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: Manager</i>
|
|
int <b>n</b>, <i>IN: Number of output nodes to be dumped</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of output nodes to be dumped</i>
|
|
char ** <b>inputNames</b>, <i>IN: Array of input names (or NULL)</i>
|
|
char ** <b>outputNames</b>, <i>IN: Array of output names (or NULL)</i>
|
|
FILE * <b>fp</b> <i>IN: Pointer to the dump file</i>
|
|
)
|
|
</pre>
|
|
<dd> One multiplexer is written for each BDD node.
|
|
It returns 1 in case of success; 0 otherwise (e.g., out-of-memory, file
|
|
system full, or an ADD with constants different from 0 and 1).
|
|
It does not close the file: This is the caller responsibility.
|
|
It uses a minimal unique subset of the hexadecimal address of a node as
|
|
name for it.
|
|
If the argument inputNames is non-null, it is assumed to hold the
|
|
pointers to the names of the inputs. Similarly for outputNames.
|
|
For each BDD node of function f, variable v, then child T, and else
|
|
child E it stores:
|
|
f = v * T + v' * E
|
|
that is
|
|
(OR f (AND v T) (AND (NOT v) E))
|
|
If E is a complemented child this results in the following
|
|
(OR f (AND v T) (AND (NOT v) (NOT E)))
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpCuddDdArrayStoreBlif">DddmpCuddDdArrayStoreBlif</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStoreSmvStep"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayStoreSmvStep</B>(
|
|
DdManager * <b>ddMgr</b>, <i></i>
|
|
DdNode * <b>f</b>, <i></i>
|
|
FILE * <b>fp</b>, <i></i>
|
|
st_table * <b>visited</b>, <i></i>
|
|
char ** <b>names</b> <i></i>
|
|
)
|
|
</pre>
|
|
<dd> Performs the recursive step of
|
|
DddmpCuddDdArrayStoreSmvBody.
|
|
Traverses the BDD f and writes a multiplexer-network description to the
|
|
file pointed by fp.
|
|
For each BDD node of function f, variable v, then child T, and else
|
|
child E it stores:
|
|
f = v * T + v' * E
|
|
that is
|
|
(OR f (AND v T) (AND (NOT v) E))
|
|
If E is a complemented child this results in the following
|
|
(OR f (AND v T) (AND (NOT v) (NOT E)))
|
|
f is assumed to be a regular pointer and the function guarantees this
|
|
assumption in the recursive calls.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpCuddDdArrayStoreSmv"></A>
|
|
static int <I></I>
|
|
<B>DddmpCuddDdArrayStoreSmv</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: Manager</i>
|
|
int <b>n</b>, <i>IN: Number of output nodes to be dumped</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of output nodes to be dumped</i>
|
|
char ** <b>inputNames</b>, <i>IN: Array of input names (or NULL)</i>
|
|
char ** <b>outputNames</b>, <i>IN: Array of output names (or NULL)</i>
|
|
char * <b>modelName</b>, <i>IN: Model name (or NULL)</i>
|
|
FILE * <b>fp</b> <i>IN: Pointer to the dump file</i>
|
|
)
|
|
</pre>
|
|
<dd> One multiplexer is written for each BDD node.
|
|
It returns 1 in case of success; 0 otherwise (e.g., out-of-memory, file
|
|
system full, or an ADD with constants different from 0 and 1).
|
|
It does not close the file: This is the caller responsibility.
|
|
It uses a minimal unique subset of the hexadecimal address of a node as
|
|
name for it.
|
|
If the argument inputNames is non-null, it is assumed to hold the
|
|
pointers to the names of the inputs. Similarly for outputNames.
|
|
For each BDD node of function f, variable v, then child T, and else
|
|
child E it stores:
|
|
f = v * T + v' * E
|
|
that is
|
|
(OR f (AND v T) (AND (NOT v) E))
|
|
If E is a complemented child this results in the following
|
|
(OR f (AND v T) (AND (NOT v) (NOT E)))
|
|
Comments (COMMENT) are added at the beginning of the description to
|
|
describe inputs and outputs of the design.
|
|
A buffer (BUF) is add on the output to cope with complemented functions.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpCuddDdArrayStoreBlif">DddmpCuddDdArrayStoreBlif</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesCheckIncomingAndScanPath"></A>
|
|
static void <I></I>
|
|
<B>DddmpDdNodesCheckIncomingAndScanPath</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node to be numbered</i>
|
|
int <b>pathLengthCurrent</b>, <i>IN: Current Path Length</i>
|
|
int <b>edgeInTh</b>, <i>IN: Max # In-Edges, after a Insert Cut Point</i>
|
|
int <b>pathLengthTh</b> <i>IN: Max Path Length (after, Insert a Cut Point)</i>
|
|
)
|
|
</pre>
|
|
<dd> Number nodes recursively in post-order.
|
|
The "visited" flag is used with the right polarity.
|
|
The node is assigned to a new CNF variable only if it is a "shared"
|
|
node (i.e. the number of its incoming edges is greater than 1).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags are set.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesCheckIncomingAndScanPath"></A>
|
|
static void <I></I>
|
|
<B>DddmpDdNodesCheckIncomingAndScanPath</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node to be numbered</i>
|
|
int <b>pathLengthCurrent</b>, <i>IN: Current Path Length</i>
|
|
int <b>edgeInTh</b>, <i>IN: Max # In-Edges, after a Insert Cut Point</i>
|
|
int <b>pathLengthTh</b> <i>IN: Max Path Length (after, Insert a Cut Point)</i>
|
|
)
|
|
</pre>
|
|
<dd> Number nodes recursively in post-order.
|
|
The "visited" flag is used with the right polarity.
|
|
The node is assigned to a new CNF variable only if it is a "shared"
|
|
node (i.e. the number of its incoming edges is greater than 1).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags are set.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesCountEdgesAndNumber"></A>
|
|
int <I></I>
|
|
<B>DddmpDdNodesCountEdgesAndNumber</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of BDDs</i>
|
|
int <b>rootN</b>, <i>IN: Number of BDD roots in the array of BDDs</i>
|
|
int <b>edgeInTh</b>, <i>IN: Max # In-Edges, after a Insert Cut Point</i>
|
|
int <b>pathLengthTh</b>, <i>IN: Max Path Length (after, Insert a Cut Point)</i>
|
|
int * <b>cnfIds</b>, <i>OUT: CNF identifiers for variables</i>
|
|
int <b>id</b> <i>OUT: Number of Temporary Variables Introduced</i>
|
|
)
|
|
</pre>
|
|
<dd> Removes nodes from unique table and numbers each node according
|
|
to the number of its incoming BDD edges.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique table
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUniqueRecurCnf()">RemoveFromUniqueRecurCnf()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesCountEdgesAndNumber"></A>
|
|
int <I></I>
|
|
<B>DddmpDdNodesCountEdgesAndNumber</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of BDDs</i>
|
|
int <b>rootN</b>, <i>IN: Number of BDD roots in the array of BDDs</i>
|
|
int <b>edgeInTh</b>, <i>IN: Max # In-Edges, after a Insert Cut Point</i>
|
|
int <b>pathLengthTh</b>, <i>IN: Max Path Length (after, Insert a Cut Point)</i>
|
|
int * <b>cnfIds</b>, <i>OUT: CNF identifiers for variables</i>
|
|
int <b>id</b> <i>OUT: Number of Temporary Variables Introduced</i>
|
|
)
|
|
</pre>
|
|
<dd> Removes nodes from unique table and numbers each node according
|
|
to the number of its incoming BDD edges.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique table
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUniqueRecurCnf()">RemoveFromUniqueRecurCnf()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesCountEdgesRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpDdNodesCountEdgesRecur</B>(
|
|
DdNode * <b>f</b> <i>IN: root of the BDD</i>
|
|
)
|
|
</pre>
|
|
<dd> Counts (recursively) the number of incoming edges for each
|
|
node of a BDD. This number is stored in the index field.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags remain untouched.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesCountEdgesRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpDdNodesCountEdgesRecur</B>(
|
|
DdNode * <b>f</b> <i>IN: root of the BDD</i>
|
|
)
|
|
</pre>
|
|
<dd> Counts (recursively) the number of incoming edges for each
|
|
node of a BDD. This number is stored in the index field.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags remain untouched.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesNumberEdgesRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpDdNodesNumberEdgesRecur</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node to be numbered</i>
|
|
int * <b>cnfIds</b>, <i>IN: possible source for numbering</i>
|
|
int <b>id</b> <i>IN/OUT: possible source for numbering</i>
|
|
)
|
|
</pre>
|
|
<dd> Number nodes recursively in post-order.
|
|
The "visited" flag is used with the inverse polarity.
|
|
Numbering follows the subsequent strategy:
|
|
* if the index = 0 it remains so
|
|
* if the index >= 1 it gets enumerated.
|
|
This implies that the node is assigned to a new CNF variable only if
|
|
it is not a terminal node otherwise it is assigned the index of
|
|
the BDD variable.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags are reset.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesNumberEdgesRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpDdNodesNumberEdgesRecur</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node to be numbered</i>
|
|
int * <b>cnfIds</b>, <i>IN: possible source for numbering</i>
|
|
int <b>id</b> <i>IN/OUT: possible source for numbering</i>
|
|
)
|
|
</pre>
|
|
<dd> Number nodes recursively in post-order.
|
|
The "visited" flag is used with the inverse polarity.
|
|
Numbering follows the subsequent strategy:
|
|
* if the index = 0 it remains so
|
|
* if the index >= 1 it gets enumerated.
|
|
This implies that the node is assigned to a new CNF variable only if
|
|
it is not a terminal node otherwise it is assigned the index of
|
|
the BDD variable.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags are reset.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesResetCountRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpDdNodesResetCountRecur</B>(
|
|
DdNode * <b>f</b> <i>IN: root of the BDD whose counters are reset</i>
|
|
)
|
|
</pre>
|
|
<dd> Resets counter and visited flag for ALL nodes of a BDD (it
|
|
recurs on the node children). The index field of the node is
|
|
used as counter.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpDdNodesResetCountRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpDdNodesResetCountRecur</B>(
|
|
DdNode * <b>f</b> <i>IN: root of the BDD whose counters are reset</i>
|
|
)
|
|
</pre>
|
|
<dd> Resets counter and visited flag for ALL nodes of a BDD (it
|
|
recurs on the node children). The index field of the node is
|
|
used as counter.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpFreeHeaderCnf"></A>
|
|
static void <I></I>
|
|
<B>DddmpFreeHeaderCnf</B>(
|
|
Dddmp_Hdr_t * <b>Hdr</b> <i>IN: pointer to header</i>
|
|
)
|
|
</pre>
|
|
<dd> Frees the internal header structure by freeing all internal
|
|
fields first.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoadCnf.c"TARGET="ABSTRACT"><CODE>dddmpLoadCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpFreeHeader"></A>
|
|
static void <I></I>
|
|
<B>DddmpFreeHeader</B>(
|
|
Dddmp_Hdr_t * <b>Hdr</b> <i>IN: pointer to header</i>
|
|
)
|
|
</pre>
|
|
<dd> Frees the internal header structureby freeing all internal
|
|
fields first.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoad.c"TARGET="ABSTRACT"><CODE>dddmpLoad.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpIntArrayDup"></A>
|
|
int * <I></I>
|
|
<B>DddmpIntArrayDup</B>(
|
|
int * <b>array</b>, <i>IN: array of ints to be duplicated</i>
|
|
int <b>n</b> <i>IN: size of the array</i>
|
|
)
|
|
</pre>
|
|
<dd> Allocates memory and copies source array
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpIntArrayRead"></A>
|
|
int * <I></I>
|
|
<B>DddmpIntArrayRead</B>(
|
|
FILE * <b>fp</b>, <i>IN: input file</i>
|
|
int <b>n</b> <i>IN: size of the array</i>
|
|
)
|
|
</pre>
|
|
<dd> Allocates memory and inputs source array
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpIntArrayWrite"></A>
|
|
int <I></I>
|
|
<B>DddmpIntArrayWrite</B>(
|
|
FILE * <b>fp</b>, <i>IN: output file</i>
|
|
int * <b>array</b>, <i>IN: array of ints</i>
|
|
int <b>n</b> <i>IN: size of the array</i>
|
|
)
|
|
</pre>
|
|
<dd> Outputs an array of ints to a specified file
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpNumberAddNodes"></A>
|
|
int <I></I>
|
|
<B>DddmpNumberAddNodes</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>n</b> <i>IN: number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Node numbering is required to convert pointers to integers.
|
|
Since nodes are removed from unique table, no new nodes should
|
|
be generated before re-inserting nodes in the unique table
|
|
(DddmpUnnumberDdNodes()).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique table
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUniqueRecurAdd">RemoveFromUniqueRecurAdd</a>
|
|
()
|
|
<a href="#NumberNodeRecurAdd">NumberNodeRecurAdd</a>
|
|
()
|
|
<a href="#DddmpUnnumberDdNodesAdd">DddmpUnnumberDdNodesAdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpNumberBddNodes"></A>
|
|
int <I></I>
|
|
<B>DddmpNumberBddNodes</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>n</b> <i>IN: number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Node numbering is required to convert pointers to integers.
|
|
Since nodes are removed from unique table, no new nodes should
|
|
be generated before re-inserting nodes in the unique table
|
|
(DddmpUnnumberBddNodes ()).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique table
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUniqueRecur()">RemoveFromUniqueRecur()</a>
|
|
<a href="#NumberNodeRecur()">NumberNodeRecur()</a>
|
|
<a href="#DddmpUnnumberBddNodes">DddmpUnnumberBddNodes</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpNumberDdNodesCnf"></A>
|
|
int <I></I>
|
|
<B>DddmpNumberDdNodesCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>rootN</b>, <i>IN: number of BDD roots in the array of BDDs</i>
|
|
int * <b>cnfIds</b>, <i>OUT: CNF identifiers for variables</i>
|
|
int <b>id</b> <i>OUT: number of Temporary Variables Introduced</i>
|
|
)
|
|
</pre>
|
|
<dd> Node numbering is required to convert pointers to integers.
|
|
Since nodes are removed from unique table, no new nodes should
|
|
be generated before re-inserting nodes in the unique table
|
|
(DddmpUnnumberDdNodesCnf()).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique table
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUniqueRecurCnf()">RemoveFromUniqueRecurCnf()</a>
|
|
<a href="#NumberNodeRecurCnf()">NumberNodeRecurCnf()</a>
|
|
<a href="#DddmpUnnumberDdNodesCnf()">DddmpUnnumberDdNodesCnf()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpNumberDdNodesCnf"></A>
|
|
int <I></I>
|
|
<B>DddmpNumberDdNodesCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>rootN</b>, <i>IN: number of BDD roots in the array of BDDs</i>
|
|
int * <b>cnfIds</b>, <i>OUT: CNF identifiers for variables</i>
|
|
int <b>id</b> <i>OUT: number of Temporary Variables Introduced</i>
|
|
)
|
|
</pre>
|
|
<dd> Node numbering is required to convert pointers to integers.
|
|
Since nodes are removed from unique table, no new nodes should
|
|
be generated before re-inserting nodes in the unique table
|
|
(DddmpUnnumberDdNodesCnf()).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique table
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUniqueRecurCnf()">RemoveFromUniqueRecurCnf()</a>
|
|
<a href="#NumberNodeRecurCnf()">NumberNodeRecurCnf()</a>
|
|
<a href="#DddmpUnnumberDdNodesCnf()">DddmpUnnumberDdNodesCnf()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpNumberDdNodes"></A>
|
|
int <I></I>
|
|
<B>DddmpNumberDdNodes</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>n</b> <i>IN: number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Node numbering is required to convert pointers to integers.
|
|
Since nodes are removed from unique table, no new nodes should
|
|
be generated before re-inserting nodes in the unique table
|
|
(DddmpUnnumberDdNodes()).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique table
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUniqueRecur()">RemoveFromUniqueRecur()</a>
|
|
<a href="#NumberNodeRecur()">NumberNodeRecur()</a>
|
|
<a href="#DddmpUnnumberDdNodes()">DddmpUnnumberDdNodes()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpPrintBddAndNextRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpPrintBddAndNextRecur</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be displayed</i>
|
|
)
|
|
</pre>
|
|
<dd> Prints debug info for a BDD on the screen. It recurs on
|
|
node's children.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpPrintBddAndNextRecur"></A>
|
|
static int <I></I>
|
|
<B>DddmpPrintBddAndNextRecur</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be displayed</i>
|
|
)
|
|
</pre>
|
|
<dd> Prints debug info for a BDD on the screen. It recurs on
|
|
node's children.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpPrintBddAndNext"></A>
|
|
int <I></I>
|
|
<B>DddmpPrintBddAndNext</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of BDDs to be displayed</i>
|
|
int <b>rootN</b> <i>IN: Number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Prints debug information for an array of BDDs on the screen
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpPrintBddAndNext"></A>
|
|
int <I></I>
|
|
<B>DddmpPrintBddAndNext</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: Array of BDDs to be displayed</i>
|
|
int <b>rootN</b> <i>IN: Number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Prints debug information for an array of BDDs on the screen
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpReadCnfClauses"></A>
|
|
static int <I></I>
|
|
<B>DddmpReadCnfClauses</B>(
|
|
Dddmp_Hdr_t * <b>Hdr</b>, <i>IN: file header</i>
|
|
int *** <b>cnfTable</b>, <i>OUT: CNF table for clauses</i>
|
|
FILE * <b>fp</b> <i>IN: source file</i>
|
|
)
|
|
</pre>
|
|
<dd> Read the CNF clauses from the file in the standard DIMACS
|
|
format. Store all the clauses in an internal structure for
|
|
future transformation into BDDs.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoadCnf.c"TARGET="ABSTRACT"><CODE>dddmpLoadCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpReadCode"></A>
|
|
int <I></I>
|
|
<B>DddmpReadCode</B>(
|
|
FILE * <b>fp</b>, <i>IN: file where to read the code</i>
|
|
struct binary_dd_code * <b>pcode</b> <i>OUT: the read code</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads a 1 byte node code. See DddmpWriteCode()
|
|
for code description.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpWriteCode()">DddmpWriteCode()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpBinary.c"TARGET="ABSTRACT"><CODE>dddmpBinary.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpReadInt"></A>
|
|
int <I></I>
|
|
<B>DddmpReadInt</B>(
|
|
FILE * <b>fp</b>, <i>IN: file where to read the integer</i>
|
|
int * <b>pid</b> <i>OUT: the read integer</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads an integer coded on a sequence of bytes. See
|
|
DddmpWriteInt() for format.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpWriteInt()">DddmpWriteInt()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpBinary.c"TARGET="ABSTRACT"><CODE>dddmpBinary.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpReadNodeIndexAdd"></A>
|
|
int <I></I>
|
|
<B>DddmpReadNodeIndexAdd</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads the index of a node. LSB is skipped (used as visited
|
|
flag).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpWriteNodeIndexAdd">DddmpWriteNodeIndexAdd</a>
|
|
()
|
|
<a href="#DddmpSetVisitedAdd">DddmpSetVisitedAdd</a>
|
|
()
|
|
<a href="#DddmpVisitedAdd">DddmpVisitedAdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpReadNodeIndexBdd"></A>
|
|
int <I></I>
|
|
<B>DddmpReadNodeIndexBdd</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads the index of a node. LSB is skipped (used as visited
|
|
flag).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpWriteNodeIndexBdd">DddmpWriteNodeIndexBdd</a>
|
|
()
|
|
<a href="#DddmpSetVisitedBdd">DddmpSetVisitedBdd</a>
|
|
()
|
|
<a href="#DddmpVisitedBdd">DddmpVisitedBdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpReadNodeIndexCnf"></A>
|
|
int <I></I>
|
|
<B>DddmpReadNodeIndexCnf</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads the index of a node. LSB is skipped (used as visited
|
|
flag).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpWriteNodeIndexCnf()">DddmpWriteNodeIndexCnf()</a>
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpReadNodeIndexCnf"></A>
|
|
static int <I></I>
|
|
<B>DddmpReadNodeIndexCnf</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads the index of a node. LSB is skipped (used as visited
|
|
flag).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpWriteNodeIndexCnf()">DddmpWriteNodeIndexCnf()</a>
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpReadNodeIndex"></A>
|
|
int <I></I>
|
|
<B>DddmpReadNodeIndex</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads the index of a node. LSB is skipped (used as visited
|
|
flag).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpWriteNodeIndex()">DddmpWriteNodeIndex()</a>
|
|
<a href="#DddmpSetVisited">DddmpSetVisited</a>
|
|
()
|
|
<a href="#DddmpVisited">DddmpVisited</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpSetVisitedAdd"></A>
|
|
void <I></I>
|
|
<B>DddmpSetVisitedAdd</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisitedAdd">DddmpVisitedAdd</a>
|
|
()
|
|
<a href="#DddmpClearVisitedAdd">DddmpClearVisitedAdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpSetVisitedBdd"></A>
|
|
void <I></I>
|
|
<B>DddmpSetVisitedBdd</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisitedBdd">DddmpVisitedBdd</a>
|
|
()
|
|
<a href="#DddmpClearVisitedBdd">DddmpClearVisitedBdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpSetVisitedCnf"></A>
|
|
static void <I></I>
|
|
<B>DddmpSetVisitedCnf</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpClearVisitedCnf">DddmpClearVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpSetVisitedCnf"></A>
|
|
void <I></I>
|
|
<B>DddmpSetVisitedCnf</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpClearVisitedCnf">DddmpClearVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpSetVisited"></A>
|
|
void <I></I>
|
|
<B>DddmpSetVisited</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be marked (as visited)</i>
|
|
)
|
|
</pre>
|
|
<dd> Marks a node as visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpVisited">DddmpVisited</a>
|
|
()
|
|
<a href="#DddmpClearVisited">DddmpClearVisited</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpStrArrayDup"></A>
|
|
char ** <I></I>
|
|
<B>DddmpStrArrayDup</B>(
|
|
char ** <b>array</b>, <i>IN: array of strings to be duplicated</i>
|
|
int <b>n</b> <i>IN: size of the array</i>
|
|
)
|
|
</pre>
|
|
<dd> Allocates memory and copies source array
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpStrArrayFree"></A>
|
|
void <I></I>
|
|
<B>DddmpStrArrayFree</B>(
|
|
char ** <b>array</b>, <i>IN: array of strings</i>
|
|
int <b>n</b> <i>IN: size of the array</i>
|
|
)
|
|
</pre>
|
|
<dd> Frees memory for strings and the array of pointers
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpStrArrayRead"></A>
|
|
char ** <I></I>
|
|
<B>DddmpStrArrayRead</B>(
|
|
FILE * <b>fp</b>, <i>IN: input file</i>
|
|
int <b>n</b> <i>IN: size of the array</i>
|
|
)
|
|
</pre>
|
|
<dd> Allocates memory and inputs source array
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpStrArrayWrite"></A>
|
|
int <I></I>
|
|
<B>DddmpStrArrayWrite</B>(
|
|
FILE * <b>fp</b>, <i>IN: output file</i>
|
|
char ** <b>array</b>, <i>IN: array of strings</i>
|
|
int <b>n</b> <i>IN: size of the array</i>
|
|
)
|
|
</pre>
|
|
<dd> Outputs an array of strings to a specified file
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpStrDup"></A>
|
|
char * <I></I>
|
|
<B>DddmpStrDup</B>(
|
|
char * <b>str</b> <i>IN: string to be duplicated</i>
|
|
)
|
|
</pre>
|
|
<dd> Allocates memory and copies source string
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpUnnumberAddNodes"></A>
|
|
void <I></I>
|
|
<B>DddmpUnnumberAddNodes</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>n</b> <i>IN: number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Node indexes are no more needed. Nodes are re-linked in the
|
|
unique table.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpNumberDdNodeAdd">DddmpNumberDdNodeAdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpUnnumberBddNodes"></A>
|
|
void <I></I>
|
|
<B>DddmpUnnumberBddNodes</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>n</b> <i>IN: number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Node indexes are no more needed. Nodes are re-linked in the
|
|
unique table.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpNumberBddNode">DddmpNumberBddNode</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpUnnumberDdNodesCnf"></A>
|
|
void <I></I>
|
|
<B>DddmpUnnumberDdNodesCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>rootN</b> <i>IN: number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Node indexes are no more needed. Nodes are re-linked in the
|
|
unique table.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpNumberDdNode()">DddmpNumberDdNode()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpUnnumberDdNodesCnf"></A>
|
|
void <I></I>
|
|
<B>DddmpUnnumberDdNodesCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>rootN</b> <i>IN: number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Node indexes are no more needed. Nodes are re-linked in the
|
|
unique table.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpNumberDdNode()">DddmpNumberDdNode()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpUnnumberDdNodes"></A>
|
|
void <I></I>
|
|
<B>DddmpUnnumberDdNodes</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs</i>
|
|
int <b>n</b> <i>IN: number of BDD roots in the array of BDDs</i>
|
|
)
|
|
</pre>
|
|
<dd> Node indexes are no more needed. Nodes are re-linked in the
|
|
unique table.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpNumberDdNode()">DddmpNumberDdNode()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpVisitedAdd"></A>
|
|
int <I></I>
|
|
<B>DddmpVisitedAdd</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be tested</i>
|
|
)
|
|
</pre>
|
|
<dd> Returns true if node is visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpSetVisitedAdd">DddmpSetVisitedAdd</a>
|
|
()
|
|
<a href="#DddmpClearVisitedAdd">DddmpClearVisitedAdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpVisitedBdd"></A>
|
|
int <I></I>
|
|
<B>DddmpVisitedBdd</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be tested</i>
|
|
)
|
|
</pre>
|
|
<dd> Returns true if node is visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpSetVisitedBdd">DddmpSetVisitedBdd</a>
|
|
()
|
|
<a href="#DddmpClearVisitedBdd">DddmpClearVisitedBdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpVisitedCnf"></A>
|
|
int <I></I>
|
|
<B>DddmpVisitedCnf</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be tested</i>
|
|
)
|
|
</pre>
|
|
<dd> Returns true if node is visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpClearVisitedCnf">DddmpClearVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpVisitedCnf"></A>
|
|
static int <I></I>
|
|
<B>DddmpVisitedCnf</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be tested</i>
|
|
)
|
|
</pre>
|
|
<dd> Returns true if node is visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpClearVisitedCnf">DddmpClearVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpVisited"></A>
|
|
int <I></I>
|
|
<B>DddmpVisited</B>(
|
|
DdNode * <b>f</b> <i>IN: BDD node to be tested</i>
|
|
)
|
|
</pre>
|
|
<dd> Returns true if node is visited
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpSetVisited">DddmpSetVisited</a>
|
|
()
|
|
<a href="#DddmpClearVisited">DddmpClearVisited</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpWriteCode"></A>
|
|
int <I></I>
|
|
<B>DddmpWriteCode</B>(
|
|
FILE * <b>fp</b>, <i>IN: file where to write the code</i>
|
|
struct binary_dd_code <b>code</b> <i>IN: the code to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> outputs a 1 byte node code using the following format:
|
|
<pre>
|
|
Unused : 1 bit;
|
|
V : 2 bits; (variable code)
|
|
T : 2 bits; (Then code)
|
|
Ecompl : 1 bit; (Else complemented)
|
|
E : 2 bits; (Else code)
|
|
</pre>
|
|
Ecompl is set with complemented edges.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpReadCode()">DddmpReadCode()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpBinary.c"TARGET="ABSTRACT"><CODE>dddmpBinary.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpWriteInt"></A>
|
|
int <I></I>
|
|
<B>DddmpWriteInt</B>(
|
|
FILE * <b>fp</b>, <i>IN: file where to write the integer</i>
|
|
int <b>id</b> <i>IN: integer to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> Writes an integer as a sequence of bytes (MSByte first).
|
|
For each byte 7 bits are used for data and one (LSBit) as link
|
|
with a further byte (LSB = 1 means one more byte).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpReadInt()">DddmpReadInt()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpBinary.c"TARGET="ABSTRACT"><CODE>dddmpBinary.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpWriteNodeIndexAdd"></A>
|
|
void <I></I>
|
|
<B>DddmpWriteNodeIndexAdd</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node</i>
|
|
int <b>id</b> <i>IN: index to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> The index of the node is written in the "next" field of
|
|
a DdNode struct. LSB is not used (set to 0). It is used as
|
|
"visited" flag in DD traversals.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpReadNodeIndexAdd">DddmpReadNodeIndexAdd</a>
|
|
()
|
|
<a href="#DddmpSetVisitedAdd">DddmpSetVisitedAdd</a>
|
|
()
|
|
<a href="#DddmpVisitedAdd">DddmpVisitedAdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpWriteNodeIndexBdd"></A>
|
|
void <I></I>
|
|
<B>DddmpWriteNodeIndexBdd</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node</i>
|
|
int <b>id</b> <i>IN: index to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> The index of the node is written in the "next" field of
|
|
a DdNode struct. LSB is not used (set to 0). It is used as
|
|
"visited" flag in DD traversals.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpReadNodeIndexBdd()">DddmpReadNodeIndexBdd()</a>
|
|
<a href="#DddmpSetVisitedBdd">DddmpSetVisitedBdd</a>
|
|
()
|
|
<a href="#DddmpVisitedBdd">DddmpVisitedBdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpWriteNodeIndexCnfBis"></A>
|
|
int <I></I>
|
|
<B>DddmpWriteNodeIndexCnfBis</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node</i>
|
|
int <b>id</b> <i>IN: index to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> The index of the node is written in the "next" field of
|
|
a DdNode struct. LSB is not used (set to 0). It is used as
|
|
"visited" flag in DD traversals.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpReadNodeIndexCnf()">DddmpReadNodeIndexCnf()</a>
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpWriteNodeIndexCnfWithTerminalCheck"></A>
|
|
static int <I></I>
|
|
<B>DddmpWriteNodeIndexCnfWithTerminalCheck</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node</i>
|
|
int * <b>cnfIds</b>, <i>IN: possible source for the index to be written</i>
|
|
int <b>id</b> <i>IN: possible source for the index to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> The index of the node is written in the "next" field of
|
|
a DdNode struct. LSB is not used (set to 0). It is used as
|
|
"visited" flag in DD traversals. The index corresponds to
|
|
the BDD node variable if both the node's children are a
|
|
constant node, otherwise a new CNF variable is used.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpReadNodeIndexCnf()">DddmpReadNodeIndexCnf()</a>
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpWriteNodeIndexCnf"></A>
|
|
int <I></I>
|
|
<B>DddmpWriteNodeIndexCnf</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node</i>
|
|
int <b>id</b> <i>IN: index to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> The index of the node is written in the "next" field of
|
|
a DdNode struct. LSB is not used (set to 0). It is used as
|
|
"visited" flag in DD traversals.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpReadNodeIndexCnf()">DddmpReadNodeIndexCnf()</a>
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpWriteNodeIndexCnf"></A>
|
|
static int <I></I>
|
|
<B>DddmpWriteNodeIndexCnf</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node</i>
|
|
int * <b>cnfIds</b>, <i>IN: possible source for the index to be written</i>
|
|
int <b>id</b> <i>IN: possible source for the index to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> The index of the node is written in the "next" field of
|
|
a DdNode struct. LSB is not used (set to 0). It is used as
|
|
"visited" flag in DD traversals. The index corresponds to
|
|
the BDD node variable if both the node's children are a
|
|
constant node, otherwise a new CNF variable is used.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpReadNodeIndexCnf()">DddmpReadNodeIndexCnf()</a>
|
|
<a href="#DddmpSetVisitedCnf">DddmpSetVisitedCnf</a>
|
|
()
|
|
<a href="#DddmpVisitedCnf">DddmpVisitedCnf</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="DddmpWriteNodeIndex"></A>
|
|
void <I></I>
|
|
<B>DddmpWriteNodeIndex</B>(
|
|
DdNode * <b>f</b>, <i>IN: BDD node</i>
|
|
int <b>id</b> <i>IN: index to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> The index of the node is written in the "next" field of
|
|
a DdNode struct. LSB is not used (set to 0). It is used as
|
|
"visited" flag in DD traversals.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#DddmpReadNodeIndex()">DddmpReadNodeIndex()</a>
|
|
<a href="#DddmpSetVisited">DddmpSetVisited</a>
|
|
()
|
|
<a href="#DddmpVisited">DddmpVisited</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_Bin2Text"></A>
|
|
int <I></I>
|
|
<B>Dddmp_Bin2Text</B>(
|
|
char * <b>filein</b>, <i>IN: name of binary file</i>
|
|
char * <b>fileout</b> <i>IN: name of ASCII file</i>
|
|
)
|
|
</pre>
|
|
<dd> Converts from binary to ASCII format. A BDD array is loaded and
|
|
and stored to the target file.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_Text2Bin()">Dddmp_Text2Bin()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpConvert.c"TARGET="ABSTRACT"><CODE>dddmpConvert.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_Text2Bin"></A>
|
|
int <I></I>
|
|
<B>Dddmp_Text2Bin</B>(
|
|
char * <b>filein</b>, <i>IN: name of ASCII file</i>
|
|
char * <b>fileout</b> <i>IN: name of binary file</i>
|
|
)
|
|
</pre>
|
|
<dd> Converts from ASCII to binary format. A BDD array is loaded and
|
|
and stored to the target file.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_Bin2Text()">Dddmp_Bin2Text()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpConvert.c"TARGET="ABSTRACT"><CODE>dddmpConvert.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddAddArrayLoad"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddAddArrayLoad</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
Dddmp_RootMatchType <b>rootMatchMode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>rootmatchnames</b>, <i>IN: sorted names for loaded roots</i>
|
|
Dddmp_VarMatchType <b>varMatchMode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>varmatchnames</b>, <i>IN: array of variable names, by ids</i>
|
|
int * <b>varmatchauxids</b>, <i>IN: array of variable auxids, by ids</i>
|
|
int * <b>varcomposeids</b>, <i>IN: array of new ids, by ids</i>
|
|
int <b>mode</b>, <i>IN: requested input file format</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
DdNode *** <b>pproots</b> <i>OUT: array of returned BDD roots</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads a dump file representing the argument ADDs. See
|
|
BDD load functions for detailed explanation.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> A vector of pointers to DD nodes is allocated and freed.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayStore">Dddmp_cuddBddArrayStore</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoad.c"TARGET="ABSTRACT"><CODE>dddmpLoad.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddAddArrayStore"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddAddArrayStore</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
char * <b>ddname</b>, <i>IN: DD name (or NULL)</i>
|
|
int <b>nRoots</b>, <i>IN: number of output BDD roots to be stored</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of ADD roots to be stored</i>
|
|
char ** <b>rootnames</b>, <i>IN: array of root names (or NULL)</i>
|
|
char ** <b>varnames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
int * <b>auxids</b>, <i>IN: array of converted var IDs</i>
|
|
int <b>mode</b>, <i>IN: storing mode selector</i>
|
|
Dddmp_VarInfoType <b>varinfo</b>, <i>IN: extra info for variables in text mode</i>
|
|
char * <b>fname</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument array of ADDs to file. Dumping is
|
|
either in text or binary form. see the corresponding BDD dump
|
|
function for further details.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from the unique hash
|
|
table. They are re-linked after the store operation in a
|
|
modified order.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddAddStore">Dddmp_cuddAddStore</a>
|
|
<a href="#Dddmp_cuddAddLoad">Dddmp_cuddAddLoad</a>
|
|
<a href="#Dddmp_cuddAddArrayLoad">Dddmp_cuddAddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreAdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddAddLoad"></A>
|
|
DdNode * <I></I>
|
|
<B>Dddmp_cuddAddLoad</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: Manager</i>
|
|
Dddmp_VarMatchType <b>varMatchMode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>varmatchnames</b>, <i>IN: array of variable names by IDs</i>
|
|
int * <b>varmatchauxids</b>, <i>IN: array of variable auxids by IDs</i>
|
|
int * <b>varcomposeids</b>, <i>IN: array of new ids by IDs</i>
|
|
int <b>mode</b>, <i>IN: requested input file format</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b> <i>IN: file pointer</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads a dump file representing the argument ADD.
|
|
Dddmp_cuddAddArrayLoad is used through a dummy array.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> A vector of pointers to DD nodes is allocated and freed.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddAddStore">Dddmp_cuddAddStore</a>
|
|
<a href="#Dddmp_cuddAddArrayLoad">Dddmp_cuddAddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoad.c"TARGET="ABSTRACT"><CODE>dddmpLoad.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddAddStore"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddAddStore</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
char * <b>ddname</b>, <i>IN: DD name (or NULL)</i>
|
|
DdNode * <b>f</b>, <i>IN: ADD root to be stored</i>
|
|
char ** <b>varnames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
int * <b>auxids</b>, <i>IN: array of converted var ids</i>
|
|
int <b>mode</b>, <i>IN: storing mode selector</i>
|
|
Dddmp_VarInfoType <b>varinfo</b>, <i>IN: extra info for variables in text mode</i>
|
|
char * <b>fname</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument ADD to file. Dumping is done through
|
|
Dddmp_cuddAddArrayStore, And a dummy array of 1 ADD root is
|
|
used for this purpose.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique hash. They are
|
|
re-linked after the store operation in a modified order.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddAddLoad">Dddmp_cuddAddLoad</a>
|
|
<a href="#Dddmp_cuddAddArrayLoad">Dddmp_cuddAddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreAdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddArrayLoadCnf"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddArrayLoadCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
Dddmp_RootMatchType <b>rootmatchmode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>rootmatchnames</b>, <i>IN: sorted names for loaded roots</i>
|
|
Dddmp_VarMatchType <b>varmatchmode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>varmatchnames</b>, <i>IN: array of variable names, by IDs</i>
|
|
int * <b>varmatchauxids</b>, <i>IN: array of variable auxids, by IDs</i>
|
|
int * <b>varcomposeids</b>, <i>IN: array of new ids, by IDs</i>
|
|
int <b>mode</b>, <i>IN: computation Mode</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
DdNode *** <b>rootsPtrPtr</b>, <i>OUT: array of returned BDD roots</i>
|
|
int * <b>nRoots</b> <i>OUT: number of BDDs returned</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads a dump file representing the argument BDD in a
|
|
CNF formula.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> A vector of pointers to DD nodes is allocated and freed.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoadCnf.c"TARGET="ABSTRACT"><CODE>dddmpLoadCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddArrayLoad"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddArrayLoad</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
Dddmp_RootMatchType <b>rootMatchMode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>rootmatchnames</b>, <i>IN: sorted names for loaded roots</i>
|
|
Dddmp_VarMatchType <b>varMatchMode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>varmatchnames</b>, <i>IN: array of variable names, by ids</i>
|
|
int * <b>varmatchauxids</b>, <i>IN: array of variable auxids, by ids</i>
|
|
int * <b>varcomposeids</b>, <i>IN: array of new ids, by ids</i>
|
|
int <b>mode</b>, <i>IN: requested input file format</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
DdNode *** <b>pproots</b> <i>OUT: array of returned BDD roots</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads a dump file representing the argument BDDs. The header is
|
|
common to both text and binary mode. The node list is either
|
|
in text or binary format. A dynamic vector of DD pointers
|
|
is allocated to support conversion from DD indexes to pointers.
|
|
Several criteria are supported for variable match between file
|
|
and dd manager. Several changes/permutations/compositions are allowed
|
|
for variables while loading DDs. Variable of the dd manager are allowed
|
|
to match with variables on file on ids, permids, varnames,
|
|
varauxids; also direct composition between ids and
|
|
composeids is supported. More in detail:
|
|
<ol>
|
|
<li> varMatchMode=DDDMP_VAR_MATCHIDS <p>
|
|
allows the loading of a DD keeping variable IDs unchanged
|
|
(regardless of the variable ordering of the reading manager); this
|
|
is useful, for example, when swapping DDs to file and restoring them
|
|
later from file, after possible variable reordering activations.
|
|
|
|
<li> varMatchMode=DDDMP_VAR_MATCHPERMIDS <p>
|
|
is used to allow variable match according to the position in the
|
|
ordering.
|
|
|
|
<li> varMatchMode=DDDMP_VAR_MATCHNAMES <p>
|
|
requires a non NULL varmatchnames parameter; this is a vector of
|
|
strings in one-to-one correspondence with variable IDs of the
|
|
reading manager. Variables in the DD file read are matched with
|
|
manager variables according to their name (a non NULL varnames
|
|
parameter was required while storing the DD file).
|
|
|
|
<li> varMatchMode=DDDMP_VAR_MATCHIDS <p>
|
|
has a meaning similar to DDDMP_VAR_MATCHNAMES, but integer auxiliary
|
|
IDs are used instead of strings; the additional non NULL
|
|
varmatchauxids parameter is needed.
|
|
|
|
<li> varMatchMode=DDDMP_VAR_COMPOSEIDS <p>
|
|
uses the additional varcomposeids parameter is used as array of
|
|
variable ids to be composed with ids stored in file.
|
|
</ol>
|
|
|
|
In the present implementation, the array varnames (3), varauxids (4)
|
|
and composeids (5) need to have one entry for each variable in the
|
|
DD manager (NULL pointers are allowed for unused variables
|
|
in varnames). Hence variables need to be already present in the
|
|
manager. All arrays are sorted according to IDs.
|
|
|
|
All the loaded BDDs are referenced before returning them.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> A vector of pointers to DD nodes is allocated and freed.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayStore">Dddmp_cuddBddArrayStore</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoad.c"TARGET="ABSTRACT"><CODE>dddmpLoad.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddArrayStoreBlif"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddArrayStoreBlif</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
int <b>nroots</b>, <i>IN: number of output BDD roots to be stored</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDD roots to be stored</i>
|
|
char ** <b>inputNames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
char ** <b>outputNames</b>, <i>IN: array of root names (or NULL)</i>
|
|
char * <b>modelName</b>, <i>IN: Model Name</i>
|
|
char * <b>fname</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument BDD to file.
|
|
Dumping is done through Dddmp_cuddBddArrayStoreBLif.
|
|
A dummy array of 1 BDD root is used for this purpose.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayStorePrefix">Dddmp_cuddBddArrayStorePrefix</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddArrayStoreCnf"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddArrayStoreCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDD roots to be stored</i>
|
|
int <b>rootN</b>, <i>IN: # output BDD roots to be stored</i>
|
|
Dddmp_DecompCnfStoreType <b>mode</b>, <i>IN: format selection</i>
|
|
int <b>noHeader</b>, <i>IN: do not store header iff 1</i>
|
|
char ** <b>varNames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
int * <b>bddIds</b>, <i>IN: array of converted var IDs</i>
|
|
int * <b>bddAuxIds</b>, <i>IN: array of BDD node Auxiliary Ids</i>
|
|
int * <b>cnfIds</b>, <i>IN: array of converted var IDs</i>
|
|
int <b>idInitial</b>, <i>IN: starting id for cutting variables</i>
|
|
int <b>edgeInTh</b>, <i>IN: Max # Incoming Edges</i>
|
|
int <b>pathLengthTh</b>, <i>IN: Max Path Length</i>
|
|
char * <b>fname</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b>, <i>IN: pointer to the store file</i>
|
|
int * <b>clauseNPtr</b>, <i>OUT: number of clause stored</i>
|
|
int * <b>varNewNPtr</b> <i>OUT: number of new variable created</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument array of BDDs to file.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from the unique hash
|
|
table. They are re-linked after the store operation in a
|
|
modified order.
|
|
Three methods are allowed:
|
|
* NodeByNode method: Insert a cut-point for each BDD node (but the
|
|
terminal nodes)
|
|
* MaxtermByMaxterm method: Insert no cut-points, i.e. the off-set of
|
|
trhe function is stored
|
|
* Best method: Tradeoff between the previous two methods.
|
|
Auxiliary variables, i.e., cut points are inserted following these
|
|
criterias:
|
|
* edgeInTh
|
|
indicates the maximum number of incoming edges up to which
|
|
no cut point (auxiliary variable) is inserted.
|
|
If edgeInTh:
|
|
* is equal to -1 no cut point due to incoming edges are inserted
|
|
(MaxtermByMaxterm method.)
|
|
* is equal to 0 a cut point is inserted for each node with a single
|
|
incoming edge, i.e., each node, (NodeByNode method).
|
|
* is equal to n a cut point is inserted for each node with (n+1)
|
|
incoming edges.
|
|
* pathLengthTh
|
|
indicates the maximum length path up to which no cut points
|
|
(auxiliary variable) is inserted.
|
|
If the path length between two nodes exceeds this value, a cut point
|
|
is inserted.
|
|
If pathLengthTh:
|
|
* is equal to -1 no cut point due path length are inserted
|
|
(MaxtermByMaxterm method.)
|
|
* is equal to 0 a cut point is inserted for each node (NodeByNode
|
|
method).
|
|
* is equal to n a cut point is inserted on path whose length is
|
|
equal to (n+1).
|
|
Notice that the maximum number of literals in a clause is equal
|
|
to (pathLengthTh + 2), i.e., for each path we have to keep into
|
|
account a CNF variable for each node plus 2 added variables for
|
|
the bottom and top-path cut points.
|
|
The stored file can contain a file header or not depending on the
|
|
noHeader parameter (IFF 0, usual setting, the header is usually stored.
|
|
This option can be useful in storing multiple BDDs, as separate BDDs,
|
|
on the same file leaving the opening of the file to the caller.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddArrayStorePrefix"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddArrayStorePrefix</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
int <b>nroots</b>, <i>IN: number of output BDD roots to be stored</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDD roots to be stored</i>
|
|
char ** <b>inputNames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
char ** <b>outputNames</b>, <i>IN: array of root names (or NULL)</i>
|
|
char * <b>modelName</b>, <i>IN: Model Name</i>
|
|
char * <b>fname</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument BDD to file.
|
|
Dumping is done through Dddmp_cuddBddArrayStorePrefix.
|
|
A dummy array of 1 BDD root is used for this purpose.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayStore">Dddmp_cuddBddArrayStore</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddArrayStoreSmv"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddArrayStoreSmv</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
int <b>nroots</b>, <i>IN: number of output BDD roots to be stored</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDD roots to be stored</i>
|
|
char ** <b>inputNames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
char ** <b>outputNames</b>, <i>IN: array of root names (or NULL)</i>
|
|
char * <b>modelName</b>, <i>IN: Model Name</i>
|
|
char * <b>fname</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument BDD to file.
|
|
Dumping is done through Dddmp_cuddBddArrayStorePrefix.
|
|
A dummy array of 1 BDD root is used for this purpose.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayStore">Dddmp_cuddBddArrayStore</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddArrayStore"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddArrayStore</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
char * <b>ddname</b>, <i>IN: dd name (or NULL)</i>
|
|
int <b>nRoots</b>, <i>IN: number of output BDD roots to be stored</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDD roots to be stored</i>
|
|
char ** <b>rootnames</b>, <i>IN: array of root names (or NULL)</i>
|
|
char ** <b>varnames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
int * <b>auxids</b>, <i>IN: array of converted var IDs</i>
|
|
int <b>mode</b>, <i>IN: storing mode selector</i>
|
|
Dddmp_VarInfoType <b>varinfo</b>, <i>IN: extra info for variables in text mode</i>
|
|
char * <b>fname</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument array of BDDs to file. Dumping is either
|
|
in text or binary form. BDDs are stored to the fp (already
|
|
open) file if not NULL. Otherwise the file whose name is
|
|
fname is opened in write mode. The header has the same format
|
|
for both textual and binary dump. Names are allowed for input
|
|
variables (vnames) and for represented functions (rnames).
|
|
For sake of generality and because of dynamic variable
|
|
ordering both variable IDs and permuted IDs are included.
|
|
New IDs are also supported (auxids). Variables are identified
|
|
with incremental numbers. according with their positiom in
|
|
the support set. In text mode, an extra info may be added,
|
|
chosen among the following options: name, ID, PermID, or an
|
|
auxiliary id. Since conversion from DD pointers to integers
|
|
is required, DD nodes are temporarily removed from the unique
|
|
hash table. This allows the use of the next field to store
|
|
node IDs.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from the unique hash
|
|
table. They are re-linked after the store operation in a
|
|
modified order.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddStore">Dddmp_cuddBddStore</a>
|
|
<a href="#Dddmp_cuddBddLoad">Dddmp_cuddBddLoad</a>
|
|
<a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreBdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddDisplayBinary"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddDisplayBinary</B>(
|
|
char * <b>fileIn</b>, <i>IN: name of binary file</i>
|
|
char * <b>fileOut</b> <i>IN: name of text file</i>
|
|
)
|
|
</pre>
|
|
<dd> Display a binary dump file in a text file
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddStore">Dddmp_cuddBddStore</a>
|
|
<a href="#Dddmp_cuddBddLoad">Dddmp_cuddBddLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDbg.c"TARGET="ABSTRACT"><CODE>dddmpDbg.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddLoadCnf"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddLoadCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
Dddmp_VarMatchType <b>varmatchmode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>varmatchnames</b>, <i>IN: array of variable names, by IDs</i>
|
|
int * <b>varmatchauxids</b>, <i>IN: array of variable auxids, by IDs</i>
|
|
int * <b>varcomposeids</b>, <i>IN: array of new ids accessed, by IDs</i>
|
|
int <b>mode</b>, <i>IN: computation mode</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
DdNode *** <b>rootsPtrPtr</b>, <i>OUT: array of returned BDD roots</i>
|
|
int * <b>nRoots</b> <i>OUT: number of BDDs returned</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads a dump file representing the argument BDD in a
|
|
CNF formula.
|
|
Dddmp_cuddBddArrayLoadCnf is used through a dummy array.
|
|
The results is returned in different formats depending on the
|
|
mode selection:
|
|
IFF mode == 0 Return the Clauses without Conjunction
|
|
IFF mode == 1 Return the sets of BDDs without Quantification
|
|
IFF mode == 2 Return the sets of BDDs AFTER Existential Quantification
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> A vector of pointers to DD nodes is allocated and freed.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddLoad">Dddmp_cuddBddLoad</a>
|
|
<a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoadCnf.c"TARGET="ABSTRACT"><CODE>dddmpLoadCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddLoad"></A>
|
|
DdNode * <I></I>
|
|
<B>Dddmp_cuddBddLoad</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
Dddmp_VarMatchType <b>varMatchMode</b>, <i>IN: storing mode selector</i>
|
|
char ** <b>varmatchnames</b>, <i>IN: array of variable names - by IDs</i>
|
|
int * <b>varmatchauxids</b>, <i>IN: array of variable auxids - by IDs</i>
|
|
int * <b>varcomposeids</b>, <i>IN: array of new ids accessed - by IDs</i>
|
|
int <b>mode</b>, <i>IN: requested input file format</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b> <i>IN: file pointer</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads a dump file representing the argument BDD.
|
|
Dddmp_cuddBddArrayLoad is used through a dummy array (see this
|
|
function's description for more details).
|
|
Mode, the requested input file format, is checked against
|
|
the file format.
|
|
The loaded BDDs is referenced before returning it.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> A vector of pointers to DD nodes is allocated and freed.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddStore">Dddmp_cuddBddStore</a>
|
|
<a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoad.c"TARGET="ABSTRACT"><CODE>dddmpLoad.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddStoreBlif"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddStoreBlif</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
int <b>nRoots</b>, <i>IN: Number of BDD roots</i>
|
|
DdNode * <b>f</b>, <i>IN: BDD root to be stored</i>
|
|
char ** <b>inputNames</b>, <i>IN: Array of variable names</i>
|
|
char ** <b>outputNames</b>, <i>IN: Array of root names</i>
|
|
char * <b>modelName</b>, <i>IN: Model Name</i>
|
|
char * <b>fileName</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument BDD to file.
|
|
Dumping is done through Dddmp_cuddBddArrayStoreBlif.
|
|
A dummy array of 1 BDD root is used for this purpose.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddStorePrefix">Dddmp_cuddBddStorePrefix</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddStoreCnf"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddStoreCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b>, <i>IN: BDD root to be stored</i>
|
|
Dddmp_DecompCnfStoreType <b>mode</b>, <i>IN: format selection</i>
|
|
int <b>noHeader</b>, <i>IN: do not store header iff 1</i>
|
|
char ** <b>varNames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
int * <b>bddIds</b>, <i>IN: array of var ids</i>
|
|
int * <b>bddAuxIds</b>, <i>IN: array of BDD node Auxiliary Ids</i>
|
|
int * <b>cnfIds</b>, <i>IN: array of CNF var ids</i>
|
|
int <b>idInitial</b>, <i>IN: starting id for cutting variables</i>
|
|
int <b>edgeInTh</b>, <i>IN: Max # Incoming Edges</i>
|
|
int <b>pathLengthTh</b>, <i>IN: Max Path Length</i>
|
|
char * <b>fname</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b>, <i>IN: pointer to the store file</i>
|
|
int * <b>clauseNPtr</b>, <i>OUT: number of clause stored</i>
|
|
int * <b>varNewNPtr</b> <i>OUT: number of new variable created</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument BDD to file.
|
|
This task is performed by calling the function
|
|
Dddmp_cuddBddArrayStoreCnf.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique hash. They are
|
|
re-linked after the store operation in a modified order.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayStoreCnf">Dddmp_cuddBddArrayStoreCnf</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddStorePrefix"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddStorePrefix</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
int <b>nRoots</b>, <i>IN: Number of BDD roots</i>
|
|
DdNode * <b>f</b>, <i>IN: BDD root to be stored</i>
|
|
char ** <b>inputNames</b>, <i>IN: Array of variable names</i>
|
|
char ** <b>outputNames</b>, <i>IN: Array of root names</i>
|
|
char * <b>modelName</b>, <i>IN: Model Name</i>
|
|
char * <b>fileName</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument BDD to file.
|
|
Dumping is done through Dddmp_cuddBddArrayStorePrefix.
|
|
A dummy array of 1 BDD root is used for this purpose.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddStore">Dddmp_cuddBddStore</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddStoreSmv"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddStoreSmv</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
int <b>nRoots</b>, <i>IN: Number of BDD roots</i>
|
|
DdNode * <b>f</b>, <i>IN: BDD root to be stored</i>
|
|
char ** <b>inputNames</b>, <i>IN: Array of variable names</i>
|
|
char ** <b>outputNames</b>, <i>IN: Array of root names</i>
|
|
char * <b>modelName</b>, <i>IN: Model Name</i>
|
|
char * <b>fileName</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument BDD to file.
|
|
Dumping is done through Dddmp_cuddBddArrayStorePrefix.
|
|
A dummy array of 1 BDD root is used for this purpose.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddStore">Dddmp_cuddBddStore</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreMisc.c"TARGET="ABSTRACT"><CODE>dddmpStoreMisc.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddBddStore"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddBddStore</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
char * <b>ddname</b>, <i>IN: DD name (or NULL)</i>
|
|
DdNode * <b>f</b>, <i>IN: BDD root to be stored</i>
|
|
char ** <b>varnames</b>, <i>IN: array of variable names (or NULL)</i>
|
|
int * <b>auxids</b>, <i>IN: array of converted var ids</i>
|
|
int <b>mode</b>, <i>IN: storing mode selector</i>
|
|
Dddmp_VarInfoType <b>varinfo</b>, <i>IN: extra info for variables in text mode</i>
|
|
char * <b>fname</b>, <i>IN: File name</i>
|
|
FILE * <b>fp</b> <i>IN: File pointer to the store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Dumps the argument BDD to file. Dumping is done through
|
|
Dddmp_cuddBddArrayStore. A dummy array of 1 BDD root is
|
|
used for this purpose.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are temporarily removed from unique hash. They are
|
|
re-linked after the store operation in a modified order.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddLoad">Dddmp_cuddBddLoad</a>
|
|
<a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreBdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddHeaderLoadCnf"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddHeaderLoadCnf</B>(
|
|
int * <b>nVars</b>, <i>OUT: number of DD variables</i>
|
|
int * <b>nsuppvars</b>, <i>OUT: number of support variables</i>
|
|
char *** <b>suppVarNames</b>, <i>OUT: array of support variable names</i>
|
|
char *** <b>orderedVarNames</b>, <i>OUT: array of variable names</i>
|
|
int ** <b>varIds</b>, <i>OUT: array of variable ids</i>
|
|
int ** <b>varComposeIds</b>, <i>OUT: array of permids ids</i>
|
|
int ** <b>varAuxIds</b>, <i>OUT: array of variable aux ids</i>
|
|
int * <b>nRoots</b>, <i>OUT: number of root in the file</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b> <i>IN: file pointer</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads the header of a dump file representing the argument BDDs.
|
|
Returns main information regarding DD type stored in the file,
|
|
the variable ordering used, the number of variables, etc.
|
|
It reads only the header of the file NOT the BDD/ADD section.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoadCnf.c"TARGET="ABSTRACT"><CODE>dddmpLoadCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="Dddmp_cuddHeaderLoad"></A>
|
|
int <I></I>
|
|
<B>Dddmp_cuddHeaderLoad</B>(
|
|
Dddmp_DecompType * <b>ddType</b>, <i>OUT: selects the proper decomp type</i>
|
|
int * <b>nVars</b>, <i>OUT: number of DD variables</i>
|
|
int * <b>nsuppvars</b>, <i>OUT: number of support variables</i>
|
|
char *** <b>suppVarNames</b>, <i>OUT: array of support variable names</i>
|
|
char *** <b>orderedVarNames</b>, <i>OUT: array of variable names</i>
|
|
int ** <b>varIds</b>, <i>OUT: array of variable ids</i>
|
|
int ** <b>varComposeIds</b>, <i>OUT: array of permids ids</i>
|
|
int ** <b>varAuxIds</b>, <i>OUT: array of variable aux ids</i>
|
|
int * <b>nRoots</b>, <i>OUT: number of root in the file</i>
|
|
char * <b>file</b>, <i>IN: file name</i>
|
|
FILE * <b>fp</b> <i>IN: file pointer</i>
|
|
)
|
|
</pre>
|
|
<dd> Reads the header of a dump file representing the argument BDDs.
|
|
Returns main information regarding DD type stored in the file,
|
|
the variable ordering used, the number of variables, etc.
|
|
It reads only the header of the file NOT the BDD/ADD section.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#Dddmp_cuddBddArrayLoad">Dddmp_cuddBddArrayLoad</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpLoad.c"TARGET="ABSTRACT"><CODE>dddmpLoad.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="FindVarname"></A>
|
|
int <I></I>
|
|
<B>FindVarname</B>(
|
|
char * <b>name</b>, <i>IN: name to look for</i>
|
|
char ** <b>array</b>, <i>IN: search array</i>
|
|
int <b>n</b> <i>IN: size of the array</i>
|
|
)
|
|
</pre>
|
|
<dd> Binary search of a name within a sorted array of strings.
|
|
Used when matching names of variables.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NodeBinaryStoreBdd"></A>
|
|
static int <I></I>
|
|
<B>NodeBinaryStoreBdd</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b>, <i>IN: DD node to be stored</i>
|
|
int <b>mode</b>, <i>IN: store mode</i>
|
|
int * <b>supportids</b>, <i>IN: internal ids for variables</i>
|
|
char ** <b>varnames</b>, <i>IN: names of variables: to be stored with nodes</i>
|
|
int * <b>outids</b>, <i>IN: output ids for variables</i>
|
|
FILE * <b>fp</b>, <i>IN: store file</i>
|
|
int <b>idf</b>, <i>IN: index of the node</i>
|
|
int <b>vf</b>, <i>IN: variable of the node</i>
|
|
int <b>idT</b>, <i>IN: index of the Then node</i>
|
|
int <b>idE</b>, <i>IN: index of the Else node</i>
|
|
int <b>vT</b>, <i>IN: variable of the Then node</i>
|
|
int <b>vE</b>, <i>IN: variable of the Else node</i>
|
|
DdNode * <b>T</b>, <i>IN: Then node</i>
|
|
DdNode * <b>E</b> <i>IN: Else node</i>
|
|
)
|
|
</pre>
|
|
<dd> Store 1 0 0 for the terminal node.
|
|
Store id, left child pointer, right pointer for all the other nodes.
|
|
Store every information as coded binary values.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#NodeTextStoreBdd">NodeTextStoreBdd</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreBdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NodeStoreRecurAdd"></A>
|
|
static int <I></I>
|
|
<B>NodeStoreRecurAdd</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b>, <i>IN: DD node to be stored</i>
|
|
int <b>mode</b>, <i>IN: store mode</i>
|
|
int * <b>supportids</b>, <i>IN: internal ids for variables</i>
|
|
char ** <b>varnames</b>, <i>IN: names of variables: to be stored with nodes</i>
|
|
int * <b>outids</b>, <i>IN: output ids for variables</i>
|
|
FILE * <b>fp</b> <i>IN: store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Stores a node to file in either test or binary mode.<l>
|
|
In text mode a node is represented (on a text line basis) as
|
|
<UL>
|
|
<LI> node-index [var-extrainfo] var-index Then-index Else-index
|
|
</UL>
|
|
|
|
where all indexes are integer numbers and var-extrainfo
|
|
(optional redundant field) is either an integer or a string
|
|
(variable name). Node-index is redundant (due to the node
|
|
ordering) but we keep it for readability.<p>
|
|
|
|
In binary mode nodes are represented as a sequence of bytes,
|
|
representing var-index, Then-index, and Else-index in an
|
|
optimized way. Only the first byte (code) is mandatory.
|
|
Integer indexes are represented in absolute or relative mode,
|
|
where relative means offset wrt. a Then/Else node info.
|
|
Suppose Var(NodeId), Then(NodeId) and Else(NodeId) represent
|
|
infos about a given node.<p>
|
|
|
|
The generic "NodeId" node is stored as
|
|
|
|
<UL>
|
|
<LI> code-byte
|
|
<LI> [var-info]
|
|
<LI> [Then-info]
|
|
<LI> [Else-info]
|
|
</UL>
|
|
|
|
where code-byte contains bit fields
|
|
|
|
<UL>
|
|
<LI>Unused : 1 bit
|
|
<LI>Variable: 2 bits, one of the following codes
|
|
<UL>
|
|
<LI>DDDMP_ABSOLUTE_ID var-info = Var(NodeId) follows
|
|
<LI>DDDMP_RELATIVE_ID Var(NodeId) is represented in relative form as
|
|
var-info = Min(Var(Then(NodeId)),Var(Else(NodeId))) -Var(NodeId)
|
|
<LI>DDDMP_RELATIVE_1 No var-info follows, because
|
|
Var(NodeId) = Min(Var(Then(NodeId)),Var(Else(NodeId)))-1
|
|
<LI>DDDMP_TERMINAL Node is a terminal, no var info required
|
|
</UL>
|
|
<LI>T : 2 bits, with codes similar to V
|
|
<UL>
|
|
<LI>DDDMP_ABSOLUTE_ID Then-info = Then(NodeId) follows
|
|
<LI>DDDMP_RELATIVE_ID Then(NodeId) is represented in relative form as
|
|
Then-info = Nodeid-Then(NodeId)
|
|
<LI>DDDMP_RELATIVE_1 No info on Then(NodeId) follows, because
|
|
Then(NodeId) = NodeId-1
|
|
<LI>DDDMP_TERMINAL Then Node is a terminal, no info required (for BDDs)
|
|
</UL>
|
|
<LI>Ecompl : 1 bit, if 1 means complemented edge
|
|
<LI>E : 2 bits, with codes and meanings as for the Then edge
|
|
</UL>
|
|
var-info, Then-info, Else-info (if required) are represented as unsigned
|
|
integer values on a sufficient set of bytes (MSByte first).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreAdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NodeStoreRecurBdd"></A>
|
|
static int <I></I>
|
|
<B>NodeStoreRecurBdd</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b>, <i>IN: DD node to be stored</i>
|
|
int <b>mode</b>, <i>IN: store mode</i>
|
|
int * <b>supportids</b>, <i>IN: internal ids for variables</i>
|
|
char ** <b>varnames</b>, <i>IN: names of variables: to be stored with nodes</i>
|
|
int * <b>outids</b>, <i>IN: output ids for variables</i>
|
|
FILE * <b>fp</b> <i>IN: store file</i>
|
|
)
|
|
</pre>
|
|
<dd> Stores a node to file in either test or binary mode.<l>
|
|
In text mode a node is represented (on a text line basis) as
|
|
<UL>
|
|
<LI> node-index [var-extrainfo] var-index Then-index Else-index
|
|
</UL>
|
|
|
|
where all indexes are integer numbers and var-extrainfo
|
|
(optional redundant field) is either an integer or a string
|
|
(variable name). Node-index is redundant (due to the node
|
|
ordering) but we keep it for readability.<p>
|
|
|
|
In binary mode nodes are represented as a sequence of bytes,
|
|
representing var-index, Then-index, and Else-index in an
|
|
optimized way. Only the first byte (code) is mandatory.
|
|
Integer indexes are represented in absolute or relative mode,
|
|
where relative means offset wrt. a Then/Else node info.
|
|
Suppose Var(NodeId), Then(NodeId) and Else(NodeId) represent
|
|
infos about a given node.<p>
|
|
|
|
The generic "NodeId" node is stored as
|
|
|
|
<UL>
|
|
<LI> code-byte
|
|
<LI> [var-info]
|
|
<LI> [Then-info]
|
|
<LI> [Else-info]
|
|
</UL>
|
|
|
|
where code-byte contains bit fields
|
|
|
|
<UL>
|
|
<LI>Unused : 1 bit
|
|
<LI>Variable: 2 bits, one of the following codes
|
|
<UL>
|
|
<LI>DDDMP_ABSOLUTE_ID var-info = Var(NodeId) follows
|
|
<LI>DDDMP_RELATIVE_ID Var(NodeId) is represented in relative form as
|
|
var-info = Min(Var(Then(NodeId)),Var(Else(NodeId))) -Var(NodeId)
|
|
<LI>DDDMP_RELATIVE_1 No var-info follows, because
|
|
Var(NodeId) = Min(Var(Then(NodeId)),Var(Else(NodeId)))-1
|
|
<LI>DDDMP_TERMINAL Node is a terminal, no var info required
|
|
</UL>
|
|
<LI>T : 2 bits, with codes similar to V
|
|
<UL>
|
|
<LI>DDDMP_ABSOLUTE_ID Then-info = Then(NodeId) follows
|
|
<LI>DDDMP_RELATIVE_ID Then(NodeId) is represented in relative form as
|
|
Then-info = Nodeid-Then(NodeId)
|
|
<LI>DDDMP_RELATIVE_1 No info on Then(NodeId) follows, because
|
|
Then(NodeId) = NodeId-1
|
|
<LI>DDDMP_TERMINAL Then Node is a terminal, no info required (for BDDs)
|
|
</UL>
|
|
<LI>Ecompl : 1 bit, if 1 means complemented edge
|
|
<LI>E : 2 bits, with codes and meanings as for the Then edge
|
|
</UL>
|
|
var-info, Then-info, Else-info (if required) are represented as unsigned
|
|
integer values on a sufficient set of bytes (MSByte first).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreBdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NodeTextStoreAdd"></A>
|
|
static int <I></I>
|
|
<B>NodeTextStoreAdd</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b>, <i>IN: DD node to be stored</i>
|
|
int <b>mode</b>, <i>IN: store mode</i>
|
|
int * <b>supportids</b>, <i>IN: internal ids for variables</i>
|
|
char ** <b>varnames</b>, <i>IN: names of variables: to be stored with nodes</i>
|
|
int * <b>outids</b>, <i>IN: output ids for variables</i>
|
|
FILE * <b>fp</b>, <i>IN: Store file</i>
|
|
int <b>idf</b>, <i>IN: index of the current node</i>
|
|
int <b>vf</b>, <i>IN: variable of the current node</i>
|
|
int <b>idT</b>, <i>IN: index of the Then node</i>
|
|
int <b>idE</b> <i>IN: index of the Else node</i>
|
|
)
|
|
</pre>
|
|
<dd> Store 1 0 0 for the terminal node.
|
|
Store id, left child pointer, right pointer for all the other nodes.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#NodeBinaryStore">NodeBinaryStore</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreAdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NodeTextStoreBdd"></A>
|
|
static int <I></I>
|
|
<B>NodeTextStoreBdd</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b>, <i>IN: DD node to be stored</i>
|
|
int <b>mode</b>, <i>IN: store mode</i>
|
|
int * <b>supportids</b>, <i>IN: internal ids for variables</i>
|
|
char ** <b>varnames</b>, <i>IN: names of variables: to be stored with nodes</i>
|
|
int * <b>outids</b>, <i>IN: output ids for variables</i>
|
|
FILE * <b>fp</b>, <i>IN: Store file</i>
|
|
int <b>idf</b>, <i>IN: index of the current node</i>
|
|
int <b>vf</b>, <i>IN: variable of the current node</i>
|
|
int <b>idT</b>, <i>IN: index of the Then node</i>
|
|
int <b>idE</b> <i>IN: index of the Else node</i>
|
|
)
|
|
</pre>
|
|
<dd> Store 1 0 0 for the terminal node.
|
|
Store id, left child pointer, right pointer for all the other nodes.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#NodeBinaryStoreBdd">NodeBinaryStoreBdd</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreBdd.c"TARGET="ABSTRACT"><CODE>dddmpStoreBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NumberNodeRecurAdd"></A>
|
|
static int <I></I>
|
|
<B>NumberNodeRecurAdd</B>(
|
|
DdNode * <b>f</b>, <i>IN: root of the BDD to be numbered</i>
|
|
int <b>id</b> <i>IN/OUT: index to be assigned to the node</i>
|
|
)
|
|
</pre>
|
|
<dd> Number nodes recursively in post-order.
|
|
The "visited" flag is used with inverse polarity, because all nodes
|
|
were set "visited" when removing them from unique.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags are reset.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NumberNodeRecurBdd"></A>
|
|
static int <I></I>
|
|
<B>NumberNodeRecurBdd</B>(
|
|
DdNode * <b>f</b>, <i>IN: root of the BDD to be numbered</i>
|
|
int <b>id</b> <i>IN/OUT: index to be assigned to the node</i>
|
|
)
|
|
</pre>
|
|
<dd> Number nodes recursively in post-order.
|
|
The "visited" flag is used with inverse polarity, because all nodes
|
|
were set "visited" when removing them from unique.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags are reset.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NumberNodeRecurCnf"></A>
|
|
static int <I></I>
|
|
<B>NumberNodeRecurCnf</B>(
|
|
DdNode * <b>f</b>, <i>IN: root of the BDD to be numbered</i>
|
|
int * <b>cnfIds</b>, <i>IN: possible source for numbering</i>
|
|
int <b>id</b> <i>IN/OUT: possible source for numbering</i>
|
|
)
|
|
</pre>
|
|
<dd> Number nodes recursively in post-order.
|
|
The "visited" flag is used with inverse polarity, because all nodes
|
|
were set "visited" when removing them from unique.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags are reset.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NumberNodeRecurCnf"></A>
|
|
static int <I></I>
|
|
<B>NumberNodeRecurCnf</B>(
|
|
DdNode * <b>f</b>, <i>IN: root of the BDD to be numbered</i>
|
|
int * <b>cnfIds</b>, <i>IN: possible source for numbering</i>
|
|
int <b>id</b> <i>IN/OUT: possible source for numbering</i>
|
|
)
|
|
</pre>
|
|
<dd> Number nodes recursively in post-order.
|
|
The "visited" flag is used with inverse polarity, because all nodes
|
|
were set "visited" when removing them from unique.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags are reset.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="NumberNodeRecur"></A>
|
|
static int <I></I>
|
|
<B>NumberNodeRecur</B>(
|
|
DdNode * <b>f</b>, <i>IN: root of the BDD to be numbered</i>
|
|
int <b>id</b> <i>IN/OUT: index to be assigned to the node</i>
|
|
)
|
|
</pre>
|
|
<dd> Number nodes recursively in post-order.
|
|
The "visited" flag is used with inverse polarity, because all nodes
|
|
were set "visited" when removing them from unique.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> "visited" flags are reset.
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="QsortStrcmp"></A>
|
|
int <I></I>
|
|
<B>QsortStrcmp</B>(
|
|
const void * <b>ps1</b>, <i>IN: pointer to the first string</i>
|
|
const void * <b>ps2</b> <i>IN: pointer to the second string</i>
|
|
)
|
|
</pre>
|
|
<dd> String compare for qsort
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpUtil.c"TARGET="ABSTRACT"><CODE>dddmpUtil.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="ReadByteBinary"></A>
|
|
static int <I></I>
|
|
<B>ReadByteBinary</B>(
|
|
FILE * <b>fp</b>, <i>IN: file where to read the byte</i>
|
|
unsigned char * <b>cp</b> <i>OUT: the read byte</i>
|
|
)
|
|
</pre>
|
|
<dd> inputs a byte to file fp. 0x00 has been used as escape character
|
|
to filter <CR>, <LF> and <ctrl-Z>. This is done for
|
|
compatibility between unix and dos/windows systems.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#WriteByteBinary()">WriteByteBinary()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpBinary.c"TARGET="ABSTRACT"><CODE>dddmpBinary.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RemoveFromUniqueRecurAdd"></A>
|
|
static void <I></I>
|
|
<B>RemoveFromUniqueRecurAdd</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be extracted</i>
|
|
)
|
|
</pre>
|
|
<dd> Removes a node from the unique table by locating the proper
|
|
subtable and unlinking the node from it. It recurs on the
|
|
children of the node. Constants remain untouched.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are left with the "visited" flag true.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RestoreInUniqueRecurAdd">RestoreInUniqueRecurAdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RemoveFromUniqueRecurBdd"></A>
|
|
static void <I></I>
|
|
<B>RemoveFromUniqueRecurBdd</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be extracted</i>
|
|
)
|
|
</pre>
|
|
<dd> Removes a node from the unique table by locating the proper
|
|
subtable and unlinking the node from it. It recurs on the
|
|
children of the node. Constants remain untouched.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are left with the "visited" flag true.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RestoreInUniqueRecurBdd">RestoreInUniqueRecurBdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RemoveFromUniqueRecurCnf"></A>
|
|
static void <I></I>
|
|
<B>RemoveFromUniqueRecurCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be extracted</i>
|
|
)
|
|
</pre>
|
|
<dd> Removes a node from the unique table by locating the proper
|
|
subtable and unlinking the node from it. It recurs on on the
|
|
children of the node. Constants remain untouched.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are left with the "visited" flag true.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RestoreInUniqueRecurCnf()">RestoreInUniqueRecurCnf()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RemoveFromUniqueRecurCnf"></A>
|
|
static void <I></I>
|
|
<B>RemoveFromUniqueRecurCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be extracted</i>
|
|
)
|
|
</pre>
|
|
<dd> Removes a node from the unique table by locating the proper
|
|
subtable and unlinking the node from it. It recurs on son nodes.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are left with the "visited" flag true.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RestoreInUniqueRecurCnf()">RestoreInUniqueRecurCnf()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RemoveFromUniqueRecur"></A>
|
|
static void <I></I>
|
|
<B>RemoveFromUniqueRecur</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be extracted</i>
|
|
)
|
|
</pre>
|
|
<dd> Removes a node from the unique table by locating the proper
|
|
subtable and unlinking the node from it. It recurs on the
|
|
children of the node.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are left with the "visited" flag true.
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RestoreInUniqueRecur()">RestoreInUniqueRecur()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RestoreInUniqueRecurAdd"></A>
|
|
static void <I></I>
|
|
<B>RestoreInUniqueRecurAdd</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be restored</i>
|
|
)
|
|
</pre>
|
|
<dd> Restores a node in unique table (recursively)
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are not restored in the same order as before removal
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUniqueAdd">RemoveFromUniqueAdd</a>
|
|
()
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeAdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeAdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RestoreInUniqueRecurBdd"></A>
|
|
static void <I></I>
|
|
<B>RestoreInUniqueRecurBdd</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be restored</i>
|
|
)
|
|
</pre>
|
|
<dd> Restores a node in unique table (recursively)
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are not restored in the same order as before removal
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUnique()">RemoveFromUnique()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RestoreInUniqueRecurCnf"></A>
|
|
static void <I></I>
|
|
<B>RestoreInUniqueRecurCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be restored</i>
|
|
)
|
|
</pre>
|
|
<dd> Restores a node in unique table (recursive)
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are not restored in the same order as before removal
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUnique()">RemoveFromUnique()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RestoreInUniqueRecurCnf"></A>
|
|
static void <I></I>
|
|
<B>RestoreInUniqueRecurCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be restored</i>
|
|
)
|
|
</pre>
|
|
<dd> Restores a node in unique table (recursive)
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are not restored in the same order as before removal
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUnique()">RemoveFromUnique()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpNodeCnf.c"TARGET="ABSTRACT"><CODE>dddmpNodeCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="RestoreInUniqueRecur"></A>
|
|
static void <I></I>
|
|
<B>RestoreInUniqueRecur</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b> <i>IN: root of the BDD to be restored</i>
|
|
)
|
|
</pre>
|
|
<dd> Restores a node in unique table (recursively)
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> Nodes are not restored in the same order as before removal
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#RemoveFromUnique()">RemoveFromUnique()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpDdNodeBdd.c"TARGET="ABSTRACT"><CODE>dddmpDdNodeBdd.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="StoreCnfBestNotSharedRecur"></A>
|
|
static int <I></I>
|
|
<B>StoreCnfBestNotSharedRecur</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>node</b>, <i>IN: BDD to store</i>
|
|
int <b>idf</b>, <i>IN: Id to store</i>
|
|
int * <b>bddIds</b>, <i>IN: BDD identifiers</i>
|
|
int * <b>cnfIds</b>, <i>IN: corresponding CNF identifiers</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
int * <b>list</b>, <i>IN: temporary array to store cubes</i>
|
|
int * <b>clauseN</b>, <i>OUT: number of stored clauses</i>
|
|
int * <b>varMax</b> <i>OUT: maximum identifier of the variables created</i>
|
|
)
|
|
</pre>
|
|
<dd> Performs the recursive step of Print Best on Not Shared
|
|
sub-BDDs, i.e., print out information for the nodes belonging to
|
|
BDDs not shared (whose root has just one incoming edge).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="StoreCnfBestSharedRecur"></A>
|
|
static int <I></I>
|
|
<B>StoreCnfBestSharedRecur</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>node</b>, <i>IN: BDD to store</i>
|
|
int * <b>bddIds</b>, <i>IN: BDD identifiers</i>
|
|
int * <b>cnfIds</b>, <i>IN: corresponding CNF identifiers</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
int * <b>list</b>, <i>IN: temporary array to store cubes</i>
|
|
int * <b>clauseN</b>, <i>OUT: number of stored clauses</i>
|
|
int * <b>varMax</b> <i>OUT: maximum identifier of the variables created</i>
|
|
)
|
|
</pre>
|
|
<dd> Performs the recursive step of Print Best on Not Shared
|
|
sub-BDDs, i.e., print out information for the nodes belonging to
|
|
BDDs not shared (whose root has just one incoming edge).
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="StoreCnfBest"></A>
|
|
static int <I></I>
|
|
<B>StoreCnfBest</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs to store</i>
|
|
int <b>rootN</b>, <i>IN: number of BDD in the array</i>
|
|
int * <b>bddIds</b>, <i>IN: BDD identifiers</i>
|
|
int * <b>cnfIds</b>, <i>IN: corresponding CNF identifiers</i>
|
|
int <b>idInitial</b>, <i>IN: initial value for numbering new CNF variables</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
int * <b>varMax</b>, <i>OUT: maximum identifier of the variables created</i>
|
|
int * <b>clauseN</b>, <i>OUT: number of stored clauses</i>
|
|
int * <b>rootStartLine</b> <i>OUT: line where root starts</i>
|
|
)
|
|
</pre>
|
|
<dd> Prints a disjoint sum of product cover for the function
|
|
rooted at node intorducing cutting points whenever necessary.
|
|
Each product corresponds to a path from node a leaf
|
|
node different from the logical zero, and different from the
|
|
background value. Uses the standard output. Returns 1 if
|
|
successful, 0 otherwise.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#StoreCnfMaxtermByMaxterm">StoreCnfMaxtermByMaxterm</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="StoreCnfMaxtermByMaxtermRecur"></A>
|
|
static void <I></I>
|
|
<B>StoreCnfMaxtermByMaxtermRecur</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>node</b>, <i>IN: BDD to store</i>
|
|
int * <b>bddIds</b>, <i>IN: BDD identifiers</i>
|
|
int * <b>cnfIds</b>, <i>IN: corresponding CNF identifiers</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
int * <b>list</b>, <i>IN: temporary array to store cubes</i>
|
|
int * <b>clauseN</b>, <i>OUT: number of stored clauses</i>
|
|
int * <b>varMax</b> <i>OUT: maximum identifier of the variables created</i>
|
|
)
|
|
</pre>
|
|
<dd> Performs the recursive step of Print Maxterm.
|
|
Traverse a BDD a print out a cube in CNF format each time a terminal
|
|
node is reached.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="StoreCnfMaxtermByMaxterm"></A>
|
|
static int <I></I>
|
|
<B>StoreCnfMaxtermByMaxterm</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: array of BDDs to store</i>
|
|
int <b>rootN</b>, <i>IN: number of BDDs in the array</i>
|
|
int * <b>bddIds</b>, <i>IN: BDD Identifiers</i>
|
|
int * <b>cnfIds</b>, <i>IN: corresponding CNF Identifiers</i>
|
|
int <b>idInitial</b>, <i>IN: initial value for numbering new CNF variables</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
int * <b>varMax</b>, <i>OUT: maximum identifier of the variables created</i>
|
|
int * <b>clauseN</b>, <i>OUT: number of stored clauses</i>
|
|
int * <b>rootStartLine</b> <i>OUT: line where root starts</i>
|
|
)
|
|
</pre>
|
|
<dd> Prints a disjoint sum of product cover for the function
|
|
rooted at node. Each product corresponds to a path from node a
|
|
leaf node different from the logical zero, and different from
|
|
the background value. Uses the standard output. Returns 1 if
|
|
successful, 0 otherwise.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#StoreCnfBest">StoreCnfBest</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="StoreCnfNodeByNodeRecur"></A>
|
|
static int <I></I>
|
|
<B>StoreCnfNodeByNodeRecur</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>f</b>, <i>IN: BDD node to be stored</i>
|
|
int * <b>bddIds</b>, <i>IN: BDD ids for variables</i>
|
|
int * <b>cnfIds</b>, <i>IN: CNF ids for variables</i>
|
|
FILE * <b>fp</b>, <i>IN: store file</i>
|
|
int * <b>clauseN</b>, <i>OUT: number of clauses written in the CNF file</i>
|
|
int * <b>varMax</b> <i>OUT: maximum value of id written in the CNF file</i>
|
|
)
|
|
</pre>
|
|
<dd> Performs the recursive step of Dddmp_bddStore.
|
|
Traverse the BDD and store a CNF formula for each "terminal" node.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="StoreCnfNodeByNode"></A>
|
|
static int <I></I>
|
|
<B>StoreCnfNodeByNode</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode ** <b>f</b>, <i>IN: BDD array to be stored</i>
|
|
int <b>rootN</b>, <i>IN: number of BDDs in the array</i>
|
|
int * <b>bddIds</b>, <i>IN: BDD ids for variables</i>
|
|
int * <b>cnfIds</b>, <i>IN: CNF ids for variables</i>
|
|
FILE * <b>fp</b>, <i>IN: store file</i>
|
|
int * <b>clauseN</b>, <i>IN/OUT: number of clauses written in the CNF file</i>
|
|
int * <b>varMax</b>, <i>IN/OUT: maximum value of id written in the CNF file</i>
|
|
int * <b>rootStartLine</b> <i>OUT: CNF line where root starts</i>
|
|
)
|
|
</pre>
|
|
<dd> Store the BDD as CNF clauses.
|
|
Use a multiplexer description for each BDD node.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="StoreCnfOneNode"></A>
|
|
static int <I></I>
|
|
<B>StoreCnfOneNode</B>(
|
|
DdNode * <b>f</b>, <i>IN: node to be stored</i>
|
|
int <b>idf</b>, <i>IN: node CNF Index</i>
|
|
int <b>vf</b>, <i>IN: node BDD Index</i>
|
|
int <b>idT</b>, <i>IN: Then CNF Index with sign = inverted edge</i>
|
|
int <b>idE</b>, <i>IN: Else CNF Index with sign = inverted edge</i>
|
|
FILE * <b>fp</b>, <i>IN: store file</i>
|
|
int * <b>clauseN</b>, <i>OUT: number of clauses</i>
|
|
int * <b>varMax</b> <i>OUT: maximun Index of variable stored</i>
|
|
)
|
|
</pre>
|
|
<dd> Store One Single BDD Node translating it as a multiplexer.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="WriteByteBinary"></A>
|
|
static int <I></I>
|
|
<B>WriteByteBinary</B>(
|
|
FILE * <b>fp</b>, <i>IN: file where to write the byte</i>
|
|
unsigned char <b>c</b> <i>IN: the byte to be written</i>
|
|
)
|
|
</pre>
|
|
<dd> outputs a byte to file fp. Uses 0x00 as escape character
|
|
to filter <CR>, <LF> and <ctrl-Z>.
|
|
This is done for compatibility between unix and dos/windows systems.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<dd> <b>See Also</b> <code><a href="#ReadByteBinary()">ReadByteBinary()</a>
|
|
</code>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpBinary.c"TARGET="ABSTRACT"><CODE>dddmpBinary.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME="printCubeCnf"></A>
|
|
static int <I></I>
|
|
<B>printCubeCnf</B>(
|
|
DdManager * <b>ddMgr</b>, <i>IN: DD Manager</i>
|
|
DdNode * <b>node</b>, <i>IN: BDD to store</i>
|
|
int * <b>cnfIds</b>, <i>IN: CNF identifiers</i>
|
|
FILE * <b>fp</b>, <i>IN: file pointer</i>
|
|
int * <b>list</b>, <i>IN: temporary array to store cubes</i>
|
|
int * <b>varMax</b> <i>OUT: maximum identifier of the variables created</i>
|
|
)
|
|
</pre>
|
|
<dd> Print One Cube in CNF Format.
|
|
Return DDDMP_SUCCESS if something is printed out, DDDMP_FAILURE
|
|
is nothing is printed out.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpStoreCnf.c"TARGET="ABSTRACT"><CODE>dddmpStoreCnf.c</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME=""></A>
|
|
<I></I>
|
|
<B></B>(
|
|
<b></b> <i></i>
|
|
)
|
|
</pre>
|
|
<dd> Checks for Warnings: If expr==1 it prints out the warning
|
|
on stderr.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmp.h"TARGET="ABSTRACT"><CODE>dddmp.h</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME=""></A>
|
|
<I></I>
|
|
<B></B>(
|
|
<b></b> <i></i>
|
|
)
|
|
</pre>
|
|
<dd> Checks for fatal bugs and go to the label to deal with
|
|
the error.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmp.h"TARGET="ABSTRACT"><CODE>dddmp.h</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME=""></A>
|
|
<I></I>
|
|
<B></B>(
|
|
<b></b> <i></i>
|
|
)
|
|
</pre>
|
|
<dd> Checks for fatal bugs and return the DDDMP_FAILURE flag.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmp.h"TARGET="ABSTRACT"><CODE>dddmp.h</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME=""></A>
|
|
<I></I>
|
|
<B></B>(
|
|
<b></b> <i></i>
|
|
)
|
|
</pre>
|
|
<dd> Conditional safety assertion. It prints out the file
|
|
name and line number where the fatal error occurred.
|
|
Messages are printed out on stderr.
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmp.h"TARGET="ABSTRACT"><CODE>dddmp.h</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME=""></A>
|
|
<I></I>
|
|
<B></B>(
|
|
<b></b> <i></i>
|
|
)
|
|
</pre>
|
|
<dd> Memory Allocation Macro for DDDMP
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpInt.h"TARGET="ABSTRACT"><CODE>dddmpInt.h</CODE></A>
|
|
|
|
<dt><pre>
|
|
<A NAME=""></A>
|
|
<I></I>
|
|
<B></B>(
|
|
<b></b> <i></i>
|
|
)
|
|
</pre>
|
|
<dd> Memory Free Macro for DDDMP
|
|
<p>
|
|
|
|
<dd> <b>Side Effects</b> None
|
|
<p>
|
|
|
|
<DD> <B>Defined in </B> <A HREF="dddmpAllFile.html#dddmpInt.h"TARGET="ABSTRACT"><CODE>dddmpInt.h</CODE></A>
|
|
|
|
|
|
</DL>
|
|
<HR>
|
|
Last updated on 1040218 17h14
|
|
</BODY></HTML>
|