Allow Json::Value to be used in a boolean context (#695)

Must bump soversion too.
This commit is contained in:
Wolfram Rösler 2017-12-05 18:18:55 +01:00 committed by Christopher Dunn
parent c39aa295e4
commit 9079422ac1
3 changed files with 9 additions and 3 deletions

View File

@ -400,8 +400,8 @@ Json::Value obj_value(Json::objectValue); // {}
/// otherwise, false.
bool empty() const;
/// Return isNull()
bool operator!() const;
/// Return !isNull()
explicit operator bool() const;
/// Remove all object members and array elements.
/// \pre type() is arrayValue, objectValue, or nullValue

View File

@ -962,7 +962,7 @@ bool Value::empty() const {
return false;
}
bool Value::operator!() const { return isNull(); }
Value::operator bool() const { return ! isNull(); }
void Value::clear() {
JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == arrayValue ||

View File

@ -308,6 +308,12 @@ JSONTEST_FIXTURE(ValueTest, null) {
JSONTEST_ASSERT_STRING_EQUAL("", null_.asString());
JSONTEST_ASSERT_EQUAL(Json::Value::null, null_);
// Test using a Value in a boolean context (false iff null)
JSONTEST_ASSERT_EQUAL(null_,false);
JSONTEST_ASSERT_EQUAL(object1_,true);
JSONTEST_ASSERT_EQUAL(!null_,true);
JSONTEST_ASSERT_EQUAL(!object1_,false);
}
JSONTEST_FIXTURE(ValueTest, strings) {