DAW JSON Link
Loading...
Searching...
No Matches
daw_to_json_fwd.h
Go to the documentation of this file.
1// Copyright (c) Darrell Wright
2//
3// Distributed under the Boost Software License, version 1.0. (see accompanying
4// file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt)
5//
6// Official repository: https://github.com/beached/daw_json_link
7//
8
9#pragma once
10
12
15
16#include <daw/daw_enable_requires.h>
17
18#include <string>
19
20namespace daw::json {
21 inline namespace DAW_JSON_VER {
22 namespace options {
25 template<auto... PolicyFlags>
27 static_assert(
28 ( json_details::is_output_option_v<decltype( PolicyFlags )> and ... ),
29 "Only valid output flags can be used. See cookbook "
30 "output_options.md" );
31 static constexpr json_options_t value =
32 json_details::serialization::set_bits(
33 json_details::serialization::default_policy_flag, PolicyFlags... );
34 };
35
38 template<>
39 struct output_flags_t<> {
40 static constexpr json_options_t value =
41 json_details::serialization::default_policy_flag;
42 };
43
46 template<auto... PolicyFlags>
47 inline constexpr auto output_flags =
48 options::output_flags_t<PolicyFlags...>{ };
49 } // namespace options
50
61 template<
62 typename JsonClass = use_default, typename Value,
63 typename WritableType = std::string,
64 auto... PolicyFlags DAW_ENABLEIF( concepts::is_writable_output_type_v<
65 daw::remove_cvref_t<WritableType>> )>
67 concepts::is_writable_output_type_v<daw::remove_cvref_t<WritableType>> )
68 constexpr daw::rvalue_to_value_t<WritableType> to_json(
69 Value const &value, WritableType &&it = std::string{ },
70 options::output_flags_t<PolicyFlags...> = options::output_flags<> );
71
80 template<typename JsonClass = use_default, typename Value,
81 auto... PolicyFlags>
82 DAW_CPP20_CX_ALLOC std::string
83 to_json( Value const &value, options::output_flags_t<PolicyFlags...> );
84
94 template<
95 typename JsonElement = use_default, typename Container,
96 typename WritableType,
97 auto... PolicyFlags DAW_ENABLEIF( concepts::is_writable_output_type_v<
98 daw::remove_cvref_t<WritableType>> )>
100 concepts::is_writable_output_type_v<daw::remove_cvref_t<WritableType>> )
101 constexpr daw::rvalue_to_value_t<WritableType> to_json_array(
102 Container const &c, WritableType &&it,
103 options::output_flags_t<PolicyFlags...> = options::output_flags<> );
112 template<typename JsonElement = use_default, typename Container,
113 auto... PolicyFlags>
114 DAW_CPP20_CX_ALLOC std::string to_json_array(
115 Container const &c,
116 options::output_flags_t<PolicyFlags...> = options::output_flags<> );
117 } // namespace DAW_JSON_VER
118} // namespace daw::json
DAW_REQUIRES(daw::json::json_details::is_container_opted_into_json_iostreams_v< Container >) std
An opt in ostream interface for containers of types that have JSON mappings.
DAW_CPP20_CX_ALLOC std::string to_json(Value const &value, options::output_flags_t< PolicyFlags... > flgs)
Definition daw_to_json.h:78
constexpr auto output_flags
Specify output policy flags in to_json calls. See cookbook item output_options.md.
Customization point traits.
Specify output policy flags in to_json calls. See cookbook item output_options.md.
#define DAW_JSON_VER
The version string used in namespace definitions. Must be a valid namespace name.
Definition version.h:20