polybori::CCuddNavigator Class Reference

This class defines an iterator for navigating through then and else branches of ZDDs. More...

`#include <CCuddNavigator.h>`

Inheritance diagram for polybori::CCuddNavigator:

## Public Types

typedef DdNode * | pointer_type
| Cudd's node pointer. More...
typedef const pointer_type | const_access_type
| Type for constantly accessing node pointer. More...
typedef CTypes::idx_type | idx_type
| Type for indices. More...
typedef CTypes::size_type | size_type
| Type for indices. More...
typedef CTypes::deg_type | deg_type
| Type for degrees. More...
typedef CTypes::hash_type | hash_type
| Type for hashing. More...
typedef CTypes::bool_type | bool_type
| Type for boolean results. More...
typedef idx_type | value_type
| Return type of dereferencing operator. More...
typedef CCuddNavigator | self
| Get type of *this. More...
Interface types for standard iterator access
typedef navigator_tag | iterator_category
typedef std::iterator_traits< pointer_type >::difference_type | difference_type
typedef void | pointer
typedef value_type | reference

## Public Member Functions

| CCuddNavigator ()
| Default constructor. More...
| CCuddNavigator (pointer_type ptr)
| Construct from node pointer. More...
| CCuddNavigator (const self &rhs)
| Copy Constructor. More...
| ~CCuddNavigator ()
| Destructor. More...
self & | incrementThen ()
| Increment in `then` direction. More...
self | thenBranch () const
| Increment in `then` direction. More...
self & | incrementElse ()
| Increment in `else` direction. More...
self | elseBranch () const
| Increment in `else` direction. More...
reference | operator* () const
| Constant dereference operator. More...
const_access_type | operator-> () const
| Constant pointer access operator. More...
const_access_type | getNode () const
| Constant pointer access operator. More...
hash_type | hash () const
| Constant pointer access operator. More...
bool_type | operator== (const self &rhs) const
| Equality test. More...
bool_type | operator!= (const self &rhs) const
| Nonequality test. More...
bool_type | isConstant () const
| Check whether constant node was reached. More...
bool_type | terminalValue () const
| Check whether terminal node marks end of path. More...
bool_type | isValid () const
| Check whether *this is not the default iterator self() (NULL pointer) More...
bool_type | isTerminated () const
| Check whether end of path was reached. More...
bool_type | isEmpty () const
| Check whether dead end was reached. More...
void | incRef () const
| Force incrementation of reference count. More...
void | decRef () const
| Force decrementation of reference count. More...
template<class MgrType >
void | recursiveDecRef (const MgrType &mgr) const
| Force recursive decrementation of reference count. More...
Pointer-like comparision operations
bool_type | operator< (const self &rhs) const
bool_type | operator<= (const self &rhs) const
bool_type | operator> (const self &rhs) const
bool_type | operator>= (const self &rhs) const

## Detailed Description

This class defines an iterator for navigating through then and else branches of ZDDs.

## Member Typedef Documentation

typedef CTypes::bool_type polybori::CCuddNavigator::bool_type

Type for boolean results.

typedef const pointer_type polybori::CCuddNavigator::const_access_type

Type for constantly accessing node pointer.

typedef CTypes::deg_type polybori::CCuddNavigator::deg_type

Type for degrees.

typedef std::iterator_traits<pointer_type>::difference_type polybori::CCuddNavigator::difference_type

typedef CTypes::hash_type polybori::CCuddNavigator::hash_type

Type for hashing.

typedef CTypes::idx_type polybori::CCuddNavigator::idx_type

Type for indices.

typedef navigator_tag polybori::CCuddNavigator::iterator_category

typedef void polybori::CCuddNavigator::pointer

typedef DdNode* polybori::CCuddNavigator::pointer_type

Cudd's node pointer.

typedef value_type polybori::CCuddNavigator::reference

typedef CCuddNavigator polybori::CCuddNavigator::self

Get type of *this.

typedef CTypes::size_type polybori::CCuddNavigator::size_type

Type for indices.

typedef idx_type polybori::CCuddNavigator::value_type

Return type of dereferencing operator.

## Constructor & Destructor Documentation

polybori::CCuddNavigator::CCuddNavigator | ( |  | ) |

inline

Default constructor.

polybori::CCuddNavigator::CCuddNavigator | ( | pointer_type | ptr | ) |

inline explicit

Construct from node pointer.

References PBORI_ASSERT.

polybori::CCuddNavigator::CCuddNavigator | ( | const self & | rhs | ) |

inline

Copy Constructor.

polybori::CCuddNavigator::~CCuddNavigator | ( |  | ) |

inline

Destructor.

## Member Function Documentation

void polybori::CCuddNavigator::decRef | ( |  | ) | const

inline

Force decrementation of reference count.

References Cudd_Deref, PBORI_ASSERT, and PBORI_PREFIX.

self polybori::CCuddNavigator::elseBranch | ( |  | ) | const

inline

Increment in `else` direction.

References incrementElse().

Referenced by polybori::groebner::contained_deg2_cudd_style(), polybori::groebner::contained_variables_cudd_style(), polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_is_rewriteable(), polybori::groebner::do_minimal_elements_cudd_style(), polybori::groebner::do_plug_1(), polybori::groebner::include_divisors(), polybori::groebner::map_every_x_to_x_plus_one(), polybori::groebner::minimal_elements_cudd_style_unary(), polybori::groebner::mod_deg2_set(), polybori::groebner::mod_var_set(), and polybori::groebner::recursively_insert().

const_access_type polybori::CCuddNavigator::getNode | ( |  | ) | const

inline

Constant pointer access operator.

Referenced by polybori::dd_operations< CCuddNavigator >::length(), polybori::dd_operations< CCuddNavigator >::newNodeAssign(), polybori::dd_operations< CCuddNavigator >::nSupport(), and polybori::dd_operations< CCuddNavigator >::replacingNode().

hash_type polybori::CCuddNavigator::hash | ( |  | ) | const

inline

Constant pointer access operator.

void polybori::CCuddNavigator::incRef | ( |  | ) | const

inline

Force incrementation of reference count.

References Cudd_Ref, PBORI_ASSERT, and PBORI_PREFIX.

Referenced by polybori::dd_operations< CCuddNavigator >::assign(), polybori::dd_operations< CCuddNavigator >::newNode(), polybori::dd_operations< CCuddNavigator >::newNodeAssign(), and polybori::dd_operations< CCuddNavigator >::replacingNode().

CCuddNavigator & polybori::CCuddNavigator::incrementElse | ( |  | ) |

inline

Increment in `else` direction.

References PBORI_ASSERT, and PBORI_TRACE_FUNC.

Referenced by polybori::CCuddLastIter::CCuddLastIter(), polybori::groebner::contained_variables(), polybori::groebner::contained_variables_cudd_style(), polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_is_rewriteable(), polybori::groebner::do_minimal_elements_cudd_style(), polybori::groebner::do_plug_1(), elseBranch(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::mod_deg2_set(), polybori::groebner::mod_var_set(), polybori::CCuddLastIter::operator++(), polybori::groebner::red_tail_in_last_block(), polybori::groebner::without_prior_part(), and polybori::groebner::zeros().

CCuddNavigator & polybori::CCuddNavigator::incrementThen | ( |  | ) |

inline

Increment in `then` direction.

References PBORI_ASSERT, and PBORI_TRACE_FUNC.

Referenced by polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_is_rewriteable(), polybori::groebner::LLReduction< have_redsb, single_call_for_noredsb, fast_multiplication >::operator()(), polybori::CCuddLastIter::operator++(), and thenBranch().

CCuddNavigator::bool_type polybori::CCuddNavigator::isConstant | ( |  | ) | const

inline

Check whether constant node was reached.

References PBORI_ASSERT, and PBORI_TRACE_FUNC.

Referenced by polybori::CCuddLastIter::CCuddLastIter(), polybori::groebner::contained_deg2_cudd_style(), polybori::groebner::contained_variables(), polybori::groebner::contained_variables_cudd_style(), polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_is_rewriteable(), polybori::groebner::do_minimal_elements_cudd_style(), polybori::groebner::do_plug_1(), polybori::groebner::include_divisors(), polybori::groebner::map_every_x_to_x_plus_one(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::mod_deg2_set(), polybori::groebner::mod_var_set(), polybori::CCuddLastIter::operator++(), polybori::groebner::red_tail_in_last_block(), and polybori::CCuddLastIter::terminateConstant().

bool_type polybori::CCuddNavigator::isEmpty | ( |  | ) | const

inline

Check whether dead end was reached.

Referenced by polybori::groebner::do_is_rewriteable().

bool_type polybori::CCuddNavigator::isTerminated | ( |  | ) | const

inline

Check whether end of path was reached.

Referenced by polybori::groebner::contained_variables(), polybori::groebner::contained_variables_cudd_style(), polybori::groebner::do_fixed_path_divisors(), and polybori::groebner::do_is_rewriteable().

bool_type polybori::CCuddNavigator::isValid | ( |  | ) | const

inline

Check whether *this is not the default iterator self() (NULL pointer)

Referenced by polybori::BoolePolynomial::BoolePolynomial(), polybori::CCuddDDFacade< BoolePolyRing, BooleSet >::CCuddDDFacade(), polybori::CCuddLastIter::CCuddLastIter(), polybori::groebner::contained_deg2_cudd_style(), polybori::groebner::contained_variables_cudd_style(), polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_is_rewriteable(), polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::map_every_x_to_x_plus_one(), polybori::groebner::mod_deg2_set(), polybori::groebner::mod_var_set(), and polybori::CCuddLastIter::operator++().

bool_type polybori::CCuddNavigator::operator!= | ( | const self & | rhs | ) | const

inline

Nonequality test.

CCuddNavigator::value_type polybori::CCuddNavigator::operator* | ( |  | ) | const

inline

Constant dereference operator.

References PBORI_ASSERT, and PBORI_TRACE_FUNC.

const_access_type polybori::CCuddNavigator::operator-> | ( |  | ) | const

inline

Constant pointer access operator.

bool_type polybori::CCuddNavigator::operator< | ( | const self & | rhs | ) | const

inline

bool_type polybori::CCuddNavigator::operator<= | ( | const self & | rhs | ) | const

inline

bool_type polybori::CCuddNavigator::operator== | ( | const self & | rhs | ) | const

inline

Equality test.

bool_type polybori::CCuddNavigator::operator> | ( | const self & | rhs | ) | const

inline

bool_type polybori::CCuddNavigator::operator>= | ( | const self & | rhs | ) | const

inline

template<class MgrType >

void polybori::CCuddNavigator::recursiveDecRef | ( | const MgrType & | mgr | ) | const

inline

Force recursive decrementation of reference count.

References Cudd_RecursiveDerefZdd, PBORI_ASSERT, and PBORI_PREFIX.

CCuddNavigator::bool_type polybori::CCuddNavigator::terminalValue | ( |  | ) | const

inline

Check whether terminal node marks end of path.

References PBORI_ASSERT, and PBORI_TRACE_FUNC.

Referenced by polybori::CCuddLastIter::CCuddLastIter(), polybori::groebner::do_fixed_path_divisors(), and polybori::CCuddLastIter::operator++().

self polybori::CCuddNavigator::thenBranch | ( |  | ) | const

inline

Increment in `then` direction.

References incrementThen().

Referenced by polybori::groebner::contained_deg2_cudd_style(), polybori::groebner::contained_variables(), polybori::groebner::contained_variables_cudd_style(), polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_is_rewriteable(), polybori::groebner::do_minimal_elements_cudd_style(), polybori::groebner::do_plug_1(), polybori::groebner::include_divisors(), polybori::groebner::map_every_x_to_x_plus_one(), polybori::groebner::minimal_elements_cudd_style_unary(), polybori::groebner::mod_deg2_set(), polybori::groebner::mod_var_set(), and polybori::groebner::recursively_insert().

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

- CCuddNavigator.h