setting the Then/Else pointers

From: Ali Ebnenasir (aebnenas_at_mtu.edu)
Date: Sun Sep 23 2007 - 13:11:11 MDT


Hello everyone,

I am writing an application (using Cudd-2.4.1/Glu-2.1) in which I need to
do some pointer manipulations on BDDs. For example, I need to explicitly
set the Then/Else pointers of a root bdd_t node, denoted ‘rootNode’, to
the top pointers of two other bdd_t nodes, denoted ‘thenNode’ and
‘elseNode’. The ITE(rootNode, thenNode,elseNode,1,1,1) operation
is one way to do so, however, if the var_ids of the top nodes of thenNode
and elseNode are the same, ITE does some reduction on the resulting BDD.
Since my application requires no such reductions, I am wondering whether
there is any built-in function that enables me to explicitly set the
Then/Else pointers of the rootNode.

As a potential solution, I have tried the following piece of code. It
works for the Else child, but does not work for the Then
child. After the second assignment, the Then child points to "True"
instead of the thenNode!

bdd_t* rootNode;
bdd_t* thenNode;
bdd_t* elseNode;

(((rootNode->node) -> type).kids).E = elseNode->node; //set the else child

(((rootNode->node) -> type).kids).T = thenNode->node; //set the then child

Any help is very much appreciated!

Thanks,
Ali



This archive was generated by hypermail 2.1.7 : Sun Sep 23 2007 - 13:17:58 MDT