X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketImpl.hh;h=0ad1e77f847caa6ddc5c7d8585c565af6afaa311;hb=1e7062482bb6d99a0c36b641069c73a4a93da9cc;hp=667eebb151ec9e237711d89891ac433b4b6109a9;hpb=6a0836b7f462d3d77b79b35638cdbf4c9d4202fc;p=senf.git diff --git a/Packets/PacketImpl.hh b/Packets/PacketImpl.hh index 667eebb..0ad1e77 100644 --- a/Packets/PacketImpl.hh +++ b/Packets/PacketImpl.hh @@ -23,8 +23,8 @@ /** \file \brief PacketImpl public header */ -#ifndef HH_PacketImpl_ -#define HH_PacketImpl_ 1 +#ifndef HH_SENF_Packets_PacketImpl_ +#define HH_SENF_Packets_PacketImpl_ 1 // Custom includes #include @@ -82,8 +82,13 @@ namespace detail { struct AnnotationIndexerBase { + virtual ~AnnotationIndexerBase(); + virtual void v_dump(PacketImpl * p, std::ostream & os) = 0; + static unsigned maxAnnotations; static std::vector & small(); + static std::vector & registry(); + static void dump(PacketImpl * p, std::ostream & os); }; template @@ -92,11 +97,13 @@ namespace detail { public AnnotationIndexerBase { AnnotationIndexer(); + virtual void v_dump(PacketImpl * p, std::ostream & os); unsigned index_; static unsigned index(); static bool const Complex = boost::is_base_of::value; static bool const Small = (sizeof(Annotation) <= sizeof(AnnotationEntry) && ! Complex); +# if 0 // The test is difficult since it does not work with user-defined trivial constructors # ifdef BOOST_HAS_TYPE_TRAITS_INTRINSICS BOOST_STATIC_ASSERT(( (boost::has_trivial_constructor::value @@ -104,18 +111,21 @@ namespace detail { || Complex )); # endif +# endif }; template ::Small> struct GetAnnotation { static Annotation & get(AnnotationEntry & e); + static void dump(AnnotationEntry & e, std::ostream & os); }; template struct GetAnnotation { static Annotation & get(AnnotationEntry & e); + static void dump(AnnotationEntry & e, std::ostream & os); }; /** \brief Internal: Packet data storage @@ -183,9 +193,15 @@ namespace detail { void erase(PacketData * self, iterator first, iterator last); void clear(PacketData * self); + void reserve(size_type n); + size_type capacity() const; + // Annotations template Annotation & annotation(); + void dumpAnnotations(std::ostream & os); + template + void dumpAnnotation(std::ostream & os); /** \brief Internal: Keep PacketImpl instance alive @@ -217,8 +233,8 @@ namespace detail { ///////////////////////////////hh.e//////////////////////////////////////// #endif -#if !defined(HH_Packets__decls_) && !defined(HH_PacketImpl_i_) -#define HH_PacketImpl_i_ +#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_PacketImpl_i_) +#define HH_SENF_Packets_PacketImpl_i_ #include "PacketImpl.cci" //#include "PacketImpl.ct" #include "PacketImpl.cti"