]> granicus.if.org Git - re2c/commitdiff
Allow generic container to have size_t elements rather than uint32_t.
authorUlya Trofimovich <skvadrik@gmail.com>
Mon, 10 Aug 2015 08:58:10 +0000 (09:58 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Mon, 10 Aug 2015 08:58:10 +0000 (09:58 +0100)
Cast to uint32_t in those use cases when we are sure that container
only contains some few elements.

re2c/src/codegen/emit_action.cc
re2c/src/codegen/prepare_dfa.cc
re2c/src/util/uniq_vector.h

index bc9717e1d46be85d8d1b7760031385e5d65fd879..2021271149fa640a37bdc5a9d04cca4c8eb45a5a 100644 (file)
@@ -168,7 +168,7 @@ void emit_accept_binary (OutputFile & o, uint32_t ind, bool & readCh, const Stat
 
 void emit_accept (OutputFile & o, uint32_t ind, bool & readCh, const State * const s, const accept_t & accepts)
 {
-       const uint32_t accepts_size = accepts.size ();
+       const uint32_t accepts_size = static_cast<uint32_t> (accepts.size ());
        if (accepts_size > 0)
        {
                if (!DFlag)
index 1b72b7d82fbc33682b515692014862c35988532b..cc9b197aa638b22b9fd69183d8032b67355fc76d 100644 (file)
@@ -222,7 +222,7 @@ void DFA::prepare(OutputFile & o, uint32_t & max_fill, const std::string & cond)
                                {
                                        if (!s->go.span[i].to->rule && s->go.span[i].to->action.type != Action::RULE)
                                        {
-                                               const uint32_t accept = accepts.find_or_add (rules[s->rule->rank]);
+                                               const uint32_t accept = static_cast<uint32_t> (accepts.find_or_add (rules[s->rule->rank]));
                                                s->action.set_save (accept);
                                        }
                                }
index bb8c291892b513a4ce77411c97585e4639c14add..76c0512f07fe06e9c1dd3db5092be658fe81f3a9 100644 (file)
@@ -3,14 +3,12 @@
 
 #include <vector>
 
-#include "src/util/c99_stdint.h"
-
 namespace re2c
 {
 
 // wrapper over std::vector
 // O(n) lookup
-// O(n^2) insertion
+// O(n) insertion
 template <typename value_t>
 class uniq_vector_t
 {
@@ -20,18 +18,18 @@ public:
        uniq_vector_t ()
                : elems ()
        {}
-       uint32_t size () const
+       size_t size () const
        {
                return elems.size ();
        }
-       const value_t & operator [] (uint32_t i) const
+       const value_t & operator [] (size_t i) const
        {
                return elems[i];
        }
-       uint32_t find_or_add (const value_t & v)
+       size_t find_or_add (const value_t & v)
        {
-               const uint32_t size = elems.size ();
-               for (uint32_t i = 0; i < size; ++i)
+               const size_t size = elems.size ();
+               for (size_t i = 0; i < size; ++i)
                {
                        if (elems[i] == v)
                        {