Skip to content

Commit c312dd5

Browse files
committed
Builder::operator[] plus tests
1 parent 42d7e59 commit c312dd5

5 files changed

Lines changed: 20 additions & 3 deletions

File tree

include/json/reader.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ class JSON_API CharReader {
285285
\code
286286
using namespace Json;
287287
CharReaderBuilder builder;
288-
builder.settings_["collectComments"] = false;
288+
builder["collectComments"] = false;
289289
Value value;
290290
std::string errs;
291291
bool ok = parseFromStream(builder, std::cin, &value, &errs);
@@ -337,6 +337,11 @@ class JSON_API CharReaderBuilder : public CharReader::Factory {
337337
* otherwise, indicate bad settings via 'invalid'.
338338
*/
339339
bool validate(Json::Value* invalid) const;
340+
341+
/** A simple way to update a specific setting.
342+
*/
343+
Value& operator[](std::string key);
344+
340345
/** Called by ctor, but you can use this to reset settings_.
341346
* \pre 'settings' != NULL (but Json::null is fine)
342347
* \remark Defaults:

include/json/writer.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@ class JSON_API StreamWriterBuilder : public StreamWriter::Factory {
119119
* otherwise, indicate bad settings via 'invalid'.
120120
*/
121121
bool validate(Json::Value* invalid) const;
122+
/** A simple way to update a specific setting.
123+
*/
124+
Value& operator[](std::string key);
125+
122126
/** Called by ctor, but you can use this to reset settings_.
123127
* \pre 'settings' != NULL (but Json::null is fine)
124128
* \remark Defaults:

src/lib_json/json_reader.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1927,6 +1927,10 @@ bool CharReaderBuilder::validate(Json::Value* invalid) const
19271927
}
19281928
return 0u == inv.size();
19291929
}
1930+
Value& CharReaderBuilder::operator[](std::string key)
1931+
{
1932+
return settings_[key];
1933+
}
19301934
// static
19311935
void CharReaderBuilder::strictMode(Json::Value* settings)
19321936
{

src/lib_json/json_writer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1122,6 +1122,10 @@ bool StreamWriterBuilder::validate(Json::Value* invalid) const
11221122
}
11231123
return 0u == inv.size();
11241124
}
1125+
Value& StreamWriterBuilder::operator[](std::string key)
1126+
{
1127+
return settings_[key];
1128+
}
11251129
// static
11261130
void StreamWriterBuilder::setDefaults(Json::Value* settings)
11271131
{

src/test_lib_json/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2182,7 +2182,7 @@ JSONTEST_FIXTURE(BuilderTest, settings) {
21822182
Json::CharReaderBuilder rb;
21832183
JSONTEST_ASSERT_EQUAL(false, rb.settings_.isMember("foo"));
21842184
JSONTEST_ASSERT_EQUAL(true, rb.validate(&errs));
2185-
rb.settings_["foo"] = "bar";
2185+
rb["foo"] = "bar";
21862186
JSONTEST_ASSERT_EQUAL(true, rb.settings_.isMember("foo"));
21872187
JSONTEST_ASSERT_EQUAL(false, rb.validate(&errs));
21882188
}
@@ -2191,7 +2191,7 @@ JSONTEST_FIXTURE(BuilderTest, settings) {
21912191
Json::StreamWriterBuilder wb;
21922192
JSONTEST_ASSERT_EQUAL(false, wb.settings_.isMember("foo"));
21932193
JSONTEST_ASSERT_EQUAL(true, wb.validate(&errs));
2194-
wb.settings_["foo"] = "bar";
2194+
wb["foo"] = "bar";
21952195
JSONTEST_ASSERT_EQUAL(true, wb.settings_.isMember("foo"));
21962196
JSONTEST_ASSERT_EQUAL(false, wb.validate(&errs));
21972197
}

0 commit comments

Comments
 (0)