From 7cd933793e2e6dbca971938bdb3fb3b700635cf3 Mon Sep 17 00:00:00 2001 From: Erich Keane Date: Sat, 2 Jan 2016 08:50:31 -0800 Subject: [PATCH] Changes to re2c file to match the json.hpp changes --- src/json.hpp.re2c | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index d9d696aef..5a80250f8 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -107,6 +107,12 @@ static bool approx(const T a, const T b) } } +template +using default_object_type = std::map; + +template +using default_array_type = std::vector; + /*! @brief a class to store JSON values @@ -176,8 +182,8 @@ default) @nosubgrouping */ template < - template class ObjectType = std::map, - template class ArrayType = std::vector, + template class ObjectType = default_object_type, + template class ArrayType = default_array_type, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = int64_t, @@ -333,11 +339,7 @@ class basic_json @since version 1.0.0 */ - using object_t = ObjectType, - AllocatorType>>; + using object_t = ObjectType; /*! @brief a type for an array @@ -383,7 +385,7 @@ class basic_json @since version 1.0.0 */ - using array_t = ArrayType>; + using array_t = ArrayType; /*! @brief a type for a string @@ -959,7 +961,7 @@ class basic_json */ template ::value and + std::is_constructible::value and std::is_constructible::value, int>::type = 0> basic_json(const CompatibleObjectType& val) @@ -2159,7 +2161,7 @@ class basic_json /// get an object (explicit) template ::value and + std::is_convertible::value and std::is_convertible::value , int>::type = 0> T get_impl(T*) const @@ -2707,7 +2709,7 @@ class basic_json @since version 1.0.0 */ - reference at(const typename object_t::key_type& key) + reference at(const StringType& key) { // at only works for objects if (is_object()) @@ -2754,7 +2756,7 @@ class basic_json @since version 1.0.0 */ - const_reference at(const typename object_t::key_type& key) const + const_reference at(const StringType& key) const { // at only works for objects if (is_object()) @@ -2884,7 +2886,7 @@ class basic_json @since version 1.0.0 */ - reference operator[](const typename object_t::key_type& key) + reference operator[](StringType& key) { // implicitly convert null to object if (is_null()) @@ -2931,7 +2933,7 @@ class basic_json @since version 1.0.0 */ - const_reference operator[](const typename object_t::key_type& key) const + const_reference operator[](const StringType& key) const { // [] only works for objects if (is_object()) @@ -3089,7 +3091,7 @@ class basic_json std::enable_if< std::is_convertible::value , int>::type = 0> - ValueType value(const typename object_t::key_type& key, ValueType default_value) const + ValueType value(const StringType& key, ValueType default_value) const { // at only works for objects if (is_object()) @@ -3115,7 +3117,7 @@ class basic_json @brief overload for a default value of type const char* @copydoc basic_json::value() */ - string_t value(const typename object_t::key_type& key, const char* default_value) const + string_t value(const StringType& key, const char* default_value) const { return value(key, string_t(default_value)); } @@ -3425,7 +3427,7 @@ class basic_json @since version 1.0.0 */ - size_type erase(const typename object_t::key_type& key) + size_type erase(const StringType& key) { // this erase only works for objects if (is_object()) @@ -3497,7 +3499,7 @@ class basic_json @since version 1.0.0 */ - iterator find(typename object_t::key_type key) + iterator find(StringType key) { auto result = end(); @@ -3513,7 +3515,7 @@ class basic_json @brief find an element in a JSON object @copydoc find(typename object_t::key_type) */ - const_iterator find(typename object_t::key_type key) const + const_iterator find(StringType key) const { auto result = cend(); @@ -3543,7 +3545,7 @@ class basic_json @since version 1.0.0 */ - size_type count(typename object_t::key_type key) const + size_type count(StringType key) const { // return 0 for all nonobject types return is_object() ? m_value.object->count(key) : 0; @@ -4176,7 +4178,7 @@ class basic_json @since version 1.0.0 */ - void push_back(const typename object_t::value_type& val) + void push_back(const std::pair& val) { // push_back only works for null objects or objects if (not(is_null() or is_object())) @@ -4199,7 +4201,7 @@ class basic_json @brief add an object to an object @copydoc push_back(const typename object_t::value_type&) */ - reference operator+=(const typename object_t::value_type& val) + reference operator+=(const std::pair& val) { push_back(val); return operator[](val.first);