49 template <
class ExpType>
61 template <
class SequenceType>
76 template <
class Iterator>
77 void append(Iterator start, Iterator finish) {
78 while (start != finish){
79 m_result.push_back(*start);
89 template <
class NaviType,
class ExpType>
90 struct pbori_base<
CExpIter<NaviType, ExpType> > {
92 typedef CTermStack<NaviType, std::forward_iterator_tag>
stack_type;
96 template <
class NaviType,
class ExpType>
98 public pbori_base<CExpIter<NaviType, ExpType> >::type {
105 typedef typename pbori_base<self>::type
base;
109 base::m_getTerm.reserve(base::m_stack.size());
110 base::m_getTerm.append(base::begin(), base::end());
118 assert(!base::m_stack.empty());
119 if (base::m_stack.markedOne()) {
120 base::m_stack.clearOne();
123 base::m_stack.next();
124 base::m_getTerm.resize( base::m_stack.size() == 0 ?
126 base::m_stack.size() - 1);
128 if (!base::m_stack.empty()) {
129 base::m_stack.followThen();
130 base::m_stack.terminate();
133 base::m_getTerm.reserve(base::m_stack.size());
134 base::m_getTerm.append(base::begin() + base::m_getTerm.size(), base::end());