🔨 cleanup + some noexcept
This commit is contained in:
parent
b182308eff
commit
afe4571309
4 changed files with 28 additions and 35 deletions
|
@ -79,7 +79,7 @@ template<typename IteratorType> class iteration_proxy
|
|||
|
||||
public:
|
||||
/// construct iteration proxy from a container
|
||||
explicit iteration_proxy(typename IteratorType::reference cont)
|
||||
explicit iteration_proxy(typename IteratorType::reference cont) noexcept
|
||||
: container(cont) {}
|
||||
|
||||
/// return iterator begin (needed for range-based for)
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <ciso646> // not
|
||||
#include <cstddef> // ptrdiff_t
|
||||
#include <limits> // numeric_limits
|
||||
#include <ostream> // ostream
|
||||
|
||||
namespace nlohmann
|
||||
{
|
||||
|
@ -20,9 +18,15 @@ end_value (`1`) models past the end.
|
|||
*/
|
||||
class primitive_iterator_t
|
||||
{
|
||||
public:
|
||||
private:
|
||||
using difference_type = std::ptrdiff_t;
|
||||
static constexpr difference_type begin_value = 0;
|
||||
static constexpr difference_type end_value = begin_value + 1;
|
||||
|
||||
/// iterator as signed integer type
|
||||
difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
|
||||
|
||||
public:
|
||||
constexpr difference_type get_value() const noexcept
|
||||
{
|
||||
return m_it;
|
||||
|
@ -62,10 +66,10 @@ class primitive_iterator_t
|
|||
return lhs.m_it < rhs.m_it;
|
||||
}
|
||||
|
||||
primitive_iterator_t operator+(difference_type i)
|
||||
primitive_iterator_t operator+(difference_type n) noexcept
|
||||
{
|
||||
auto result = *this;
|
||||
result += i;
|
||||
result += n;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -74,55 +78,43 @@ class primitive_iterator_t
|
|||
return lhs.m_it - rhs.m_it;
|
||||
}
|
||||
|
||||
friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it)
|
||||
{
|
||||
return os << it.m_it;
|
||||
}
|
||||
|
||||
primitive_iterator_t& operator++()
|
||||
primitive_iterator_t& operator++() noexcept
|
||||
{
|
||||
++m_it;
|
||||
return *this;
|
||||
}
|
||||
|
||||
primitive_iterator_t const operator++(int)
|
||||
primitive_iterator_t const operator++(int) noexcept
|
||||
{
|
||||
auto result = *this;
|
||||
m_it++;
|
||||
return result;
|
||||
}
|
||||
|
||||
primitive_iterator_t& operator--()
|
||||
primitive_iterator_t& operator--() noexcept
|
||||
{
|
||||
--m_it;
|
||||
return *this;
|
||||
}
|
||||
|
||||
primitive_iterator_t const operator--(int)
|
||||
primitive_iterator_t const operator--(int) noexcept
|
||||
{
|
||||
auto result = *this;
|
||||
m_it--;
|
||||
return result;
|
||||
}
|
||||
|
||||
primitive_iterator_t& operator+=(difference_type n)
|
||||
primitive_iterator_t& operator+=(difference_type n) noexcept
|
||||
{
|
||||
m_it += n;
|
||||
return *this;
|
||||
}
|
||||
|
||||
primitive_iterator_t& operator-=(difference_type n)
|
||||
primitive_iterator_t& operator-=(difference_type n) noexcept
|
||||
{
|
||||
m_it -= n;
|
||||
return *this;
|
||||
}
|
||||
|
||||
private:
|
||||
static constexpr difference_type begin_value = 0;
|
||||
static constexpr difference_type end_value = begin_value + 1;
|
||||
|
||||
/// iterator as signed integer type
|
||||
difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include <ciso646> // not
|
||||
|
||||
// This file contains all internal macro definitions
|
||||
// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them
|
||||
|
||||
|
@ -38,7 +36,7 @@
|
|||
#endif
|
||||
|
||||
// allow to disable exceptions
|
||||
#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION)
|
||||
#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
|
||||
#define JSON_THROW(exception) throw exception
|
||||
#define JSON_TRY try
|
||||
#define JSON_CATCH(exception) catch(exception)
|
||||
|
|
|
@ -1301,7 +1301,7 @@ class basic_json
|
|||
array = create<array_t>(std::move(value));
|
||||
}
|
||||
|
||||
void destroy(value_t t)
|
||||
void destroy(value_t t) noexcept
|
||||
{
|
||||
switch (t)
|
||||
{
|
||||
|
@ -1346,7 +1346,7 @@ class basic_json
|
|||
value is changed, because the invariant expresses a relationship between
|
||||
@a m_type and @a m_value.
|
||||
*/
|
||||
void assert_invariant() const
|
||||
void assert_invariant() const noexcept
|
||||
{
|
||||
assert(m_type != value_t::object or m_value.object != nullptr);
|
||||
assert(m_type != value_t::array or m_value.array != nullptr);
|
||||
|
@ -2140,7 +2140,7 @@ class basic_json
|
|||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
~basic_json()
|
||||
~basic_json() noexcept
|
||||
{
|
||||
assert_invariant();
|
||||
m_value.destroy(m_type);
|
||||
|
@ -4481,7 +4481,7 @@ class basic_json
|
|||
@note The name of this function is not yet final and may change in the
|
||||
future.
|
||||
*/
|
||||
static iteration_proxy<iterator> iterator_wrapper(reference ref)
|
||||
static iteration_proxy<iterator> iterator_wrapper(reference ref) noexcept
|
||||
{
|
||||
return iteration_proxy<iterator>(ref);
|
||||
}
|
||||
|
@ -4489,7 +4489,7 @@ class basic_json
|
|||
/*!
|
||||
@copydoc iterator_wrapper(reference)
|
||||
*/
|
||||
static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref)
|
||||
static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept
|
||||
{
|
||||
return iteration_proxy<const_iterator>(ref);
|
||||
}
|
||||
|
@ -4531,7 +4531,8 @@ class basic_json
|
|||
@endcode
|
||||
|
||||
@note When iterating over an array, `key()` will return the index of the
|
||||
element as string (see example).
|
||||
element as string (see example). For primitive types (e.g., numbers),
|
||||
`key()` returns an empty string.
|
||||
|
||||
@return iteration proxy object wrapping @a ref with an interface to use in
|
||||
range-based for loops
|
||||
|
@ -4542,8 +4543,10 @@ class basic_json
|
|||
changes in the JSON value.
|
||||
|
||||
@complexity Constant.
|
||||
|
||||
@since version 3.x.x.
|
||||
*/
|
||||
iteration_proxy<iterator> items()
|
||||
iteration_proxy<iterator> items() noexcept
|
||||
{
|
||||
return iteration_proxy<iterator>(*this);
|
||||
}
|
||||
|
@ -4551,7 +4554,7 @@ class basic_json
|
|||
/*!
|
||||
@copydoc items()
|
||||
*/
|
||||
iteration_proxy<const_iterator> items() const
|
||||
iteration_proxy<const_iterator> items() const noexcept
|
||||
{
|
||||
return iteration_proxy<const_iterator>(*this);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue