14#include <daw/daw_utility.h>
23 namespace json_details {
25 template<
typename T, std::
size_t Capacity>
27 static constexpr std::size_t
capacity = Capacity;
30 std::size_t position{ };
36 constexpr T
const *
data( )
const {
44 constexpr std::size_t
size( )
const {
60 constexpr T
const *
data( )
const {
68 constexpr std::size_t
size( )
const {
86 template<
typename... JsonMembers,
typename OutputIterator,
88 typename Tuple,
typename Value>
93 Tuple
const &args, Value
const &value, std::index_sequence<Is...> ) {
98 using visit_size = daw::constant<(
99 sizeof...( JsonMembers ) +
100 (
static_cast<std::size_t
>( has_dependent_member_v<JsonMembers> ) +
102 auto visited_members =
109 bool is_first =
true;
112 (void)visited_members;
115 using Names = fwd_pack<JsonMembers...>;
116 daw::Empty
const expander[]{
118 Is, traits::nth_element<Is, JsonMembers...>, Names>(
119 is_first,
it, args, value, visited_members ),
127 daw::Empty
const expander[]{
128 (
to_json_str<Is, traits::nth_element<Is, JsonMembers...>>(
129 is_first,
it, args, value, visited_members ),
135 if constexpr(
sizeof...( Is ) > 0 ) {
145 template<
typename... JsonMembers,
typename OutputIterator,
152 Tuple
const &args, Value
const &value, std::index_sequence<Is...> ) {
157 size_t array_idx = 0;
161 daw::Empty
const expander[]{
163 array_idx,
sizeof...( Is ),
it, args ),
169 if constexpr(
sizeof...( Is ) != 0 ) {
Iterator & it
Definition: daw_json_traits.h:251
constexpr DAW_ATTRIB_INLINE void dependent_member_to_json_str(bool &, OutputIterator const &, TpArgs const &, Value const &, VisitedMembers const &)
Definition: to_daw_json_string.h:1395
constexpr void to_json_ordered_str(std::size_t &array_idx, std::size_t array_size, serialization_policy< OutputIterator, SerializerOptions > &it, Tuple< Args... > const &tp)
Definition: to_daw_json_string.h:1493
std::uint32_t json_options_t
Definition: daw_json_option_bits.h:23
constexpr serialization_policy< OutputIterator, SerializationOptions > serialize_json_class(serialization_policy< OutputIterator, SerializationOptions > it, Tuple const &args, Value const &value, std::index_sequence< Is... >)
Definition: daw_json_serialize_impl.h:91
constexpr serialization_policy< OutputIterator, SerializerOptions > serialize_ordered_json_class(serialization_policy< OutputIterator, SerializerOptions > it, Tuple const &args, Value const &value, std::index_sequence< Is... >)
Definition: daw_json_serialize_impl.h:150
constexpr void to_json_str(bool &is_first, serialization_policy< OutputIterator, SerializationOptions > &it, Tuple const &tp, Value const &, Visited &visited_members)
Definition: to_daw_json_string.h:1455
@ Tuple
A variant type where the Switcher is based on a submember of the class being parsed.
Definition: daw_from_json.h:22
constexpr std::size_t size() const
Definition: daw_json_serialize_impl.h:68
constexpr basic_array_t()=default
constexpr T const * data() const
Definition: daw_json_serialize_impl.h:60
constexpr T * data()
Definition: daw_json_serialize_impl.h:64
Definition: daw_json_serialize_impl.h:26
constexpr void push_back(T const &v)
Definition: daw_json_serialize_impl.h:48
constexpr T const * data() const
Definition: daw_json_serialize_impl.h:36
static constexpr std::size_t capacity
Definition: daw_json_serialize_impl.h:27
constexpr T * data()
Definition: daw_json_serialize_impl.h:40
constexpr basic_array_t()=default
constexpr std::size_t size() const
Definition: daw_json_serialize_impl.h:44
Definition: daw_json_serialize_policy.h:47
#define DAW_JSON_VER
The version string used in namespace definitions. Must be a valid namespace name.
Definition: version.h:16