remark defaults via doxygen snippet

This commit is contained in:
Christopher Dunn 2015-02-09 18:16:24 -06:00
parent a9e1ab302d
commit 3cf9175bde
5 changed files with 49 additions and 1 deletions

View File

@ -103,6 +103,22 @@ std::string errs;
bool ok = Json::parseFromStream(rbuilder, std::cin, &root, &errs); bool ok = Json::parseFromStream(rbuilder, std::cin, &root, &errs);
\endcode \endcode
Yes, compile-time configuration-checking would be helpful,
but `Json::Value` lets you
write and read the builder configuration, which is better! In other words,
you can configure your JSON parser using JSON.
CharReaders and StreamWriters are not thread-safe, but they are re-usable.
\code
Json::CharReaderBuilder rbuilder;
cfg >> rbuilder.settings_;
std::unique_ptr<Json::CharReader> const reader(rbuilder.newCharReader());
reader->parse(start, stop, &value1, &errs);
// ...
reader->parse(start, stop, &value2, &errs);
// etc.
\endcode
\section _pbuild Build instructions \section _pbuild Build instructions
The build instructions are located in the file The build instructions are located in the file
<a HREF="https://github.com/open-source-parsers/jsoncpp/blob/master/README.md">README.md</a> in the top-directory of the project. <a HREF="https://github.com/open-source-parsers/jsoncpp/blob/master/README.md">README.md</a> in the top-directory of the project.
@ -137,5 +153,7 @@ and recognized in your jurisdiction.
\author Baptiste Lepilleur <blep@users.sourceforge.net> (originator) \author Baptiste Lepilleur <blep@users.sourceforge.net> (originator)
\version \include version \version \include version
We make strong guarantees about binary-compatibility, consistent with
<a href="http://apr.apache.org/versioning.html">the Apache versioning scheme</a>.
\sa version.h \sa version.h
*/ */

View File

@ -296,12 +296,14 @@ public:
// Note: We use a Json::Value so that we can add data-members to this class // Note: We use a Json::Value so that we can add data-members to this class
// without a major version bump. // without a major version bump.
/** Configuration of this builder. /** Configuration of this builder.
These are case-sensitive.
Available settings (case-sensitive): Available settings (case-sensitive):
- "collectComments": false or true (default=true) - "collectComments": false or true (default=true)
- TODO: other features ... - TODO: other features ...
But don't trust these docs. You can examine 'settings_` yourself You can examine 'settings_` yourself
to see the defaults. You can also write and read them just like any to see the defaults. You can also write and read them just like any
JSON Value. JSON Value.
\sa setDefaults(Json::Value*)
*/ */
Json::Value settings_; Json::Value settings_;
@ -316,8 +318,16 @@ public:
bool validate(Json::Value* invalid) const; bool validate(Json::Value* invalid) const;
/** Called by ctor, but you can use this to reset settings_. /** Called by ctor, but you can use this to reset settings_.
* \pre 'settings' != NULL (but Json::null is fine) * \pre 'settings' != NULL (but Json::null is fine)
* \remark Defaults:
* \snippet src/lib_json/json_reader.cpp CharReaderBuilderStrictMode
*/ */
static void setDefaults(Json::Value* settings); static void setDefaults(Json::Value* settings);
/** Same as old Features::strictMode().
* \pre 'settings' != NULL (but Json::null is fine)
* \remark Defaults:
* \snippet src/lib_json/json_reader.cpp CharReaderBuilderDefaults
*/
static void strictMode(Json::Value* settings);
}; };
/** Consume entire stream and use its begin/end. /** Consume entire stream and use its begin/end.

View File

@ -121,6 +121,8 @@ public:
bool validate(Json::Value* invalid) const; bool validate(Json::Value* invalid) const;
/** Called by ctor, but you can use this to reset settings_. /** Called by ctor, but you can use this to reset settings_.
* \pre 'settings' != NULL (but Json::null is fine) * \pre 'settings' != NULL (but Json::null is fine)
* \remark Defaults:
* \snippet src/lib_json/json_writer.cpp StreamWriterBuilderDefaults
*/ */
static void setDefaults(Json::Value* settings); static void setDefaults(Json::Value* settings);
}; };

View File

@ -952,9 +952,25 @@ bool CharReaderBuilder::validate(Json::Value* invalid) const
return valid; return valid;
} }
// static // static
void CharReaderBuilder::strictMode(Json::Value* settings)
{
//! [CharReaderBuilderStrictMode]
(*settings)["allowComments"] = false;
(*settings)["strictRoot"] = true;
(*settings)["allowDroppedNullPlaceholders"] = false;
(*settings)["allowNumericKeys"] = false;
//! [CharReaderBuilderStrictMode]
}
// static
void CharReaderBuilder::setDefaults(Json::Value* settings) void CharReaderBuilder::setDefaults(Json::Value* settings)
{ {
//! [CharReaderBuilderDefaults]
(*settings)["collectComments"] = true; (*settings)["collectComments"] = true;
(*settings)["allowComments"] = true;
(*settings)["strictRoot"] = false;
(*settings)["allowDroppedNullPlaceholders"] = false;
(*settings)["allowNumericKeys"] = false;
//! [CharReaderBuilderDefaults]
} }
////////////////////////////////// //////////////////////////////////

View File

@ -1008,8 +1008,10 @@ bool StreamWriterBuilder::validate(Json::Value* invalid) const
// static // static
void StreamWriterBuilder::setDefaults(Json::Value* settings) void StreamWriterBuilder::setDefaults(Json::Value* settings)
{ {
//! [StreamWriterBuilderDefaults]
(*settings)["commentStyle"] = "All"; (*settings)["commentStyle"] = "All";
(*settings)["indentation"] = "\t"; (*settings)["indentation"] = "\t";
//! [StreamWriterBuilderDefaults]
} }
/* /*