9 #ifndef METALL_JSON_JSON_FWD_HPP
10 #define METALL_JSON_JSON_FWD_HPP
17 #define METALL_LINK_WITH_BOOST_JSON
20 #define METALL_BOOST_JSON_SRC_INCLUDED
23 #ifdef METALL_LINK_WITH_BOOST_JSON
24 #include <boost/json.hpp>
26 #ifndef METALL_BOOST_JSON_SRC_INCLUDED
27 #define METALL_BOOST_JSON_SRC_INCLUDED
28 #include <boost/json/src.hpp>
42 template <
typename char_t,
typename traits,
typename allocator_type>
47 template <
typename allocator_type = std::allocator<std::
byte>>
52 #if !defined(DOXYGEN_SKIP)
56 template <
typename allocator_type = std::allocator<std::
byte>>
59 template <
typename allocator_type = std::allocator<std::
byte>>
62 template <
typename char_type = char,
63 typename char_traits = std::char_traits<char_type>,
64 typename allocator_type = std::allocator<char_type>>
67 template <
typename allocator_type = std::allocator<std::
byte>>
70 template <
typename allocator_type>
71 void swap(value<allocator_type> &, value<allocator_type> &) noexcept;
73 template <
typename allocator_type>
74 void swap(string<allocator_type> &, string<allocator_type> &) noexcept;
76 template <
typename allocator_type>
77 void swap(array<allocator_type> &, array<allocator_type> &) noexcept;
79 template <
typename allocator_type>
80 void swap(object<allocator_type> &, object<allocator_type> &) noexcept;
82 template <
typename char_type,
typename char_traits,
typename allocator_type>
83 void swap(key_value_pair<char_type, char_traits, allocator_type> &,
84 key_value_pair<char_type, char_traits, allocator_type> &) noexcept;
86 template <
typename char_type,
typename char_traits,
typename allocator_type>
87 bool operator==(
const key_value_pair<char_type, char_traits, allocator_type> &,
88 const boost::json::key_value_pair &);
90 template <
typename char_type,
typename char_traits,
typename allocator_type>
91 bool operator==(
const boost::json::key_value_pair &,
92 const key_value_pair<char_type, char_traits, allocator_type> &);
94 template <
typename char_type,
typename char_traits,
typename allocator_type>
95 bool operator!=(
const key_value_pair<char_type, char_traits, allocator_type> &,
96 const boost::json::key_value_pair &);
98 template <
typename char_type,
typename char_traits,
typename allocator_type>
99 bool operator!=(
const boost::json::key_value_pair &,
100 const key_value_pair<char_type, char_traits, allocator_type> &);
102 template <
typename allocator_type>
103 bool operator==(
const value<allocator_type> &,
const boost::json::value &);
105 template <
typename allocator_type>
106 bool operator==(
const boost::json::value &,
const value<allocator_type> &);
108 template <
typename allocator_type>
109 bool operator!=(
const value<allocator_type> &,
const boost::json::value &);
111 template <
typename allocator_type>
112 bool operator!=(
const boost::json::value &,
const value<allocator_type> &);
114 template <
typename allocator_type>
115 bool operator==(
const array<allocator_type> &,
const boost::json::array &);
117 template <
typename allocator_type>
118 bool operator==(
const boost::json::array &,
const array<allocator_type> &);
120 template <
typename allocator_type>
121 bool operator!=(
const array<allocator_type> &,
const boost::json::array &);
123 template <
typename allocator_type>
124 bool operator!=(
const boost::json::array &,
const array<allocator_type> &);
126 template <
typename allocator_type>
127 bool operator==(
const object<allocator_type> &,
const boost::json::object &);
129 template <
typename allocator_type>
130 bool operator==(
const boost::json::object &,
const object<allocator_type> &);
132 template <
typename allocator_type>
133 bool operator!=(
const object<allocator_type> &,
const boost::json::object &);
135 template <
typename allocator_type>
136 bool operator!=(
const boost::json::object &,
const object<allocator_type> &);
138 template <
typename char_t,
typename traits,
typename allocator>
139 bool operator==(
const basic_string<char_t, traits, allocator> &,
142 template <
typename char_t,
typename traits,
typename allocator>
144 const basic_string<char_t, traits, allocator> &);
146 template <
typename char_t,
typename traits,
typename allocator>
147 bool operator!=(
const basic_string<char_t, traits, allocator> &,
150 template <
typename char_t,
typename traits,
typename allocator>
152 const basic_string<char_t, traits, allocator> &);
154 template <
typename allocator_type,
int indent_size = 2>
155 void pretty_print(std::ostream &,
const value<allocator_type> &);
157 template <
typename allocator_type>
160 template <
typename allocator_type>
163 template <
typename allocator_type>
166 template <
typename char_type,
typename traits,
typename allocator_type>
169 template <
typename allocator_type>
170 std::ostream &
operator<<(std::ostream &,
const value<allocator_type> &);
172 template <
typename allocator_type>
173 std::ostream &
operator<<(std::ostream &,
const object<allocator_type> &);
175 template <
typename allocator_type>
176 std::ostream &
operator<<(std::ostream &,
const array<allocator_type> &);
178 template <
typename allocator_type = std::allocator<std::
byte>>
179 value<allocator_type>
parse(std::string_view,
180 const allocator_type &allocator = allocator_type());
182 template <
typename T,
typename allocator_type = std::allocator<std::
byte>>
184 T &&,
const allocator_type &allocator = allocator_type());
186 template <
typename T,
typename allocator_type>
187 T
value_to(
const value<allocator_type> &);
191 template <
typename allocator_type,
typename other_value_type>
193 const other_value_type &) noexcept;
195 template <
typename char_t,
typename traits,
typename allocator,
196 typename other_string_type>
198 const other_string_type &) noexcept;
200 template <
typename allocator_type,
typename other_array_type>
202 const other_array_type &) noexcept;
204 template <
typename allocator_type,
typename other_
object_type>
206 const other_object_type &) noexcept;
208 template <
typename char_type,
typename char_traits,
typename allocator_type,
209 typename other_key_value_pair_type>
211 const key_value_pair<char_type, char_traits, allocator_type> &,
212 const other_key_value_pair_type &) noexcept;