]> granicus.if.org Git - re2c/commitdiff
Fixed [-Wconversion] warning.
authorUlya Trofimovich <skvadrik@gmail.com>
Sun, 29 Nov 2015 11:24:48 +0000 (11:24 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Sun, 29 Nov 2015 11:24:48 +0000 (11:24 +0000)
Warning was introduced in commit b237daed2095c1e138761fb94a01d53ba2c80c95:
compiler fails to recognise (or deliberately choses not to recognize)
'std::numeric_limits<...>::max()' as a special constant.

re2c/src/codegen/skeleton/skeleton.cc
re2c/src/codegen/skeleton/skeleton.h

index bd179ce2cc80eef7f2e3d7542d48237878d2b5b6..b015a039b0372fc72760fbd4abe17159bbb52a6e 100644 (file)
@@ -1,4 +1,3 @@
-#include <limits>
 #include <stdlib.h> // exit
 
 #include "src/codegen/skeleton/skeleton.h"
@@ -128,14 +127,6 @@ Skeleton::~Skeleton ()
        delete [] nodes;
 }
 
-template <> uint32_t Skeleton::none<uint32_t> () { return std::numeric_limits<uint32_t>::max(); }
-template <> uint16_t Skeleton::none<uint16_t> () { return std::numeric_limits<uint16_t>::max(); }
-template <> uint8_t  Skeleton::none<uint8_t>  () { return std::numeric_limits<uint8_t >::max(); }
-
-template <> uint32_t Skeleton::def<uint32_t> () { return std::numeric_limits<uint32_t>::max() - 1; }
-template <> uint16_t Skeleton::def<uint16_t> () { return std::numeric_limits<uint16_t>::max() - 1; }
-template <> uint8_t  Skeleton::def<uint8_t>  () { return std::numeric_limits<uint8_t >::max() - 1; }
-
 uint32_t Skeleton::rule2key (rule_rank_t r) const
 {
        switch (sizeof_key)
index 7c6c71885766d630121c6e60e3907d4fb7d4d680..4ce424a3994b62c09735e22b7992fc30d3a20374 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _RE2C_CODEGEN_SKELETON_SKELETON_
 #define _RE2C_CODEGEN_SKELETON_SKELETON_
 
+#include <limits>
 #include <map>
 
 #include "src/codegen/skeleton/path.h"
@@ -111,8 +112,6 @@ struct Skeleton
        static void emit_epilog (OutputFile & o, const std::set<std::string> & names);
        void emit_action (OutputFile & o, uint32_t ind, rule_rank_t rank) const;
 
-       template <typename key_t> static key_t none ();
-       template <typename key_t> static key_t def ();
        template <typename key_t> static key_t rule2key (rule_rank_t r);
        uint32_t rule2key (rule_rank_t r) const;
 
@@ -129,9 +128,10 @@ private:
 template<typename key_t> key_t Skeleton::rule2key (rule_rank_t r)
 {
        if (r.is_none()) {
-               return none<key_t>();
+               return std::numeric_limits<key_t>::max();
        } else if (r.is_def()) {
-               return def<key_t>();
+               key_t k = std::numeric_limits<key_t>::max();
+               return --k;
        } else {
                return static_cast<key_t>(r.uint32());
        }