X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FStringParser.cti;fp=senf%2FPackets%2FStringParser.cci;h=36b3075c977a0598b93ef7f319bc65e20061774c;hb=a3f9296f648c4991a1576d4200abfdc72788bc16;hp=53966afe3ed311f1bee306fd16b3d91c9b8800e2;hpb=d1284f9a03b4e3a8624842ecd39304403f53a960;p=senf.git diff --git a/senf/Packets/StringParser.cci b/senf/Packets/StringParser.cti similarity index 61% rename from senf/Packets/StringParser.cci rename to senf/Packets/StringParser.cti index 53966af..36b3075 100644 --- a/senf/Packets/StringParser.cci +++ b/senf/Packets/StringParser.cti @@ -21,7 +21,7 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief StringParser inline non-template implementation */ + \brief StringParser inline template implementation */ //#include "StringParser.ih" @@ -30,43 +30,50 @@ #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// -prefix_ senf::StringParser::StringParser(data_iterator i, state_type s) +template +prefix_ senf::StringParser::StringParser(data_iterator i, state_type s) : PacketParserBase(i, s, init_bytes) {} -prefix_ senf::StringParser::size_type senf::StringParser::bytes() +template +prefix_ typename senf::StringParser::size_type senf::StringParser::bytes() const { - return parse(0)+2; + return length().value() + senf::bytes(length()); } -prefix_ senf::StringParser::value_type senf::StringParser::value() +template +prefix_ typename senf::StringParser::value_type senf::StringParser::value() const { validate(bytes()); - return std::string(i()+2, i()+bytes()); + return std::string(i()+senf::bytes(length()), i()+bytes()); } -prefix_ void senf::StringParser::value(value_type v) +template +prefix_ void senf::StringParser::value(value_type v) { validate(bytes()); - resize(bytes(), v.size()+2); + resize(bytes(), v.size()+senf::bytes(length())); parse(0) = v.size(); - std::copy(v.begin(), v.end(), i()+2); + std::copy(v.begin(), v.end(), i()+senf::bytes(length())); } -prefix_ senf::StringParser::operator value_type() +template +prefix_ senf::StringParser::operator value_type() const { return value(); } -prefix_ senf::StringParser const & senf::StringParser::operator=(value_type other) +template +prefix_ typename senf::StringParser const & senf::StringParser::operator=(value_type other) { value(other); return *this; } -prefix_ std::ostream & senf::operator<<(std::ostream & os, StringParser const & value) +template +prefix_ std::ostream & senf::operator<<(std::ostream & os, StringParser const & value) { os << value.value(); return os;