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;
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) ) {
140 while (start != finish){
141 result = result.change(**start);
150 template <
class TermType>
157 template <
class TermType>