polybori::COrderingFacade< OrderType, OrderTag > Class Template Reference

This class initialize the interface for orderings of CDynamicOrderBase for a given OrderType. OrderType must inherit from COrderingFacade<OrderType>. More...

`#include <COrderingFacade.h>`

Inheritance diagram for polybori::COrderingFacade< OrderType, OrderTag >:

## Public Types

typedef self | base
| *this is to be used as base for `OrderType` only More...
typedef OrderType | order_type
| Variable ordering definiton functional type. More...
typedef CCacheTypes::lead_tag < OrderTag > | order_lead_tag
| Tag for for leading monomial cache. More...
typedef COrderingTags< OrderTag > | ordering_tags
Public Types inherited from polybori::COrderingBase
typedef CCheckedIdx | checked_idx_type
| Check index on input. More...
typedef std::vector< idx_type > | block_idx_type
| Type for block indices. More...
typedef block_idx_type::const_iterator | block_iterator
| Type for block iterators. More...
typedef BooleSet | set_type
| Type of Boolean sets. More...
typedef BoolePolynomial | poly_type
typedef BooleMonomial | monom_type
typedef CCuddNavigator | navigator
typedef BooleExponent | exp_type
typedef COrderedIter < navigator, monom_type > | ordered_iterator
typedef COrderedIter < navigator, exp_type > | ordered_exp_iterator
Public Types inherited from polybori::CAuxTypes
typedef bool | bool_type
| Type for standard true/false statements. More...
typedef std::size_t | size_type
| Type for lengths, dimensions, etc. More...
typedef int | deg_type
| Type for polynomial degrees (ranges from -1 to maxint) More...
typedef int | integer_type
| Type for integer numbers. More...
typedef int | idx_type
| Type for indices. More...
typedef std::size_t | hash_type
| Type for hashing. More...
typedef unsigned int | errornum_type
| Type used to store error codes. More...
typedef short int | comp_type
| Type for comparisons. More...
typedef int | ordercode_type
| Type for ordering codes. More...
typedef const char * | errortext_type
| Type used to verbose error information. More...
typedef std::ostream | ostream_type
| Type for out-stream. More...
typedef const char * | vartext_type
| Type for setting/getting names of variables. More...
typedef unsigned long | large_size_type
| large size_type (necessary?) More...
typedef std::size_t | refcount_type
| Type for counting references. More...
Public Types inherited from polybori::order_traits< OrderTag >
enum | { order_code = order_traits_code<OrderTag>::order_code, baseorder_code = order_code }

## Public Member Functions

| COrderingFacade ()
| Construct new decision diagramm manager. More...
| COrderingFacade (const self &rhs)
| Construct new decision diagramm manager. More...
| ~COrderingFacade ()
| Destructor. More...
poly_type | leadFirst (const poly_type &poly) const
| Generates polynomial with leading term first (other terms may be skipped) More...
bool_type | isLexicographical () const
| Check whether ring is lexicographical. More...
bool_type | orderedStandardIteration () const
| Test whether iterators respect order. More...
bool_type | isSymmetric () const
| Test whether variable pertubation do not change the order. More...
bool_type | isDegreeOrder () const
| Test whether we deal with a degree-ordering. More...
bool_type | isBlockOrder () const
| Test whether we deal with a degree-ordering. More...
bool_type | isTotalDegreeOrder () const
| Test whether we deal with a total degree-ordering. More...
bool_type | isDegreeReverseLexicographical () const
| Test whether ordering is deg-rev-lex ordering. More...
bool_type | ascendingVariables () const
| Test whether variables are in ascending order. More...
bool_type | descendingVariables () const
| Test whether variables are in descending order. More...
ordercode_type | getOrderCode () const
| Get numerical code for ordering. More...
ordercode_type | getBaseOrderCode () const
| Get numerical code for base ordering (the same for non-block orderings) More...
bool_type | lieInSameBlock (idx_type first, idx_type second) const
idx_type | lastBlockStart () const
| Generic procedure to get index, where last block starts. More...
ordered_iterator | leadIteratorBegin (const poly_type &poly) const
| Initialize iterator corresponding to leading term. More...
ordered_iterator | leadIteratorEnd (const poly_type &poly) const
| End marker for iterator corresponding to leading term. More...
ordered_exp_iterator | leadExpIteratorBegin (const poly_type &poly) const
| Initialize exponent iterator corresponding to leading term. More...
ordered_exp_iterator | leadExpIteratorEnd (const poly_type &poly) const
| End marker for exponent iterator corresponding to leading term. More...
Public Member Functions inherited from polybori::COrderingBase
| COrderingBase ()
| Default constructor. More...
virtual | ~COrderingBase ()=0
virtual comp_type | compare (idx_type, idx_type) const =0
| Comparison of monomials. More...
virtual comp_type | compare (const monom_type &, const monom_type &) const =0
virtual comp_type | compare (const exp_type &, const exp_type &) const =0
virtual monom_type | lead (const poly_type &) const =0
| Get leading term. More...
virtual monom_type | lead (const poly_type &, deg_type) const =0
| Get leading term (using upper bound) More...
virtual exp_type | leadExp (const poly_type &) const =0
| Get leading exponent. More...
virtual exp_type | leadExp (const poly_type &, deg_type) const =0
| Get leading exponent (using upper bound) More...
virtual block_iterator | blockBegin () const
virtual block_iterator | blockEnd () const
virtual void | appendBlock (checked_idx_type)
virtual void | clearBlocks ()

## Protected Member Functions

bool_type | inSameBlockInternal (idx_type, idx_type, invalid_tag) const
| trivial case for non-block orderings More...
bool_type | inSameBlockInternal (idx_type first, idx_type second, valid_tag) const
| complicated case for block orderings More...
Protected Member Functions inherited from polybori::COrderingBase
monom_type | monom (const set_type &rhs) const
| Get monomial from set of subsets of Boolean variables (internal use only) More...

## Detailed Description

### template<class OrderType, class OrderTag>
class polybori::COrderingFacade< OrderType, OrderTag >

This class initialize the interface for orderings of CDynamicOrderBase for a given OrderType. OrderType must inherit from COrderingFacade<OrderType>.

## Member Typedef Documentation

template<class OrderType, class OrderTag>

typedef self polybori::COrderingFacade< OrderType, OrderTag >::base

*this is to be used as base for `OrderType` only

template<class OrderType, class OrderTag>

typedef CCacheTypes::lead_tag<OrderTag> polybori::COrderingFacade< OrderType, OrderTag >::order_lead_tag

Tag for for leading monomial cache.

template<class OrderType, class OrderTag>

typedef OrderType polybori::COrderingFacade< OrderType, OrderTag >::order_type

Variable ordering definiton functional type.

template<class OrderType, class OrderTag>

typedef COrderingTags<OrderTag> polybori::COrderingFacade< OrderType, OrderTag >::ordering_tags

## Constructor & Destructor Documentation

template<class OrderType, class OrderTag>

polybori::COrderingFacade< OrderType, OrderTag >::COrderingFacade | ( | ) |  |

inline

Construct new decision diagramm manager.

template<class OrderType, class OrderTag>

polybori::COrderingFacade< OrderType, OrderTag >::COrderingFacade | ( | const self & | rhs) |  |

inline

Construct new decision diagramm manager.

template<class OrderType, class OrderTag>

polybori::COrderingFacade< OrderType, OrderTag >::~COrderingFacade | ( | ) |  |

inline

Destructor.

## Member Function Documentation

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::ascendingVariables | ( | ) |  | const

inline virtual

Test whether variables are in ascending order.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::descendingVariables | ( | ) |  | const

inline virtual

Test whether variables are in descending order.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

ordercode_type polybori::COrderingFacade< OrderType, OrderTag >::getBaseOrderCode | ( | ) |  | const

inline virtual

Get numerical code for base ordering (the same for non-block orderings)

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

ordercode_type polybori::COrderingFacade< OrderType, OrderTag >::getOrderCode | ( | ) |  | const

inline virtual

Get numerical code for ordering.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::inSameBlockInternal | ( | idx_type | ,
|  | idx_type | ,
|  | invalid_tag |
| ) |  | const

inline protected

trivial case for non-block orderings

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::inSameBlockInternal | ( | idx_type | first,
|  | idx_type | second,
|  | valid_tag |
| ) |  | const

inline protected

complicated case for block orderings

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::isBlockOrder | ( | ) |  | const

inline virtual

Test whether we deal with a degree-ordering.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::isDegreeOrder | ( | ) |  | const

inline virtual

Test whether we deal with a degree-ordering.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::isDegreeReverseLexicographical | ( | ) |  | const

inline virtual

Test whether ordering is deg-rev-lex ordering.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::isLexicographical | ( | ) |  | const

inline virtual

Check whether ring is lexicographical.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::isSymmetric | ( | ) |  | const

inline virtual

Test whether variable pertubation do not change the order.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::isTotalDegreeOrder | ( | ) |  | const

inline virtual

Test whether we deal with a total degree-ordering.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

idx_type polybori::COrderingFacade< OrderType, OrderTag >::lastBlockStart | ( | ) |  | const

inline virtual

Generic procedure to get index, where last block starts.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

ordered_exp_iterator polybori::COrderingFacade< OrderType, OrderTag >::leadExpIteratorBegin | ( | const poly_type & | ) |  | const

inline virtual

Initialize exponent iterator corresponding to leading term.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

ordered_exp_iterator polybori::COrderingFacade< OrderType, OrderTag >::leadExpIteratorEnd | ( | const poly_type & | ) |  | const

inline virtual

End marker for exponent iterator corresponding to leading term.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

poly_type polybori::COrderingFacade< OrderType, OrderTag >::leadFirst | ( | const poly_type & | poly) |  | const

inline virtual

Generates polynomial with leading term first (other terms may be skipped)

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

ordered_iterator polybori::COrderingFacade< OrderType, OrderTag >::leadIteratorBegin | ( | const poly_type & | ) |  | const

inline virtual

Initialize iterator corresponding to leading term.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

ordered_iterator polybori::COrderingFacade< OrderType, OrderTag >::leadIteratorEnd | ( | const poly_type & | ) |  | const

inline virtual

End marker for iterator corresponding to leading term.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::lieInSameBlock | ( | idx_type | first,
|  | idx_type | second
| ) |  | const

inline virtual

Check, whether two indices are in the same block (true for nonblock orderings)

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>

bool_type polybori::COrderingFacade< OrderType, OrderTag >::orderedStandardIteration | ( | ) |  | const

inline virtual

Test whether iterators respect order.

Implements polybori::COrderingBase.

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

- COrderingFacade.h