X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FParseArray.cti;h=14d99cb574308c1c95afe734cadd255c073ea8b2;hb=81ffa1c459b96dd44472bcef37e1e373934ee138;hp=c932dd831e50463fefee8a64ce4335292ea42a86;hpb=c52cd7d87dbb525c1267aad27391b8b7365dbb57;p=senf.git diff --git a/Packets/ParseArray.cti b/Packets/ParseArray.cti index c932dd8..14d99cb 100644 --- a/Packets/ParseArray.cti +++ b/Packets/ParseArray.cti @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -20,7 +20,8 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// Definition of inline template functions +/** \file + \brief ParseArray inline template implementation */ #include "ParseArray.ih" @@ -36,163 +37,121 @@ #define prefix_ inline ///////////////////////////////cti.p/////////////////////////////////////// -template -prefix_ satcom::pkf::Parse_Array::Parse_Array() -{} +/////////////////////////////////////////////////////////////////////////// +// senf::Parse_Array -template -prefix_ -satcom::pkf::Parse_Array::Parse_Array(Iterator const & i) - : ParserBase(i) +template +prefix_ senf::Parse_Array::Parse_Array(data_iterator i, state_type s) + : PacketParserBase(i,s,fixed_bytes) {} -template -prefix_ unsigned satcom::pkf::Parse_Array::bytes() -{ - return elements*Parser::bytes(); -} - -template -prefix_ bool -satcom::pkf::Parse_Array::check(Iterator const & e) - const -{ - return e-this->i() >= bytes(); -} - -template -prefix_ void satcom::pkf::Parse_Array::init() - const -{ - iterator e=end(); - for (iterator i=begin(); i!=e; ++i) i->init(); -} - -/////////////////////////////////////////////////////////////////////////// +// Container interface -template -prefix_ typename satcom::pkf::Parse_Array::size_type -satcom::pkf::Parse_Array::size() +template +prefix_ typename senf::Parse_Array::size_type +senf::Parse_Array::size() { return elements; } -template -prefix_ typename satcom::pkf::Parse_Array::iterator -satcom::pkf::Parse_Array::begin() - const -{ - return iterator(this->i()); -} - -template -prefix_ typename satcom::pkf::Parse_Array::iterator -satcom::pkf::Parse_Array::end() - const -{ - return iterator(this->i()+bytes()); -} - -template -prefix_ typename satcom::pkf::Parse_Array::range_type -satcom::pkf::Parse_Array::range() +template +prefix_ typename senf::Parse_Array::iterator +senf::Parse_Array::begin() const { - return std::make_pair(begin(),end()); + return iterator(i(),state()); } -template -prefix_ typename satcom::pkf::Parse_Array::iterator -satcom::pkf::Parse_Array::value() +template +prefix_ typename senf::Parse_Array::iterator +senf::Parse_Array::end() const { - return begin(); + return iterator(boost::next(i(),fixed_bytes),state()); } -template -prefix_ typename satcom::pkf::Parse_Array::value_type -satcom::pkf::Parse_Array::operator[](difference_type i) +template +prefix_ typename senf::Parse_Array::value_type +senf::Parse_Array::operator[](difference_type i) const { + BOOST_ASSERT( i>=0 && i < difference_type(elements) ); return begin()[i]; } -template -template -prefix_ satcom::pkf::Parse_Array const & -satcom::pkf::Parse_Array::operator=(InputIterator const & i) -{ - copy_n(i,size(),begin()); -} - /////////////////////////////////////////////////////////////////////////// +// senf::detail::Parse_Array_iterator + +template +prefix_ senf::detail::Parse_Array_iterator::Parse_Array_iterator() + : i_() +{} + +template +prefix_ senf::detail::Parse_Array_iterator:: +Parse_Array_iterator(PacketParserBase::data_iterator const & i, PacketParserBase::state_type s) + : i_(i), s_(s) +{} -template -prefix_ Iterator satcom::pkf::impl::Parse_Array_iterator::raw() +template +prefix_ ElementParser +senf::detail::Parse_Array_iterator::operator[](int i) const { - return i_; + return (*this+i).dereference(); } -template -prefix_ Parser satcom::pkf::impl::Parse_Array_iterator::operator[](int i) +template +prefix_ senf::PacketParserBase::data_iterator +senf::detail::Parse_Array_iterator::raw() const { - return (*this+i).dereference(); + return i_; } -template -prefix_ satcom::pkf::impl::Parse_Array_iterator::Parse_Array_iterator() - : i_() -{} +// iterator_facade interface -template -prefix_ satcom::pkf::impl::Parse_Array_iterator:: -Parse_Array_iterator(Iterator const & i) - : i_(i) -{} - -template -prefix_ Parser -satcom::pkf::impl::Parse_Array_iterator::dereference() +template +prefix_ ElementParser +senf::detail::Parse_Array_iterator::dereference() const { - return Parser(i_); + return ElementParser(i_,s_); } -template -prefix_ bool satcom::pkf::impl::Parse_Array_iterator:: +template +prefix_ bool +senf::detail::Parse_Array_iterator:: equal(Parse_Array_iterator const & other) const { return i_==other.i_; } -template -prefix_ int satcom::pkf::impl::Parse_Array_iterator:: +template +prefix_ int senf::detail::Parse_Array_iterator:: distance_to(Parse_Array_iterator const & other) const { - return (other.i_-i_)/Parser::bytes(); + return (other.i_-i_)/ElementParser::fixed_bytes; } -template -prefix_ void satcom::pkf::impl::Parse_Array_iterator::increment() +template +prefix_ void senf::detail::Parse_Array_iterator::increment() { - i_ += Parser::bytes(); + i_ += ElementParser::fixed_bytes; } -template -prefix_ void satcom::pkf::impl::Parse_Array_iterator::decrement() +template +prefix_ void senf::detail::Parse_Array_iterator::decrement() { - i_ -= Parser::bytes(); + i_ -= ElementParser::fixed_bytes; } -template -prefix_ void -satcom::pkf::impl::Parse_Array_iterator::advance(int n) +template +prefix_ void senf::detail::Parse_Array_iterator::advance(int n) { - i_ += n*Parser::bytes(); + i_ += n*ElementParser::fixed_bytes; } #undef copy_n @@ -202,5 +161,10 @@ satcom::pkf::impl::Parse_Array_iterator::advance(int n) // Local Variables: // mode: c++ -// c-file-style: "satcom" +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: