mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2025-08-04 10:36:23 -04:00
Some tweaks:
* Make `json.h` an IWYU import header. * Change `Reader::parse` to take its `document` parameter as `std::string_view`. * Add `static void StreamWriterBuilder::updateDefaults(const Json::Value& settings);` * Allows to set the global configuration.
This commit is contained in:
parent
ca98c98457
commit
fe2c15d388
@ -6,10 +6,10 @@
|
||||
#ifndef JSON_JSON_H_INCLUDED
|
||||
#define JSON_JSON_H_INCLUDED
|
||||
|
||||
#include "config.h"
|
||||
#include "json_features.h"
|
||||
#include "reader.h"
|
||||
#include "value.h"
|
||||
#include "writer.h"
|
||||
#include "config.h" // IWYU pragma: export
|
||||
#include "json_features.h" // IWYU pragma: export
|
||||
#include "reader.h" // IWYU pragma: export
|
||||
#include "value.h" // IWYU pragma: export
|
||||
#include "writer.h" // IWYU pragma: export
|
||||
|
||||
#endif // JSON_JSON_H_INCLUDED
|
||||
|
@ -74,7 +74,7 @@ public:
|
||||
* \return \c true if the document was successfully parsed, \c false if an
|
||||
* error occurred.
|
||||
*/
|
||||
bool parse(const std::string& document, Value& root,
|
||||
bool parse(std::string_view document, Value& root,
|
||||
bool collectComments = true);
|
||||
|
||||
/** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
|
||||
@ -400,6 +400,9 @@ public:
|
||||
bool JSON_API parseFromStream(CharReader::Factory const&, IStream&, Value* root,
|
||||
String* errs);
|
||||
|
||||
bool JSON_API parseFromString(CharReader::Factory const&, std::string_view,
|
||||
Value* root, JSONCPP_STRING* errs);
|
||||
|
||||
/** \brief Read from 'sin' into 'root'.
|
||||
*
|
||||
* Always keep comments from the input JSON.
|
||||
|
@ -143,6 +143,7 @@ public:
|
||||
* \snippet src/lib_json/json_writer.cpp StreamWriterBuilderDefaults
|
||||
*/
|
||||
static void setDefaults(Json::Value* settings);
|
||||
static void updateDefaults(const Json::Value& settings);
|
||||
};
|
||||
|
||||
/** \brief Abstract class for writers.
|
||||
|
@ -78,7 +78,7 @@ Reader::Reader() : features_(Features::all()) {}
|
||||
|
||||
Reader::Reader(const Features& features) : features_(features) {}
|
||||
|
||||
bool Reader::parse(const std::string& document, Value& root,
|
||||
bool Reader::parse(std::string_view document, Value& root,
|
||||
bool collectComments) {
|
||||
document_.assign(document.begin(), document.end());
|
||||
const char* begin = document_.c_str();
|
||||
@ -1992,6 +1992,15 @@ bool parseFromStream(CharReader::Factory const& fact, IStream& sin, Value* root,
|
||||
return reader->parse(begin, end, root, errs);
|
||||
}
|
||||
|
||||
bool parseFromString(
|
||||
CharReader::Factory const& fact, std::string_view doc, Value* root, JSONCPP_STRING* errs) {
|
||||
char const* begin = doc.data();
|
||||
char const* end = begin + doc.size();
|
||||
// Note that we do not actually need a null-terminator.
|
||||
CharReaderPtr const reader(fact.newCharReader());
|
||||
return reader->parse(begin, end, root, errs);
|
||||
}
|
||||
|
||||
IStream& operator>>(IStream& sin, Value& root) {
|
||||
CharReaderBuilder b;
|
||||
String errs;
|
||||
|
@ -1170,18 +1170,30 @@ bool StreamWriterBuilder::validate(Json::Value* invalid) const {
|
||||
Value& StreamWriterBuilder::operator[](const String& key) {
|
||||
return settings_[key];
|
||||
}
|
||||
|
||||
static Json::Value& global_settings_ = *new Json::Value([] {
|
||||
//! [StreamWriterBuilderDefaults]
|
||||
Json::Value settings;
|
||||
settings["commentStyle"] = "All";
|
||||
settings["indentation"] = "\t";
|
||||
settings["enableYAMLCompatibility"] = false;
|
||||
settings["dropNullPlaceholders"] = false;
|
||||
settings["useSpecialFloats"] = false;
|
||||
settings["emitUTF8"] = false;
|
||||
settings["precision"] = 17;
|
||||
settings["precisionType"] = "significant";
|
||||
//! [StreamWriterBuilderDefaults]
|
||||
return settings;
|
||||
}());
|
||||
|
||||
// static
|
||||
void StreamWriterBuilder::setDefaults(Json::Value* settings) {
|
||||
//! [StreamWriterBuilderDefaults]
|
||||
(*settings)["commentStyle"] = "All";
|
||||
(*settings)["indentation"] = "\t";
|
||||
(*settings)["enableYAMLCompatibility"] = false;
|
||||
(*settings)["dropNullPlaceholders"] = false;
|
||||
(*settings)["useSpecialFloats"] = false;
|
||||
(*settings)["emitUTF8"] = false;
|
||||
(*settings)["precision"] = 17;
|
||||
(*settings)["precisionType"] = "significant";
|
||||
//! [StreamWriterBuilderDefaults]
|
||||
*settings = global_settings_;
|
||||
}
|
||||
|
||||
// static
|
||||
void StreamWriterBuilder::updateDefaults(const Json::Value& settings) {
|
||||
global_settings_ = settings;
|
||||
}
|
||||
|
||||
String writeString(StreamWriter::Factory const& factory, Value const& root) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user