🎨 cleanup after PR #395
This commit is contained in:
parent
fe00b368ae
commit
f24e4f680e
3 changed files with 37 additions and 36 deletions
|
@ -584,6 +584,7 @@ I deeply appreciate the help of the following people.
|
|||
- [cgzones](https://github.com/cgzones) had an idea how to fix the Coverity scan.
|
||||
- [Jared Grubb](https://github.com/jaredgrubb) silenced a nasty documentation warning.
|
||||
- [Yixin Zhang](https://github.com/qwename) fixed an integer overflow check.
|
||||
- [Bosswestfalen](https://github.com/Bosswestfalen) merged two iterator classes into a smaller one.
|
||||
|
||||
Thanks a lot for helping out!
|
||||
|
||||
|
|
35
src/json.hpp
35
src/json.hpp
|
@ -228,6 +228,7 @@ class basic_json
|
|||
|
||||
public:
|
||||
// forward declarations
|
||||
template<typename U> class iter_impl;
|
||||
template<typename Base> class json_reverse_iterator;
|
||||
class json_pointer;
|
||||
|
||||
|
@ -261,8 +262,6 @@ class basic_json
|
|||
/// the type of an element const pointer
|
||||
using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
|
||||
|
||||
// forward declaration for iterators
|
||||
template <typename U> class iter_impl;
|
||||
/// an iterator for a basic_json container
|
||||
using iterator = iter_impl<basic_json>;
|
||||
/// a const iterator for a basic_json container
|
||||
|
@ -8208,8 +8207,8 @@ class basic_json
|
|||
/*!
|
||||
@brief a template for a random access iterator for the @ref basic_json class
|
||||
|
||||
This class implements a both iterators (iterator and const_iterator)
|
||||
for the @ref basic_json class.
|
||||
This class implements a both iterators (iterator and const_iterator) for the
|
||||
@ref basic_json class.
|
||||
|
||||
@note An iterator is called *initialized* when a pointer to a JSON value
|
||||
has been set (e.g., by a constructor or a copy assignment). If the
|
||||
|
@ -8222,9 +8221,9 @@ class basic_json
|
|||
The iterator that can be moved to point (forward and backward) to any
|
||||
element in constant time.
|
||||
|
||||
@since version 1.0.0
|
||||
@since version 1.0.0, simplified in version 2.0.9
|
||||
*/
|
||||
template <typename U>
|
||||
template<typename U>
|
||||
class iter_impl : public std::iterator<std::random_access_iterator_tag, U>
|
||||
{
|
||||
/// allow basic_json to access private members
|
||||
|
@ -8242,12 +8241,12 @@ class basic_json
|
|||
using difference_type = typename basic_json::difference_type;
|
||||
/// defines a pointer to the type iterated over (value_type)
|
||||
using pointer = typename std::conditional<std::is_const<U>::value,
|
||||
typename basic_json::const_pointer,
|
||||
typename basic_json::pointer>::type;
|
||||
typename basic_json::const_pointer,
|
||||
typename basic_json::pointer>::type;
|
||||
/// defines a reference to the type iterated over (value_type)
|
||||
using reference = typename std::conditional<std::is_const<U>::value,
|
||||
typename basic_json::const_reference,
|
||||
typename basic_json::reference>::type;
|
||||
typename basic_json::const_reference,
|
||||
typename basic_json::reference>::type;
|
||||
/// the category of the iterator
|
||||
using iterator_category = std::bidirectional_iterator_tag;
|
||||
|
||||
|
@ -8288,19 +8287,19 @@ class basic_json
|
|||
}
|
||||
|
||||
/*
|
||||
Use operator const_iterator instead of
|
||||
const_iterator(const iterator& other) noexcept
|
||||
to avoid two class definitions for iterator and const_iterator.
|
||||
Use operator `const_iterator` instead of `const_iterator(const iterator&
|
||||
other) noexcept` to avoid two class definitions for @ref iterator and
|
||||
@ref const_iterator.
|
||||
|
||||
This function is only called if this class is an iterator.
|
||||
If this class is a const_iterator this function is not called.
|
||||
This function is only called if this class is an @ref iterator. If this
|
||||
class is a @ref const_iterator this function is not called.
|
||||
*/
|
||||
operator const_iterator() const
|
||||
{
|
||||
const_iterator ret;
|
||||
{
|
||||
const_iterator ret;
|
||||
|
||||
if (m_object)
|
||||
{
|
||||
{
|
||||
ret.m_object = m_object;
|
||||
ret.m_it = m_it;
|
||||
}
|
||||
|
|
|
@ -228,6 +228,7 @@ class basic_json
|
|||
|
||||
public:
|
||||
// forward declarations
|
||||
template<typename U> class iter_impl;
|
||||
template<typename Base> class json_reverse_iterator;
|
||||
class json_pointer;
|
||||
|
||||
|
@ -262,9 +263,9 @@ class basic_json
|
|||
using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
|
||||
|
||||
/// an iterator for a basic_json container
|
||||
class iterator;
|
||||
using iterator = iter_impl<basic_json>;
|
||||
/// a const iterator for a basic_json container
|
||||
class const_iterator;
|
||||
using const_iterator = iter_impl<const basic_json>;
|
||||
/// a reverse iterator for a basic_json container
|
||||
using reverse_iterator = json_reverse_iterator<typename basic_json::iterator>;
|
||||
/// a const reverse iterator for a basic_json container
|
||||
|
@ -8206,8 +8207,8 @@ class basic_json
|
|||
/*!
|
||||
@brief a template for a random access iterator for the @ref basic_json class
|
||||
|
||||
This class implements a both iterators (iterator and const_iterator)
|
||||
for the @ref basic_json class.
|
||||
This class implements a both iterators (iterator and const_iterator) for the
|
||||
@ref basic_json class.
|
||||
|
||||
@note An iterator is called *initialized* when a pointer to a JSON value
|
||||
has been set (e.g., by a constructor or a copy assignment). If the
|
||||
|
@ -8220,9 +8221,9 @@ class basic_json
|
|||
The iterator that can be moved to point (forward and backward) to any
|
||||
element in constant time.
|
||||
|
||||
@since version 1.0.0
|
||||
@since version 1.0.0, simplified in version 2.0.9
|
||||
*/
|
||||
template <typename U>
|
||||
template<typename U>
|
||||
class iter_impl : public std::iterator<std::random_access_iterator_tag, U>
|
||||
{
|
||||
/// allow basic_json to access private members
|
||||
|
@ -8240,12 +8241,12 @@ class basic_json
|
|||
using difference_type = typename basic_json::difference_type;
|
||||
/// defines a pointer to the type iterated over (value_type)
|
||||
using pointer = typename std::conditional<std::is_const<U>::value,
|
||||
typename basic_json::const_pointer,
|
||||
typename basic_json::pointer>::type;
|
||||
typename basic_json::const_pointer,
|
||||
typename basic_json::pointer>::type;
|
||||
/// defines a reference to the type iterated over (value_type)
|
||||
using reference = typename std::conditional<std::is_const<U>::value,
|
||||
typename basic_json::const_reference,
|
||||
typename basic_json::reference>::type;
|
||||
typename basic_json::const_reference,
|
||||
typename basic_json::reference>::type;
|
||||
/// the category of the iterator
|
||||
using iterator_category = std::bidirectional_iterator_tag;
|
||||
|
||||
|
@ -8286,19 +8287,19 @@ class basic_json
|
|||
}
|
||||
|
||||
/*
|
||||
Use operator const_iterator instead of
|
||||
const_iterator(const iterator& other) noexcept
|
||||
to avoid two class definitions for iterator and const_iterator.
|
||||
Use operator `const_iterator` instead of `const_iterator(const iterator&
|
||||
other) noexcept` to avoid two class definitions for @ref iterator and
|
||||
@ref const_iterator.
|
||||
|
||||
This function is only called if this class is an iterator.
|
||||
If this class is a const_iterator this function is not called.
|
||||
This function is only called if this class is an @ref iterator. If this
|
||||
class is a @ref const_iterator this function is not called.
|
||||
*/
|
||||
operator const_iterator() const
|
||||
{
|
||||
const_iterator ret;
|
||||
{
|
||||
const_iterator ret;
|
||||
|
||||
if (m_object)
|
||||
{
|
||||
{
|
||||
ret.m_object = m_object;
|
||||
ret.m_it = m_it;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue