17#include <daw/daw_move.h>
30 template<
typename... Policies>
33 static_assert( ( json_details::is_option_flag<Policies> and ... ),
34 "Only registered policy types are allowed" );
36 if constexpr(
sizeof...( Policies ) > 0 ) {
43 template<
typename OutputIterator,
53 : json_details::iterator_wrapper<OutputIterator>{ DAW_MOVE(
it ) } {}
56 json_details::serialization::get_bits_for<SerializationFormat>(
60 json_details::serialization::get_bits_for<IndentationType>(
64 json_details::serialization::get_bits_for<RestrictedStringOutput>(
68 json_details::serialization::get_bits_for<NewLineDelimiter>(
72 json_details::serialization::get_bits_for<OutputTrailingComma>(
84 constexpr std::string_view ident =
88 daw::algorithm::copy( std::data( ident ), daw::data_end( ident ),
115 struct use_default_serialization_policy;
117 template<
typename,
typename =
void>
120 template<
typename OutputIterator, json_details::json_options_t PolicyFlags>
Iterator & it
Definition: daw_json_traits.h:251
static constexpr json_options_t default_policy_flag
Definition: daw_json_serialize_policy_details.h:234
constexpr json_options_t set_bits_for(Policy e)
Definition: daw_json_serialize_policy_details.h:213
constexpr std::string_view generate_indent
Definition: daw_json_serialize_policy_details.h:250
std::uint32_t json_options_t
Definition: daw_json_option_bits.h:23
SerializationFormat
Definition: daw_json_serialize_policy_options.h:19
NewLineDelimiter
Definition: daw_json_serialize_policy_options.h:90
OutputTrailingComma
Definition: daw_json_serialize_policy_options.h:101
constexpr json_details::json_options_t serialize_options(Policies... policies)
Definition: daw_json_serialize_policy.h:32
IndentationType
Definition: daw_json_serialize_policy_options.h:39
RestrictedStringOutput
Definition: daw_json_serialize_policy_options.h:70
Definition: daw_from_json.h:22
Definition: daw_json_serialize_policy.h:118
Definition: daw_json_serialize_policy_details.h:23
constexpr OutputIterator & raw_it()
Definition: daw_json_serialize_policy_details.h:35
Definition: daw_json_serialize_policy.h:47
constexpr void output_newline()
Definition: daw_json_serialize_policy.h:93
constexpr void output_space()
Definition: daw_json_serialize_policy.h:108
void i_am_a_serialization_policy
Definition: daw_json_serialize_policy.h:48
static constexpr OutputTrailingComma output_trailing_comma
Definition: daw_json_serialize_policy.h:71
static constexpr IndentationType indentation_type
Definition: daw_json_serialize_policy.h:59
constexpr void output_indent()
Definition: daw_json_serialize_policy.h:83
constexpr serialization_policy(OutputIterator it)
Definition: daw_json_serialize_policy.h:52
static constexpr SerializationFormat serialization_format
Definition: daw_json_serialize_policy.h:55
static constexpr NewLineDelimiter newline_delimiter
Definition: daw_json_serialize_policy.h:67
constexpr void del_indent()
Definition: daw_json_serialize_policy.h:79
constexpr void add_indent()
Definition: daw_json_serialize_policy.h:75
constexpr void next_member()
Definition: daw_json_serialize_policy.h:103
static constexpr RestrictedStringOutput restricted_string_output
Definition: daw_json_serialize_policy.h:63
std::size_t indentation_level
Definition: daw_json_serialize_policy.h:50
#define DAW_JSON_VER
The version string used in namespace definitions. Must be a valid namespace name.
Definition: version.h:16