85 ItTokenizer(Iterator bit, Iterator eit)
86 : m_bit(bit), m_eit(eit), m_tok_eit(bit)
89 void setSource(Iterator bit, Iterator eit)
95 template<
typename DelimCont>
96 void setDelimList(
const DelimCont& cont)
98 m_delimPred.setDelimList(cont);
100 template<
typename It>
101 void setDelimList(It bit, It eit)
103 m_delimPred.setDelimList(bit, eit);
105 template<
typename DestCont>
106 bool next(DestCont& dst)
108 dst.erase(dst.begin(), dst.end());
109 if(m_tok_eit == m_eit)
111 m_tok_eit = std::find_if(m_bit, m_eit, m_delimPred);
113 if(m_tok_eit != m_eit)
114 m_matched = *m_tok_eit;
115 std::copy(m_bit, m_tok_eit, std::back_inserter<DestCont>(dst));
116 m_bit = (m_tok_eit != m_eit && ++m_tok_eit != m_eit ? m_tok_eit :m_eit);
119 const value_type& matched()
const
123 void addDelim(
const value_type& value)
125 m_delimPred.addDelim(value);
127 void removeDelim(
const value_type& value)
129 m_delimPred.removeDelim(value);
132 Iterator m_bit, m_eit, m_tok_eit;
133 IsDelim<value_type> m_delimPred;
134 value_type m_matched;
140struct ContTokenizer:
public ItTokenizer<typename Container::const_iterator,typename Container::value_type>
142 typedef typename Container::value_type value_type;
143 typedef typename Container::iterator iterator;
144 typedef typename Container::const_iterator const_iterator;
148 ContTokenizer(
const Container* cont)
149 : ItTokenizer<const_iterator, value_type>(cont->begin(), cont->end())
152 template<
typename DelimCont>
153 ContTokenizer(
const Container* cont,
const DelimCont& delims)
154 : ItTokenizer<const_iterator,value_type>(cont->begin(), cont->end())
156 this->setDelimList(delims);
158 void setSource(
const Container* cont)
160 ItTokenizer<const_iterator,value_type>::setSource(cont->begin(), cont->end());
163 ContTokenizer(
const ContTokenizer&);
164 ContTokenizer& operator=(
const ContTokenizer&);