bulbazord created this revision. bulbazord added reviewers: JDevlieghere, mib, fdeazeve. Herald added a project: All. bulbazord requested review of this revision. Herald added a project: LLDB. Herald added a subscriber: lldb-commits.
This accomplishes a few minor things: - Removed unnecessary uses of `this->` - Removed an unnecessary std::string allocation. - Removed some nesting to improve readability using early returns where it makes sense. - Replaced `strtoul` with `llvm::to_integer` which avoids another std::string allocation. - Removed braces from single statement conditions, removed else-after-returns. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D154534 Files: lldb/source/Utility/StructuredData.cpp Index: lldb/source/Utility/StructuredData.cpp =================================================================== --- lldb/source/Utility/StructuredData.cpp +++ lldb/source/Utility/StructuredData.cpp @@ -104,33 +104,29 @@ StructuredData::ObjectSP StructuredData::Object::GetObjectForDotSeparatedPath(llvm::StringRef path) { - if (this->GetType() == lldb::eStructuredDataTypeDictionary) { + if (GetType() == lldb::eStructuredDataTypeDictionary) { std::pair<llvm::StringRef, llvm::StringRef> match = path.split('.'); - std::string key = match.first.str(); - ObjectSP value = this->GetAsDictionary()->GetValueForKey(key); - if (value.get()) { - // Do we have additional words to descend? If not, return the value - // we're at right now. - if (match.second.empty()) { - return value; - } else { - return value->GetObjectForDotSeparatedPath(match.second); - } - } - return ObjectSP(); - } - - if (this->GetType() == lldb::eStructuredDataTypeArray) { + llvm::StringRef key = match.first; + ObjectSP value = GetAsDictionary()->GetValueForKey(key); + if (!value) + return {}; + + // Do we have additional words to descend? If not, return the value + // we're at right now. + if (match.second.empty()) + return value; + + return value->GetObjectForDotSeparatedPath(match.second); + } else if (GetType() == lldb::eStructuredDataTypeArray) { std::pair<llvm::StringRef, llvm::StringRef> match = path.split('['); - if (match.second.empty()) { + if (match.second.empty()) return this->shared_from_this(); - } - errno = 0; - uint64_t val = strtoul(match.second.str().c_str(), nullptr, 10); - if (errno == 0) { - return this->GetAsArray()->GetItemAtIndex(val); - } - return ObjectSP(); + + uint64_t val = 0; + if (!llvm::to_integer(match.second, val, /* Base = */ 10)) + return {}; + + return GetAsArray()->GetItemAtIndex(val); } return this->shared_from_this();
Index: lldb/source/Utility/StructuredData.cpp =================================================================== --- lldb/source/Utility/StructuredData.cpp +++ lldb/source/Utility/StructuredData.cpp @@ -104,33 +104,29 @@ StructuredData::ObjectSP StructuredData::Object::GetObjectForDotSeparatedPath(llvm::StringRef path) { - if (this->GetType() == lldb::eStructuredDataTypeDictionary) { + if (GetType() == lldb::eStructuredDataTypeDictionary) { std::pair<llvm::StringRef, llvm::StringRef> match = path.split('.'); - std::string key = match.first.str(); - ObjectSP value = this->GetAsDictionary()->GetValueForKey(key); - if (value.get()) { - // Do we have additional words to descend? If not, return the value - // we're at right now. - if (match.second.empty()) { - return value; - } else { - return value->GetObjectForDotSeparatedPath(match.second); - } - } - return ObjectSP(); - } - - if (this->GetType() == lldb::eStructuredDataTypeArray) { + llvm::StringRef key = match.first; + ObjectSP value = GetAsDictionary()->GetValueForKey(key); + if (!value) + return {}; + + // Do we have additional words to descend? If not, return the value + // we're at right now. + if (match.second.empty()) + return value; + + return value->GetObjectForDotSeparatedPath(match.second); + } else if (GetType() == lldb::eStructuredDataTypeArray) { std::pair<llvm::StringRef, llvm::StringRef> match = path.split('['); - if (match.second.empty()) { + if (match.second.empty()) return this->shared_from_this(); - } - errno = 0; - uint64_t val = strtoul(match.second.str().c_str(), nullptr, 10); - if (errno == 0) { - return this->GetAsArray()->GetItemAtIndex(val); - } - return ObjectSP(); + + uint64_t val = 0; + if (!llvm::to_integer(match.second, val, /* Base = */ 10)) + return {}; + + return GetAsArray()->GetItemAtIndex(val); } return this->shared_from_this();
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits