16 #include <daw/daw_attributes.h>
17 #include <daw/daw_move.h>
23 namespace json_details {
24 template<
typename ParseState,
bool>
32 template<
typename ParseState>
44 ParseState *pd ) noexcept
57 template<
typename JsonMember,
typename ParseState,
bool KnownBounds>
60 can_random_v<KnownBounds>> {
64 can_random_v<KnownBounds>>;
68 using value_type = std::pair<
typename json_key_t::parse_to_t
const,
69 typename json_element_t::parse_to_t>;
82 if constexpr( not KnownBounds ) {
93 get_pair(
typename json_class_type::parse_to_t &&v ) {
94 return value_type( std::get<0>( DAW_MOVE( v.members ) ),
95 std::get<1>( DAW_MOVE( v.members ) ) );
103 return get_pair( parse_value<json_class_type>(
110 ErrorReason::UnexpectedEndOfData );
120 ErrorReason::UnexpectedEndOfData );
125 ErrorReason::UnexpectedEndOfData );
128 if constexpr( not KnownBounds ) {
139 ErrorReason::UnexpectedEndOfData );
146 friend inline constexpr
bool
152 friend inline constexpr
bool
155 return not( lhs == rhs );
#define daw_json_assert_weak(Bool,...)
Definition: daw_json_assert.h:189
std::integral_constant< JsonParseTypes, v > ParseTag
Definition: daw_json_enums.h:106
Definition: daw_from_json.h:22
Definition: daw_json_arrow_proxy.h:16
constexpr difference_type operator-(json_parse_kv_array_iterator_base const &rhs) const
Definition: daw_json_parse_kv_array_iterator.h:49
std::ptrdiff_t difference_type
Definition: daw_json_parse_kv_array_iterator.h:36
constexpr json_parse_kv_array_iterator_base()=default
std::random_access_iterator_tag iterator_category
Definition: daw_json_parse_kv_array_iterator.h:35
constexpr json_parse_kv_array_iterator_base(ParseState *pd) noexcept
Definition: daw_json_parse_kv_array_iterator.h:43
Definition: daw_json_parse_kv_array_iterator.h:25
std::ptrdiff_t difference_type
Definition: daw_json_parse_kv_array_iterator.h:27
ParseState * parse_state
Definition: daw_json_parse_kv_array_iterator.h:29
static constexpr bool has_counter
Definition: daw_json_parse_kv_array_iterator.h:28
std::input_iterator_tag iterator_category
Definition: daw_json_parse_kv_array_iterator.h:26
Definition: daw_json_parse_kv_array_iterator.h:60
constexpr json_parse_kv_array_iterator()=default
constexpr json_parse_kv_array_iterator(parse_state_t &r)
Definition: daw_json_parse_kv_array_iterator.h:78
ParseState parse_state_t
Definition: daw_json_parse_kv_array_iterator.h:72
value_type reference
Definition: daw_json_parse_kv_array_iterator.h:70
static constexpr value_type get_pair(typename json_class_type::parse_to_t &&v)
Definition: daw_json_parse_kv_array_iterator.h:93
constexpr DAW_ATTRIB_INLINE json_parse_kv_array_iterator & operator++()
Definition: daw_json_parse_kv_array_iterator.h:108
constexpr friend bool operator==(json_parse_kv_array_iterator const &lhs, json_parse_kv_array_iterator const &rhs)
Definition: daw_json_parse_kv_array_iterator.h:147
typename base::difference_type difference_type
Definition: daw_json_parse_kv_array_iterator.h:73
typename base::iterator_category iterator_category
Definition: daw_json_parse_kv_array_iterator.h:65
constexpr friend bool operator!=(json_parse_kv_array_iterator const &lhs, json_parse_kv_array_iterator const &rhs)
Definition: daw_json_parse_kv_array_iterator.h:153
std::pair< typename json_key_t::parse_to_t const, typename json_element_t::parse_to_t > value_type
Definition: daw_json_parse_kv_array_iterator.h:69
constexpr DAW_ATTRIB_INLINE value_type operator*()
Definition: daw_json_parse_kv_array_iterator.h:98
typename JsonMember::json_class_t json_class_type
Definition: daw_json_parse_kv_array_iterator.h:75
typename JsonMember::json_key_t json_key_t
Definition: daw_json_parse_kv_array_iterator.h:66
typename JsonMember::json_value_t json_element_t
Definition: daw_json_parse_kv_array_iterator.h:67
#define DAW_JSON_VER
Definition: version.h:11