X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FListBParser.cti;h=80e8c79eba7e0b513087486d450ae53bbc9e8fd3;hb=9bc655e14d2d8c204ed835896cb51e42d49bd68f;hp=7358fad0537ff9e0b739582d67a4c04a4989bb67;hpb=a266a7c438396cfea4c17f95d1556471dfcc2317;p=senf.git diff --git a/senf/Packets/ListBParser.cti b/senf/Packets/ListBParser.cti index 7358fad..80e8c79 100644 --- a/senf/Packets/ListBParser.cti +++ b/senf/Packets/ListBParser.cti @@ -74,19 +74,6 @@ prefix_ void senf::detail::ListBParser_Policy::init(dat // senf::detail::ListBParser_Policy template -prefix_ -senf::detail::ListBParser_Policy::container_policy:: -container_policy(parser_policy const & p) - : AuxPolicy (p) -{ - data_iterator const e (boost::next(parser_type::get(p).i(),parser_type::get(p).bytes())); - data_iterator i (AuxPolicy::adjust(parser_type::get(p).i(), parser_type::get(p).state())); - for( n_=0; i!=e; - ++n_, std::advance(i,senf::bytes(ElementParser(i,parser_type::get(p).state())))) ; - container_size_ = parser_type::get(p).data().size(); -} - -template prefix_ typename senf::detail::ListBParser_Policy::container_policy::size_type senf::detail::ListBParser_Policy::container_policy::bytes(data_iterator i, state_type s) @@ -157,10 +144,14 @@ update(container_type const & c) { if (container_size_ == c.data().size()) return; +#if 1 data_iterator i (AuxPolicy::adjust(c.i(), c.state())); data_iterator j (i); for (size_type n (n_); n; --n, std::advance(j,senf::bytes(ElementParser(j,c.state())))) ; aux( std::distance(i,j), c.i(), c.state() ); +#else + aux ( aux(c.i(),c.state()) + c.data().size() - container_size_, c.i(), c.state() ); +#endif container_size_ = c.data().size(); } @@ -196,7 +187,7 @@ next(container_type const & c, iterator_data & d) const { return boost::next( container_type::iterator::get(d).i(), - senf::bytes(ElementParser( container_type::iterator::get(d).i(), + senf::bytes(ElementParser( container_type::iterator::get(d).i(), c.state() )) ); }