PPI: Checkin of first compiling (yet not working) version
[senf.git] / Packets / ParseArray.ih
index 3ced579..d07c26f 100644 (file)
@@ -1,6 +1,6 @@
 // $Id$
 //
-// Copyright (C) 2006 
+// Copyright (C) 2006
 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
 // Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
 //     Stefan Bund <stefan.bund@fokus.fraunhofer.de>
@@ -20,6 +20,9 @@
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
+/** \file
+    \brief ParseArray internal header */
+
 #ifndef IH_ParseArray_
 #define IH_ParseArray_ 1
 
 
 ///////////////////////////////ih.p////////////////////////////////////////
 
-template <class Parser, class Iterator>
-class senf::impl::Parse_Array_iterator
-    : public boost::iterator_facade< Parse_Array_iterator<Parser,Iterator>,
-                                     Parser,
+/** \brief Internal: Array and Vector iterator
+
+    \internal
+
+    This is the iterator type used for both Parse_Array and Parse_Vector. It is a model of random
+    access iterator.
+ */
+template <class ElementParser>
+class senf::detail::Parse_Array_iterator
+    : public boost::iterator_facade< Parse_Array_iterator<ElementParser>,
+                                     ElementParser,
                                      boost::random_access_traversal_tag,
-                                     Parser >
+                                     ElementParser >
 {
 public:
     Parse_Array_iterator();
-    explicit Parse_Array_iterator(Iterator const & i);
-    
+    Parse_Array_iterator(PacketParserBase::data_iterator const & i,
+                         PacketParserBase::state_type s);
+
     // Needed to elide the []-proxy of iterator_facade
-    Parser operator[](int i) const;
+    ElementParser operator[](int i) const;
 
-    Iterator raw() const;
+    PacketParserBase::data_iterator raw() const; ///< Return data_iterator
+                                        /**< Returns the raw data_iterator pointing to the beginning
+                                             of the current element */
 
 protected:
-    
+
 private:
     friend class boost::iterator_core_access;
     
-    Parser dereference() const;
+    // iterator_facade interface
+
+    ElementParser dereference() const;
     bool equal(Parse_Array_iterator const & other) const;
     int distance_to(Parse_Array_iterator const & other) const;
     void increment();
     void decrement();
     void advance(int n);
-    
-    Iterator i_;
-};        
+
+    PacketParserBase::data_iterator i_;
+    PacketParserBase::state_type s_;
+};
 
 ///////////////////////////////ih.e////////////////////////////////////////
 #endif
@@ -65,5 +81,10 @@ private:
 \f
 // Local Variables:
 // mode: c++
+// fill-column: 100
 // c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
 // End: