clarify Builders
diff --git a/doc/jsoncpp.dox b/doc/jsoncpp.dox
index 0954974..1b246ef 100644
--- a/doc/jsoncpp.dox
+++ b/doc/jsoncpp.dox
@@ -50,16 +50,8 @@
\section _example Code example
\code
-Json::Value root; // will contain the root value after parsing.
-Json::Reader reader;
-bool parsingSuccessful = reader.parse( config_doc, root );
-if ( !parsingSuccessful )
-{
- // report to the user the failure and their locations in the document.
- std::cout << "Failed to parse configuration\n"
- << reader.getFormattedErrorMessages();
- return;
-}
+Json::Value root; // 'root' will contain the root value after parsing.
+std::cin >> root; // Or see CharReaderBuilder.
// Get the value of the member of root named 'encoding', return 'UTF-8' if there is no
// such member.
@@ -80,7 +72,7 @@
root["indent"]["use_space"] = getCurrentIndentUseSpace();
// (NEW IN 1.4.0)
-// To write into a steam with minimal memory overhead,
+// To write into a stream with minimal memory overhead,
// create a Builder for a StreamWriter.
Json::StreamWriterBuilder builder;
builder.indentation_ = " "; // or whatever you like
diff --git a/include/json/reader.h b/include/json/reader.h
index 1111a7b..7dc9761 100644
--- a/include/json/reader.h
+++ b/include/json/reader.h
@@ -274,21 +274,27 @@
}; // Factory
}; // CharReader
+/** \brief Build a CharReader implementation.
+
+Usage:
+\code
+ using namespace Json;
+ CharReaderBuilder builder;
+ builder.collectComments_ = true;
+ std::shared_ptr<CharReader> reader(
+ builder.newCharReader());
+ Value value;
+ std::string errs;
+ bool ok = parseFromStream(std::cin, &value, &errs);
+\endcode
+*/
class CharReaderBuilder : public CharReader::Factory {
+public:
bool collectComments_;
Features features_;
-public:
+
CharReaderBuilder();
-
- CharReaderBuilder& withCollectComments(bool v) {
- collectComments_ = v;
- return *this;
- }
-
- CharReaderBuilder& withFeatures(Features const& v) {
- features_ = v;
- return *this;
- }
+ virtual ~CharReaderBuilder();
virtual CharReader* newCharReader() const;
};
diff --git a/include/json/writer.h b/include/json/writer.h
index 4b8a89c..871287f 100644
--- a/include/json/writer.h
+++ b/include/json/writer.h
@@ -105,9 +105,10 @@
std::string indentation_;
StreamWriterBuilder();
+ virtual ~StreamWriterBuilder();
/// Do not take ownership of sout, but maintain a reference.
- StreamWriter* newStreamWriter(std::ostream* sout) const;
+ virtual StreamWriter* newStreamWriter(std::ostream* sout) const;
};
/** \brief Build a StreamWriter implementation.
diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp
index 119c3da..410e793 100644
--- a/src/lib_json/json_reader.cpp
+++ b/src/lib_json/json_reader.cpp
@@ -915,6 +915,8 @@
: collectComments_(true)
, features_(Features::all())
{}
+CharReaderBuilder::~CharReaderBuilder()
+{}
CharReader* CharReaderBuilder::newCharReader() const
{
return new OldReader(collectComments_, features_);
diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp
index 2204a4c..036bfe8 100644
--- a/src/lib_json/json_writer.cpp
+++ b/src/lib_json/json_writer.cpp
@@ -971,6 +971,8 @@
: cs_(StreamWriter::CommentStyle::All)
, indentation_("\t")
{}
+StreamWriterBuilder::~StreamWriterBuilder()
+{}
StreamWriter* StreamWriterBuilder::newStreamWriter(std::ostream* stream) const
{
std::string colonSymbol = " : ";