Packets: Add StringParser ostream operation
[senf.git] / Packets / 80221Bundle / TLVPacket.ct
index ea91f80..efae0f6 100644 (file)
 //#include "TLVPacket.ih"
 
 // Custom includes
-#include "TLVPacket.hh"
 
 #define prefix_
 ///////////////////////////////ct.p////////////////////////////////////////
 
-template <class TypeParser, class LengthParser>
-prefix_ void senf::TLVPacketType<TypeParser, LengthParser>::dump(packet p, std::ostream & os)
+template <class ForwardReadableRange>
+prefix_ void senf::GenericTLVPacketParser::value(ForwardReadableRange const &range)
 {
-    os << "TLVPacket:"
-       << std::dec
-       << "  type: " <<  unsigned(p->type()) << "\n"
-       << "  length: " << unsigned(p->length()) << "\n";
-}
-
-template <class TypeParser, class LengthParser>
-prefix_ void senf::TLVPacketType<TypeParser, LengthParser>::finalize(packet p)
-{
-    try {
-        PacketData::size_type size = p.next().data().size();
-        if ( size > LengthParser::max_value )
-            throw(UnsuportedTLVPacketException());
-        p->length() = size;
-    }
-    catch (InvalidPacketChainException & ex) {
-        ;
-    }
-}
-
-template <class TypeParser, class LengthParser>
-prefix_ senf::PacketParserBase::size_type senf::TLVPacketType<TypeParser, LengthParser>::initSize()
-{
-    return senf::init_bytes<TypeParser>::value + senf::init_bytes<LengthParser>::value;
-}
-
-template <class TypeParser, class LengthParser>
-prefix_ senf::PacketInterpreterBase::optional_range 
-senf::TLVPacketType<TypeParser, LengthParser>::nextPacketRange(packet p) 
-{
-    if (p.data().size() < 5)
-        return no_range();
-    return range(
-            boost::next(p.data().begin(), 4 + senf::bytes(p->length()) ),
-            p.data().end() );
+    safe_data_iterator si = resizeValue( boost::size(range) );   
+    std::copy( boost::begin(range), boost::end(range), si);
 }
 
 ///////////////////////////////ct.e////////////////////////////////////////