X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketImpl.cti;h=e3ec1eaf16fd7995add8f6c1bab119b55bc5e0fd;hb=87204d50de0c429f265aec817bc9efd9af816082;hp=1f2d79a74a8394f8e7e694697a7987e663fea3ad;hpb=51b10105e78a9ffee631223f50e63aa28bb5d2b4;p=senf.git diff --git a/Packets/PacketImpl.cti b/Packets/PacketImpl.cti index 1f2d79a..e3ec1ea 100644 --- a/Packets/PacketImpl.cti +++ b/Packets/PacketImpl.cti @@ -38,6 +38,21 @@ prefix_ senf::detail::AnnotationIndexer::AnnotationIndexer() : index_ (maxAnnotations++) { small().push_back(Small); + registry().push_back(this); +} + +/////////////////////////////////////////////////////////////////////////// +// senf::detail::AnnotationIndexer + + +template +prefix_ void senf::detail::AnnotationIndexer::v_dump(PacketImpl * p, + std::ostream & os) +{ + + os << " " << senf::prettyName(typeid(Annotation)) << ": "; + p->dumpAnnotation(os); + os << "\n"; } template @@ -57,12 +72,27 @@ prefix_ Annotation & senf::detail::GetAnnotation::get(Annotati return static_cast< TAnnotationP* >(e.p)->annotation; } +template +prefix_ void senf::detail::GetAnnotation::dump(AnnotationEntry & e, + std::ostream & os) +{ + if (!e.p) os << "no value"; + else os << get(e); +} + template prefix_ Annotation & senf::detail::GetAnnotation::get(AnnotationEntry & e) { return * static_cast(static_cast(& e.i)); } +template +prefix_ void senf::detail::GetAnnotation::dump(AnnotationEntry & e, + std::ostream & os) +{ + os << get(e); +} + /////////////////////////////////////////////////////////////////////////// // senf::detail::PacketImpl @@ -91,6 +121,13 @@ prefix_ Annotation & senf::detail::PacketImpl::annotation() annotations_[AnnotationIndexer::index()]); } +template +prefix_ void senf::detail::PacketImpl::dumpAnnotation(std::ostream & os) +{ + GetAnnotation::dump( + annotations_[AnnotationIndexer::index()], os); +} + ///////////////////////////////cti.e/////////////////////////////////////// #undef prefix_