PERF: readability container size empty
The emptiness of a container should be checked using the empty() method
instead of the size() method. It is not guaranteed that size() is a
constant-time function, and it is generally more efficient and also
shows clearer intent to use empty(). Furthermore some containers may
implement the empty() method but not implement the size() method. Using
empty() whenever possible makes it easier to switch to another container
in the future.
SRCDIR=/Users/johnsonhj/src/jsoncpp/ #My local SRC
BLDDIR=/Users/johnsonhj/src/jsoncpp/cmake-build-debug/ #My local BLD
cd /Users/johnsonhj/src/jsoncpp/cmake-build-debug/
run-clang-tidy.py -extra-arg=-D__clang__ -checks=-*,readability-container-size-empty -header-filter=.* -fix
diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp
index fe79634..aa5156f 100644
--- a/src/lib_json/json_reader.cpp
+++ b/src/lib_json/json_reader.cpp
@@ -880,7 +880,7 @@
return true;
}
-bool Reader::good() const { return !errors_.size(); }
+bool Reader::good() const { return errors_.empty(); }
// exact copy of Features
class OurFeatures {
@@ -1895,7 +1895,7 @@
return true;
}
-bool OurReader::good() const { return !errors_.size(); }
+bool OurReader::good() const { return errors_.empty(); }
class OurCharReader : public CharReader {
bool const collectComments_;
@@ -1961,7 +1961,7 @@
inv[key] = settings_[key];
}
}
- return 0u == inv.size();
+ return inv.empty();
}
Value& CharReaderBuilder::operator[](const JSONCPP_STRING& key) {
return settings_[key];
diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp
index 1aec87f..c7fcfa4 100644
--- a/src/lib_json/json_value.cpp
+++ b/src/lib_json/json_value.cpp
@@ -889,8 +889,8 @@
return (isNumeric() && asDouble() == 0.0) ||
(type_ == booleanValue && value_.bool_ == false) ||
(type_ == stringValue && asString().empty()) ||
- (type_ == arrayValue && value_.map_->size() == 0) ||
- (type_ == objectValue && value_.map_->size() == 0) ||
+ (type_ == arrayValue && value_.map_->empty()) ||
+ (type_ == objectValue && value_.map_->empty()) ||
type_ == nullValue;
case intValue:
return isInt() ||
diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp
index 4f77121..7138b7a 100644
--- a/src/lib_json/json_writer.cpp
+++ b/src/lib_json/json_writer.cpp
@@ -551,7 +551,7 @@
for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
const Value& childValue = value[index];
isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
- childValue.size() > 0);
+ !childValue.empty());
}
if (!isMultiLine) // check if line length > max line length
{
@@ -774,7 +774,7 @@
for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
const Value& childValue = value[index];
isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
- childValue.size() > 0);
+ !childValue.empty());
}
if (!isMultiLine) // check if line length > max line length
{
@@ -1059,7 +1059,7 @@
for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) {
Value const& childValue = value[index];
isMultiLine = ((childValue.isArray() || childValue.isObject()) &&
- childValue.size() > 0);
+ !childValue.empty());
}
if (!isMultiLine) // check if line length > max line length
{
@@ -1226,7 +1226,7 @@
inv[key] = settings_[key];
}
}
- return 0u == inv.size();
+ return inv.empty();
}
Value& StreamWriterBuilder::operator[](const JSONCPP_STRING& key) {
return settings_[key];
diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp
index 23da4b3..4dfca75 100644
--- a/src/test_lib_json/main.cpp
+++ b/src/test_lib_json/main.cpp
@@ -1818,7 +1818,7 @@
b.settings_["dropNullPlaceholders"] = false;
JSONTEST_ASSERT(Json::writeString(b, nullValue) == "null");
b.settings_["dropNullPlaceholders"] = true;
- JSONTEST_ASSERT(Json::writeString(b, nullValue) == "");
+ JSONTEST_ASSERT(Json::writeString(b, nullValue).empty());
}
JSONTEST_FIXTURE(StreamWriterTest, writeZeroes) {
@@ -1850,8 +1850,8 @@
Json::Value root;
bool ok = reader.parse("{ \"property\" : \"value\" }", root);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(reader.getFormattedErrorMessages().size() == 0);
- JSONTEST_ASSERT(reader.getStructuredErrors().size() == 0);
+ JSONTEST_ASSERT(reader.getFormattedErrorMessages().empty());
+ JSONTEST_ASSERT(reader.getStructuredErrors().empty());
}
JSONTEST_FIXTURE(ReaderTest, parseWithNoErrorsTestingOffsets) {
@@ -1862,8 +1862,8 @@
"null, \"false\" : false }",
root);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(reader.getFormattedErrorMessages().size() == 0);
- JSONTEST_ASSERT(reader.getStructuredErrors().size() == 0);
+ JSONTEST_ASSERT(reader.getFormattedErrorMessages().empty());
+ JSONTEST_ASSERT(reader.getStructuredErrors().empty());
JSONTEST_ASSERT(root["property"].getOffsetStart() == 15);
JSONTEST_ASSERT(root["property"].getOffsetLimit() == 34);
JSONTEST_ASSERT(root["property"][0].getOffsetStart() == 16);
@@ -1944,7 +1944,7 @@
char const doc[] = "{ \"property\" : \"value\" }";
bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(errs.size() == 0);
+ JSONTEST_ASSERT(errs.empty());
delete reader;
}
@@ -1958,7 +1958,7 @@
"null, \"false\" : false }";
bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(errs.size() == 0);
+ JSONTEST_ASSERT(errs.empty());
delete reader;
}
@@ -2014,7 +2014,7 @@
JSONCPP_STRING errs;
bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(errs == "");
+ JSONTEST_ASSERT(errs.empty());
JSONTEST_ASSERT_EQUAL("value", root["property"]);
delete reader;
}
@@ -2061,7 +2061,7 @@
JSONCPP_STRING errs;
bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(errs == "");
+ JSONTEST_ASSERT(errs.empty());
JSONTEST_ASSERT_EQUAL("property", root);
delete reader;
}
@@ -2176,7 +2176,7 @@
char const doc[] = "[]";
bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(errs == "");
+ JSONTEST_ASSERT(errs.empty());
JSONTEST_ASSERT_EQUAL(0u, root.size());
JSONTEST_ASSERT_EQUAL(Json::arrayValue, root);
}
@@ -2184,7 +2184,7 @@
char const doc[] = "[null]";
bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(errs == "");
+ JSONTEST_ASSERT(errs.empty());
JSONTEST_ASSERT_EQUAL(1u, root.size());
}
{
@@ -2212,7 +2212,7 @@
char const doc[] = "[,null]";
bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(errs == "");
+ JSONTEST_ASSERT(errs.empty());
JSONTEST_ASSERT_EQUAL(2u, root.size());
}
{
@@ -2240,7 +2240,7 @@
char const doc[] = "[,,null]";
bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(errs == "");
+ JSONTEST_ASSERT(errs.empty());
JSONTEST_ASSERT_EQUAL(3u, root.size());
}
{
@@ -2263,7 +2263,7 @@
char const doc[] = "[,,,[]]";
bool ok = reader->parse(doc, doc + std::strlen(doc), &root, &errs);
JSONTEST_ASSERT(ok);
- JSONTEST_ASSERT(errs == "");
+ JSONTEST_ASSERT(errs.empty());
JSONTEST_ASSERT_EQUAL(4u, root.size());
JSONTEST_ASSERT_EQUAL(Json::arrayValue, root[3u]);
}