X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FListBParser.cti;h=64c9fbc05a27f671a83a5b730659f91f30ad7e0e;hb=7ee689fe38d66aa3a0004d55e8708750d35adc0b;hp=7358fad0537ff9e0b739582d67a4c04a4989bb67;hpb=39597146fe0bb2cb6122439fc0c2b93abc095c02;p=senf.git diff --git a/senf/Packets/ListBParser.cti b/senf/Packets/ListBParser.cti index 7358fad..64c9fbc 100644 --- a/senf/Packets/ListBParser.cti +++ b/senf/Packets/ListBParser.cti @@ -28,9 +28,9 @@ // Custom includes #define prefix_ inline -///////////////////////////////cti.p/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::detail::ListBParser_Policy template @@ -70,29 +70,16 @@ prefix_ void senf::detail::ListBParser_Policy::init(dat AuxPolicy::aux(0,i,s); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // 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) const { - return AuxPolicy::aux(i,s) + AuxPolicy::aux_bytes; + return AuxPolicy::WrapperPolicy::aux(i,s) + AuxPolicy::aux_bytes; } template @@ -110,7 +97,7 @@ init(data_iterator i, state_type s) { n_ = 0; container_size_ = s->size(); - AuxPolicy::aux(0,i,s); + AuxPolicy::WrapperPolicy::aux(0,i,s); } template @@ -132,7 +119,8 @@ prefix_ void senf::detail::ListBParser_Policy::containe erase(container_type & c, data_iterator p) { size_type b (senf::bytes(ElementParser(p,c.state()))); - AuxPolicy::aux( AuxPolicy::aux(c.i(), c.state())-b, c.i(), c.state()); + AuxPolicy::WrapperPolicy::aux( + AuxPolicy::WrapperPolicy::aux(c.i(), c.state())-b, c.i(), c.state()); --n_; // The container will be reduced by b bytes directly after this call container_size_ = c.data().size()-b; @@ -144,7 +132,8 @@ senf::detail::ListBParser_Policy::container_policy:: insert(container_type & c, data_iterator p) { size_type b (senf::bytes(ElementParser(p,c.state()))); - AuxPolicy::aux( AuxPolicy::aux(c.i(), c.state())+b, c.i(), c.state()); + AuxPolicy::WrapperPolicy::aux( + AuxPolicy::WrapperPolicy::aux(c.i(), c.state())+b, c.i(), c.state()); ++n_; container_size_ = c.data().size(); } @@ -157,10 +146,14 @@ update(container_type const & c) { if (container_size_ == c.data().size()) return; - data_iterator i (AuxPolicy::adjust(c.i(), c.state())); +#if 1 + data_iterator i (AuxPolicy::WrapperPolicy::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(); } @@ -170,7 +163,7 @@ senf::detail::ListBParser_Policy::container_policy:: setBegin(container_type const & c, iterator_data & d) const { - return AuxPolicy::adjust(c.i(), c.state()); + return AuxPolicy::WrapperPolicy::adjust(c.i(), c.state()); } template @@ -179,7 +172,7 @@ senf::detail::ListBParser_Policy::container_policy:: setEnd(container_type const & c, iterator_data & d) const { - return boost::next(AuxPolicy::adjust(c.i(), c.state()),aux(c.i(),c.state())); + return boost::next(AuxPolicy::WrapperPolicy::adjust(c.i(), c.state()),aux(c.i(),c.state())); } template @@ -196,7 +189,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() )) ); } @@ -209,7 +202,7 @@ raw(container_type const & c, iterator_data const & d) return container_type::iterator::get(d).i(); } -///////////////////////////////cti.e/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_