Packets: optimized intrusive_ptr access; optimized PacketTypeMixin member parameters
[senf.git] / senf / Packets / PacketType.cti
index 1b7e693..4caed76 100644 (file)
@@ -46,7 +46,7 @@ prefix_ senf::PacketTypeBase::factory_t senf::PacketTypeBase::factory()
 
 template <class Self, class Registry>
 prefix_ senf::PacketInterpreterBase::optional_range
-senf::PacketTypeMixin<Self,Registry>::nextPacketRange(Packet const & p)
+senf::PacketTypeMixin<Self,Registry>::nextPacketRange(ConcretePacket<Self> const & p)
 {
     // Call the member defined in the specialization below
     return PacketTypeMixin<Self>::nextPacketRange(p);
@@ -54,11 +54,11 @@ senf::PacketTypeMixin<Self,Registry>::nextPacketRange(Packet const & p)
 
 template <class Self, class Registry>
 prefix_ senf::PacketInterpreterBase::factory_t
-senf::PacketTypeMixin<Self,Registry>::nextPacketType(Packet const & p)
+senf::PacketTypeMixin<Self,Registry>::nextPacketType(ConcretePacket<Self> const & p)
 {
     if (p.data().size() < Self::initSize())
         return Self::no_factory();
-    return lookup( Self::nextPacketKey(p.as< ConcretePacket<Self> >()) );
+    return lookup( Self::nextPacketKey(p) );
 }
 
 template <class Self, class Registry>
@@ -68,9 +68,9 @@ prefix_ senf::PacketInterpreterBase::size_type senf::PacketTypeMixin<Self,Regist
 }
 
 template <class Self, class Registry>
-prefix_ void senf::PacketTypeMixin<Self,Registry>::init(Packet const & p)
+prefix_ void senf::PacketTypeMixin<Self,Registry>::init(ConcretePacket<Self> const & p)
 {
-    p.as< ConcretePacket<Self> >()->init();
+    p->init();
 }
 
 template <class Self, class Registry>
@@ -83,7 +83,8 @@ senf::PacketTypeMixin<Self,Registry>::key(Packet const & p)
 template <class Self, class Registry>
 prefix_ senf::PacketTypeBase::factory_t senf::PacketTypeMixin<Self,Registry>::lookup(key_t key)
 {
-    PkReg_Entry const * entry (PacketRegistry<Registry>::lookup( key, senf::nothrow ));
+    typename PacketRegistry<Registry>::Entry const * entry (
+        PacketRegistry<Registry>::lookup( key, senf::nothrow ));
     return entry ? entry->factory() : PacketTypeBase::no_factory();
 }
 
@@ -97,9 +98,9 @@ prefix_ senf::PacketInterpreterBase::size_type senf::PacketTypeMixin<Self,void>:
 }
 
 template <class Self>
-prefix_ void senf::PacketTypeMixin<Self,void>::init(Packet const & p)
+prefix_ void senf::PacketTypeMixin<Self,void>::init(ConcretePacket<Self> const & p)
 {
-    p.as< ConcretePacket<Self> >()->init();
+    p->init();
 }
 
 ///////////////////////////////cti.e///////////////////////////////////////