]> granicus.if.org Git - re2c/commitdiff
Moved another utility class to a separate file in 'src/util/'.
authorUlya Trofimovich <skvadrik@gmail.com>
Thu, 28 May 2015 17:40:41 +0000 (18:40 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Thu, 28 May 2015 17:40:41 +0000 (18:40 +0100)
re2c/Makefile.am
re2c/src/codegen/skeleton/skeleton.h
re2c/src/util/wrap_iterator.h [new file with mode: 0644]

index 6bebdbca921781458f68176c0c69663440ec00b1..285c00383f30dfde9cb06d300d7d7e347f3a956d 100644 (file)
@@ -64,7 +64,8 @@ SRC_HDR = \
        $(srcdir)/src/util/local_increment.h \
        $(srcdir)/src/util/range.h \
        $(srcdir)/src/util/smart_ptr.h \
-       $(srcdir)/src/util/substr.h
+       $(srcdir)/src/util/substr.h \
+       $(srcdir)/src/util/wrap_iterator.h
 
 SRC = \
        $(SRC_SCANNER) \
index f0680410c14f449677ee5063a030aed28735b107..2f0d7c117cad07998b0a2cac18848ab4b0c08847 100644 (file)
@@ -8,6 +8,7 @@
 #include "src/util/c99_stdint.h"
 #include "src/util/forbid_copy.h"
 #include "src/util/local_increment.h"
+#include "src/util/wrap_iterator.h"
 
 namespace re2c
 {
@@ -31,44 +32,12 @@ struct Path
        void append (const Path * p);
 };
 
-template <typename container_t>
-class wrap_iter_t
-{
-       container_t & cont;
-       typename container_t::iterator iter;
-       bool wrapped;
-
-public:
-       wrap_iter_t (container_t & c)
-               : cont (c)
-               , iter (cont.begin ())
-               , wrapped (false)
-       {}
-       bool end () const
-       {
-               return wrapped;
-       }
-       wrap_iter_t & operator ++ ()
-       {
-               if (++iter == cont.end ())
-               {
-                       iter = cont.begin ();
-                       wrapped = true;
-               }
-               return * this;
-       }
-       typename container_t::value_type * operator -> ()
-       {
-               return iter.operator -> ();
-       }
-};
-
 struct Node
 {
        typedef std::map<const State *, Node *> s2n_map;
        typedef std::map<Node *, std::vector<uint32_t> > arcs_t;
        typedef local_increment_t<uint8_t> local_inc;
-       typedef wrap_iter_t<arcs_t> wrap_iter;
+       typedef wrap_iterator_t<arcs_t> wrap_iter;
 
        // outgoing arcs
        arcs_t arcs;
diff --git a/re2c/src/util/wrap_iterator.h b/re2c/src/util/wrap_iterator.h
new file mode 100644 (file)
index 0000000..1616683
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef __WRAP_ITERATOR__
+#define __WRAP_ITERATOR__
+
+namespace re2c
+{
+
+template <typename container_t>
+class wrap_iterator_t
+{
+       container_t & cont;
+       typename container_t::iterator iter;
+       bool wrapped;
+
+public:
+       wrap_iterator_t (container_t & c)
+               : cont (c)
+               , iter (cont.begin ())
+               , wrapped (false)
+       {}
+       bool end () const
+       {
+               return wrapped;
+       }
+       wrap_iterator_t & operator ++ ()
+       {
+               if (++iter == cont.end ())
+               {
+                       iter = cont.begin ();
+                       wrapped = true;
+               }
+               return * this;
+       }
+       typename container_t::value_type * operator -> ()
+       {
+               return iter.operator -> ();
+       }
+};
+
+} // namespace re2c
+
+#endif // __WRAP_ITERATOR__