PolyBoRi
Public Types | Public Member Functions | Protected Member Functions
polybori::CCuddInterface Class Reference

This class defines a C++ interface to CUDD's decicion diagram manager. More...

#include <CCuddInterface.h>

Inheritance diagram for polybori::CCuddInterface:
polybori::CAuxTypes

List of all members.

Public Types

typedef DdNode * node_ptr
 Type of Cudd's decision diagrams.
typedef DdManager mgr_type
 Type of Cudd decision diagram manager.
typedef int cudd_idx_type
typedef node_ptr(* unary_int_function )(mgr_type *, cudd_idx_type)
typedef node_ptr(* void_function )(mgr_type *)
typedef boost::intrusive_ptr
< mgr_type
mgr_ptr
 Smart pointer to Cudd manager.

Public Member Functions

 CCuddInterface (size_type numVars, size_type numVarsZ, size_type numSlots=CUDD_UNIQUE_SLOTS, size_type cacheSize=CUDD_CACHE_SLOTS, unsigned long maxMemory=0)
 Initialize CUDD-like decision diagram manager.
 CCuddInterface (const self &rhs)
 Copy constructor.
 ~CCuddInterface ()
 Destructor.
mgr_typegetManager () const
 Get pure CUDD structure.
mgr_ptr pManager () const
 Get (shared) pointer to initialized manager.
selfoperator= (const self &right)
 Assignment operation.
node_ptr zddVar (idx_type idx) const
 Get ZDD variable.
node_ptr zddOne (idx_type iMax) const
 Get 1-terminal for ZDDs.
node_ptr zddZero () const
 Get 0-terminal for ZDDs.
node_ptr zddOne () const
 Get 1-terminal for ZDDs.
node_ptr getVar (idx_type idx) const
size_type nVariables () const
 Get number of managed variables.
void cacheFlush ()
 clear all temporarily stored data

Protected Member Functions

mgr_ptr init (size_type numVars, size_type numVarsZ, size_type numSlots, size_type cacheSize, large_size_type maxMemory)
 initialized CUDD decision diagrma manager, check it and start reference counting
node_ptr checkedResult (node_ptr result) const
 Generate check result of previous node operation and convert.
void checkedResult (int result) const
 Generate check numerical result of previous operation.
node_ptr apply (unary_int_function func, idx_type idx) const
 Apply function to given index.
node_ptr apply (void_function func) const
 Call function.
void recursiveDeref (node_ptr node) const
 Dereferencing of diagram node.
void initVar (node_ptr &node, idx_type idx) const
 Generate raw variable.
template<class MemberFuncPtr >
CCallbackWrapper< MemberFuncPtr > callBack (MemberFuncPtr ptr)
 Wrapping memeber function as functional.

Detailed Description

This class defines a C++ interface to CUDD's decicion diagram manager.

The purpose of this wrapper is just to provide an efficient and save way of handling the decision diagram management. It corrects some short-comings of CUDD's built-in interface.

Attention:
This class is intented for internal use only. Use the highlevel classes CDDManager<CCuddInterface> or BoolePolyRing instead.

Member Typedef Documentation

typedef boost::intrusive_ptr<mgr_type> polybori::CCuddInterface::mgr_ptr

Smart pointer to Cudd manager.

Type of Cudd decision diagram manager.

Type of Cudd's decision diagrams.


Constructor & Destructor Documentation

polybori::CCuddInterface::CCuddInterface ( size_type  numVars,
size_type  numVarsZ,
size_type  numSlots = CUDD_UNIQUE_SLOTS,
size_type  cacheSize = CUDD_CACHE_SLOTS,
unsigned long  maxMemory = 0 
) [inline]

Initialize CUDD-like decision diagram manager.

Copy constructor.

References Cudd_Ref, polybori::for_each(), and PBORI_PREFIX.

Destructor.

References polybori::for_each().


Member Function Documentation

node_ptr polybori::CCuddInterface::apply ( unary_int_function  func,
idx_type  idx 
) const [inline, protected]

Apply function to given index.

node_ptr polybori::CCuddInterface::apply ( void_function  func) const [inline, protected]

Call function.

clear all temporarily stored data

References cuddCacheFlush, and PBORI_PREFIX.

template<class MemberFuncPtr >
CCallbackWrapper<MemberFuncPtr> polybori::CCuddInterface::callBack ( MemberFuncPtr  ptr) [inline, protected]

Wrapping memeber function as functional.

node_ptr polybori::CCuddInterface::checkedResult ( node_ptr  result) const [inline, protected]

Generate check result of previous node operation and convert.

void polybori::CCuddInterface::checkedResult ( int  result) const [inline, protected]

Generate check numerical result of previous operation.

References error_text(), and PBORI_UNLIKELY.

Get pure CUDD structure.

References PBORI_UNLIKELY.

mgr_ptr polybori::CCuddInterface::init ( size_type  numVars,
size_type  numVarsZ,
size_type  numSlots,
size_type  cacheSize,
large_size_type  maxMemory 
) [inline, protected]

initialized CUDD decision diagrma manager, check it and start reference counting

References Cudd_Init, PBORI_PREFIX, and PBORI_UNLIKELY.

void polybori::CCuddInterface::initVar ( node_ptr node,
idx_type  idx 
) const [inline, protected]

Generate raw variable.

References Cudd_Ref, cuddUniqueInterZdd, and PBORI_PREFIX.

Get number of managed variables.

self& polybori::CCuddInterface::operator= ( const self right) [inline]

Assignment operation.

Get (shared) pointer to initialized manager.

void polybori::CCuddInterface::recursiveDeref ( node_ptr  node) const [inline, protected]

Dereferencing of diagram node.

References Cudd_RecursiveDerefZdd, and PBORI_PREFIX.

Get 1-terminal for ZDDs.

References Cudd_ReadZddOne, and PBORI_PREFIX.

Get 1-terminal for ZDDs.

Get ZDD variable.

References Cudd_zddIthVar, and PBORI_PREFIX.

Get 0-terminal for ZDDs.

References Cudd_ReadZero, and PBORI_PREFIX.


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