Packets/80211Bundle: integrated GenericTLVRegistry
[senf.git] / senf / Packets / ListParser.cti
index a16ed88..0aa24ea 100644 (file)
@@ -84,7 +84,7 @@ senf::ListParser<ListPolicy>::front()
 
 template <class ListPolicy>
 template <class Value>
-prefix_ void senf::ListParser<ListPolicy>::push_back(Value value, size_type n)
+prefix_ void senf::ListParser<ListPolicy>::push_back(Value const & value, size_type n)
     const
 {
     container c(*this);
@@ -92,16 +92,17 @@ prefix_ void senf::ListParser<ListPolicy>::push_back(Value value, size_type n)
 }
 
 template <class ListPolicy>
-prefix_ void senf::ListParser<ListPolicy>::push_back_space(size_type n)
+prefix_ typename senf::ListParser<ListPolicy>::value_type
+senf::ListParser<ListPolicy>::push_back_space(size_type n)
     const
 {
     container c(*this);
-    c.push_back_space(n);
+    return c.push_back_space(n);
 }
 
 template <class ListPolicy>
 template <class Value>
-prefix_ void senf::ListParser<ListPolicy>::push_front(Value value, size_type n)
+prefix_ void senf::ListParser<ListPolicy>::push_front(Value const & value, size_type n)
     const
 {
     container c(*this);
@@ -109,11 +110,12 @@ prefix_ void senf::ListParser<ListPolicy>::push_front(Value value, size_type n)
 }
 
 template <class ListPolicy>
-prefix_ void senf::ListParser<ListPolicy>::push_front_space(size_type n)
+prefix_ typename senf::ListParser<ListPolicy>::value_type
+senf::ListParser<ListPolicy>::push_front_space(size_type n)
     const
 {
     container c(*this);
-    c.push_front_space(n);
+    return c.push_front_space(n);
 }
 
 template <class ListPolicy>
@@ -222,12 +224,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
@@ -298,30 +303,32 @@ prefix_ void senf::ListParser_Container<ListPolicy>::erase(iterator f, iterator
 
 template <class ListPolicy>
 template <class Value>
-prefix_ void senf::ListParser_Container<ListPolicy>::push_back(Value value,
+prefix_ void senf::ListParser_Container<ListPolicy>::push_back(Value const & value,
                                                                size_type n)
 {
     insert(end(),n,value);
 }
 
 template <class ListPolicy>
-prefix_ void senf::ListParser_Container<ListPolicy>::push_back_space(size_type n)
+prefix_ typename senf::ListParser_Container<ListPolicy>::value_type
+senf::ListParser_Container<ListPolicy>::push_back_space(size_type n)
 {
-    shift(end(),n);
+    return shift(end(),n);
 }
 
 template <class ListPolicy>
 template <class Value>
-prefix_ void senf::ListParser_Container<ListPolicy>::push_front(Value value,
+prefix_ void senf::ListParser_Container<ListPolicy>::push_front(Value const & value,
                                                                 size_type n)
 {
     insert(begin(),n,value);
 }
 
 template <class ListPolicy>
-prefix_ void senf::ListParser_Container<ListPolicy>::push_front_space(size_type n)
+prefix_ typename senf::ListParser_Container<ListPolicy>::value_type
+senf::ListParser_Container<ListPolicy>::push_front_space(size_type n)
 {
-    shift(begin(),n);
+    return shift(begin(),n);
 }
 
 // Parser interface