16 #ifndef polybori_iterators_CExpIter_h_
17 #define polybori_iterators_CExpIter_h_
29 template <
class ExpType>
41 template <
class SequenceType>
56 template <
class Iterator>
57 void append(Iterator start, Iterator finish) {
58 while (start != finish){
59 m_result.push_back(*start);
69 template <
class NaviType,
class ExpType>
76 template <
class NaviType,
class ExpType>
78 public pbori_base<CExpIter<NaviType, ExpType> >::type {
89 base::m_getTerm.reserve(base::m_stack.size());
90 base::m_getTerm.append(base::begin(), base::end());
97 if (base::m_stack.markedOne()) {
98 base::m_stack.clearOne();
101 base::m_stack.next();
102 base::m_getTerm.resize( base::m_stack.size() == 0 ?
104 base::m_stack.size() - 1);
106 if (!base::m_stack.empty()) {
107 base::m_stack.followThen();
108 base::m_stack.terminate();
111 base::m_getTerm.reserve(base::m_stack.size());
112 base::m_getTerm.append(base::begin() + base::m_getTerm.size(), base::end());