16#include <daw/daw_move.h>
24 namespace json_details {
25 template<
typename ParseState,
bool>
32 template<
typename ParseState>
48 namespace kv_class_iter_impl {
52 template<
typename JsonMember>
54 std::pair<
typename JsonMember::json_key_t,
55 typename JsonMember::json_element_t>;
57 template<
typename JsonMember,
typename T>
63 template<
typename JsonMember,
typename ParseState,
bool IsKnown>
70 using element_t =
typename JsonMember::json_element_t;
80 using key_t =
typename JsonMember::json_key_t;
81 using value_t =
typename JsonMember::json_element_t;
116 ErrorReason::AttemptToAccessPastEndOfValue,
120 ErrorReason::UnexpectedEndOfData,
124 if constexpr( IsKnown ) {
127 ErrorReason::AttemptToAccessPastEndOfValue,
133 if constexpr( not IsKnown ) {
142 if constexpr( IsKnown ) {
145 ErrorReason::AttemptToAccessPastEndOfValue,
154 friend inline constexpr bool
161 friend inline constexpr bool
164 return not( lhs == rhs );
#define daw_json_assert_weak(Bool,...)
Definition: daw_json_assert.h:190
#define daw_json_assert(Bool,...)
Definition: daw_json_assert.h:179
std::pair< typename JsonMember::json_key_t, typename JsonMember::json_element_t > default_value_type
Definition: daw_json_parse_kv_class_iterator.h:55
typename T::value_type container_value_t
Definition: daw_json_parse_kv_class_iterator.h:50
daw::detected_or_t< default_value_type< JsonMember >, container_value_t, T > container_value_type_or
Definition: daw_json_parse_kv_class_iterator.h:60
static constexpr void trim_end_of_name(ParseState &parse_state)
Definition: daw_json_parse_name.h:29
constexpr auto json_class_constructor
Definition: daw_json_parse_common.h:54
daw::constant< v > ParseTag
Definition: daw_json_enums.h:119
Definition: daw_from_json.h:22
Definition: daw_json_traits.h:199
Definition: daw_json_arrow_proxy.h:16
constexpr difference_type operator-(json_parse_kv_class_iterator_base const &rhs) const
Definition: daw_json_parse_kv_class_iterator.h:40
std::random_access_iterator_tag iterator_category
Definition: daw_json_parse_kv_class_iterator.h:35
std::ptrdiff_t difference_type
Definition: daw_json_parse_kv_class_iterator.h:36
Definition: daw_json_parse_kv_class_iterator.h:26
std::ptrdiff_t difference_type
Definition: daw_json_parse_kv_class_iterator.h:28
ParseState * parse_state
Definition: daw_json_parse_kv_class_iterator.h:29
std::input_iterator_tag iterator_category
Definition: daw_json_parse_kv_class_iterator.h:27
Definition: daw_json_parse_kv_class_iterator.h:65
typename JsonMember::json_element_t value_t
Definition: daw_json_parse_kv_class_iterator.h:81
typename JsonMember::json_key_t key_t
Definition: daw_json_parse_kv_class_iterator.h:80
constexpr friend bool operator==(json_parse_kv_class_iterator const &lhs, json_parse_kv_class_iterator const &rhs)
Definition: daw_json_parse_kv_class_iterator.h:155
constexpr friend bool operator!=(json_parse_kv_class_iterator const &lhs, json_parse_kv_class_iterator const &rhs)
Definition: daw_json_parse_kv_class_iterator.h:162
typename JsonMember::json_element_t element_t
Definition: daw_json_parse_kv_class_iterator.h:70
ParseState iterator_range_t
Definition: daw_json_parse_kv_class_iterator.h:77
typename base::difference_type difference_type
Definition: daw_json_parse_kv_class_iterator.h:78
typename JsonMember::base_type member_container_type
Definition: daw_json_parse_kv_class_iterator.h:71
constexpr json_parse_kv_class_iterator & operator++()
Definition: daw_json_parse_kv_class_iterator.h:114
constexpr value_type operator*()
Definition: daw_json_parse_kv_class_iterator.h:99
value_type reference
Definition: daw_json_parse_kv_class_iterator.h:75
constexpr json_parse_kv_class_iterator()=default
constexpr json_parse_kv_class_iterator(iterator_range_t &r)
Definition: daw_json_parse_kv_class_iterator.h:85
typename base::iterator_category iterator_category
Definition: daw_json_parse_kv_class_iterator.h:69
kv_class_iter_impl::container_value_type_or< JsonMember, member_container_type > value_type
Definition: daw_json_parse_kv_class_iterator.h:74
#define DAW_JSON_VER
The version string used in namespace definitions. Must be a valid namespace name.
Definition: version.h:16