Introduce automatic version stamping in the documentation
[senf.git] / Packets / ParseListS.hh
index a480be6..87b7082 100644 (file)
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
+/** \file
+
+    \idea Add an optional state to the sentinel and an optional
+    transition function. See ParseListS.hh for more.
+
+    We should write a baseclass for sentinels which has no \c check()
+    member, en empty \c next() member and \c void as the state
+    type. This simplifies writing simple sentinels.
+
+    The parse_listS iterator will have to pass the state in addition
+    to the current list element to \c check(). The \c next() member
+    will be invoked to advance the iterator. It is passer the current
+    element and a (non-const) reference to the state which it may
+    update. The Parse_ListS constructor must take an arbitrary number
+    of additional arguments which are forwarded to the state
+    initialization. 
+    
+    This structure makes it simple to optimize away the overhead if
+    the state type is void. If we would always instantiate the
+    sentinel, this will always take up space.
+
+    Another possibility would be to always instantiate the sentinel
+    and make the baseclass mandatory. The baseclass would then hold
+    the current raw iterator. The iterator itself would ONLY include a
+    single sentinel instance .. I think, this is the best solution,
+    sentinel members then have intrinsic access to the
+    state. Arguments are forwarded from the list constructor to the
+    Sentinel constructor.
+ */
+
 #ifndef HH_ParseListS_
 #define HH_ParseListS_ 1