PolyBoRi
|
This class defines a C++ interface to CUDD's
zero-suppressed decision diagram structure.
More...
#include <CCuddZDD.h>
Public Member Functions | |
CCuddZDD (mgrcore_ptr mgr, node_type bddNode) | |
Construct ZDD from manager core and node. | |
CCuddZDD () | |
Default constructor. | |
CCuddZDD (const self &from) | |
Copy constructor. | |
~CCuddZDD () | |
Destructor. | |
self & | operator= (const self &right) |
Assignment operator. | |
*self | Ite (const self &g, const self &h) const |
If-Then-Else operation using current diagram as head. | |
int | Count () const |
Determine the number of minterms. | |
double | CountDouble () const |
Determine the number of minterms. | |
double | CountMinterm (int path) const |
Counts minterms; takes a path specifing variables number in the support. | |
Logical operations | |
bool | operator== (const self &other) const |
bool | operator!= (const self &other) const |
bool | operator<= (const self &other) const |
bool | operator>= (const self &other) const |
bool | operator< (const self &rhs) const |
bool | operator> (const self &other) const |
Functions for print useful information | |
void | print (int nvars, int verbosity=1) const |
void | PrintMinterm () const |
void | PrintCover () const |
![]() | |
CCuddDDBase (mgrcore_ptr ddManager, node_type ddNode) | |
Construct diagram from raw CUDD elements. | |
CCuddDDBase (const self &from) | |
Copy constructor. | |
CCuddDDBase () | |
Default constructor. | |
mgrcore_ptr | manager () const |
Get (shared) pointer to decision diagram manager. | |
mgrcore_type | getManager () const |
Get raw decision diagram manager. | |
node_type | getNode () const |
Get raw node structure. | |
size_type | NodeReadIndex () const |
Get index of curent node. | |
size_type | nodeCount () const |
Number of nodes in the current decision diagram. | |
size_type | refCount () const |
Number of references pointing here. | |
bool | isZero () const |
Test whether diagram represents the empty set. |
Protected Member Functions | |
void | deref () |
Derefering current diagram node, if unused. | |
![]() | |
void | checkSameManager (const diagram_type &other) const |
Test, whether both operands. | |
void | checkReturnValue (const node_type result) const |
Check whether decision diagram operation in computing result was valid. | |
void | checkReturnValue (const int result, const int expected=1) const |
Check whether previous decision diagram operation for validity. | |
diagram_type | apply (binary_function func, const diagram_type &rhs) const |
diagram_type | apply (binary_int_function func, idx_type idx) const |
diagram_type | apply (ternary_function func, const diagram_type &first, const diagram_type &second) const |
idx_type | apply (int_unary_function func) const |
diagram_type | checkedResult (node_type result) const |
idx_type | checkedResult (idx_type result) const |
ResultType | memApply (ResultType(*func)(DdManager *, node_type)) const |
ResultType | memChecked (ResultType result) const |
Friends | |
class | CCuddInterface |
Additional Inherited Members | |
![]() | |
mgrcore_ptr | ddMgr |
(Smart) pointer to decsion diagram management | |
node_type | node |
Raw pointer to decision diagram node. |
This class defines a C++ interface to CUDD's
zero-suppressed decision diagram structure.
The purpose of this wrapper is just to provide an efficient and save way of handling the decision diagrams. It extends CCuddDD for handling ZDDs.
typedef CCuddDDBase<self> polybori::CCuddZDD::base |
Name the type, which self is inherited from.
typedef CCuddZDD polybori::CCuddZDD::self |
Name type of *this.
|
inline |
Construct ZDD from manager core and node.
|
inline |
Default constructor.
|
inline |
Copy constructor.
|
inline |
Destructor.
|
inline |
Determine the number of minterms.
|
inline |
Determine the number of minterms.
|
inline |
Counts minterms; takes a path specifing variables number in the support.
|
inlineprotected |
Derefering current diagram node, if unused.
References PB_DD_VERBOSE.
If-Then-Else operation using current diagram as head.
@note Preprocessor generated members @code
BOOST_PP_SEQ_FOR_EACH(PB_ZDD_OP, Intersect, (*)(&)) BOOST_PP_SEQ_FOR_EACH(PB_ZDD_OP, Union, (+)(|))
BOOST_PP_SEQ_FOR_EACH(PB_ZDD_OP_ASSIGN, BOOST_PP_NIL, (*)(&)(+)(|)(-))
BOOST_PP_SEQ_FOR_EACH(PB_ZDD_APPLY, const self&, (Product)(UnateProduct)(WeakDiv)(Divide)(WeakDivF)(DivideF) (Union)(Intersect)(Diff)(DiffConst))
BOOST_PP_SEQ_FOR_EACH(PB_ZDD_APPLY, int, (Subset1)(Subset0)(Change)) /**
|
inline |
|
inline |
|
inline |
Assignment operator.
References polybori::CCuddDDBase< DiagramType >::ddMgr, LIKELY, polybori::CCuddDDBase< DiagramType >::node, PB_DD_VERBOSE, and UNLIKELY.
|
inline |
|
inline |
|
inline |
|
inline |
References UNLIKELY.
|
inline |
|
inline |
|
friend |