17 #ifndef polybori_iterators_CTermGenerator_h_
18 #define polybori_iterators_CTermGenerator_h_
33 template <
class TermType,
class BehaviourTag>
38 template <
class TermType>
45 template <
class SequenceType>
49 result.reserve(seq.deg());
50 typename SequenceType::const_iterator
51 start(seq.begin()), finish(seq.end());
53 while (start != finish){
54 result.push_back(*start);
61 template <
class TermType>
67 template <
class SequenceType>
74 template <
class TermType>
80 template <
class SequenceType>
90 template <
class TermType>
111 template <
class SequenceType>
119 typedef typename value_type::ring_type ring_type;
122 value_type result((ring_type)(m_data));
124 typename SequenceType::stack_reverse_iterator
125 start(seq.stackRBegin()), finish(seq.stackREnd());
127 #ifndef PBORI_NO_TERMS_BY_TAIL
130 PBORI_ASSERT((start == finish) || !start->isConstant());
131 while((start != finish) &&
132 (start->elseBranch().isEmpty()) && (start->thenBranch() == navi) ) {
137 result = value_type(dd_type(m_data, navi));
140 while (start != finish){
141 result = result.change(**start);
150 template <
class TermType>
157 template <
class TermType>
value_type result_type
Definition: CTermGenerator.h:95
This class is just a wrapper for using variables for storing indices as interim data structure for Bo...
Definition: BooleExponent.h:34
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
TermType value_type
Definition: CTermGenerator.h:77
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
int deg_type
Definition: groebner_defs.h:42
BoolePolyRing data_type
Definition: CTermGenerator.h:100
result_type operator()(const SequenceType &seq) const
Definition: CTermGenerator.h:112
CTermGeneratorBase< TermType > base
Definition: CTermGenerator.h:161
CTermGeneratorBase__(const data_type &data)
CCuddCore * m_data; // non-save variant.
Definition: CTermGenerator.h:107
This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and v...
Definition: BoolePolyRing.h:40
BooleMonomial term_type
Definition: CTermGenerator.h:176
result_type operator()(const SequenceType &seq) const
Definition: CTermGenerator.h:46
base::data_type data_type
Definition: CTermGenerator.h:179
data_type m_data
Definition: CTermGenerator.h:104
Definition: CTermGenerator.h:158
TermType value_type
Definition: CTermGenerator.h:94
This class marks a given type.
Definition: pbori_func.h:613
value_type result_type
Definition: CTermGenerator.h:65
data_type::dd_type dd_type
Definition: CTermGenerator.h:101
class BooleSet dd_type
set decision diagram type
Definition: BoolePolyRing.h:62
CTermGenerator(const CTermGenerator &rhs)
Definition: CTermGenerator.h:182
BoolePolyRing data_type
Definition: CTermGenerator.h:163
Definition: CTermGenerator.h:151
Definition: CTermGenerator.h:34
#define PBORI_ASSERT(arg)
Definition: pbori_defs.h:118
CTermGeneratorBase__()
Definition: CTermGenerator.h:109
TermType value_type
Definition: CTermGenerator.h:42
TermType value_type
Definition: CTermGenerator.h:64
result_type operator()(const SequenceType &seq) const
Definition: CTermGenerator.h:68
result_type operator()(const SequenceType &seq) const
Definition: CTermGenerator.h:81
CTermGenerator(const data_type &data)
Definition: CTermGenerator.h:181
CTermGeneratorBase__< BooleMonomial, type_tag< BooleMonomial > > base
Definition: CTermGenerator.h:177
This class defines an iterator for navigating through then and else branches of ZDDs.
Definition: CCuddNavigator.h:36
This class is just a wrapper for using variables from cudd's decicion diagram.
Definition: BooleMonomial.h:50
value_type result_type
Definition: CTermGenerator.h:43
CTermGenerator(const CTermGenerator &rhs)
Definition: CTermGenerator.h:166
This struct contains type definitions to be used in library classes.
Definition: pbori_defs.h:269
value_type result_type
Definition: CTermGenerator.h:78
CTermGenerator(const data_type &)
Definition: CTermGenerator.h:165
CTermGenerator()
Definition: CTermGenerator.h:167