Packet: optimized Packet.is<> member by removing dynamic_cast
[senf.git] / senf / Packets / PacketInterpreter.cti
index 469d617..459580b 100644 (file)
 // Interpreter chain access
 
 template <class Type>
-prefix_ bool senf::PacketInterpreterBase::is()
-{
-    // ensure that the template argument is included in the corresponding object file when linking:
-    { static typename PacketInterpreter<Type>::factory_t _ (PacketInterpreter<Type>::factory()); (void) _;}
-    return dynamic_cast< PacketInterpreter<Type>* >(this);
-}
-
-template <class Type>
 prefix_ typename senf::PacketInterpreter<Type>::ptr senf::PacketInterpreterBase::as()
 {
     // ensure that the template argument is included in the corresponding object file when linking:
@@ -103,14 +95,14 @@ senf::PacketInterpreter<PacketType>::create(ForwardReadableRange const & range)
 
 template <class PacketType>
 prefix_ typename senf::PacketInterpreter<PacketType>::ptr
-senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr packet)
+senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr const & packet)
 {
     return createAfter(packet, initSize());
 }
 
 template <class PacketType>
 prefix_ typename senf::PacketInterpreter<PacketType>::ptr
-senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr packet, senf::NoInit_t)
+senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr const & packet, senf::NoInit_t)
 {
     return createAfter(packet, 0, senf::noinit);
 }
@@ -157,7 +149,7 @@ senf::PacketInterpreter<PacketType>::create(detail::PacketImpl * impl, iterator
 template <class PacketType>
 prefix_ typename senf::PacketInterpreter<PacketType>::ptr
 senf::PacketInterpreter<PacketType>::create(detail::PacketImpl * impl, iterator b, iterator e,
-                                            PacketInterpreterBase::ptr before)
+                                            PacketInterpreterBase::ptr const & before)
 {
     return ptr(new PacketInterpreter(impl,b,e,before));
 }
@@ -178,7 +170,7 @@ template <class PacketType>
 prefix_
 senf::PacketInterpreter<PacketType>::PacketInterpreter(detail::PacketImpl * impl, iterator b,
                                                        iterator e,
-                                                       PacketInterpreterBase::ptr before)
+                                                       PacketInterpreterBase::ptr const & before)
     : PacketInterpreterBase(impl,b,e,before)
 {}