mirror of
https://github.com/nlohmann/json.git
synced 2025-06-13 11:12:49 +08:00
Fixes #2728
includes some macros to be defined for using without file io.
This commit is contained in:
parent
db78ac1d77
commit
1a1381f071
@ -26,6 +26,7 @@ enum class input_format_t { json, cbor, msgpack, ubjson, bson };
|
|||||||
// input adapters //
|
// input adapters //
|
||||||
////////////////////
|
////////////////////
|
||||||
|
|
||||||
|
#ifndef JSON_NO_IO
|
||||||
/*!
|
/*!
|
||||||
Input adapter for stdio file access. This adapter read only 1 byte and do not use any
|
Input adapter for stdio file access. This adapter read only 1 byte and do not use any
|
||||||
buffer. This adapter is a very low level adapter.
|
buffer. This adapter is a very low level adapter.
|
||||||
@ -115,6 +116,7 @@ class input_stream_adapter
|
|||||||
std::istream* is = nullptr;
|
std::istream* is = nullptr;
|
||||||
std::streambuf* sb = nullptr;
|
std::streambuf* sb = nullptr;
|
||||||
};
|
};
|
||||||
|
#endif // JSON_NO_IO
|
||||||
|
|
||||||
// General-purpose iterator-based adapter. It might not be as fast as
|
// General-purpose iterator-based adapter. It might not be as fast as
|
||||||
// theoretically possible for some containers, but it is extremely versatile.
|
// theoretically possible for some containers, but it is extremely versatile.
|
||||||
@ -381,6 +383,7 @@ auto input_adapter(const ContainerType& container) -> decltype(input_adapter(beg
|
|||||||
return input_adapter(begin(container), end(container));
|
return input_adapter(begin(container), end(container));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef JSON_NO_IO
|
||||||
// Special cases with fast paths
|
// Special cases with fast paths
|
||||||
inline file_input_adapter input_adapter(std::FILE* file)
|
inline file_input_adapter input_adapter(std::FILE* file)
|
||||||
{
|
{
|
||||||
@ -396,6 +399,7 @@ inline input_stream_adapter input_adapter(std::istream&& stream)
|
|||||||
{
|
{
|
||||||
return input_stream_adapter(stream);
|
return input_stream_adapter(stream);
|
||||||
}
|
}
|
||||||
|
#endif // JSON_NO_IO
|
||||||
|
|
||||||
using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval<const char*>(), std::declval<const char*>()));
|
using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval<const char*>(), std::declval<const char*>()));
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ class output_vector_adapter : public output_adapter_protocol<CharType>
|
|||||||
std::vector<CharType>& v;
|
std::vector<CharType>& v;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef JSON_NO_IO
|
||||||
/// output adapter for output streams
|
/// output adapter for output streams
|
||||||
template<typename CharType>
|
template<typename CharType>
|
||||||
class output_stream_adapter : public output_adapter_protocol<CharType>
|
class output_stream_adapter : public output_adapter_protocol<CharType>
|
||||||
@ -73,6 +74,7 @@ class output_stream_adapter : public output_adapter_protocol<CharType>
|
|||||||
private:
|
private:
|
||||||
std::basic_ostream<CharType>& stream;
|
std::basic_ostream<CharType>& stream;
|
||||||
};
|
};
|
||||||
|
#endif // JSON_NO_IO
|
||||||
|
|
||||||
/// output adapter for basic_string
|
/// output adapter for basic_string
|
||||||
template<typename CharType, typename StringType = std::basic_string<CharType>>
|
template<typename CharType, typename StringType = std::basic_string<CharType>>
|
||||||
@ -105,8 +107,10 @@ class output_adapter
|
|||||||
output_adapter(std::vector<CharType>& vec)
|
output_adapter(std::vector<CharType>& vec)
|
||||||
: oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
|
: oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
|
||||||
|
|
||||||
|
#ifndef JSON_NO_IO
|
||||||
output_adapter(std::basic_ostream<CharType>& s)
|
output_adapter(std::basic_ostream<CharType>& s)
|
||||||
: oa(std::make_shared<output_stream_adapter<CharType>>(s)) {}
|
: oa(std::make_shared<output_stream_adapter<CharType>>(s)) {}
|
||||||
|
#endif // JSON_NO_IO
|
||||||
|
|
||||||
output_adapter(StringType& s)
|
output_adapter(StringType& s)
|
||||||
: oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {}
|
: oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {}
|
||||||
|
@ -6521,7 +6521,7 @@ class basic_json
|
|||||||
|
|
||||||
/// @name serialization
|
/// @name serialization
|
||||||
/// @{
|
/// @{
|
||||||
|
#ifndef JSON_NO_IO
|
||||||
/*!
|
/*!
|
||||||
@brief serialize to stream
|
@brief serialize to stream
|
||||||
|
|
||||||
@ -6581,7 +6581,7 @@ class basic_json
|
|||||||
{
|
{
|
||||||
return o << j;
|
return o << j;
|
||||||
}
|
}
|
||||||
|
#endif // JSON_NO_IO
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
||||||
@ -6837,7 +6837,7 @@ class basic_json
|
|||||||
? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict)
|
? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict)
|
||||||
: detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia)).sax_parse(format, sax, strict);
|
: detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia)).sax_parse(format, sax, strict);
|
||||||
}
|
}
|
||||||
|
#ifndef JSON_NO_IO
|
||||||
/*!
|
/*!
|
||||||
@brief deserialize from stream
|
@brief deserialize from stream
|
||||||
@deprecated This stream operator is deprecated and will be removed in
|
@deprecated This stream operator is deprecated and will be removed in
|
||||||
@ -6882,7 +6882,7 @@ class basic_json
|
|||||||
parser(detail::input_adapter(i)).parse(false, j);
|
parser(detail::input_adapter(i)).parse(false, j);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
#endif // JSON_NO_IO
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
///////////////////////////
|
///////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user