X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FListNParser.ct;h=5b19099c922b6fe354b1f16424d6a4fb0debede2;hb=3863d46dd898b7bc35ea8c6ccd8563b18762a6b6;hp=225bf52a352ce28a78a75a8f50795da9f97d815e;hpb=a1a6c76a214ad1935032826713cabaf9ac57bf07;p=senf.git diff --git a/Packets/ListNParser.ct b/Packets/ListNParser.ct index 225bf52..5b19099 100644 --- a/Packets/ListNParser.ct +++ b/Packets/ListNParser.ct @@ -31,36 +31,37 @@ #define prefix_ ///////////////////////////////ct.p//////////////////////////////////////// -template +template prefix_ void -senf::detail::ListNParser_Policy::iterator_policy:: -setFromPosition(iterator i, state_type s, iterator p) +senf::detail::ListNParser_Policy::setFromPosition(container_type const & c, + iterator_data & d, + data_iterator p) + const { - l_ = i; - if (p == data(s).end()) { - n_ = 0; + if (p == c.data().end()) { + d.n_ = 0; return; } - n_ = SizeParser(i,s); - iterator j (boost::next(i,SizeParser::fixed_bytes)); - for (; n_; --n_, j += ElementParser(j,s).bytes()) + d.n_ = this->aux(c.i(),c.state()); + data_iterator j (this->adjust(c.i(),c.state())); + for (; d.n_; --d.n_, j += ElementParser(j,c.state()).bytes()) if (j==p) return; SENF_ASSERT( false ); } -template -prefix_ typename senf::detail::ListNParser_Policy::iterator -senf::detail::ListNParser_Policy::iterator_policy::raw(iterator i, - state_type s) +template +prefix_ typename senf::detail::ListNParser_Policy::data_iterator +senf::detail::ListNParser_Policy::raw(container_type const & c, + iterator_data const & d) const { - if (i != data(s).end()) - return i; - size_type n (SizeParser(l_,s)); - iterator j (boost::next(l_,SizeParser::fixed_bytes)); + if (container_type::iterator::get(d).i() != c.data().end()) + return container_type::iterator::get(d).i(); + size_type n (this->aux(c.i(),c.state())); + data_iterator j (this->adjust(c.i(),c.state())); for (; n; --n) - j += ElementParser(j,s).bytes(); + j += ElementParser(j,c.state()).bytes(); return j; }