PolyBoRi
Public Types | Public Member Functions | Protected Member Functions | Friends | List of all members
polybori::CCuddZDD Class Reference

This class defines a C++ interface to CUDD's zero-suppressed decision diagram structure. More...

#include <CCuddZDD.h>

Inheritance diagram for polybori::CCuddZDD:
polybori::CCuddDDBase< CCuddZDD >

Public Types

typedef CCuddZDD self
 Name type of *this.
typedef CCuddDDBase< selfbase
 Name the type, which self is inherited from.
- Public Types inherited from polybori::CCuddDDBase< CCuddZDD >
typedef CCuddZDD diagram_type
 Name type of *this.
typedef CCuddDDBase self
typedef CCuddCore::errorfunc_type errorfunc_type
typedef CCuddCore::large_size_type large_size_type
typedef CCuddCore::refcount_type refcount_type
typedef CCuddCore::node_type node_type
typedef CCuddCore::mgrcore_type mgrcore_type
typedef
CCuddCore::unary_int_function 
unary_int_function
typedef CCuddCore::void_function void_function
typedef CCuddCore::binary_function binary_function
typedef
CCuddCore::binary_int_function 
binary_int_function
typedef CCuddCore::ternary_function ternary_function
typedef
CCuddCore::int_unary_function 
int_unary_function
typedef CCuddCore::size_type size_type
typedef CCuddCore::idx_type idx_type
typedef CCuddCore::mgrcore_ptr mgrcore_ptr
 Define shared pointer type for handling the decision diagram manager.

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.
selfoperator= (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
- Public Member Functions inherited from polybori::CCuddDDBase< CCuddZDD >
 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.
- Protected Member Functions inherited from polybori::CCuddDDBase< CCuddZDD >
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

- Protected Attributes inherited from polybori::CCuddDDBase< CCuddZDD >
mgrcore_ptr ddMgr
 (Smart) pointer to decsion diagram management
node_type node
 Raw pointer to decision diagram node.

Detailed Description

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.

Attention
This class is intented for internal use only. Use the highlevel classes CDDInterface<CCuddZDD>, BoolePolynomial, BooleSet, or BooleMonomial instead.

Member Typedef Documentation

Name the type, which self is inherited from.

Name type of *this.

Constructor & Destructor Documentation

polybori::CCuddZDD::CCuddZDD ( mgrcore_ptr  mgr,
node_type  bddNode 
)
inline

Construct ZDD from manager core and node.

polybori::CCuddZDD::CCuddZDD ( )
inline

Default constructor.

polybori::CCuddZDD::CCuddZDD ( const self from)
inline

Copy constructor.

polybori::CCuddZDD::~CCuddZDD ( )
inline

Destructor.

Member Function Documentation

int polybori::CCuddZDD::Count ( ) const
inline

Determine the number of minterms.

double polybori::CCuddZDD::CountDouble ( ) const
inline

Determine the number of minterms.

double polybori::CCuddZDD::CountMinterm ( int  path) const
inline

Counts minterms; takes a path specifing variables number in the support.

void polybori::CCuddZDD::deref ( )
inlineprotected

Derefering current diagram node, if unused.

References PB_DD_VERBOSE.

* self polybori::CCuddZDD::Ite ( const self g,
const self h 
) const
inline

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)) /**

bool polybori::CCuddZDD::operator!= ( const self other) const
inline
bool polybori::CCuddZDD::operator< ( const self rhs) const
inline
bool polybori::CCuddZDD::operator<= ( const self other) const
inline
CCuddZDD & polybori::CCuddZDD::operator= ( const self right)
inline
bool polybori::CCuddZDD::operator== ( const self other) const
inline
bool polybori::CCuddZDD::operator> ( const self other) const
inline
bool polybori::CCuddZDD::operator>= ( const self other) const
inline
void polybori::CCuddZDD::print ( int  nvars,
int  verbosity = 1 
) const
inline

References UNLIKELY.

void polybori::CCuddZDD::PrintCover ( ) const
inline
void polybori::CCuddZDD::PrintMinterm ( ) const
inline

Friends And Related Function Documentation

friend class CCuddInterface
friend

The documentation for this class was generated from the following file: