X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FListBParser.cti;h=80a49147219cfc70fd0ac5a09ff2c9693376e8ec;hb=f13780e9e4da7df981d6f6542fbdc714beb34765;hp=ac603c3551f7e550cfa422d92991fb08dce27264;hpb=2e7dc69c3a63bac0a9df1abbcece62c03112a1ab;p=senf.git diff --git a/senf/Packets/ListBParser.cti b/senf/Packets/ListBParser.cti index ac603c3..80a4914 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) @@ -114,6 +101,20 @@ init(data_iterator i, state_type s) } template +prefix_ void +senf::detail::ListBParser_Policy::container_policy:: +construct(container_type & c) + const +{} + +template +prefix_ void +senf::detail::ListBParser_Policy::container_policy:: +destruct(container_type & c) + const +{} + +template prefix_ void senf::detail::ListBParser_Policy::container_policy:: erase(container_type & c, data_iterator p) { @@ -143,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(); }