15 #ifndef polybori_iterators_COrderedIter_h_
16 #define polybori_iterators_COrderedIter_h_
33 template <
class NavigatorType>
42 virtual void increment() = 0;
43 virtual core_pointer copy()
const = 0;
50 template <
class StackType>
62 template <
class MgrType>
71 core_pointer
copy()
const {
72 return core_pointer(
new self(*
this));
111 template <
class NavigatorType,
class MonomType>
113 public boost::iterator_facade<
114 COrderedIter<NavigatorType, MonomType>,
115 MonomType, std::forward_iterator_tag, MonomType
146 const term_generator & getTerm):
147 m_getTerm(getTerm), p_iter(rhs) {}
153 return p_iter->equal(*rhs.p_iter); }
157 if (!p_iter.unique()) {
158 core_pointer tmp(p_iter->copy());
166 bool_type
isOne()
const {
return p_iter->isOne(); }
169 bool_type
isZero()
const {
return p_iter->isZero(); }
172 bool_type
isEnd()
const {
return isZero(); }
177 return m_getTerm(*p_iter);
180 const_iterator
begin()
const {
return p_iter->begin(); }
181 const_iterator
end()
const {
return p_iter->end(); }
185 deg_type
deg()
const {
return p_iter->deg(); }
190 return p_iter->navigation();
202 template <
class OrderType,
class NavigatorType,
class MonomType>
217 template <
class MgrType>
219 base( core_pointer(new ordered_iter_type(navi, gen) ), gen) {}
226 template <
class OrderType,
class NavigatorType>
241 template <
class MgrType>
243 base( core_pointer(new ordered_iter_type(navi, mgr)),
244 term_generator() ) {}
boost::indirect_iterator< typename stack_type::const_iterator, typename navigator::value_type, boost::use_default, typename navigator::reference > const_iterator
Definition: CTermStack.h:156
NavigatorType navigator
Definition: COrderedIter.h:36
CWrappedStack< ordered_iter_base > ordered_iter_type
Definition: COrderedIter.h:233
CGenericOrderedIter(const CGenericOrderedIter &rhs)
Definition: COrderedIter.h:223
CStackSelector< OrderType, NavigatorType, stack_base >::type ordered_iter_base
Definition: COrderedIter.h:208
This class is just a wrapper for using variables for storing indices as interim data structure for Bo...
Definition: BooleExponent.h:34
deg_type deg() const
Definition: COrderedIter.h:185
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
term_generator m_getTerm
The functional which defines the dereferecing operation.
Definition: COrderedIter.h:195
base::core_pointer core_pointer
Definition: COrderedIter.h:213
base::term_generator term_generator
Definition: COrderedIter.h:239
boost::shared_ptr< iterator_core > core_pointer
Definition: COrderedIter.h:60
core_pointer p_iter
A shared pointer to the stack, which carries the current path.
Definition: COrderedIter.h:198
CTermGenerator< MonomType > term_generator
Type for functional, which generates actual term, for current path.
Definition: COrderedIter.h:125
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
CWrappedStack< ordered_iter_base > ordered_iter_type
Definition: COrderedIter.h:209
void increment()
Incrementation.
Definition: COrderedIter.h:156
CTermStackBase< NavigatorType, stack_base > iterator_core
Definition: COrderedIter.h:122
idx_type firstIndex() const
Definition: COrderedIter.h:186
StackType base
Definition: COrderedIter.h:54
iterator_core::size_type size_type
Definition: COrderedIter.h:130
CAbstractStackBase< NavigatorType > stack_base
Definition: COrderedIter.h:206
COrderedIter(core_pointer rhs, const term_generator &getTerm)
Definition: COrderedIter.h:145
NavigatorType navigator
Fix type of direct iterator.
Definition: COrderedIter.h:136
COrderedIter< NavigatorType, BooleExponent > base
Definition: COrderedIter.h:235
iterator_core::const_iterator const_iterator
Definition: COrderedIter.h:127
on_same_type< block_prop, valid_tag, block_type, nonblock_type >::type type
The resulting type for iterator's stack.
Definition: CStackSelector.h:67
CAbstractStackBase< NavigatorType > stack_base
Definition: COrderedIter.h:121
CGenericOrderedIter(const CGenericOrderedIter &rhs)
Definition: COrderedIter.h:249
Definition: COrderedIter.h:34
CWrappedStack(navigator navi, const MgrType &mgr)
Definition: COrderedIter.h:63
CStackSelector< OrderType, NavigatorType, stack_base >::type ordered_iter_base
Definition: COrderedIter.h:232
MonomType dereference() const
Dereferencing operation.
Definition: COrderedIter.h:175
base::navigator navigator
Definition: COrderedIter.h:57
Definition: BoolePolynomial.h:63
boost::indirect_iterator< typename stack_type::const_reverse_iterator, typename navigator::value_type, boost::use_default, typename navigator::reference > const_reverse_iterator
Definition: CTermStack.h:166
navigator navigation() const
Get navigator of term start.
Definition: COrderedIter.h:189
navigator::idx_type idx_type
Type for indices.
Definition: CTermStack.h:138
base::iterator_core iterator_core
Definition: COrderedIter.h:236
iterator_core::const_reverse_iterator const_reverse_iterator
Definition: COrderedIter.h:129
base::core_pointer core_pointer
Definition: COrderedIter.h:237
boost::shared_ptr< iterator_core > core_pointer
Definition: COrderedIter.h:139
iterator_core::deg_type deg_type
Definition: COrderedIter.h:131
base::iterator_core iterator_core
Definition: COrderedIter.h:212
const_iterator end() const
Definition: COrderedIter.h:181
CTermStackBase< NavigatorType, self > iterator_core
Definition: COrderedIter.h:39
CGenericOrderedIter(NavigatorType navi, const MgrType &mgr)
Definition: COrderedIter.h:242
const_reverse_iterator rend() const
Definition: COrderedIter.h:183
virtual ~CAbstractStackBase()
Definition: COrderedIter.h:45
core_pointer copy() const
Definition: COrderedIter.h:71
iterator_core::idx_type idx_type
Definition: COrderedIter.h:132
navigator::size_type size_type
Type for lengths.
Definition: CTermStack.h:141
bool equal(const self &rhs) const
Definition: COrderedIter.h:152
CWrappedStack(const self &rhs)
Definition: COrderedIter.h:68
base::term_generator term_generator
Definition: COrderedIter.h:215
COrderedIter< NavigatorType, MonomType > base
Definition: COrderedIter.h:211
~COrderedIter()
Definition: COrderedIter.h:150
This class defines an iterator for the monomials in a Boolean polynomial.
Definition: CTermStack.h:126
Definition: COrderedIter.h:51
bool_type isEnd() const
Check, whether end of iteration is reached.
Definition: COrderedIter.h:172
boost::shared_ptr< iterator_core > core_pointer
Definition: COrderedIter.h:40
base::iterator_core iterator_core
Definition: COrderedIter.h:59
const_reverse_iterator rbegin() const
Definition: COrderedIter.h:182
CAbstractStackBase< NavigatorType > stack_base
Definition: COrderedIter.h:230
bool bool_type
Extract plain Boolean type.
Definition: COrderedIter.h:142
const_iterator begin() const
Definition: COrderedIter.h:180
Definition: COrderedIter.h:203
bool_type isZero() const
Determine whether term is zero (without explicit constructing)
Definition: COrderedIter.h:169
bool_type isOne() const
Determine whether term is one (without explicit constructing)
Definition: COrderedIter.h:166
CGenericOrderedIter(NavigatorType navi, const MgrType &gen)
Definition: COrderedIter.h:218
navigator::deg_type deg_type
Definition: CTermStack.h:142