Packets: Add construct()/destruct() list container-wrapper policy members
g0dil [Mon, 24 Aug 2009 20:29:18 +0000 (20:29 +0000)]
git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@1333 270642c3-0616-0410-b53a-bc976706d245

senf/Packets/ListBParser.cti
senf/Packets/ListBParser.ih
senf/Packets/ListNParser.cti
senf/Packets/ListNParser.ih
senf/Packets/ListParser.cti

index ac603c3..7358fad 100644 (file)
@@ -114,6 +114,20 @@ init(data_iterator i, state_type s)
 }
 
 template <class ElementParser, class AuxPolicy>
+prefix_ void
+senf::detail::ListBParser_Policy<ElementParser,AuxPolicy>::container_policy::
+construct(container_type & c)
+    const
+{}
+
+template <class ElementParser, class AuxPolicy>
+prefix_ void
+senf::detail::ListBParser_Policy<ElementParser,AuxPolicy>::container_policy::
+destruct(container_type & c)
+    const
+{}
+
+template <class ElementParser, class AuxPolicy>
 prefix_ void senf::detail::ListBParser_Policy<ElementParser,AuxPolicy>::container_policy::
 erase(container_type & c, data_iterator p)
 {
index fe61177..d8f7b11 100644 (file)
@@ -107,9 +107,11 @@ namespace detail {
             size_type size   (data_iterator i, state_type s) const;
             void      init   (data_iterator i, state_type s);
 
-            void      erase  (container_type & c, data_iterator p);
-            void      insert (container_type & c, data_iterator p);
-            void      update (container_type const & c) const;
+            void      construct (container_type & c) const;
+            void      destruct  (container_type & c) const;
+            void      erase     (container_type & c, data_iterator p);
+            void      insert    (container_type & c, data_iterator p);
+            void      update    (container_type const & c) const;
 
             /** \brief Internal: ListBParser specific iterator data */
             struct iterator_data {};
index ca46454..c10b375 100644 (file)
@@ -68,6 +68,18 @@ prefix_ void senf::detail::ListNParser_Policy<ElementParser,AuxPolicy>::init(dat
 
 template <class ElementParser, class AuxPolicy>
 prefix_ void
+senf::detail::ListNParser_Policy<ElementParser,AuxPolicy>::construct(container_type & c)
+    const
+{}
+
+template <class ElementParser, class AuxPolicy>
+prefix_ void
+senf::detail::ListNParser_Policy<ElementParser,AuxPolicy>::destruct(container_type & c)
+    const
+{}
+
+template <class ElementParser, class AuxPolicy>
+prefix_ void
 senf::detail::ListNParser_Policy<ElementParser,AuxPolicy>::erase(container_type & c,
                                                                  data_iterator p)
     const
index db54348..f50bbfd 100644 (file)
@@ -58,9 +58,11 @@ namespace detail {
         size_type size   (data_iterator i, state_type s) const;
         void      init   (data_iterator i, state_type s) const;
         
-        void      erase  (container_type & c, data_iterator p) const;
-        void      insert (container_type & c, data_iterator p) const;
-        void      update (container_type const & c) const;
+        void      construct (container_type & c) const;
+        void      destruct  (container_type & c) const;
+        void      erase     (container_type & c, data_iterator p) const;
+        void      insert    (container_type & c, data_iterator p) const;
+        void      update    (container_type const & c) const;
 
         /** Internal: ListNParser iterator specific data */
         struct iterator_data {
index a16ed88..286c325 100644 (file)
@@ -222,12 +222,15 @@ prefix_ senf::ListParser_Container<ListPolicy>::
 ListParser_Container(parser_type const & list)
     : ListPolicy(static_cast<typename parser_type::policy const &>(list)),
       state_(list.state()), i_(std::distance(data().begin(),list.i()))
-{}
+{
+    ListPolicy::construct(*this);
+}
 
 template <class ListPolicy>
 prefix_ senf::ListParser_Container<ListPolicy>::~ListParser_Container()
 {
     ListPolicy::update(*this);
+    ListPolicy::destruct(*this);
 }
 
 // Accessors