clarify Builders
authorChristopher Dunn <cdunn2001@gmail.com>
Mon, 9 Feb 2015 07:29:43 +0000 (01:29 -0600)
committerChristopher Dunn <cdunn2001@gmail.com>
Mon, 9 Feb 2015 07:29:43 +0000 (01:29 -0600)
doc/jsoncpp.dox
include/json/reader.h
include/json/writer.h
src/lib_json/json_reader.cpp
src/lib_json/json_writer.cpp

index 0954974..1b246ef 100644 (file)
@@ -50,16 +50,8 @@ preserved.
 \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"]["length"] = getCurrentIndentLength();
 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
index 1111a7b..7dc9761 100644 (file)
@@ -274,21 +274,27 @@ public:
   };  // 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;
-  }
+  CharReaderBuilder();
+  virtual ~CharReaderBuilder();
 
   virtual CharReader* newCharReader() const;
 };
index 4b8a89c..871287f 100644 (file)
@@ -105,9 +105,10 @@ public:
   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.
index 119c3da..410e793 100644 (file)
@@ -915,6 +915,8 @@ CharReaderBuilder::CharReaderBuilder()
   : collectComments_(true)
   , features_(Features::all())
 {}
+CharReaderBuilder::~CharReaderBuilder()
+{}
 CharReader* CharReaderBuilder::newCharReader() const
 {
   return new OldReader(collectComments_, features_);
index 2204a4c..036bfe8 100644 (file)
@@ -971,6 +971,8 @@ StreamWriterBuilder::StreamWriterBuilder()
   : cs_(StreamWriter::CommentStyle::All)
   , indentation_("\t")
 {}
+StreamWriterBuilder::~StreamWriterBuilder()
+{}
 StreamWriter* StreamWriterBuilder::newStreamWriter(std::ostream* stream) const
 {
   std::string colonSymbol = " : ";