Utils/Console: Add SENF_CONSOLE_REGISTER_ENUM 'key()' support
[senf.git] / senf / Packets / PacketRegistry.cti
index 2a519b5..b70af2a 100644 (file)
 ///////////////////////////////PacketRegistry..p///////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////
-// senf::PacketRegistry<Tag>::RegistrationProxy<PacketType>
+// senf::PacketRegistry<Tag>::ScopedRegistrationProxy<PacketType>
 
 template <class Tag>
 template <class PacketType>
-prefix_ senf::PacketRegistry<Tag>::RegistrationProxy<PacketType>::
-RegistrationProxy(typename Tag::key_t key)
+prefix_ senf::PacketRegistry<Tag>::ScopedRegistrationProxy<PacketType>::
+ScopedRegistrationProxy(typename Tag::key_t key, int priority)
 {
-    PacketRegistry<Tag>::template registerPacket<PacketType>(key);
+    PacketRegistry<Tag>::template registerPacket<PacketType>(key,priority);
+}
+
+template <class Tag>
+template <class PacketType>
+prefix_ senf::PacketRegistry<Tag>::ScopedRegistrationProxy<PacketType>::~ScopedRegistrationProxy()
+{
+    try {
+        PacketRegistry<Tag>::template unregisterPacket<PacketType>();
+    }
+    catch (PacketTypeNotRegisteredException & ex)
+    {}
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -46,9 +57,22 @@ RegistrationProxy(typename Tag::key_t key)
 
 template <class Tag>
 template <class PacketType>
-prefix_ void senf::PacketRegistry<Tag>::registerPacket(typename Tag::key_t key)
+prefix_ void senf::PacketRegistry<Tag>::registerPacket(typename Tag::key_t key, int priority)
+{
+    registry().registerPacket<PacketType>(key, priority);
+}
+
+template <class Tag>
+template <class PacketType>
+prefix_ void senf::PacketRegistry<Tag>::unregisterPacket()
+{
+    registry().unregisterPacket<PacketType>();
+}
+
+template <class Tag>
+prefix_ void senf::PacketRegistry<Tag>::unregisterPacket(typename Tag::key_t key, int priority)
 {
-    registry().registerPacket<PacketType>(key);
+    registry().unregisterPacket(key, priority);
 }
 
 template <class Tag>
@@ -79,14 +103,15 @@ senf::PacketRegistry<Tag>::key(Packet const & packet, NoThrow_t)
 }
 
 template <class Tag>
-prefix_ senf::PkReg_Entry const & senf::PacketRegistry<Tag>::lookup(typename Tag::key_t key)
+prefix_ typename senf::PacketRegistry<Tag>::Entry const &
+senf::PacketRegistry<Tag>::lookup(typename Tag::key_t key)
 {
     return registry().lookup(key);
 }
 
 template <class Tag>
-prefix_ senf::PkReg_Entry const * senf::PacketRegistry<Tag>::lookup(typename Tag::key_t key,
-                                                                    NoThrow_t)
+prefix_ typename senf::PacketRegistry<Tag>::Entry const *
+senf::PacketRegistry<Tag>::lookup(typename Tag::key_t key, NoThrow_t)
 {
     return registry().lookup(key,true);
 }
@@ -117,8 +142,7 @@ prefix_ typename senf::detail::PacketRegistryImpl<KeyType>::iterator
 senf::detail::PacketRegistryImpl<KeyType>::begin()
     const
 {
-    return boost::make_transform_iterator(
-        registry_.begin(), ::__gnu_cxx::select1st<typename PacketMap::value_type>());
+    return registry_.begin();
 }
 
 template <class KeyType>
@@ -126,8 +150,7 @@ prefix_ typename senf::detail::PacketRegistryImpl<KeyType>::iterator
 senf::detail::PacketRegistryImpl<KeyType>::end()
     const
 {
-    return boost::make_transform_iterator(
-        registry_.end(), ::__gnu_cxx::select1st<typename PacketMap::value_type>());
+    return registry_.end();
 }
 
 ///////////////////////////////PacketRegistry..e///////////////////////////////////////