Utils: Removed ErrnoException and implemented generic Exception base-class
[senf.git] / Packets / PacketInterpreter.hh
index a4f8b26..80bb016 100644 (file)
@@ -1,6 +1,8 @@
-// Copyright (C) 2007 
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// $Id$
+//
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
 //     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
@@ -32,6 +34,7 @@
 #include <boost/type_traits/alignment_of.hpp>
 #include "../Utils/intrusive_refcount.hh"
 #include "../Utils/pool_alloc_mixin.hh"
+#include "../Utils/Tags.hh"
 #include "PacketData.hh"
 #include "../Utils/TypeIdValue.hh"
 
@@ -73,7 +76,6 @@ namespace senf {
 
         enum Append_t { Append };
         enum Prepend_t { Prepend };
-        enum NoInit_t { noinit };
 
         /** \brief Internal: Abstract packet factory
 
@@ -89,19 +91,19 @@ namespace senf {
             // Create completely new packet
 
             virtual ptr create() const = 0;
-            virtual ptr create(NoInit_t) const = 0;
+            virtual ptr create(senf::NoInit_t) const = 0;
             virtual ptr create(size_type size) const = 0;
-            virtual ptr create(size_type size, NoInit_t) const = 0;
+            virtual ptr create(size_type size, senf::NoInit_t) const = 0;
             template <class ForwardReadableRange>
             ptr create(ForwardReadableRange const & range) const;
             
             // Create packet as new packet after a given packet
 
             virtual ptr createAfter(PacketInterpreterBase::ptr packet) const = 0;
-            virtual ptr createAfter(PacketInterpreterBase::ptr packet, NoInit_t) const = 0;
+            virtual ptr createAfter(PacketInterpreterBase::ptr packet, senf::NoInit_t) const = 0;
             virtual ptr createAfter(PacketInterpreterBase::ptr packet, size_type size) const = 0;
             virtual ptr createAfter(PacketInterpreterBase::ptr packet, size_type size, 
-                                    NoInit_t) const = 0;
+                                    senf::NoInit_t) const = 0;
             template <class ForwardReadableRange>
             ptr createAfter(PacketInterpreterBase::ptr packet, 
                             ForwardReadableRange const & range) const;
@@ -109,7 +111,7 @@ namespace senf {
             // Create packet as new packet (header) const before a given packet
 
             virtual ptr createBefore(PacketInterpreterBase::ptr packet) const = 0;
-            virtual ptr createBefore(PacketInterpreterBase::ptr packet, NoInit_t) const = 0;
+            virtual ptr createBefore(PacketInterpreterBase::ptr packet, senf::NoInit_t) const = 0;
 
             // Parse next packet in chain
 
@@ -254,18 +256,18 @@ namespace senf {
         // Create completely new packet
 
         static ptr create();
-        static ptr create(NoInit_t);
+        static ptr create(senf::NoInit_t);
         static ptr create(size_type size);
-        static ptr create(size_type size, NoInit_t);
+        static ptr create(size_type size, senf::NoInit_t);
         template <class ForwardReadableRange>
         static ptr create(ForwardReadableRange const & range);
 
         // Create packet as new packet after a given packet
 
         static ptr createAfter(PacketInterpreterBase::ptr packet);
-        static ptr createAfter(PacketInterpreterBase::ptr packet, NoInit_t);
+        static ptr createAfter(PacketInterpreterBase::ptr packet, senf::NoInit_t);
         static ptr createAfter(PacketInterpreterBase::ptr packet, size_type size);
-        static ptr createAfter(PacketInterpreterBase::ptr packet, size_type size, NoInit_t);
+        static ptr createAfter(PacketInterpreterBase::ptr packet, size_type size, senf::NoInit_t);
         template <class ForwardReadableRange>
         static ptr createAfter(PacketInterpreterBase::ptr packet, 
                                ForwardReadableRange const & range);
@@ -273,7 +275,7 @@ namespace senf {
         // Create packet as new packet (header) before a given packet
 
         static ptr createBefore(PacketInterpreterBase::ptr packet);
-        static ptr createBefore(PacketInterpreterBase::ptr packet, NoInit_t);
+        static ptr createBefore(PacketInterpreterBase::ptr packet, senf::NoInit_t);
 
         // Create a clone of the current packet
 
@@ -331,27 +333,27 @@ namespace senf {
             // Create completely new packet
 
             virtual PacketInterpreterBase::ptr create() const;
-            virtual PacketInterpreterBase::ptr create(NoInit_t) const;
+            virtual PacketInterpreterBase::ptr create(senf::NoInit_t) const;
             virtual PacketInterpreterBase::ptr create(size_type size) const;
-            virtual PacketInterpreterBase::ptr create(size_type size,NoInit_t) const;
+            virtual PacketInterpreterBase::ptr create(size_type size,senf::NoInit_t) const;
             
             // Create packet as new packet after a given packet
 
             virtual PacketInterpreterBase::ptr createAfter(PacketInterpreterBase::ptr packet) 
                 const;
             virtual PacketInterpreterBase::ptr createAfter(PacketInterpreterBase::ptr packet, 
-                                                           NoInit_t) const;
+                                                           senf::NoInit_t) const;
             virtual PacketInterpreterBase::ptr createAfter(PacketInterpreterBase::ptr packet, 
                                                            size_type size) const;
             virtual PacketInterpreterBase::ptr createAfter(PacketInterpreterBase::ptr packet, 
-                                                           size_type size, NoInit_t) const;
+                                                           size_type size, senf::NoInit_t) const;
             
             // Create packet as new packet (header) before a given packet
 
             virtual PacketInterpreterBase::ptr createBefore(PacketInterpreterBase::ptr packet) 
                 const;
             virtual PacketInterpreterBase::ptr createBefore(PacketInterpreterBase::ptr packet,
-                                                            NoInit_t) 
+                                                            senf::NoInit_t) 
                 const;
 
             // Parse next packet in chain
@@ -377,8 +379,8 @@ namespace senf {
         This exception signals an invalid operation on the chain like trying to find a non-existent
         chain member and other similar error conditions. 
      */
-    struct InvalidPacketChainException : public std::exception
-    { virtual char const * what() const throw() { return "invalid packet chain"; } };
+    struct InvalidPacketChainException : public senf::Exception
+    { InvalidPacketChainException() : senf::Exception("invalid packet chain"){} };
     
 }