X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacketRegistry.ct;h=df12669c66f66343afd303ed313b8ecd16a5f62e;hb=eb83d096ce313989c3588c1cb6663caa513fb370;hp=4d82e3644cc9fad720cd80629a4c52a5eac14fd3;hpb=6c3e14487152691aeaecf210e324225a1168dff4;p=senf.git diff --git a/senf/Packets/PacketRegistry.ct b/senf/Packets/PacketRegistry.ct index 4d82e36..df12669 100644 --- a/senf/Packets/PacketRegistry.ct +++ b/senf/Packets/PacketRegistry.ct @@ -28,6 +28,8 @@ // Custom includes #include #include +#include +#include #include #define prefix_ @@ -126,12 +128,60 @@ senf::detail::PacketRegistryImpl::lookup(key_t key, bool) } template +prefix_ bool senf::detail::PacketRegistryImpl::v_empty() + const +{ + return registry_.empty(); +} + +template prefix_ void senf::detail::PacketRegistryImpl::v_dump(std::ostream & os) + const { typename PacketMap::const_iterator i (registry_.begin()); typename PacketMap::const_iterator const i_end (registry_.end()); - for (; i != i_end; ++i) - os << i->first << " " << i->second->name() << "\n"; + for (; i != i_end; ++i) { + std::string n (i->second->name()); + senf::detail::DumpKey::dump(i->first, os); + os << ' ' << n.substr(21,n.size()-22) << "\n"; + } +} + +template +prefix_ void senf::detail::PacketRegistryImpl::v_clear() +{ + registry_.clear(); + reverseRegistry_.clear(); +} + +/////////////////////////////////////////////////////////////////////////// +// senf::detail::DumpKey + +template +prefix_ void senf::detail::DumpKey::dump(KeyType const & v, + std::ostream & os) +{ + os << " " << std::setw(16) << std::left << v << std::setw(0) << std::right; +} + +// senf::detail::DumpKey + +template +prefix_ void senf::detail::DumpKey::dump(KeyType const & v, std::ostream & os) +{ + int bytes ((std::numeric_limits::digits+7)/8); + int digs (int(2.4*bytes)+1); + + os << " 0x" << std::setw(2*bytes) << std::setfill('0') << std::hex + << typename senf::detail::CharToInt::type (v) + << " (" << std::setw(digs) << std::setfill(' ') << std::dec + << typename senf::detail::CharToInt::type (v) + << ") ("; + for (int i (bytes-1); i>=0; --i) { + char c ((v>>(8*i))&0xff); + os << ((c>=32 && c<=127) ? c : '.'); + } + os << ')'; } ///////////////////////////////ct.e////////////////////////////////////////