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>
42template <
typename char_t,
typename traits,
typename allocator_type>
47template <
typename allocator_type = std::allocator<std::
byte>>
52#if !defined(DOXYGEN_SKIP)
56template <
typename allocator_type = std::allocator<std::
byte>>
59template <
typename allocator_type = std::allocator<std::
byte>>
62template <
typename char_type = char,
63 typename char_traits = std::char_traits<char_type>,
64 typename allocator_type = std::allocator<char_type>>
67template <
typename allocator_type = std::allocator<std::
byte>>
70template <
typename allocator_type>
71void swap(value<allocator_type> &, value<allocator_type> &)
noexcept;
73template <
typename allocator_type>
74void swap(string<allocator_type> &, string<allocator_type> &)
noexcept;
76template <
typename allocator_type>
77void swap(array<allocator_type> &, array<allocator_type> &)
noexcept;
79template <
typename allocator_type>
80void swap(object<allocator_type> &, object<allocator_type> &)
noexcept;
82template <
typename char_type,
typename char_traits,
typename allocator_type>
83void swap(key_value_pair<char_type, char_traits, allocator_type> &,
84 key_value_pair<char_type, char_traits, allocator_type> &)
noexcept;
86template <
typename char_type,
typename char_traits,
typename allocator_type>
87bool operator==(
const key_value_pair<char_type, char_traits, allocator_type> &,
88 const boost::json::key_value_pair &);
90template <
typename char_type,
typename char_traits,
typename allocator_type>
91bool operator==(
const boost::json::key_value_pair &,
92 const key_value_pair<char_type, char_traits, allocator_type> &);
94template <
typename char_type,
typename char_traits,
typename allocator_type>
95bool operator!=(
const key_value_pair<char_type, char_traits, allocator_type> &,
96 const boost::json::key_value_pair &);
98template <
typename char_type,
typename char_traits,
typename allocator_type>
99bool operator!=(
const boost::json::key_value_pair &,
100 const key_value_pair<char_type, char_traits, allocator_type> &);
102template <
typename allocator_type>
103bool operator==(
const value<allocator_type> &,
const boost::json::value &);
105template <
typename allocator_type>
106bool operator==(
const boost::json::value &,
const value<allocator_type> &);
108template <
typename allocator_type>
109bool operator!=(
const value<allocator_type> &,
const boost::json::value &);
111template <
typename allocator_type>
112bool operator!=(
const boost::json::value &,
const value<allocator_type> &);
114template <
typename allocator_type>
115bool operator==(
const array<allocator_type> &,
const boost::json::array &);
117template <
typename allocator_type>
118bool operator==(
const boost::json::array &,
const array<allocator_type> &);
120template <
typename allocator_type>
121bool operator!=(
const array<allocator_type> &,
const boost::json::array &);
123template <
typename allocator_type>
124bool operator!=(
const boost::json::array &,
const array<allocator_type> &);
126template <
typename allocator_type>
127bool operator==(
const object<allocator_type> &,
const boost::json::object &);
129template <
typename allocator_type>
130bool operator==(
const boost::json::object &,
const object<allocator_type> &);
132template <
typename allocator_type>
133bool operator!=(
const object<allocator_type> &,
const boost::json::object &);
135template <
typename allocator_type>
136bool operator!=(
const boost::json::object &,
const object<allocator_type> &);
138template <
typename char_t,
typename traits,
typename allocator>
139bool operator==(
const basic_string<char_t, traits, allocator> &,
140 const boost::json::string &);
142template <
typename char_t,
typename traits,
typename allocator>
144 const basic_string<char_t, traits, allocator> &);
146template <
typename char_t,
typename traits,
typename allocator>
147bool operator!=(
const basic_string<char_t, traits, allocator> &,
148 const boost::json::string &);
150template <
typename char_t,
typename traits,
typename allocator>
152 const basic_string<char_t, traits, allocator> &);
154template <
typename allocator_type,
int indent_size = 2>
155void pretty_print(std::ostream &,
const value<allocator_type> &);
157template <
typename allocator_type>
158std::string
serialize(
const value<allocator_type> &);
160template <
typename allocator_type>
161std::string
serialize(
const object<allocator_type> &);
163template <
typename allocator_type>
164std::string
serialize(
const array<allocator_type> &);
166template <
typename char_type,
typename traits,
typename allocator_type>
167std::string
serialize(
const basic_string<char_type, traits, allocator_type> &);
169template <
typename allocator_type>
170std::ostream &
operator<<(std::ostream &,
const value<allocator_type> &);
172template <
typename allocator_type>
173std::ostream &
operator<<(std::ostream &,
const object<allocator_type> &);
175template <
typename allocator_type>
176std::ostream &
operator<<(std::ostream &,
const array<allocator_type> &);
178template <
typename allocator_type = std::allocator<std::
byte>>
179value<allocator_type>
parse(std::string_view,
180 const allocator_type &allocator = allocator_type());
182template <
typename T,
typename allocator_type = std::allocator<std::
byte>>
184 T &&,
const allocator_type &allocator = allocator_type());
186template <
typename T,
typename allocator_type>
187T
value_to(
const value<allocator_type> &);
191template <
typename allocator_type,
typename other_value_type>
193 const other_value_type &)
noexcept;
195template <
typename char_t,
typename traits,
typename allocator,
196 typename other_string_type>
198 const other_string_type &)
noexcept;
200template <
typename allocator_type,
typename other_array_type>
202 const other_array_type &)
noexcept;
204template <
typename allocator_type,
typename other_
object_type>
205bool general_object_equal(
const object<allocator_type> &,
206 const other_object_type &)
noexcept;
208template <
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;