setbddrefext - increments the external reference, and decrements
the internal reference of a bdd node.
See the file man1/alc_origin.1.
#include "bdd101.h"
bddnode ∗setbddrefext( BddNode )
bddnode ∗BddNode;
setbddrefext increments the number of external reference of
the bdd node BddNode and decrements its number of internal
reference.
setbddrefext returns the BddNode pointer.
"negative reference, index xxx error !"
The BddNode must have a positive number of
internal reference.
#include "bdd101.h"
bddsystem ∗BddSystem;
bddcircuit ∗BddCircuit;
bddnode ∗BddNode;
chain_list ∗Expr;
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
BddNode = addbddcircuitin( (bddcircuit ∗)0, "i0", 0, BDD_IN_MODE_FIRST );
BddNode = addbddnode( (bddsystem ∗)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
Expr = convertbddcircuitabl( (bddcircuit ∗)0, BddNode );
incbddrefint( BddNode );
setbddrefext( BddNode );
/* displays Node VAR: 0 INDEX: 2 MARK: 0 REF_EXT: 1 REF_INT: 0 */
viewbddnode( (bddsystem ∗)0, BddNode );
/* displays (not i0) */
viewablexpr( Expr, ABL_VIEW_VHDL );
freeablexpr( Expr );
destroybddsystem( (bddsystem ∗)0 );
destroybddcircuit( (bddcircuit ∗)0 );
bdd(1)
See the file man1/alc_bug_report.1.