adjusted code to documentation

This commit is contained in:
Niels 2015-04-11 19:26:12 +02:00
parent a3210ee2a9
commit 02f617f083
2 changed files with 78 additions and 78 deletions

View file

@ -62,7 +62,7 @@ struct has_mapped_type
(@c int64_t by default) (@c int64_t by default)
@tparam NumberFloatType type for JSON floating-point numbers @tparam NumberFloatType type for JSON floating-point numbers
(@c double by default) (@c double by default)
@tparam Allocator type of the allocator to use @tparam AllocatorType type of the allocator to use
(@c std::allocator by default) (@c std::allocator by default)
@note ObjectType trick from http://stackoverflow.com/a/9860911 @note ObjectType trick from http://stackoverflow.com/a/9860911
@ -77,7 +77,7 @@ template <
class BooleanType = bool, class BooleanType = bool,
class NumberIntegerType = int64_t, class NumberIntegerType = int64_t,
class NumberFloatType = double, class NumberFloatType = double,
template<typename U> class Allocator = std::allocator template<typename U> class AllocatorType = std::allocator
> >
class basic_json class basic_json
{ {
@ -102,13 +102,13 @@ class basic_json
@brief the type of an element reference @brief the type of an element reference
@ingroup container @ingroup container
*/ */
using reference = basic_json&; using reference = value_type&;
/*! /*!
@brief the type of an element const reference @brief the type of an element const reference
@ingroup container @ingroup container
*/ */
using const_reference = const basic_json&; using const_reference = const value_type&;
/*! /*!
@brief a type to represent differences between iterators @brief a type to represent differences between iterators
@ -123,12 +123,12 @@ class basic_json
using size_type = std::size_t; using size_type = std::size_t;
/// the allocator type /// the allocator type
using allocator_type = Allocator<basic_json>; using allocator_type = AllocatorType<basic_json>;
/// the type of an element pointer /// the type of an element pointer
using pointer = basic_json*; using pointer = typename std::allocator_traits<allocator_type>::pointer;
/// the type of an element const pointer /// the type of an element const pointer
using const_pointer = const basic_json*; using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
/*! /*!
@brief an iterator for a basic_json container @brief an iterator for a basic_json container
@ -333,7 +333,7 @@ class basic_json
case (value_t::object): case (value_t::object):
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
break; break;
@ -341,7 +341,7 @@ class basic_json
case (value_t::array): case (value_t::array):
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array); alloc.construct(m_value.array);
break; break;
@ -349,7 +349,7 @@ class basic_json
case (value_t::string): case (value_t::string):
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
m_value.string = alloc.allocate(1); m_value.string = alloc.allocate(1);
alloc.construct(m_value.string, ""); alloc.construct(m_value.string, "");
break; break;
@ -390,7 +390,7 @@ class basic_json
inline basic_json(const object_t& value) inline basic_json(const object_t& value)
: m_type(value_t::object) : m_type(value_t::object)
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object, value); alloc.construct(m_value.object, value);
} }
@ -404,7 +404,7 @@ class basic_json
inline basic_json(const V& value) inline basic_json(const V& value)
: m_type(value_t::object) : m_type(value_t::object)
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
using std::begin; using std::begin;
using std::end; using std::end;
@ -415,7 +415,7 @@ class basic_json
inline basic_json(const array_t& value) inline basic_json(const array_t& value)
: m_type(value_t::array) : m_type(value_t::array)
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array, value); alloc.construct(m_value.array, value);
} }
@ -434,7 +434,7 @@ class basic_json
inline basic_json(const V& value) inline basic_json(const V& value)
: m_type(value_t::array) : m_type(value_t::array)
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
using std::begin; using std::begin;
using std::end; using std::end;
@ -445,7 +445,7 @@ class basic_json
inline basic_json(const string_t& value) inline basic_json(const string_t& value)
: m_type(value_t::string) : m_type(value_t::string)
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
m_value.string = alloc.allocate(1); m_value.string = alloc.allocate(1);
alloc.construct(m_value.string, value); alloc.construct(m_value.string, value);
} }
@ -454,7 +454,7 @@ class basic_json
inline basic_json(const typename string_t::value_type* value) inline basic_json(const typename string_t::value_type* value)
: m_type(value_t::string) : m_type(value_t::string)
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
m_value.string = alloc.allocate(1); m_value.string = alloc.allocate(1);
alloc.construct(m_value.string, value); alloc.construct(m_value.string, value);
} }
@ -547,7 +547,7 @@ class basic_json
{ {
// the initializer list is a list of pairs -> create object // the initializer list is a list of pairs -> create object
m_type = value_t::object; m_type = value_t::object;
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
@ -560,7 +560,7 @@ class basic_json
{ {
// the initializer list describes an array -> create array // the initializer list describes an array -> create array
m_type = value_t::array; m_type = value_t::array;
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array, std::move(l)); alloc.construct(m_value.array, std::move(l));
} }
@ -602,7 +602,7 @@ class basic_json
case (value_t::object): case (value_t::object):
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object, *other.m_value.object); alloc.construct(m_value.object, *other.m_value.object);
break; break;
@ -610,7 +610,7 @@ class basic_json
case (value_t::array): case (value_t::array):
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array, *other.m_value.array); alloc.construct(m_value.array, *other.m_value.array);
break; break;
@ -618,7 +618,7 @@ class basic_json
case (value_t::string): case (value_t::string):
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
m_value.string = alloc.allocate(1); m_value.string = alloc.allocate(1);
alloc.construct(m_value.string, *other.m_value.string); alloc.construct(m_value.string, *other.m_value.string);
break; break;
@ -680,7 +680,7 @@ class basic_json
{ {
case (value_t::object): case (value_t::object):
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
alloc.destroy(m_value.object); alloc.destroy(m_value.object);
alloc.deallocate(m_value.object, 1); alloc.deallocate(m_value.object, 1);
m_value.object = nullptr; m_value.object = nullptr;
@ -689,7 +689,7 @@ class basic_json
case (value_t::array): case (value_t::array):
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
alloc.destroy(m_value.array); alloc.destroy(m_value.array);
alloc.deallocate(m_value.array, 1); alloc.deallocate(m_value.array, 1);
m_value.array = nullptr; m_value.array = nullptr;
@ -698,7 +698,7 @@ class basic_json
case (value_t::string): case (value_t::string):
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
alloc.destroy(m_value.string); alloc.destroy(m_value.string);
alloc.deallocate(m_value.string, 1); alloc.deallocate(m_value.string, 1);
m_value.string = nullptr; m_value.string = nullptr;
@ -1041,7 +1041,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::array; m_type = value_t::array;
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array); alloc.construct(m_value.array);
} }
@ -1103,7 +1103,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::object; m_type = value_t::object;
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
} }
@ -1130,14 +1130,14 @@ class basic_json
} }
/// access specified element (needed for clang) /// access specified element (needed for clang)
template<typename T, size_t n> template<typename T, std::size_t n>
inline reference operator[](const T (&key)[n]) inline reference operator[](const T (&key)[n])
{ {
// implicitly convert null to object // implicitly convert null to object
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::object; m_type = value_t::object;
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
} }
@ -1152,7 +1152,7 @@ class basic_json
} }
/// access specified element (needed for clang) /// access specified element (needed for clang)
template<typename T, size_t n> template<typename T, std::size_t n>
inline const_reference operator[](const T (&key)[n]) const inline const_reference operator[](const T (&key)[n]) const
{ {
// at only works for objects // at only works for objects
@ -1300,7 +1300,7 @@ class basic_json
} }
/// remove element from an array given an index /// remove element from an array given an index
inline void erase(const size_type pos) inline void erase(const size_type idx)
{ {
// this erase only works for arrays // this erase only works for arrays
if (m_type != value_t::array) if (m_type != value_t::array)
@ -1308,12 +1308,12 @@ class basic_json
throw std::runtime_error("cannot use erase with " + type_name()); throw std::runtime_error("cannot use erase with " + type_name());
} }
if (pos >= size()) if (idx >= size())
{ {
throw std::out_of_range("index out of range"); throw std::out_of_range("index out of range");
} }
m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(pos)); m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
} }
/// find an element in an object /// find an element in an object
@ -1638,7 +1638,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::array; m_type = value_t::array;
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array); alloc.construct(m_value.array);
} }
@ -1669,7 +1669,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::array; m_type = value_t::array;
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array); alloc.construct(m_value.array);
} }
@ -1698,7 +1698,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::object; m_type = value_t::object;
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
} }
@ -3489,13 +3489,13 @@ class basic_json
@see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code>
*/ */
inline static string_t to_unicode(const size_t codepoint1, inline static string_t to_unicode(const std::size_t codepoint1,
const size_t codepoint2 = 0) const std::size_t codepoint2 = 0)
{ {
string_t result; string_t result;
// calculate the codepoint from the given code points // calculate the codepoint from the given code points
size_t codepoint = codepoint1; std::size_t codepoint = codepoint1;
if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF)
{ {
if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF)
@ -4806,7 +4806,7 @@ template <>
struct hash<nlohmann::json> struct hash<nlohmann::json>
{ {
/// return a hash value for a JSON object /// return a hash value for a JSON object
inline size_t operator()(const nlohmann::json& j) const inline std::size_t operator()(const nlohmann::json& j) const
{ {
// a naive hashing via the string representation // a naive hashing via the string representation
const auto& h = hash<nlohmann::json::string_t>(); const auto& h = hash<nlohmann::json::string_t>();

View file

@ -62,7 +62,7 @@ struct has_mapped_type
(@c int64_t by default) (@c int64_t by default)
@tparam NumberFloatType type for JSON floating-point numbers @tparam NumberFloatType type for JSON floating-point numbers
(@c double by default) (@c double by default)
@tparam Allocator type of the allocator to use @tparam AllocatorType type of the allocator to use
(@c std::allocator by default) (@c std::allocator by default)
@note ObjectType trick from http://stackoverflow.com/a/9860911 @note ObjectType trick from http://stackoverflow.com/a/9860911
@ -77,7 +77,7 @@ template <
class BooleanType = bool, class BooleanType = bool,
class NumberIntegerType = int64_t, class NumberIntegerType = int64_t,
class NumberFloatType = double, class NumberFloatType = double,
template<typename U> class Allocator = std::allocator template<typename U> class AllocatorType = std::allocator
> >
class basic_json class basic_json
{ {
@ -102,13 +102,13 @@ class basic_json
@brief the type of an element reference @brief the type of an element reference
@ingroup container @ingroup container
*/ */
using reference = basic_json&; using reference = value_type&;
/*! /*!
@brief the type of an element const reference @brief the type of an element const reference
@ingroup container @ingroup container
*/ */
using const_reference = const basic_json&; using const_reference = const value_type&;
/*! /*!
@brief a type to represent differences between iterators @brief a type to represent differences between iterators
@ -123,12 +123,12 @@ class basic_json
using size_type = std::size_t; using size_type = std::size_t;
/// the allocator type /// the allocator type
using allocator_type = Allocator<basic_json>; using allocator_type = AllocatorType<basic_json>;
/// the type of an element pointer /// the type of an element pointer
using pointer = basic_json*; using pointer = typename std::allocator_traits<allocator_type>::pointer;
/// the type of an element const pointer /// the type of an element const pointer
using const_pointer = const basic_json*; using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
/*! /*!
@brief an iterator for a basic_json container @brief an iterator for a basic_json container
@ -333,7 +333,7 @@ class basic_json
case (value_t::object): case (value_t::object):
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
break; break;
@ -341,7 +341,7 @@ class basic_json
case (value_t::array): case (value_t::array):
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array); alloc.construct(m_value.array);
break; break;
@ -349,7 +349,7 @@ class basic_json
case (value_t::string): case (value_t::string):
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
m_value.string = alloc.allocate(1); m_value.string = alloc.allocate(1);
alloc.construct(m_value.string, ""); alloc.construct(m_value.string, "");
break; break;
@ -390,7 +390,7 @@ class basic_json
inline basic_json(const object_t& value) inline basic_json(const object_t& value)
: m_type(value_t::object) : m_type(value_t::object)
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object, value); alloc.construct(m_value.object, value);
} }
@ -404,7 +404,7 @@ class basic_json
inline basic_json(const V& value) inline basic_json(const V& value)
: m_type(value_t::object) : m_type(value_t::object)
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
using std::begin; using std::begin;
using std::end; using std::end;
@ -415,7 +415,7 @@ class basic_json
inline basic_json(const array_t& value) inline basic_json(const array_t& value)
: m_type(value_t::array) : m_type(value_t::array)
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array, value); alloc.construct(m_value.array, value);
} }
@ -434,7 +434,7 @@ class basic_json
inline basic_json(const V& value) inline basic_json(const V& value)
: m_type(value_t::array) : m_type(value_t::array)
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
using std::begin; using std::begin;
using std::end; using std::end;
@ -445,7 +445,7 @@ class basic_json
inline basic_json(const string_t& value) inline basic_json(const string_t& value)
: m_type(value_t::string) : m_type(value_t::string)
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
m_value.string = alloc.allocate(1); m_value.string = alloc.allocate(1);
alloc.construct(m_value.string, value); alloc.construct(m_value.string, value);
} }
@ -454,7 +454,7 @@ class basic_json
inline basic_json(const typename string_t::value_type* value) inline basic_json(const typename string_t::value_type* value)
: m_type(value_t::string) : m_type(value_t::string)
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
m_value.string = alloc.allocate(1); m_value.string = alloc.allocate(1);
alloc.construct(m_value.string, value); alloc.construct(m_value.string, value);
} }
@ -547,7 +547,7 @@ class basic_json
{ {
// the initializer list is a list of pairs -> create object // the initializer list is a list of pairs -> create object
m_type = value_t::object; m_type = value_t::object;
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
@ -560,7 +560,7 @@ class basic_json
{ {
// the initializer list describes an array -> create array // the initializer list describes an array -> create array
m_type = value_t::array; m_type = value_t::array;
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array, std::move(l)); alloc.construct(m_value.array, std::move(l));
} }
@ -602,7 +602,7 @@ class basic_json
case (value_t::object): case (value_t::object):
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object, *other.m_value.object); alloc.construct(m_value.object, *other.m_value.object);
break; break;
@ -610,7 +610,7 @@ class basic_json
case (value_t::array): case (value_t::array):
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array, *other.m_value.array); alloc.construct(m_value.array, *other.m_value.array);
break; break;
@ -618,7 +618,7 @@ class basic_json
case (value_t::string): case (value_t::string):
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
m_value.string = alloc.allocate(1); m_value.string = alloc.allocate(1);
alloc.construct(m_value.string, *other.m_value.string); alloc.construct(m_value.string, *other.m_value.string);
break; break;
@ -680,7 +680,7 @@ class basic_json
{ {
case (value_t::object): case (value_t::object):
{ {
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
alloc.destroy(m_value.object); alloc.destroy(m_value.object);
alloc.deallocate(m_value.object, 1); alloc.deallocate(m_value.object, 1);
m_value.object = nullptr; m_value.object = nullptr;
@ -689,7 +689,7 @@ class basic_json
case (value_t::array): case (value_t::array):
{ {
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
alloc.destroy(m_value.array); alloc.destroy(m_value.array);
alloc.deallocate(m_value.array, 1); alloc.deallocate(m_value.array, 1);
m_value.array = nullptr; m_value.array = nullptr;
@ -698,7 +698,7 @@ class basic_json
case (value_t::string): case (value_t::string):
{ {
Allocator<string_t> alloc; AllocatorType<string_t> alloc;
alloc.destroy(m_value.string); alloc.destroy(m_value.string);
alloc.deallocate(m_value.string, 1); alloc.deallocate(m_value.string, 1);
m_value.string = nullptr; m_value.string = nullptr;
@ -1041,7 +1041,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::array; m_type = value_t::array;
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array); alloc.construct(m_value.array);
} }
@ -1103,7 +1103,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::object; m_type = value_t::object;
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
} }
@ -1130,14 +1130,14 @@ class basic_json
} }
/// access specified element (needed for clang) /// access specified element (needed for clang)
template<typename T, size_t n> template<typename T, std::size_t n>
inline reference operator[](const T (&key)[n]) inline reference operator[](const T (&key)[n])
{ {
// implicitly convert null to object // implicitly convert null to object
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::object; m_type = value_t::object;
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
} }
@ -1152,7 +1152,7 @@ class basic_json
} }
/// access specified element (needed for clang) /// access specified element (needed for clang)
template<typename T, size_t n> template<typename T, std::size_t n>
inline const_reference operator[](const T (&key)[n]) const inline const_reference operator[](const T (&key)[n]) const
{ {
// at only works for objects // at only works for objects
@ -1300,7 +1300,7 @@ class basic_json
} }
/// remove element from an array given an index /// remove element from an array given an index
inline void erase(const size_type pos) inline void erase(const size_type idx)
{ {
// this erase only works for arrays // this erase only works for arrays
if (m_type != value_t::array) if (m_type != value_t::array)
@ -1308,12 +1308,12 @@ class basic_json
throw std::runtime_error("cannot use erase with " + type_name()); throw std::runtime_error("cannot use erase with " + type_name());
} }
if (pos >= size()) if (idx >= size())
{ {
throw std::out_of_range("index out of range"); throw std::out_of_range("index out of range");
} }
m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(pos)); m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
} }
/// find an element in an object /// find an element in an object
@ -1638,7 +1638,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::array; m_type = value_t::array;
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array); alloc.construct(m_value.array);
} }
@ -1669,7 +1669,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::array; m_type = value_t::array;
Allocator<array_t> alloc; AllocatorType<array_t> alloc;
m_value.array = alloc.allocate(1); m_value.array = alloc.allocate(1);
alloc.construct(m_value.array); alloc.construct(m_value.array);
} }
@ -1698,7 +1698,7 @@ class basic_json
if (m_type == value_t::null) if (m_type == value_t::null)
{ {
m_type = value_t::object; m_type = value_t::object;
Allocator<object_t> alloc; AllocatorType<object_t> alloc;
m_value.object = alloc.allocate(1); m_value.object = alloc.allocate(1);
alloc.construct(m_value.object); alloc.construct(m_value.object);
} }
@ -3489,13 +3489,13 @@ class basic_json
@see <http://en.wikipedia.org/wiki/UTF-8#Sample_code> @see <http://en.wikipedia.org/wiki/UTF-8#Sample_code>
*/ */
inline static string_t to_unicode(const size_t codepoint1, inline static string_t to_unicode(const std::size_t codepoint1,
const size_t codepoint2 = 0) const std::size_t codepoint2 = 0)
{ {
string_t result; string_t result;
// calculate the codepoint from the given code points // calculate the codepoint from the given code points
size_t codepoint = codepoint1; std::size_t codepoint = codepoint1;
if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF) if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF)
{ {
if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF) if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF)
@ -4112,7 +4112,7 @@ template <>
struct hash<nlohmann::json> struct hash<nlohmann::json>
{ {
/// return a hash value for a JSON object /// return a hash value for a JSON object
inline size_t operator()(const nlohmann::json& j) const inline std::size_t operator()(const nlohmann::json& j) const
{ {
// a naive hashing via the string representation // a naive hashing via the string representation
const auto& h = hash<nlohmann::json::string_t>(); const auto& h = hash<nlohmann::json::string_t>();