PolyBoRi
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends
polybori::BoolePolyRing Class Reference

This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and variable names. More...

#include <BoolePolyRing.h>

Inheritance diagram for polybori::BoolePolyRing:
polybori::COrderEnums polybori::CCompareEnums polybori::CAuxTypes

List of all members.

Public Types

typedef class BooleExponent exp_type
 define exponent type
typedef class BooleMonomial monom_type
 set monomial type
typedef class BooleVariable var_type
 set variables type
typedef class BooleSet dd_type
 set decision diagram type
typedef class BoolePolynomial poly_type
 set polynomial type
typedef CCheckedIdx checked_idx_type
 Check indices bevor using.
typedef CCuddCore core_type
 Type of actual data.
typedef
core_type::const_varname_reference 
const_varname_reference
typedef boost::intrusive_ptr
< core_type
core_ptr
 Smart pointer to core.
typedef core_type::order_type order_type
 Type for handling mterm orderings.
typedef core_type::order_ptr order_ptr
 Smart pointer for handling mterm orderings.
typedef order_typeorder_reference
 Reference for handling mterm orderings.
typedef DdManager mgr_type
typedef std::vector< idx_typeblock_idx_type
 Type for block indices.
typedef
block_idx_type::const_iterator 
block_iterator
 Type for block iterators.
adopt global type definitions
typedef CTypes::ordercode_type ordercode_type
 Type for ordering codes.
typedef CTypes::vartext_type vartext_type
 Type for setting/getting names of variables.

Public Member Functions

 BoolePolyRing (size_type nvars=1, ordercode_type order=lp)
 Constructor for nvars variables and order code.
 BoolePolyRing (size_type nvars, const order_ptr &order)
 Constructor for nvars variables (and given pointer to ordering)
 BoolePolyRing (const self &rhs)
 Copy constructor (cheap)
 ~BoolePolyRing ()
 Destructor.
size_type nVariables () const
 Get number of ring variables.
vartext_type getVariableName (checked_idx_type idx) const
 Get name of variable with index idx.
void setVariableName (checked_idx_type idx, vartext_type varname)
 Set name of variable with index idx.
void clearCache ()
 Clears the function cache.
ostream_typeprint (ostream_type &) const
 Print out statistics and settings for current ring to output stream.
hash_type hash () const
 Get unique identifier for manager of *this.
hash_type id () const
 Get unique identifier for this ring.
order_reference ordering () const
 Access ordering of *this.
mgr_typegetManager () const
 Get plain decision diagram manager.
self clone () const
 Construct ring with similiar properties (deep copy)
void changeOrdering (ordercode_type)
 Change order of current ring.
poly_type coerce (const poly_type &rhs) const
 Map polynomial to this ring, if possible.
monom_type coerce (const monom_type &rhs) const
 Map monomial to this ring, if possible.
var_type coerce (const var_type &rhs) const
 Map variable to this ring.
dd_type variableDiagram (checked_idx_type nvar) const
 Access nvar-th ring variable as diagram.
var_type variable (checked_idx_type nvar) const
 Access nvar-th ring variable as diagram.
dd_type zero () const
 Get empty decision diagram.
dd_type one () const
 Get decision diagram with all variables negated.
dd_type constant (bool is_one) const
 Get constant one or zero.

Protected Member Functions

 BoolePolyRing (const core_ptr &rhs)
 BoolePolyRing (const CWeakPtr< core_type > &rhs)
 Get strong reference from weak pointer (used by WeakRingPtr)
core_ptr core () const
 Access to actual data (via ->)

Protected Attributes

core_ptr p_core
 Smart pointer to actual data.

Friends

class WeakRingPtr
 The weak pointer needs access to data structure.

Detailed Description

This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and variable names.


Member Typedef Documentation

Type for block indices.

typedef block_idx_type::const_iterator polybori::BoolePolyRing::block_iterator

Type for block iterators.

Check indices bevor using.

typedef boost::intrusive_ptr<core_type> polybori::BoolePolyRing::core_ptr

Smart pointer to core.

Type of actual data.

set decision diagram type

define exponent type

set monomial type

Smart pointer for handling mterm orderings.

Reference for handling mterm orderings.

Type for handling mterm orderings.

Type for ordering codes.

Reimplemented from polybori::CAuxTypes.

set polynomial type

set variables type

Type for setting/getting names of variables.

Reimplemented from polybori::CAuxTypes.


Constructor & Destructor Documentation

polybori::BoolePolyRing::BoolePolyRing ( const core_ptr rhs) [inline, protected]

Support for shallow copy (clone)

Note:
May generate invalid ring, hence protected
polybori::BoolePolyRing::BoolePolyRing ( const CWeakPtr< core_type > &  rhs) [inline, explicit, protected]

Get strong reference from weak pointer (used by WeakRingPtr)

References PBORI_ASSERT.

polybori::BoolePolyRing::BoolePolyRing ( size_type  nvars = 1,
ordercode_type  order = lp 
) [explicit]

Constructor for nvars variables and order code.

Constructor for nvars variables.

References PBORI_TRACE_FUNC.

polybori::BoolePolyRing::BoolePolyRing ( size_type  nvars,
const order_ptr order 
) [inline]

Constructor for nvars variables (and given pointer to ordering)

polybori::BoolePolyRing::BoolePolyRing ( const self rhs) [inline]

Copy constructor (cheap)

Destructor.


Member Function Documentation

Change order of current ring.

References polybori::get_ordering(), p_core, and PBORI_TRACE_FUNC.

Clears the function cache.

Construct ring with similiar properties (deep copy)

Map polynomial to this ring, if possible.

References getManager(), and polybori::CErrorEnums::invalid.

Referenced by coerce().

Map monomial to this ring, if possible.

References coerce().

Map variable to this ring.

Get constant one or zero.

core_ptr polybori::BoolePolyRing::core ( ) const [inline, protected]

Access to actual data (via ->)

Get plain decision diagram manager.

Referenced by coerce(), and print().

Get name of variable with index idx.

Get unique identifier for manager of *this.

Print out statistics and settings for current ring to output stream.

References Cudd_PrintInfo, getManager(), and PBORI_PREFIX.

Referenced by polybori::operator<<().

Set name of variable with index idx.

Access nvar-th ring variable as diagram.


Friends And Related Function Documentation

friend class WeakRingPtr [friend]

The weak pointer needs access to data structure.


Member Data Documentation

Smart pointer to actual data.

Referenced by changeOrdering().


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