From b4abc8241feae90586c760eb9b2b50986b817869 Mon Sep 17 00:00:00 2001 From: "Alexander V. Brezgin" Date: Sun, 20 Nov 2016 03:50:32 +0300 Subject: [PATCH] Optimize value range check --- src/lib_json/json_value.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp index f18f324..1abb006 100644 --- a/src/lib_json/json_value.cpp +++ b/src/lib_json/json_value.cpp @@ -1279,7 +1279,11 @@ bool Value::isBool() const { return type_ == booleanValue; } bool Value::isInt() const { switch (type_) { case intValue: +#if defined(JSON_HAS_INT64) return value_.int_ >= minInt && value_.int_ <= maxInt; +#else + return true; +#endif case uintValue: return value_.uint_ <= UInt(maxInt); case realValue: @@ -1294,9 +1298,17 @@ bool Value::isInt() const { bool Value::isUInt() const { switch (type_) { case intValue: +#if defined(JSON_HAS_INT64) return value_.int_ >= 0 && LargestUInt(value_.int_) <= LargestUInt(maxUInt); +#else + return value_.int_ >= 0; +#endif case uintValue: +#if defined(JSON_HAS_INT64) return value_.uint_ <= maxUInt; +#else + return true; +#endif case realValue: return value_.real_ >= 0 && value_.real_ <= maxUInt && IsIntegral(value_.real_);