add all features

This commit is contained in:
Christopher Dunn 2015-02-09 18:24:56 -06:00
parent 3cf9175bde
commit f757c18ca0
3 changed files with 22 additions and 9 deletions

View File

@ -298,12 +298,16 @@ public:
/** Configuration of this builder. /** Configuration of this builder.
These are case-sensitive. These are case-sensitive.
Available settings (case-sensitive): Available settings (case-sensitive):
- "collectComments": false or true (default=true) - "collectComments": false or true
- TODO: other features ... - "allowComments"
- "strictRoot"
- "allowDroppedNullPlaceholders"
- "allowNumericKeys"
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*) \sa setDefaults()
*/ */
Json::Value settings_; Json::Value settings_;
@ -312,7 +316,7 @@ public:
virtual CharReader* newCharReader() const; virtual CharReader* newCharReader() const;
/** \return true if 'settings' are illegal and consistent; /** \return true if 'settings' are legal and consistent;
* otherwise, indicate bad settings via 'invalid'. * otherwise, indicate bad settings via 'invalid'.
*/ */
bool validate(Json::Value* invalid) const; bool validate(Json::Value* invalid) const;

View File

@ -99,11 +99,13 @@ public:
// without a major version bump. // without a major version bump.
/** Configuration of this builder. /** Configuration of this builder.
Available settings (case-sensitive): Available settings (case-sensitive):
- "commentStyle": "None", "Some", or "All" (default="All") - "commentStyle": "None", "Some", or "All"
- "indentation": (default="\t") - "indentation": "<anything>"
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 settings_; Json::Value settings_;
@ -115,7 +117,7 @@ public:
*/ */
virtual StreamWriter* newStreamWriter(std::ostream* sout) const; virtual StreamWriter* newStreamWriter(std::ostream* sout) const;
/** \return true if 'settings' are illegal and consistent; /** \return true if 'settings' are legal and consistent;
* otherwise, indicate bad settings via 'invalid'. * otherwise, indicate bad settings via 'invalid'.
*/ */
bool validate(Json::Value* invalid) const; bool validate(Json::Value* invalid) const;

View File

@ -925,13 +925,20 @@ CharReader* CharReaderBuilder::newCharReader() const
bool collectComments = settings_["collectComments"].asBool(); bool collectComments = settings_["collectComments"].asBool();
Features features = Features::all(); Features features = Features::all();
// TODO: Fill in features. features.allowComments_ = settings_["allowComments"].asBool();
features.strictRoot_ = settings_["strictRoot"].asBool();
features.allowDroppedNullPlaceholders_ = settings_["allowDroppedNullPlaceholders"].asBool();
features.allowNumericKeys_ = settings_["allowNumericKeys"].asBool();
return new OldReader(collectComments, features); return new OldReader(collectComments, features);
} }
static void getValidReaderKeys(std::set<std::string>* valid_keys) static void getValidReaderKeys(std::set<std::string>* valid_keys)
{ {
valid_keys->clear(); valid_keys->clear();
valid_keys->insert("collectComments"); valid_keys->insert("collectComments");
valid_keys->insert("allowComments");
valid_keys->insert("strictRoot");
valid_keys->insert("allowDroppedNullPlaceholders");
valid_keys->insert("allowNumericKeys");
} }
bool CharReaderBuilder::validate(Json::Value* invalid) const bool CharReaderBuilder::validate(Json::Value* invalid) const
{ {