PolyBoRi
Public Types | Public Member Functions | Protected Member Functions | List of all members
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 >:
polybori::COrderingBase COrderingTags< OrderTag > polybori::order_traits< OrderTag > polybori::CAuxTypes polybori::CBlockOrderingFacade< OrderType, OrderTag >

Public Types

typedef self base
 *this is to be used as base for OrderType only
typedef OrderType order_type
 Variable ordering definiton functional type.
typedef CCacheTypes::lead_tag
< OrderTag > 
order_lead_tag
 Tag for for leading monomial cache.
typedef COrderingTags< OrderTag > ordering_tags
- Public Types inherited from polybori::COrderingBase
typedef CCheckedIdx checked_idx_type
 Check index on input.
typedef std::vector< idx_typeblock_idx_type
 Type for block indices.
typedef
block_idx_type::const_iterator 
block_iterator
 Type for block iterators.
typedef BooleSet set_type
 Type of Boolean sets.
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.
typedef std::size_t size_type
 Type for lengths, dimensions, etc.
typedef int deg_type
 Type for polynomial degrees (ranges from -1 to maxint)
typedef int integer_type
 Type for integer numbers.
typedef int idx_type
 Type for indices.
typedef std::size_t hash_type
 Type for hashing.
typedef unsigned int errornum_type
 Type used to store error codes.
typedef short int comp_type
 Type for comparisons.
typedef int ordercode_type
 Type for ordering codes.
typedef const char * errortext_type
 Type used to verbose error information.
typedef std::ostream ostream_type
 Type for out-stream.
typedef const char * vartext_type
 Type for setting/getting names of variables.
typedef unsigned long large_size_type
 large size_type (necessary?)
typedef std::size_t refcount_type
 Type for counting references.
- 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.
 COrderingFacade (const self &rhs)
 Construct new decision diagramm manager.
 ~COrderingFacade ()
 Destructor.
poly_type leadFirst (const poly_type &poly) const
 Generates polynomial with leading term first (other terms may be skipped)
bool_type isLexicographical () const
 Check whether ring is lexicographical.
bool_type orderedStandardIteration () const
 Test whether iterators respect order.
bool_type isSymmetric () const
 Test whether variable pertubation do not change the order.
bool_type isDegreeOrder () const
 Test whether we deal with a degree-ordering.
bool_type isBlockOrder () const
 Test whether we deal with a degree-ordering.
bool_type isTotalDegreeOrder () const
 Test whether we deal with a total degree-ordering.
bool_type isDegreeReverseLexicographical () const
 Test whether ordering is deg-rev-lex ordering.
bool_type ascendingVariables () const
 Test whether variables are in ascending order.
bool_type descendingVariables () const
 Test whether variables are in descending order.
ordercode_type getOrderCode () const
 Get numerical code for ordering.
ordercode_type getBaseOrderCode () const
 Get numerical code for base ordering (the same for non-block orderings)
bool_type lieInSameBlock (idx_type first, idx_type second) const
idx_type lastBlockStart () const
 Generic procedure to get index, where last block starts.
ordered_iterator leadIteratorBegin (const poly_type &poly) const
 Initialize iterator corresponding to leading term.
ordered_iterator leadIteratorEnd (const poly_type &poly) const
 End marker for iterator corresponding to leading term.
ordered_exp_iterator leadExpIteratorBegin (const poly_type &poly) const
 Initialize exponent iterator corresponding to leading term.
ordered_exp_iterator leadExpIteratorEnd (const poly_type &poly) const
 End marker for exponent iterator corresponding to leading term.
- Public Member Functions inherited from polybori::COrderingBase
 COrderingBase ()
 Default constructor.
virtual ~COrderingBase ()=0
virtual comp_type compare (idx_type, idx_type) const =0
 Comparison of monomials.
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.
virtual monom_type lead (const poly_type &, deg_type) const =0
 Get leading term (using upper bound)
virtual exp_type leadExp (const poly_type &) const =0
 Get leading exponent.
virtual exp_type leadExp (const poly_type &, deg_type) const =0
 Get leading exponent (using upper bound)
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
bool_type inSameBlockInternal (idx_type first, idx_type second, valid_tag) const
 complicated case for block orderings
- 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)

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
inlinevirtual

Test whether variables are in ascending order.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>
bool_type polybori::COrderingFacade< OrderType, OrderTag >::descendingVariables ( ) const
inlinevirtual

Test whether variables are in descending order.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>
ordercode_type polybori::COrderingFacade< OrderType, OrderTag >::getBaseOrderCode ( ) const
inlinevirtual

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
inlinevirtual

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
inlineprotected

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
inlineprotected

complicated case for block orderings

template<class OrderType, class OrderTag>
bool_type polybori::COrderingFacade< OrderType, OrderTag >::isBlockOrder ( ) const
inlinevirtual

Test whether we deal with a degree-ordering.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>
bool_type polybori::COrderingFacade< OrderType, OrderTag >::isDegreeOrder ( ) const
inlinevirtual

Test whether we deal with a degree-ordering.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>
bool_type polybori::COrderingFacade< OrderType, OrderTag >::isDegreeReverseLexicographical ( ) const
inlinevirtual

Test whether ordering is deg-rev-lex ordering.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>
bool_type polybori::COrderingFacade< OrderType, OrderTag >::isLexicographical ( ) const
inlinevirtual

Check whether ring is lexicographical.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>
bool_type polybori::COrderingFacade< OrderType, OrderTag >::isSymmetric ( ) const
inlinevirtual

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
inlinevirtual

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
inlinevirtual

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
inlinevirtual

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
inlinevirtual

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
inlinevirtual

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
inlinevirtual

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
inlinevirtual

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
inlinevirtual

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
inlinevirtual

Test whether iterators respect order.

Implements polybori::COrderingBase.


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