16 #ifndef polybori_orderings_CBlockOrderingFacade_h_
17 #define polybori_orderings_CBlockOrderingFacade_h_
27 template <
class OrderType,
class OrderTag>
52 m_indices.push_back(0);
53 m_indices.push_back(CTypes::max_index());
60 ~CBlockOrderingFacade() = 0;
72 if PBORI_UNLIKELY((idx >= CTypes::max_index()) || (idx <= *(blockEnd() - 2)))
73 throw std::runtime_error(
"Blocks must be positive and have to be "
74 "added in a strictly increasing order.");
76 m_indices.back() = idx;
77 m_indices.push_back(CTypes::max_index());
82 m_indices.push_back(0);
83 m_indices.push_back(CTypes::max_index());
88 monom_type
lead(
const poly_type& poly)
const {
96 set_type(poly.
ring()), descending) );
101 monom_type
lead(
const poly_type& poly, deg_type)
const {
106 exp_type
leadExp(
const poly_type& poly)
const {
107 return lead(poly).exp();
112 exp_type
leadExp(
const poly_type& poly, deg_type)
const {
113 return leadExp(poly);
119 template <
class TermType,
class BinOpType>
121 const BinOpType& idx_comparer)
const {
124 blockBegin(), blockEnd(), idx_comparer);
131 template <
class OrderType,
class OrderTag>
This class shows, whether a property of an order is invalid.
Definition: tags.h:27
COrderingBase::block_idx_type m_indices
index data
Definition: CBlockOrderingFacade.h:128
CTypes::comp_type block_dlex_compare(LhsIterator lhsStart, LhsIterator lhsFinish, RhsIterator rhsStart, RhsIterator rhsFinish, Iterator start, Iterator finish, BinaryPredicate idx_comp)
Definition: pbori_routines_order.h:414
base_type::poly_type poly_type
Definition: CBlockOrderingFacade.h:42
base_type::exp_type exp_type
Definition: CBlockOrderingFacade.h:44
This class is just a wrapper for using variables for storing indices as interim data structure for Bo...
Definition: BooleExponent.h:34
navigator navigation() const
Navigate through structure.
Definition: BoolePolynomial.h:441
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
This class initialize the interface for orderings of CDynamicOrderBase for a given OrderType...
Definition: COrderingFacade.h:43
Definition: CacheManager.h:31
int deg_type
Type for polynomial degrees (ranges from -1 to maxint)
Definition: pbori_defs.h:222
const ring_type & ring() const
Access ring, where this belongs to.
Definition: BoolePolynomial.h:478
self base
*this is to be used as base for OrderType only
Definition: CBlockOrderingFacade.h:37
This class implements block orderings for COrderingFacade. OrderType must inherit from COrderingFacad...
Definition: CBlockOrderingFacade.h:28
short int comp_type
Type for comparisons.
Definition: pbori_defs.h:237
base_type::order_lead_tag order_lead_tag
Definition: CBlockOrderingFacade.h:41
monom_type lead(const poly_type &poly) const
generic block lead
Definition: CBlockOrderingFacade.h:88
CBlockOrderingFacade(const self &rhs)
Copy Constructor.
Definition: CBlockOrderingFacade.h:57
base_type::deg_type deg_type
Definition: CBlockOrderingFacade.h:45
base_type::monom_type monom_type
Definition: CBlockOrderingFacade.h:43
This class wraps the underlying decicion diagram type and defines the necessary operations.
Definition: BoolePolynomial.h:85
exp_type leadExp(const poly_type &poly) const
Extraction of leading exponent - just using lead.
Definition: CBlockOrderingFacade.h:106
block_idx_type::const_iterator block_iterator
Type for block iterators.
Definition: COrderingBase.h:68
base_type::set_type set_type
Definition: CBlockOrderingFacade.h:46
COrderingBase::block_iterator blockBegin() const
Definition: CBlockOrderingFacade.h:64
monom_type lead(const poly_type &poly, deg_type) const
Definition: CBlockOrderingFacade.h:101
std::vector< idx_type > block_idx_type
Type for block indices.
Definition: COrderingBase.h:65
#define PBORI_ASSERT(arg)
Definition: pbori_defs.h:118
base_type::comp_type comp_type
Definition: CBlockOrderingFacade.h:47
Definition: CDegreeCache.h:258
void appendBlock(COrderingBase::checked_idx_type idx)
Definition: CBlockOrderingFacade.h:67
CBlockOrderingFacade()
Default Constructor.
Definition: CBlockOrderingFacade.h:51
TermType dd_block_degree_lead(const CacheType &cache_mgr, const DegCacheMgr °_mgr, NaviType navi, Iterator block_iter, TermType init, SizeType degree, DescendingProperty prop)
Definition: pbori_routines_order.h:325
Definition: BooleSet.h:57
COrderingBase::block_iterator blockEnd() const
Definition: CBlockOrderingFacade.h:65
This class is just a wrapper for using variables from cudd's decicion diagram.
Definition: BooleMonomial.h:50
comp_type compare_terms(const TermType &lhs, const TermType &rhs, const BinOpType &idx_comparer) const
Comparison of monomials/expoinents template.
Definition: CBlockOrderingFacade.h:120
Definition: CCacheManagement.h:41
#define PBORI_UNLIKELY(expression)
Definition: pbori_defs.h:59
void clearBlocks()
Definition: CBlockOrderingFacade.h:80
This class defines CCheckedIdx.
Definition: CCheckedIdx.h:29
exp_type leadExp(const poly_type &poly, deg_type) const
Definition: CBlockOrderingFacade.h:112