Ddi_Bdd_t * 
Ddi_BddAndAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Compute f & g. Previous content of f is freed and new result is copyed to f. Since f points to a handle, it can be passed by value: the handle is kept when freeing old content. Accumulate type operations are useful to avoid temporary variables and explicit free of old data. The pointer to f (old handle) is returned so that the function may be used as operand for other functions.

Side Effects none


Ddi_Bdd_t * 
Ddi_BddAndExistAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Varset_t * vars 
)
Relational product (Exist(f&g,vars)). New result is accumulated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddAndExist(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Varset_t * vars 
)
Relational product (Exist(f&g,vars)). New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddAnd(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Compute f & g. A new result is generated and returned. Input parameters are NOT changed

Side Effects none

See Also Ddi_BddNot Ddi_BddOr

Ddi_Bddarray_t * 
Ddi_BddArraySetMeta(
  Ddi_Bddarray_t * f 
)
Transform a BDD array to Meta BDD. Result accumulated


Ddi_Bdd_t * 
Ddi_BddCofactorAcc(
  Ddi_Bdd_t * f, 
  Ddi_Var_t * v, 
  int  phase 
)
Cofactor with variable. New result is accumulated

Side Effects none


Ddi_Bdd_t * 
Ddi_BddCofactor(
  Ddi_Bdd_t * f, 
  Ddi_Var_t * v, 
  int  phase 
)
Cofactor with variable. New result is generated

Side Effects none


Ddi_Bdd_t * 
Ddi_BddCofexist(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Varset_t * smooth 
)
Constrain cofactor. New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddComposeAcc(
  Ddi_Bdd_t * f, 
  Ddi_Vararray_t * x, array of variables
  Ddi_Bddarray_t * g array of functions
)
Function composition x <- g in f. New result is accumulated. Vector composition algorithm is used.

Side Effects none

See Also Ddi_BddSwapVars Ddi_BddSubstVars

Ddi_Bdd_t * 
Ddi_BddCompose(
  Ddi_Bdd_t * f, 
  Ddi_Vararray_t * x, array of variables
  Ddi_Bddarray_t * g array of functions
)
Function composition x <- g in f. New result is generated. Vector composition algorithm is used.

Side Effects none

See Also Ddi_BddSwapVars Ddi_BddSubstVars

Ddi_Bdd_t * 
Ddi_BddConstrainAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Constrain cofactor. New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddConstrain(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Constrain cofactor. New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddCopyRemapVars(
  Ddi_Mgr_t * ddm, destination manager
  Ddi_Bdd_t * old, BDD to be duplicated
  Ddi_Vararray_t * varsOld, old variable array
  Ddi_Vararray_t * varsNew new variable array
)
Copy a Ddi_Bdd_t to a destination DDI manager. Variable correspondence is established "by index", i.e. variables with same index in different manager correspond. Bdd is simply duplicated if destination manager is equal to the source one.


Ddi_Bdd_t * 
Ddi_BddCopy(
  Ddi_Mgr_t * ddm, destination manager
  Ddi_Bdd_t * old BDD to be duplicated
)
Copy a Ddi_Bdd_t to a destination DDI manager. Variable correspondence is established "by index", i.e. variables with same index in different manager correspond. Bdd is simply duplicated if destination manager is equal to the source one.


Ddi_Bdd_t * 
Ddi_BddCprojectAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Compatible projector. New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddCproject(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Compatible projector. New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddDenseSet(
  Ddi_DenseMethod_e  method, Operation Code
  Ddi_Bdd_t * f, Operand
  int  threshold, 
  int  safe, 
  int  quality, 
  double  hardlimit 
)
Compute the Dense Super or Subset of a Boolean functions

Side Effects none


Ddi_Bdd_t * 
Ddi_BddDiffAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean difference (f & !g). Result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddDiff(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean difference (f & !g). New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddDup(
  Ddi_Bdd_t * f BDD to be duplicated
)
Duplicate a Ddi_Bdd_t. All pointed objects are recursively duplicated. In case of partitioned BDDs, array of partitions are duplicated. Cudd BDDs are referenced.


int 
Ddi_BddEqual(
  Ddi_Bdd_t * f, first dd
  Ddi_Bdd_t * g second dd
)
Return true (non 0) if the two DDs are equal (f==g). This test is presently limited to monolithic BDDs.


Ddi_Bdd_t * 
Ddi_BddEvalFree(
  Ddi_Bdd_t * f, expression
  Ddi_Bdd_t * g BDD to be freed
)
Useful for accumulator like expressions (g=f(g,h)), i.e. computing a new value for a variable and the old value must be freed. Avoids using temporary variables. Since the f expression is evalued before passing actual parameters, freeing of g occurs as last operation.
    E.g. 
          g=Ddi_BddEvalFree(Ddi_BddAnd(g,h),g).
    
The "accumulator" style operations introduced from version 2.0 of pdtrav should stongly reduce the need for this technique. The above example can now be written as:
          Ddi_BddAndAcc(g,h).
    

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddExistAcc(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars 
)
Existential abstraction. New result is accumulated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddExist(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars 
)
Existential abstraction. New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddForallAcc(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars 
)
Universal abstraction. New result is accumulated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddForall(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars 
)
Universal abstraction. New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddFromMeta(
  Ddi_Bdd_t * f 
)
Transform a BDD to Meta BDD. Result accumulated


int 
Ddi_BddIncluded(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Check for inclusion (f in g). Return non 0 if true. This test requires the second operand (g) to be monolithic, whereas monolithic and disjunctively partitioned forms are allowed for first operand (f).


int 
Ddi_BddIsCube(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is a cube. Monolithic BDD required.

Side Effects none

See Also Ddi_BddIsOne

int 
Ddi_BddIsMeta(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is a meta BDD.

Side Effects none

See Also Ddi_BddIsPartConj Ddi_BddIsPartDisj

int 
Ddi_BddIsMono(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is a monolithic BDD.

Side Effects none

See Also Ddi_BddIsPartConj Ddi_BddIsPartDisj

int 
Ddi_BddIsOne(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is the one constant. This test is presently limited to monolithic BDDs.

Side Effects none

See Also Ddi_BddIsZero

int 
Ddi_BddIsPartConj(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is a conjunctively partitioned BDD.

Side Effects none

See Also Ddi_BddIsMono Ddi_BddIsPartDisj

int 
Ddi_BddIsPartDisj(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is a disjunctively partitioned BDD.

Side Effects none

See Also Ddi_BddIsMono Ddi_BddIsPartConj

int 
Ddi_BddIsZero(
  Ddi_Bdd_t * f 
)
Return true (non 0) if f is the zero constant. This test is presently limited to monolithic BDDs.

Side Effects none

See Also Ddi_BddIsOne

Ddi_Bdd_t * 
Ddi_BddIteAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Bdd_t * h 
)
If-Then-Else (ITE(f,g,h)). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddIte(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g, 
  Ddi_Bdd_t * h 
)
If-Then-Else (ITE(f,g,h)). New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddLoad(
  Ddi_BddMgr * dd, dd manager
  int  varmatchmode, variable matching mode
  char  mode, loading mode
  char * filename, file name
  FILE * fp file pointer
)
This function loads only a BDD. If the file contain a BDDs' array, then will be load only the first BDD.
The BDD on file must be in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_BINARY or DDDMP_MODE_DEFAULT.
The function returns the pointer of BDD root if succefully loaded, NULL otherwise.

Side Effects None

See Also Ddi_BddStore Dddmp_cuddBddLoad

Ddi_Bdd_t * 
Ddi_BddMakeClustered(
  Ddi_Bdd_t * f, input function
  int  threshold size threshold
)
Create a clustered BDD from a partitioned one. Conjunctions/disjunctions are executed up to the size threshold (sizes greater than threshold are aborted).


Ddi_Bdd_t * 
Ddi_BddMakeConst(
  Ddi_Mgr_t * mgr, 
  int  value non 0: true (one), 0: false (zero)
)
Generate a Ddi_Bdd_t constant node (BDD zero or one). The proper constant node within the manager is duplicated.

See Also Ddi_BddToCU DdiBddMakeLiteral

Ddi_Bdd_t * 
Ddi_BddMakeFromCU(
  Ddi_Mgr_t * mgr, 
  DdNode * bdd 
)
Build the Ddi_Bdd_t structure (by means of DdiGenericAlloc) from manager and CUDD node. The reference count of the node is increased.

See Also DdiGenericAlloc Ddi_BddToCU

Ddi_Bdd_t * 
Ddi_BddMakeFromMeta(
  Ddi_Bdd_t * f 
)
Transform a BDD to Meta BDD. Result generated


Ddi_Bdd_t * 
Ddi_BddMakeLiteral(
  Ddi_Var_t * v, 
  int  polarity non 0: affirmed (v), 0: complemented literal (!v)
)
Generate a literal from a variable. The literal can be either affirmed or complemented.

Side Effects none

See Also Ddi_Bdd

Ddi_Bdd_t * 
Ddi_BddMakeMeta(
  Ddi_Bdd_t * f 
)
Transform a BDD to Meta BDD. Result generated


Ddi_Bdd_t * 
Ddi_BddMakeMono(
  Ddi_Bdd_t * f input function
)
Create a monolithic BDD from a partitioned one


Ddi_Bdd_t * 
Ddi_BddMakePartConjFromArray(
  Ddi_Bddarray_t * array 
)
Build a conjunctively partitioned BDD from array of partitions

See Also Ddi_BddMakePartConjFromMono Ddi_BddMakePartDisjFromMono Ddi_BddMakePartDisjFromArray

Ddi_Bdd_t * 
Ddi_BddMakePartConjFromMono(
  Ddi_Bdd_t * mono 
)
Build a conjunctively partitioned BDD from a monolithic BDD

See Also Ddi_BddMakePartDisjFromMono Ddi_BddMakePartConjFromArray Ddi_BddMakePartDisjFromArray

Ddi_Bdd_t * 
Ddi_BddMakePartConjVoid(
  Ddi_Mgr_t * mgr 
)
Build a conjunctively partitioned BDD with 0 partitions

See Also Ddi_BddMakePartDisjVoid Ddi_BddMakePartConjFromMono Ddi_BddMakePartConjFromArray

Ddi_Bdd_t * 
Ddi_BddMakePartDisjFromArray(
  Ddi_Bddarray_t * array 
)
Build a disjunctively partitioned BDD from array of BDDs

See Also Ddi_BddMakePartConjFromMono Ddi_BddMakePartDisjFromMono Ddi_BddMakePartConjFromArray

Ddi_Bdd_t * 
Ddi_BddMakePartDisjFromMono(
  Ddi_Bdd_t * mono 
)
Build a disjunctively partitioned BDD from a monolithic BDD

See Also Ddi_BddMakePartConjFromMono Ddi_BddMakePartConjFromArray Ddi_BddMakePartDisjFromArray

Ddi_Bdd_t * 
Ddi_BddMakePartDisjVoid(
  Ddi_Mgr_t * mgr 
)
Build a disjunctively partitioned BDD with 0 partitions

See Also Ddi_BddMakePartConjVoid Ddi_BddMakePartDisjFromMono Ddi_BddMakePartDisjFromArray

Ddi_Bdd_t * 
Ddi_BddNandAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean NAND (!(f&g)). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddNand(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean NAND (!(f&g)). New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddNorAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean NOR (!(f|g)). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddNor(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean NOR (!(f|g)). New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddNotAcc(
  Ddi_Bdd_t * f 
)
Boolean NOT. Result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddNot(
  Ddi_Bdd_t * f 
)
Boolean NOT. New result is generated

Side Effects none

See Also Ddi_BddAnd

int 
Ddi_BddOperation(
  Ddi_Mgr_t * defaultDdMgr, Default DD Manager
  Ddi_Bdd_t ** bddP, BDD Pointer to manipulate
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlag Type of the Pointer Returned
)


Ddi_Bdd_t * 
Ddi_BddOrAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean OR (f|g). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddOr(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean OR (f|g). New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddPartExtract(
  Ddi_Bdd_t * f, 
  int  i 
)
Return the i-th partition (conj/disj), and remove it from f.


Ddi_Bdd_t * 
Ddi_BddPartInsertLast(
  Ddi_Bdd_t * f, partitioned BDD
  Ddi_Bdd_t * newp new partition
)
Add new partition at last position. Result accumulated

See Also Ddi_BddPartInsert

Ddi_Bdd_t * 
Ddi_BddPartInsert(
  Ddi_Bdd_t * f, partitioned BDD
  int  i, position of new partition
  Ddi_Bdd_t * newp new partition
)
Add new partition at position i. Result accumulated. Higher partitions are shifted.

See Also Ddi_BddPartWrite

int 
Ddi_BddPartNum(
  Ddi_Bdd_t * f 
)
Read the number of partitions (conj/disj). In case of monolithic BDD, 1 is returned, in case of partitioned BDDs, the number of partitions.


Ddi_Bdd_t * 
Ddi_BddPartRead(
  Ddi_Bdd_t * f, 
  int  i 
)
Read the i-th partition (conj/disj) of f.


Ddi_Bdd_t * 
Ddi_BddPartWrite(
  Ddi_Bdd_t * f, partitioned BDD
  int  i, position of new partition
  Ddi_Bdd_t * newp new partition
)
Write new partition at position i. Result accumulated. Same as insert if position is PartNum+1. Otherwise i-th partition is freed and overwritten, so Write is acrually a partition "replace" or "rewrite" operation.

See Also Ddi_BddPartInsert

Ddi_Bdd_t * 
Ddi_BddPickOneCubeAcc(
  Ddi_Bdd_t * f 
)
Pick one random on-set cube. Result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddPickOneCube(
  Ddi_Bdd_t * f 
)
Pick one random on-set cube. Result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddPickOneMintermAcc(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars set of variables defining the minterm space
)
Pick one random on-set minterm. Result is accumulated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddPickOneMinterm(
  Ddi_Bdd_t * f, 
  Ddi_Varset_t * vars set of variables defining the minterm space
)
Pick one random on-set minterm. Result is generated

Side Effects none

See Also Ddi_BddAnd

int 
Ddi_BddPrintCubeToString(
  Ddi_Bdd_t * f, BDD
  Ddi_Varset_t * vars, Variables
  char * string output string
)
Output a cube to string. Return true if succesful. The set of variables to be considered is given as input (if NULL, true support is used). Variables are sorted by absolute index (which is constant across sifting), NOT by variable ordering. The procedure allows omitting variables in the true support, which are existentially quantified out by cube.

Side Effects None


int 
Ddi_BddPrintCubes(
  Ddi_Bdd_t * f, BDD
  Ddi_Varset_t * vars, Variables
  int  cubeNumberMax, Maximum number of cubes printed
  int  formatPla, Prints a 1 at the end of the cube (PLA format)
  char * filename, File Name
  FILE * fp Pointer to the store file
)
This function outputs the cubes of a BDD on file. Only monolithic BDDs are supported. The set of variables to be considered is given as input (if NULL the true support is used), to allow generating don't cares, data are sorted by absolute index, NOT by variable ordering. The procedure allows omitting variables in the true support, which are existentially quantified out before generating cubes, to avoid repetitions. A limit on the number of cubes generated can be specified. Use a negative value for no bound.

Side Effects None


void 
Ddi_BddPrintStats(
  Ddi_Bdd_t * f, 
  FILE * fp 
)
Prints Statistics of a BDD

Side Effects none


int 
Ddi_BddPrintSupportAndCubes(
  Ddi_Bdd_t * f, BDD
  int  numberPerRow, Number of Names Printed on a Single Row
  int  cubeNumberMax, Maximum number of cubes printed
  int  formatPla, Prints a 1 at the end of the cube (PLA format)
  char * filename, File Name
  FILE * fp Pointer to the store file
)
Use a negative value to indicate no bound in the number of printed cubes.

Side Effects none


void 
Ddi_BddPrint(
  Ddi_Bdd_t * f, 
  FILE * fp 
)
Prints a BDD

Side Effects none


Ddi_Bdd_t * 
Ddi_BddRelMakeFromArray(
  Ddi_Bddarray_t * Fa, array of functions
  Ddi_Vararray_t * Va array of range variables
)
Generate a Ddi_Bdd_t relation from array of functions. Relation is generated considering function variables domain, and range variables as co-domain. I-th range variable corresponds to i-th function.


Ddi_Bdd_t * 
Ddi_BddRestrictAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Restrict cofactor. New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddRestrict(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Restrict cofactor. New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddSetClustered(
  Ddi_Bdd_t * f, input function
  int  threshold size threshold
)
Create a clustered BDD from a partitioned one. Conjunctions/disjunctions are executed up to the size threshold (sizes greater than threshold are aborted).


Ddi_Bdd_t * 
Ddi_BddSetMeta(
  Ddi_Bdd_t * f 
)
Transform a BDD to Meta BDD. Result accumulated


Ddi_Bdd_t * 
Ddi_BddSetMono(
  Ddi_Bdd_t * f input function
)
Convert a BDD to monolitic (if required). Result accumulated


Ddi_Bdd_t * 
Ddi_BddSetPartConj(
  Ddi_Bdd_t * f 
)
Convert a BDD to conjunctively partitioned (if required). Result accumulated


Ddi_Bdd_t * 
Ddi_BddSetPartDisj(
  Ddi_Bdd_t * f 
)
Convert a BDD to disjunctively partitioned (if required). Result accumulated


int 
Ddi_BddSize(
  Ddi_Bdd_t * f 
)
Return BDD size (total amount of BDD nodes) of f. In case of partitioned or meta BDDs the sharing size is returned (shared subgraphs are counted once).


int 
Ddi_BddStore(
  Ddi_Bdd_t * f, BDD
  char * ddname, dd name (or NULL)
  char  mode, storing mode
  char * filename, file name
  FILE * fp pointer to the store file
)
This function stores only a BDD (not a BDD array). The BDD is stored in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_BINARY or DDDMP_MODE_DEFAULT.
The function returns 1 if succefully stored, 0 otherwise.

Side Effects None

See Also Ddi_BddLoad Dddmp_cuddBddStore

Ddi_Bdd_t * 
Ddi_BddSubstVarsAcc(
  Ddi_Bdd_t * f, 
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Variable substitution x <- y in f. New result is accumulated. Variable correspondence is established by position in x, y. Substitution is done by compose. This differs from variable swapping since some y vars may be present in x as well as in the support of f.

Side Effects none

See Also Ddi_BddSwapVars Ddi_BddSubstVars

Ddi_Bdd_t * 
Ddi_BddSubstVars(
  Ddi_Bdd_t * f, 
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Variable substitution x <- y in f. New result is generated. Variable correspondence is established by position in x, y. Substitution is done by compose. This differs from variable swapping since some y vars may be present in x as well as in the support of f.

Side Effects none

See Also Ddi_BddSwapVars Ddi_BddSubstVarsAcc

Ddi_Bdd_t * 
Ddi_BddSuppAttach(
  Ddi_Bdd_t * f 
)
The support of f is the set of variables f depends on. This function generates the support of f and hooks it to proper field of f, so that no BDD traversal is done in further calls of Ddi_BddSupp.

Side Effects support is attached to f

See Also Ddi_BddSupp Ddi_BddSuppDetach

Ddi_Bdd_t * 
Ddi_BddSuppDetach(
  Ddi_Bdd_t * f 
)
Detach (and free) support attached to f. Return pointer to f

Side Effects none

See Also Ddi_BddSupp Ddi_BddSuppAttach

Ddi_Varset_t * 
Ddi_BddSuppRead(
  Ddi_Bdd_t * f 
)
Read the support attached to a Bdd. The support is not duplicated, as would Ddi_BddSupp with attached support. Return NULL if support is not attached.

Side Effects none

See Also Ddi_BddSupp Ddi_BddSuppAttach

Ddi_Varset_t * 
Ddi_BddSupp(
  Ddi_Bdd_t * f 
)
The support of f is the set of variables f depends on. This function has no "accumulated" version, but a related function (Ddi_BddSuppAttach) which attaches the support to a function, so that no BDD traversal is done in further calls of Ddi_BddSupp.

Side Effects none

See Also Ddi_BddSuppAttach

Ddi_Bdd_t * 
Ddi_BddSwapVarsAcc(
  Ddi_Bdd_t * f, 
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Swap x and y variables in f. Result is accumulated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddSwapVars(
  Ddi_Bdd_t * f, 
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Swap x and y variables in f. New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_BddNode * 
Ddi_BddToCU(
  Ddi_Bdd_t * f 
)
Convert a DDI function to the corresponding Cudd Node. This is done by reading the proper field (pointing to a cudd node) in the DDI node. No ref is done on the returned node.

See Also Ddi_BddMakeFromCU

Ddi_Var_t * 
Ddi_BddTopVar(
  Ddi_Bdd_t * f 
)
Return the top BDD variable of f


Ddi_Bdd_t * 
Ddi_BddXnorAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean XNOR (!(f^g)). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddXnor(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean XNOR (!(f^g)). New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bdd_t * 
Ddi_BddXorAcc(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean XOR (f^g). New result is accumulated

Side Effects none

See Also Ddi_BddAndAcc

Ddi_Bdd_t * 
Ddi_BddXor(
  Ddi_Bdd_t * f, 
  Ddi_Bdd_t * g 
)
Boolean XOR (f^g). New result is generated

Side Effects none

See Also Ddi_BddAnd

Ddi_Bddarray_t * 
Ddi_BddarrayAlloc(
  Ddi_Mgr_t * mgr, DDI manager
  int  length array length
)
Allocate a new array of BDDs. The array slots are initialized with NULL pointers, so further Write operations are required.

Side Effects none

See Also Ddi_BddarrayWrite

void 
Ddi_BddarrayAppend(
  Ddi_Bddarray_t * array1, first array
  Ddi_Bddarray_t * array2 array to be appended
)
Append the elements of array2 at the end of array1. As all array write/insert operations, new entries are duplicated.

Side Effects none

See Also Ddi_BddarrayWrite Ddi_BddarrayInsert

void 
Ddi_BddarrayClear(
  Ddi_Bddarray_t * array, array of BDDs
  int  pos position of element to be cleared
)
clear array at given position (BDD freed and replaced by NULL)

Side Effects none

See Also Ddi_BddarrayRead

Ddi_Bddarray_t * 
Ddi_BddarrayCopy(
  Ddi_BddMgr * ddm, dd Manager
  Ddi_Bddarray_t * old array of BDDs
)
Copy an array of BDDs to a destination manager. Variable correspondence is established "by index", i.e. variables with same index in different manager correspond

Side Effects none

See Also Ddi_BddarrayDup

Ddi_Bddarray_t * 
Ddi_BddarrayDup(
  Ddi_Bddarray_t * old array to be duplicated
)
Duplicate an array of BDDs

Side Effects none

See Also Ddi_BddarrayAlloc

Ddi_Bdd_t * 
Ddi_BddarrayExtract(
  Ddi_Bddarray_t * array, BDD array
  int  i position
)
Extract the BDD at i-th position in array. The extracted BDD is removed from the array and the following entries are shifted up.

See Also Ddi_BddarrayInsert

void 
Ddi_BddarrayInsertLast(
  Ddi_Bddarray_t * array, array of BDDs
  Ddi_Bdd_t * f BDD to be written
)
Insert a BDD in array at last (new) position

Side Effects none

See Also Ddi_BddarrayExtract

void 
Ddi_BddarrayInsert(
  Ddi_Bddarray_t * array, array of BDDs
  int  pos, position of new element
  Ddi_Bdd_t * f BDD to be written
)
Insert a BDD in array at given position. Following entries are shifted down. The written BDD (f) is duplicated

Side Effects none

See Also Ddi_BddarrayExtract

Ddi_Bddarray_t * 
Ddi_BddarrayLoad(
  Ddi_BddMgr * dd, dd manager
  char ** vnames, variable names
  int * vauxids, variable auxids
  int  mode, storing mode selector
  char * file, name file
  FILE * fp file pointer
)
This function loads a BDDs'array.
The BDD on file must be in the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_COMPRESSED or DDDMP_MODE_AUTOMATIC.
The function returns the pointer of array if succefully loaded, NULL otherwise.

Side Effects none

See Also Dddmp_cuddBddLoad Ddi_BddLoad

Ddi_Bddarray_t * 
Ddi_BddarrayMakeFromBddPart(
  Ddi_Bdd_t * part 
)
Generate a BDD array from partitions of partitioned BDD

Side Effects none

See Also Ddi_BddarrayToCU

Ddi_Bddarray_t * 
Ddi_BddarrayMakeFromCU(
  Ddi_Mgr_t * mgr, 
  DdNode ** array, 
  int  n 
)
Generate a BDD array from CUDD BDDs. The function allocates a Ddi_Bddarray_t structure, then write monolithic components to proper array slots.

Side Effects none

See Also Ddi_BddarrayToCU

Ddi_Bddarray_t * 
Ddi_BddarrayMakeMeta(
  Ddi_Bddarray_t * f 
)
Transform a BDD array to Meta BDD. Result generated


int 
Ddi_BddarrayNum(
  Ddi_Bddarray_t * array 
)
Return the number of BDDs (entries) in array

Side Effects none


int 
Ddi_BddarrayOperation(
  Ddi_Mgr_t * defaultDdMgr, Default BDD Manager
  Ddi_Bddarray_t ** bddArrayP, BDD Array Pointer to manipulate
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlag Type of the Pointer Returned
)


int 
Ddi_BddarrayPrintSupportAndCubes(
  Ddi_Bddarray_t * fArray, BDD Array
  int  numberPerRow, Number of Names Printed on a Single Row
  int  cubeNumberMax, Maximum number of cubes printed
  int  formatPla, Prints a 1 at the end of the cube (PLA format)
  int  reverse, Reverse Order if 1
  char * filename, File Name
  FILE * fp Pointer to the store file
)
Use a negative value to indicate no bound in the number of printed cubes.

Side Effects none


Ddi_Bdd_t * 
Ddi_BddarrayRead(
  Ddi_Bddarray_t * array, BDD array
  int  i position
)
Read the BDD at i-th position in array. As all read operations no data duplication is done, so the returned BDD should be duplicated if further manipulations are required on it.

Side Effects none

See Also Ddi_BddarrayWrite

void 
Ddi_BddarrayRemove(
  Ddi_Bddarray_t * array, array of BDDs
  int  pos position of element to be cleared
)
Remove array entry at given position. This operation is equivalent to extract + free of extracted BDD.

Side Effects none

See Also Ddi_BddarrayExtract Ddi_BddarrayClear

int 
Ddi_BddarraySize(
  Ddi_Bddarray_t * array 
)
Count the numbers of BDD nodes in a BDD array. Shared nodes are counted once.

Side Effects none

See Also Ddi_BddSize

int 
Ddi_BddarrayStore(
  Ddi_Bddarray_t * array, array to be stored
  char * ddname, dd name (or NULL)
  char ** vnames, array of variable names (or NULL)
  char ** rnames, array of root names (or NULL)
  int * vauxids, array of aux var ids (or NULL)
  int  mode, storing mode selector
  char * fname, file name
  FILE * fp pointer to the store file
)
This function stores a BDD array using the DDDMP format. The parameter "mode" can be DDDMP_MODE_TEXT, DDDMP_MODE_COMPRESSED or DDDMP_MODE_AUTOMATIC.
The function returns 1 if succefully stored, 0 otherwise.

Side Effects none

See Also Dddmp_cuddBddStore Ddi_BddStore

Ddi_Varset_t ** 
Ddi_BddarraySuppArray(
  Ddi_Bddarray_t * fArray array of function
)
OLD(pdt-1). Return a vector of supports of BDD array elements. Should be replaced by Varsetarray usage

Side Effects none


Ddi_Varset_t * 
Ddi_BddarraySupp(
  Ddi_Bddarray_t * array BDDs'array
)
Returns a var-set representing the global support of the array


DdNode ** 
Ddi_BddarrayToCU(
  Ddi_Bddarray_t * array 
)
Generate a dynamically allocated array of pointers to CUDD BDDs, one for each entry in the DDI array. Array entries are required to be monolithic. The number of array entries is equal to Ddi_BddarrayNum(array), but the array is overdimensioned (by one NULL slot) to make it NULL-terminated. The array of pointers is allocated (so explicit free is required), whereas the CUDD nodes are NOT referenced.

Side Effects none

See Also Ddi_BddarrayMakeFromCU

void 
Ddi_BddarrayWrite(
  Ddi_Bddarray_t * array, array of BDDs
  int  pos, position of new element
  Ddi_Bdd_t * f BDD to be written
)
Write a BDD in array at given position. Previous non NULL entry is freed. The written BDD (f) is duplicated

Side Effects none

See Also Ddi_BddarrayRead

double 
Ddi_CountMinterm(
  Ddi_Bdd_t * f, 
  int  nvar 
)
Check for inclusion (f in g). Return non 0 if true. This test requires the second operand (g) to be monolithic, whereas monolithic and disjunctively partitioned forms are allowed for first operand (f).


char * 
Ddi_DenseMethodEnum2String(
  Ddi_DenseMethod_e  enumType 
)
Given an Enumerated type Returns a string

Side Effects none


Ddi_DenseMethod_e 
Ddi_DenseMethodString2Enum(
  char * string String to Analyze
)
It receives a string; to facilitate the user that string can be an easy-to-remember predefined code or an integer number (interpreted as a string). It returns the dense method type.

Side Effects none


Ddi_Expr_t * 
Ddi_ExprBoolMake(
  Ddi_Mgr_t * mgr, 
  Ddi_Expr_t * op1, 
  Ddi_Expr_t * op2 
)
Build a Boolean Ddi_Expr_t from given sub-expressions.

See Also Ddi_ExprMakeFromBdd Ddi_ExprMakeFromString

Ddi_Expr_t * 
Ddi_ExprCtlMake(
  Ddi_Mgr_t * mgr, 
  int  opcode, 
  Ddi_Expr_t * op1, 
  Ddi_Expr_t * op2, 
  Ddi_Expr_t * op3 
)
Build a Ctl Ddi_Expr_t from given sub-expressions.

See Also Ddi_ExprMakeFromBdd Ddi_ExprMakeFromString

Ddi_Expr_t * 
Ddi_ExprDup(
  Ddi_Expr_t * f expression to be duplicated
)
Duplicate a Ddi_Expr_t. Duplication is propagated recursively.


int 
Ddi_ExprIsTerminal(
  Ddi_Expr_t * e 
)
Return true (non 0) if expression is terminal (Bdd or string).

Side Effects none


Ddi_Expr_t * 
Ddi_ExprLoad(
  Ddi_BddMgr * dd, dd manager
  char * filename, file name
  FILE * fp file pointer
)
Load EXPRESSION from file

Side Effects None


Ddi_Expr_t * 
Ddi_ExprMakeFromBdd(
  Ddi_Bdd_t * f 
)
Build the Ddi_Expr_t structure (by means of DdiGenericAlloc) from BDD handle.

See Also DdiGenericAlloc Ddi_ExprToBdd

Ddi_Expr_t * 
Ddi_ExprMakeFromString(
  Ddi_Mgr_t * mgr, 
  char * s 
)
Build a Ddi_Expr_t from a given string.


void 
Ddi_ExprPrint(
  Ddi_Expr_t * f, 
  FILE * fp 
)
Print a Ddi_Expr_t


int 
Ddi_ExprReadOpcode(
  Ddi_Expr_t * e 
)
Read expression opcode


Ddi_Expr_t * 
Ddi_ExprReadSub(
  Ddi_Expr_t * e, 
  int  i 
)
Rear sub-expression at given position


int 
Ddi_ExprSubNum(
  Ddi_Expr_t * e 
)
Read the number of sub-expressions. In case of terminal expressioins (Bdd or String), 0 is returned.


Ddi_Bdd_t * 
Ddi_ExprToBdd(
  Ddi_Expr_t * e 
)
Retrieve the Bdd associated to the expression. Result is NOT duplicated (in other words, the BDD field is read)

See Also Ddi_ExprMakeFromBdd

char * 
Ddi_ExprToString(
  Ddi_Expr_t * e 
)
Retrieve the string associated to the expression. Result is NOT duplicated (in other words, the BDD field is read)

See Also Ddi_ExprMakeFromString

Ddi_Expr_t * 
Ddi_ExprWriteSub(
  Ddi_Expr_t * e, 
  int  pos, 
  Ddi_Expr_t * op 
)
Write operand sub-expression to expression at given position. Sub-expression is added if not present, rewritten (by freeing the old one) if present at specified position

See Also Ddi_ExprMakeFromBdd Ddi_ExprMakeFromString

Ddi_Generic_t * 
Ddi_GenericDup(
  Ddi_Generic_t * f 
)
Generic dup

Side Effects none


void 
Ddi_GenericFree(
  Ddi_Generic_t * f block to be freed
)
Free the content of a generic DDI node


void 
Ddi_GenericLock(
  Ddi_Generic_t * f 
)
Lock DDI node so that cannot be freed unless unlocked. Used as a protection mechanism for internal objects (array entries, partitions, ...

See Also Ddi_GenericUnlock

Ddi_Generic_t * 
Ddi_GenericOpAcc(
  Ddi_OpCode_e  opcode, operation code
  Ddi_Generic_t * f, first operand
  Ddi_Generic_t * g, first operand
  Ddi_Generic_t * h first operand
)
Compute generic operation. Result accumulated

Side Effects none


Ddi_Generic_t * 
Ddi_GenericOp(
  Ddi_OpCode_e  opcode, operation code
  Ddi_Generic_t * f, first operand
  Ddi_Generic_t * g, first operand
  Ddi_Generic_t * h first operand
)
Compute generic operation. Result generated

Side Effects none


Ddi_Code_e 
Ddi_GenericReadCode(
  Ddi_Generic_t * f 
)
called through Ddi_ReadCode.

Side Effects Ddi_ReadCode


Ddi_Mgr_t * 
Ddi_GenericReadMgr(
  Ddi_Generic_t * f 
)
called through Ddi_ReadMgr.

Side Effects Ddi_ReadMgr


char * 
Ddi_GenericReadName(
  Ddi_Generic_t * f 
)
called through Ddi_ReadName.

Side Effects Ddi_ReadName


void 
Ddi_GenericSetName(
  Ddi_Generic_t * f, block to be freed
  char * name 
)
Set name field of DDI node


void 
Ddi_GenericUnlock(
  Ddi_Generic_t * f 
)
Unlock DDI node so that can be freed again.

See Also Ddi_GenericLock

Ddi_Var_t * 
Ddi_IthVar(
  Ddi_BddMgr * ddm, 
  int  index 
)
Return the variable of a given index

Side Effects none

See Also Ddi_VarIndex Ddi_VarAtLevel

int 
Ddi_MetaActive(
  Ddi_Mgr_t * ddm 
)
Return true if Meta handling active (Ddi_MetaInit done)


void 
Ddi_MetaInit(
  Ddi_Mgr_t * ddm, 
  Ddi_Meta_Method_e  method, 
  Ddi_Bdd_t * ref, 
  Ddi_Varset_t * firstGroup, 
  int  sizeMin 
)
Initialize Meta BDD handling in DDI manager


void 
Ddi_MetaQuit(
  Ddi_Mgr_t * ddm 
)
Close Meta BDD handling in DDI manager. This enables further opening of Meta BDD management with different method/parameters


void 
Ddi_MgrAbortOnSiftDisable(
  Ddi_Mgr_t * dd dd manager
)
Disable Abort on sift.

Side Effects none


void 
Ddi_MgrAbortOnSiftEnable(
  Ddi_Mgr_t * dd dd manager
)
Enable Abort on sift.

Side Effects none


void 
Ddi_MgrAlign(
  Ddi_Mgr_t * dd, dd manager to be aligned
  Ddi_Mgr_t * ddRef reference dd manager
)
Aligns the order of two managers.

Side Effects none


void 
Ddi_MgrAutodynResume(
  Ddi_Mgr_t * dd dd manager
)
Resume autodyn if suspended.

Side Effects none

See Also Ddi_MgrInit

void 
Ddi_MgrAutodynSuspend(
  Ddi_Mgr_t * dd dd manager
)
Suspend autodyn if active.

Side Effects none

See Also Ddi_MgrInit

int 
Ddi_MgrCheckExtRef(
  Ddi_Mgr_t * ddm, 
  int  n 
)
Check number of externally referenced DDI handles. This is the numer of generic nodes (allocated - freed), diminished by the number of locked nodes + 3 (2 constants + variable array). Return 0 upon failure.

Side Effects none


int 
Ddi_MgrConsistencyCheck(
  Ddi_Mgr_t * ddm 
)
make checks on DDI manager. Return 0 for failure

Side Effects none


void 
Ddi_MgrCreateGroups2(
  Ddi_Mgr_t * dd, manager
  Ddi_Vararray_t * vfix, first array
  Ddi_Vararray_t * vmov first array
)
Create groups of 2 variables: variables of corresponding indexes in vfix and vmov are coupled. If vmov[i

Side Effects none


Ddi_Mgr_t * 
Ddi_MgrDup(
  Ddi_Mgr_t * dd source dd manager
)
Creates a copy of a DdManager.

Side Effects none

See Also Ddi_MgrQuit

Ddi_Mgr_t * 
Ddi_MgrInit(
  char * ddiName, Name of the DDI structure
  DdManager * CUMgr, Input CD manager. Created if NULL
  unsigned int  nvar, Initial Number of Variables
  unsigned int  numSlots, Initial Size of Unique Table
  unsigned int  cacheSize, Initial Size of Computed Table (cache)
  unsigned long  memorySizeMax Max size of Memory
)
Creates a DdManager.

Side Effects none

See Also Ddi_MgrQuit

int 
Ddi_MgrOperation(
  Ddi_Mgr_t ** ddMgrP, DD Manager Pointer
  char * string, String
  Pdtutil_MgrOp_t  operationFlag, Operation Flag
  void ** voidPointer, Generic Pointer
  Pdtutil_MgrRet_t * returnFlagP Type of the Pointer Returned
)

Side Effects To be congruent operationFlag should be a Pdtutil_MgrOp_t type, and returnFlag of Pdtutil_MgrRet_t type.


int 
Ddi_MgrOrdWrite(
  Ddi_Mgr_t * dd, Decision Diagram Manager
  char * filename, File Name
  FILE * fp, Pointer to Store File
  Pdtutil_VariableOrderFormat_e  ordFileFormat File Format
)
This function stores the variable ordering of a dd manager. Variable names and aux ids are used.

Side Effects None


void 
Ddi_MgrPeakProdLocalReset(
  Ddi_Mgr_t * ddiMgr Decision Diagram Interface Manager
)
Reset peak product local

Side Effects none


void 
Ddi_MgrPeakProdUpdate(
  Ddi_Mgr_t * ddiMgr, Decision Diagram Interface Manager
  int  size 
)
Update peak product stats

Side Effects none


void 
Ddi_MgrPrintAllocStats(
  Ddi_Mgr_t * ddm, 
  FILE * fp 
)
Print DDI manager allocation statistics


void 
Ddi_MgrPrintExtRef(
  Ddi_Mgr_t * ddm, 
  int  minNodeId 
)
print ids of external refs

Side Effects none


void 
Ddi_MgrPrintStats(
  Ddi_Mgr_t * dd source dd manager
)
Prints on standard outputs statistics on a DD manager

Side Effects none


void 
Ddi_MgrQuit(
  Ddi_Mgr_t * dd dd manager
)
Close a DdManager.

Side Effects none


int 
Ddi_MgrReadCurrNodeId(
  Ddi_Mgr_t * dd source dd manager
)
Read current node id field. DDI nodes are identified by this id, which is incremented at any new node creation.

Side Effects none

See Also Ddi_MgrSetTracedId

unsigned int 
Ddi_MgrReadDynordThresh(
  Ddi_Mgr_t * dd source dd manager
)
Returns the threshold for the next dynamic reordering.

Side Effects none


int 
Ddi_MgrReadExistClustThresh(
  Ddi_Mgr_t * dd source dd manager
)
Read part clustering threshold. This is the threshold used for quantification operators on partitioned BDDs.

Side Effects none


int 
Ddi_MgrReadExtBddRef(
  Ddi_Mgr_t * dd source dd manager
)
Read the number of externally referenced BDD handles. This is the number of allocated - freed, diminished by the number of locked nodes.

Side Effects none


int 
Ddi_MgrReadExtBddarrayRef(
  Ddi_Mgr_t * dd source dd manager
)
Read the number of externally referenced BDD array handles. This is the number of allocated - freed, diminished by the number of locked nodes.

Side Effects none


int 
Ddi_MgrReadExtRef(
  Ddi_Mgr_t * dd source dd manager
)
Read the number of externally referenced DDI handles. This is the numer of generic nodes (allocated - freed), diminished by the number of locked nodes + 3 (2 constants + variable array).

Side Effects none


int 
Ddi_MgrReadExtVarsetRef(
  Ddi_Mgr_t * dd source dd manager
)
Read the number of externally referenced varset handles. This is the number of allocated - freed, diminished by the number of locked nodes.

Side Effects none


DdManager * 
Ddi_MgrReadMgrCU(
  Ddi_Mgr_t * dd source dd manager
)
Reads the Cudd Manager

Side Effects none


Ddi_Bdd_t * 
Ddi_MgrReadOne(
  Ddi_Mgr_t * dd source dd manager
)
Reads one constant

Side Effects none


int 
Ddi_MgrReadOrdNamesAuxids(
  Ddi_Mgr_t * dd, Manager
  char * filename, File Name
  FILE * fp, Pointer to the Store File
  Pdtutil_VariableOrderFormat_e  ordFileFormat File Format
)
This function reads the variable ordering of a dd manager. Existing variables with names in the ordering are shuffled to match the ordering.

Side Effects None


int 
Ddi_MgrReadPeakProdGlobal(
  Ddi_Mgr_t * ddiMgr Decision Diagram Interface Manager
)
Read peak product global

Side Effects none


int 
Ddi_MgrReadPeakProdLocal(
  Ddi_Mgr_t * ddiMgr Decision Diagram Interface Manager
)
Read peak product local

Side Effects none


int * 
Ddi_MgrReadVarauxids(
  Ddi_Mgr_t * dd source dd manager
)
Reads the variable auxiliary ids

Side Effects none


char** 
Ddi_MgrReadVarnames(
  Ddi_Mgr_t * dd source dd manager
)
Reads the variable names

Side Effects none


Pdtutil_VerbLevel_e 
Ddi_MgrReadVerbosity(
  Ddi_Mgr_t * ddiMgr Decision Diagram Interface Manager
)
Read verbosity

Side Effects none


Ddi_Bdd_t * 
Ddi_MgrReadZero(
  Ddi_Mgr_t * dd source dd manager
)
Reads zero constant

Side Effects none


void 
Ddi_MgrSetDynordThresh(
  Ddi_Mgr_t * dd, source dd manager
  unsigned int  th threshold
)
Returns the threshold for the next dynamic reordering.

Side Effects none


void 
Ddi_MgrSetExistClustThresh(
  Ddi_Mgr_t * dd, source dd manager
  int  th 
)
Set part clustering threshold. This is the threshold used for quantification operators on partitioned BDDs.

Side Effects none


void 
Ddi_MgrSetMgrCU(
  Ddi_Mgr_t * dd, source dd manager
  DdManager * m CUDD manager
)
Sets the CUDD manager

Side Effects none


void 
Ddi_MgrSetOne(
  Ddi_Mgr_t * dd, source dd manager
  Ddi_Bdd_t * one one constant
)
Sets the one constant

Side Effects none


void 
Ddi_MgrSetTracedId(
  Ddi_Mgr_t * dd, source dd manager
  int  id 
)
Set traced node id field. Creation of node >= id are logged using DdiTraceNodeAlloc. This is expecially useful for debugging BDD leaks and memory bugs. To watch generation of node with given ID, put a breakpoint on DdiTraceNodeAlloc after setting manager tracedId to ID (Ddi_MgrSetTracedId(dd,ID)).

Side Effects none

See Also Ddi_MgrReadCurrNodeId

void 
Ddi_MgrSetVarauxids(
  Ddi_Mgr_t * dd, source dd manager
  int * va auxiliary variable ids
)
Sets the auxiliary variable ids

Side Effects none


void 
Ddi_MgrSetVarnames(
  Ddi_Mgr_t * dd, source dd manager
  char ** vn names of variables
)
Sets the names of variables

Side Effects none


void 
Ddi_MgrSetVerbosity(
  Ddi_Mgr_t * ddiMgr, Decision Diagram Interface Manager
  Pdtutil_VerbLevel_e  verbosity Verbosity Level
)
Set verbosity

Side Effects none


void 
Ddi_MgrSetZero(
  Ddi_Mgr_t * dd, source dd manager
  Ddi_Bdd_t * zero zero constant
)
Sets the zero constant

Side Effects none


void 
Ddi_MgrShuffle(
  Ddi_Mgr_t * dd, dd Manager to be Alligned
  int * sortedIds, Array of sorted ids
  int  nids Number of ids
)
Reorders all DDs in a manager according to the input order. The input specification may be partial, i.e. it may include only a subset of variables.

Side Effects none


void 
Ddi_MgrUpdate(
  Ddi_Mgr_t * ddm 
)
update DDI manager after directly working on CUDD manager. New variables have possibly been created.

Side Effects none


void 
Ddi_PrintCuddVersion(
  FILE * fp 
)
Returns the version of CUDD package

Side Effects none


void 
Ddi_PrintDdArray(
  Ddi_Bddarray_t * array 
)
Prints the size of each function in a DdArray

Side Effects None

See Also Ddi_PrintVararray

void 
Ddi_PrintVararray(
  Ddi_Vararray_t * array 
)
Prints the indices of a Vararray

Side Effects None

See Also Ddi_PrintDdArray

char * 
Ddi_ProfileHeuristicEnum2String(
  Cuplus_PruneHeuristic_e  enumType 
)
Given an Enumerated type Returns a string

Side Effects none


Cuplus_PruneHeuristic_e 
Ddi_ProfileHeuristicString2Enum(
  char * string String to Analyze
)
It receives a string; to facilitate the user that string can be an easy-to-remember predefined code or an integer number (interpreted as a string). It returns the dense method type.

Side Effects none


double 
Ddi_ReadCacheHits(
  Ddi_Mgr_t * dd dd manager
)
Returns the number of cache hits.

Side Effects none


double 
Ddi_ReadCacheLookUps(
  Ddi_Mgr_t * dd dd manager
)
Returns the number of cache look-ups.

Side Effects none


unsigned int 
Ddi_ReadCacheSlots(
  Ddi_Mgr_t * dd source dd manager
)
Reads the number of slots in the cache.

Side Effects none


Ddi_Bdd_t * 
Ddi_ReadCube(
  Ddi_Mgr_t * dd, 
  FILE * fp, 
  int  idOrName 
)
The user can make a cube typing the index of variables

Side Effects none


char * 
Ddi_ReadDdiName(
  Ddi_Mgr_t * dd source dd manager
)
Returns the threshold for the next dynamic reordering.

Side Effects none


unsigned int 
Ddi_ReadMaxCacheHard(
  Ddi_Mgr_t * dd dd manager
)
Reads the maxCacheHard parameter of the manager.

Side Effects none


unsigned int 
Ddi_ReadMaxCache(
  Ddi_Mgr_t* dd dd manager
)
Returns the soft limit for the cache size.

Side Effects none


unsigned int 
Ddi_ReadMinHit(
  Ddi_Mgr_t * dd dd manager
)
Reads the hit ratio that causes resizing of the computed table.

Side Effects none


Ddi_Varset_t * 
Ddi_ReadVarset(
  Ddi_Mgr_t * dd, 
  FILE * fp, 
  int  idOrName 
)
The user can make a cube typing the index of variables

Side Effects none


char * 
Ddi_ReorderingMethodEnum2String(
  Cudd_ReorderingType  enumType 
)
Given an Enumerated type Returns a string

Side Effects none


Cudd_ReorderingType 
Ddi_ReorderingMethodString2Enum(
  char * string String to Analyze
)
It receives a string; to facilitate the user that string can be an easy-to-remember predefined code or an integer number (interpreted as a string). It returns the dense method type.

Side Effects none


void 
Ddi_SetDdiName(
  Ddi_Mgr_t * dd, source dd manager
  char * ddiName 
)
Returns the threshold for the next dynamic reordering.

Side Effects none


Ddi_Var_t * 
Ddi_VarAtLevel(
  Ddi_BddMgr * ddm, 
  int  lev 
)
Return variable at a given level in the order

Side Effects none

See Also Ddi_IthVar

void 
Ddi_VarAttachAuxid(
  Ddi_Var_t * var, 
  int  auxid 
)
Set the variable auxid of a variable

Side Effects none


void 
Ddi_VarAttachName(
  Ddi_Var_t * var, 
  char * name 
)
Attach a given name to the variable

Side Effects none

See Also Ddi_VarDetachName

int 
Ddi_VarAuxid(
  Ddi_Var_t * var 
)
Return the variable auxid (-1 if auxids not defined)

Side Effects none

See Also Ddi_VarName

Ddi_Var_t * 
Ddi_VarCopy(
  Ddi_BddMgr * dd2, destination manager
  Ddi_Var_t * v variable to be copied
)
Find the variable corresponding to v in the destination manager. Variable correspondence is for now limited to index matching.

Side Effects none


int 
Ddi_VarCurrPos(
  Ddi_Var_t * var 
)
Return current position of var in variable order

Side Effects none


void 
Ddi_VarDetachName(
  Ddi_Var_t * var 
)
Clear the name of a variable

Side Effects none

See Also Ddi_VarAttachName

Ddi_Var_t * 
Ddi_VarFromAuxid(
  Ddi_BddMgr * ddm, 
  int  auxid 
)
Still a linear search !

Side Effects none

See Also Ddi_VArFromName

Ddi_Var_t * 
Ddi_VarFromCU(
  Ddi_BddMgr * ddm, 
  DdNode * v 
)
Convert a CUDD variable to a DDI variable

Side Effects none


Ddi_Var_t * 
Ddi_VarFromName(
  Ddi_BddMgr * ddm, 
  char * name 
)
Still a linear search !

Side Effects none

See Also Ddi_VarFromAuxid

int 
Ddi_VarInVarset(
  Ddi_Varset_t * varset, var-set
  Ddi_Var_t * var variable
)
Return true (non 0) if var is in varset

Side Effects none


int 
Ddi_VarIndex(
  Ddi_Var_t * var 
)
Return the variable index (CUDD variable index)

Side Effects none

See Also Ddi_IthVar

int 
Ddi_VarIsGrouped(
  Ddi_Var_t * v 
)
Return true (non 0) if variable is in variable group

Side Effects none


void 
Ddi_VarMakeGroupFixed(
  Ddi_BddMgr * dd, 
  Ddi_Var_t * v, 
  int  grpSize 
)
Same as Ddi_VarMakeGroup but no dynamic reordering allowed within group

Side Effects none

See Also Ddi_VarMakeGroupFixed

void 
Ddi_VarMakeGroup(
  Ddi_BddMgr * dd, 
  Ddi_Var_t * v, 
  int  grpSize 
)
A group of variables is created for group sifting. The group starts at v and contains grpSize variables (following v in the ordering. Sifting is allowed within the group

Side Effects none

See Also Ddi_VarMakeGroupFixed

char * 
Ddi_VarName(
  Ddi_Var_t * var 
)
Return the name of a variable

Side Effects none


Ddi_Var_t * 
Ddi_VarNewAfterVar(
  Ddi_Var_t * var 
)
Create a new variable after (in the variable order) the given variable.

Side Effects none

See Also Ddi_NewVarAtLevel

Ddi_Var_t * 
Ddi_VarNewAtLevel(
  Ddi_BddMgr * ddm, 
  int  lev 
)
Returns a new variable at a given level in the order

Side Effects none

See Also Ddi_VarNew

Ddi_Var_t * 
Ddi_VarNewBeforeVar(
  Ddi_Var_t * var 
)
Create a new variable before (in the variable order) the given variable.

Side Effects none

See Also Ddi_NewVarAtLevel

Ddi_Var_t * 
Ddi_VarNew(
  Ddi_BddMgr * ddm 
)
Create a new variable (generated within a CUDD manager)

Side Effects none

See Also Ddi_VarNewAtLevel Ddi_VarFromCU

Ddi_Varset_t * 
Ddi_VarReadGroup(
  Ddi_Var_t * v 
)
Return variable group including v. NULL if v is not in a group

Side Effects none


Ddi_Bdd_t * 
Ddi_VarSubst(
  Ddi_Bdd_t * f, BDD
  Ddi_Vararray_t * x, first array of variables
  Ddi_Vararray_t * y second array of variables
)
The function returns the pointer to a new function with the variables swapped (x replace y), or NULL otherwise.

Side Effects none


DdNode * 
Ddi_VarToCU(
  Ddi_Var_t * v 
)
Return the CUDD bdd node of a variable

Side Effects none


Ddi_Vararray_t * 
Ddi_VararrayAlloc(
  Ddi_Mgr_t * mgr, DDI manager
  int  size array length
)
Allocate a new array of variables of given length

Side Effects none


void 
Ddi_VararrayAppend(
  Ddi_Vararray_t * array1, first array
  Ddi_Vararray_t * array2 array to be appended
)
Append the elements of array2 at the end of array1

Side Effects none

See Also Ddi_VararrayJoin

void 
Ddi_VararrayClear(
  Ddi_Vararray_t * array, array of variables
  int  pos position of element to be cleared
)
clear array at given position (variable is replaced by NULL)

Side Effects none

See Also Ddi_VararrayRead

Ddi_Vararray_t * 
Ddi_VararrayCopy(
  Ddi_BddMgr * ddm, dd Manager
  Ddi_Vararray_t * old array of variables
)
Variable correspondence is established "by index", i.e. variables with same index in different manager correspond

Side Effects none

See Also Ddi_VararrayDup

Ddi_Vararray_t * 
Ddi_VararrayDup(
  Ddi_Vararray_t * old array to be duplicated
)
Only the "array" part is duplicated. Variables are never duplicated nor freed, except when closing the owner manager

Side Effects none

See Also Ddi_VararrayAlloc

Ddi_Var_t * 
Ddi_VararrayExtract(
  Ddi_Vararray_t * array, variable array
  int  i position
)
Extract the variable at i-th position in array. The extracted variable is removed from the array and the following entries are shifted up.

See Also Ddi_VararrayInsert

void 
Ddi_VararrayInsertLast(
  Ddi_Vararray_t * array, array of variables
  Ddi_Var_t * v variable to be written
)
Insert a variable in array at last (new) position

Side Effects none

See Also Ddi_VararrayExtract

void 
Ddi_VararrayInsert(
  Ddi_Vararray_t * array, array of variables
  int  pos, position of new element
  Ddi_Var_t * v variable to be written
)
Insert a variable in array at given position. Following entries are shifted down.

Side Effects none

See Also Ddi_VararrayExtract

Ddi_Vararray_t * 
Ddi_VararrayMakeFromCU(
  Ddi_Mgr_t * mgr, 
  DdNode ** array, 
  int  n 
)
No variable dup is done (as all DDI operations working with variables)

Side Effects none

See Also Ddi_VararrayToCU

Ddi_Vararray_t * 
Ddi_VararrayMakeFromInt(
  Ddi_Mgr_t * mgr, 
  int * array, 
  int  n 
)
Integer indexes are used as CUDD indexes. No variable dup is done (as all DDI operations working with variables)

Side Effects none

See Also Ddi_VararrayToCU

int 
Ddi_VararrayNum(
  Ddi_Vararray_t * array 
)
Return the number of variables (entries) in array

Side Effects none


Ddi_Var_t * 
Ddi_VararrayRead(
  Ddi_Vararray_t * array, variable array
  int  i position
)
Return the variable at i-th position in array

Side Effects none

See Also Ddi_VararrayInsert

void 
Ddi_VararrayRemove(
  Ddi_Vararray_t * array, array of variables
  int  pos position of element to be cleared
)
Remove array entry at given position. This operation is equivalent to extract (but return type is void).

Side Effects none

See Also Ddi_VararrayExtract Ddi_VararrayClear

DdNode ** 
Ddi_VararrayToCU(
  Ddi_Vararray_t * array 
)
Generate a dynamic allocated array of pointers to CUDD BDDs representing variables in input array.

Side Effects none

See Also Ddi_VararrayMakeFromCU

int * array of integer
Ddi_VararrayToInt(
  Ddi_Vararray_t * array array of variables
)
Generate a dynamically allocated array of integer variable indexes. Integer indexes are taken from CUDD indexes.

Side Effects none

See Also Ddi_VararrayToCU

void 
Ddi_VararrayWrite(
  Ddi_Vararray_t * array, array of variables
  int  pos, position of new element
  Ddi_Var_t * var variable to be inserted
)
Write a variable in array at given position

Side Effects none

See Also Ddi_VararrayRead

Ddi_Varset_t * 
Ddi_VarsetAddAcc(
  Ddi_Varset_t * vs, var-set
  Ddi_Var_t * v the new variable added to var-set
)
Add variable to var-set. Result is accumulated

Side Effects none

See Also Ddi_VarsetAdd

Ddi_Varset_t * 
Ddi_VarsetAdd(
  Ddi_Varset_t * vs, var-set
  Ddi_Var_t * v the new variable added to var-set
)
Add variable to var-set. Result is generated

Side Effects none

See Also Ddi_VarsetAddAcc Ddi_VarsetRemove Ddi_VarsetRemoveAcc

Ddi_Var_t * 
Ddi_VarsetBottom(
  Ddi_Varset_t * varset var-set
)
Return the bottom variable in the ordering

Side Effects none

See Also Ddi_VarsetTop

Ddi_Varset_t * 
Ddi_VarsetCopy(
  Ddi_BddMgr * dd2, destination manager
  Ddi_Varset_t * src var-set to be copied
)
Copy a var-set to another manager

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetDiffAcc(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return difference of two var-sets. Result accumulated

Side Effects none

See Also Ddi_VarsetUnion

Ddi_Varset_t * 
Ddi_VarsetDiff(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return difference of two var-sets. Result generated

Side Effects none

See Also Ddi_VarsetUnionAcc Ddi_VarsetIntersect Ddi_VarsetDiff

Ddi_Varset_t * 
Ddi_VarsetDup(
  Ddi_Varset_t * src var-set to be copied
)
Duplicate a var-set

Side Effects none


int 
Ddi_VarsetEqual(
  Ddi_Varset_t * varset1, first var-set
  Ddi_Varset_t * varset2 second var-set
)
Return true (non 0) if the two var-sets are equal

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetEvalFree(
  Ddi_Varset_t * f, expression
  Ddi_Varset_t * g varset to be freed
)
Evaluates an expression and frees first argument

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetIntersectAcc(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return intersection of two var-sets. Result accumulated

Side Effects none

See Also Ddi_VarsetUnion

Ddi_Varset_t * 
Ddi_VarsetIntersect(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return intersection of two var-sets. Result generated

Side Effects none

See Also Ddi_VarsetUnion Ddi_VarsetIntersectAcc Ddi_VarsetDiff

int 
Ddi_VarsetIsVoid(
  Ddi_Varset_t * varset 
)
Return true (non 0) if var-set is empty

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetMakeFromArray(
  Ddi_Vararray_t * va 
)
Build a Ddi_Varset_t from a given variable array.


Ddi_Varset_t * 
Ddi_VarsetMakeFromCU(
  Ddi_Mgr_t * mgr, 
  DdNode * bdd 
)
Builds the Ddi_Varset_t structure from manager and node. The reference count of the node is increased.

See Also DdiGenericAlloc

Ddi_Varset_t * 
Ddi_VarsetMakeFromVar(
  Ddi_Var_t * v 
)
Builds a Ddi_Varset_t structure from variable.

See Also Ddi_VarsetMakeFromCU Ddi_VarsetMakeFromArray

Ddi_Varset_t * 
Ddi_VarsetNextAcc(
  Ddi_Varset_t * vs 
)
Remove top variable from var-set. Result accumulated

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetNext(
  Ddi_Varset_t * vs 
)
Remove top variable from var-set. Result generated

Side Effects none


int 
Ddi_VarsetNum(
  Ddi_Varset_t * vars varset
)
Return the number of variables in varset

Side Effects none


void 
Ddi_VarsetPrint(
  Ddi_Varset_t * vars, Varset to Print
  int  numberPerRow, Number of Names Printed on a Single Row
  char * filename, File Name
  FILE * fp output file pointer
)
If numberPerRow is less or equal to 0 all the names are printed-out on a single row.

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetRemoveAcc(
  Ddi_Varset_t * vs, 
  Ddi_Var_t * v 
)
Remove variable from var-set. Result is accumulated

Side Effects none

See Also Ddi_VarsetAdd Ddi_VarsetRemove

Ddi_Varset_t * 
Ddi_VarsetRemove(
  Ddi_Varset_t * vs, 
  Ddi_Var_t * v 
)
Remove variable from var-set. Result is generated

Side Effects none

See Also Ddi_VarsetAdd Ddi_VarsetRemoveAcc

Ddi_Varset_t * 
Ddi_VarsetSubstVarsAcc(
  Ddi_Varset_t * vs, input varset
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Return a new varset with variable substitution x <- y.

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetSubstVars(
  Ddi_Varset_t * vs, input varset
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Return a new varset with variable substitution x <- y.

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetSwapVarsAcc(
  Ddi_Varset_t * vs, input varset
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Swap two sets of variables in varset. Result accumulated

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetSwapVars(
  Ddi_Varset_t * vs, input varset
  Ddi_Vararray_t * x, 1-st array of variables
  Ddi_Vararray_t * y 2-nd array of variables
)
Return a new varset with the variables swapped (x replaces y and viceversa).

Side Effects none


Ddi_BddNode * 
Ddi_VarsetToCU(
  Ddi_Varset_t * vs 
)
Convert a varset to a Cudd cube

Side Effects Convert a varset to a Cudd cube. The returned node is NOT referenced

See Also Ddi_VarsetMakeFromCU

Ddi_Var_t * 
Ddi_VarsetTop(
  Ddi_Varset_t * varset var-set
)
Return the top variable (in the ordering) in varset

Side Effects none

See Also Ddi_VarsetBottom

Ddi_Varset_t * 
Ddi_VarsetUnionAcc(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return union of two var-sets. Result accumulated

Side Effects none

See Also Ddi_VarsetUnion

Ddi_Varset_t * 
Ddi_VarsetUnion(
  Ddi_Varset_t * v1, first var-set
  Ddi_Varset_t * v2 second var-set
)
Return union of two var-sets. Result generated

Side Effects none

See Also Ddi_VarsetUnionAcc Ddi_VarsetIntersect Ddi_VarsetDiff

Ddi_Varset_t * 
Ddi_VarsetVoid(
  Ddi_BddMgr * ddm 
)
The varset is generated, so it must eventually be freed

Side Effects none


Ddi_Var_t * 
Ddi_VarsetWalkCurr(
  Ddi_Varset_t * vs 
)
Return curr var in varset walk

Side Effects none


int 
Ddi_VarsetWalkEnd(
  Ddi_Varset_t * vs 
)
test for varset walk end. Return trur (non 0) if end reached

Side Effects none


void 
Ddi_VarsetWalkStart(
  Ddi_Varset_t * vs 
)
Start Varset walk process. Set curr pointer to top BDD node

Side Effects none


void 
Ddi_VarsetWalkStep(
  Ddi_Varset_t * vs 
)
Varset walk process step. Set curr pointer to next BDD node

Side Effects none


Ddi_Varsetarray_t * 
Ddi_VarsetarrayAlloc(
  Ddi_Mgr_t * mgr, DDI manager
  int  length array length
)
Allocate a new array of varsets. The array slots are initialized with NULL pointers, so further Write operations are required.

Side Effects none

See Also Ddi_VarsetarrayWrite

void 
Ddi_VarsetarrayClear(
  Ddi_Varsetarray_t * array, array of varsets
  int  pos position of element to be cleared
)
clear array at given position (BDD freed and replaced by NULL)

Side Effects none

See Also Ddi_VarsetarrayRead

Ddi_Varsetarray_t * 
Ddi_VarsetarrayCopy(
  Ddi_BddMgr * ddm, dd Manager
  Ddi_Varsetarray_t * old array of varsets
)
Copy an array of varsets to a destination manager. Variable correspondence is established "by index", i.e. variables with same index in different manager correspond

Side Effects none

See Also Ddi_VarsetarrayDup

Ddi_Varsetarray_t * 
Ddi_VarsetarrayDup(
  Ddi_Varsetarray_t * old array to be duplicated
)
Duplicate an array of Varsets

Side Effects none

See Also Ddi_VarsetarrayAlloc

void 
Ddi_VarsetarrayInsertLast(
  Ddi_Varsetarray_t * array, array of varsets
  Ddi_Varset_t * vs varset to be written
)
Insert varset in array at last position. The written varset is duplicated

Side Effects none

See Also Ddi_VarsetarrayInsert

void 
Ddi_VarsetarrayInsert(
  Ddi_Varsetarray_t * array, array of varsets
  int  pos, position of new element
  Ddi_Varset_t * vs varset to be written
)
Insert varset in array at given position. Previous non NULL entry is moved up. The written varset is duplicated

Side Effects none

See Also Ddi_VarsetarrayRead

int 
Ddi_VarsetarrayNum(
  Ddi_Varsetarray_t * array 
)
Return the number of entries in array

Side Effects none


Ddi_Varset_t * 
Ddi_VarsetarrayRead(
  Ddi_Varsetarray_t * array, varset array
  int  i position
)
Read varset at i-th position in array. As all read operations no data duplication is done, so the returned varset should be duplicated if further manipulations are required on it.

Side Effects none

See Also Ddi_VarsetarrayWrite

void 
Ddi_VarsetarrayWrite(
  Ddi_Varsetarray_t * array, array of varsets
  int  pos, position of new element
  Ddi_Varset_t * vs varset to be written
)
Write varset in array at given position. Previous non NULL entry is freed. The written varset is duplicated

Side Effects none

See Also Ddi_VarsetarrayRead

Last updated on 1010515 11h48