Make StringPiece to be std::string_view alias
Bug: 237583012
Test: build + boot + UTs
Change-Id: I849831f4466d3b9c7ec842b75256e7fcba77a0c0
diff --git a/tools/aapt2/util/Util.cpp b/tools/aapt2/util/Util.cpp
index 9b7ebdd..be87766 100644
--- a/tools/aapt2/util/Util.cpp
+++ b/tools/aapt2/util/Util.cpp
@@ -43,15 +43,14 @@
// See frameworks/base/core/java/android/content/pm/parsing/ParsingPackageUtils.java
constexpr static const size_t kMaxPackageNameSize = 223;
-static std::vector<std::string> SplitAndTransform(
- const StringPiece& str, char sep, const std::function<char(char)>& f) {
+static std::vector<std::string> SplitAndTransform(StringPiece str, char sep, char (*f)(char)) {
std::vector<std::string> parts;
const StringPiece::const_iterator end = std::end(str);
StringPiece::const_iterator start = std::begin(str);
StringPiece::const_iterator current;
do {
current = std::find(start, end, sep);
- parts.emplace_back(str.substr(start, current).to_string());
+ parts.emplace_back(start, current);
if (f) {
std::string& part = parts.back();
std::transform(part.begin(), part.end(), part.begin(), f);
@@ -61,29 +60,29 @@
return parts;
}
-std::vector<std::string> Split(const StringPiece& str, char sep) {
+std::vector<std::string> Split(StringPiece str, char sep) {
return SplitAndTransform(str, sep, nullptr);
}
-std::vector<std::string> SplitAndLowercase(const StringPiece& str, char sep) {
- return SplitAndTransform(str, sep, ::tolower);
+std::vector<std::string> SplitAndLowercase(StringPiece str, char sep) {
+ return SplitAndTransform(str, sep, [](char c) -> char { return ::tolower(c); });
}
-bool StartsWith(const StringPiece& str, const StringPiece& prefix) {
+bool StartsWith(StringPiece str, StringPiece prefix) {
if (str.size() < prefix.size()) {
return false;
}
return str.substr(0, prefix.size()) == prefix;
}
-bool EndsWith(const StringPiece& str, const StringPiece& suffix) {
+bool EndsWith(StringPiece str, StringPiece suffix) {
if (str.size() < suffix.size()) {
return false;
}
return str.substr(str.size() - suffix.size(), suffix.size()) == suffix;
}
-StringPiece TrimLeadingWhitespace(const StringPiece& str) {
+StringPiece TrimLeadingWhitespace(StringPiece str) {
if (str.size() == 0 || str.data() == nullptr) {
return str;
}
@@ -97,7 +96,7 @@
return StringPiece(start, end - start);
}
-StringPiece TrimTrailingWhitespace(const StringPiece& str) {
+StringPiece TrimTrailingWhitespace(StringPiece str) {
if (str.size() == 0 || str.data() == nullptr) {
return str;
}
@@ -111,7 +110,7 @@
return StringPiece(start, end - start);
}
-StringPiece TrimWhitespace(const StringPiece& str) {
+StringPiece TrimWhitespace(StringPiece str) {
if (str.size() == 0 || str.data() == nullptr) {
return str;
}
@@ -130,9 +129,9 @@
return StringPiece(start, end - start);
}
-static int IsJavaNameImpl(const StringPiece& str) {
+static int IsJavaNameImpl(StringPiece str) {
int pieces = 0;
- for (const StringPiece& piece : Tokenize(str, '.')) {
+ for (StringPiece piece : Tokenize(str, '.')) {
pieces++;
if (!text::IsJavaIdentifier(piece)) {
return -1;
@@ -141,17 +140,17 @@
return pieces;
}
-bool IsJavaClassName(const StringPiece& str) {
+bool IsJavaClassName(StringPiece str) {
return IsJavaNameImpl(str) >= 2;
}
-bool IsJavaPackageName(const StringPiece& str) {
+bool IsJavaPackageName(StringPiece str) {
return IsJavaNameImpl(str) >= 1;
}
-static int IsAndroidNameImpl(const StringPiece& str) {
+static int IsAndroidNameImpl(StringPiece str) {
int pieces = 0;
- for (const StringPiece& piece : Tokenize(str, '.')) {
+ for (StringPiece piece : Tokenize(str, '.')) {
if (piece.empty()) {
return -1;
}
@@ -173,15 +172,14 @@
return pieces;
}
-bool IsAndroidPackageName(const StringPiece& str) {
+bool IsAndroidPackageName(StringPiece str) {
if (str.size() > kMaxPackageNameSize) {
return false;
}
return IsAndroidNameImpl(str) > 1 || str == "android";
}
-bool IsAndroidSharedUserId(const android::StringPiece& package_name,
- const android::StringPiece& shared_user_id) {
+bool IsAndroidSharedUserId(android::StringPiece package_name, android::StringPiece shared_user_id) {
if (shared_user_id.size() > kMaxPackageNameSize) {
return false;
}
@@ -189,25 +187,24 @@
package_name == "android";
}
-bool IsAndroidSplitName(const StringPiece& str) {
+bool IsAndroidSplitName(StringPiece str) {
return IsAndroidNameImpl(str) > 0;
}
-std::optional<std::string> GetFullyQualifiedClassName(const StringPiece& package,
- const StringPiece& classname) {
+std::optional<std::string> GetFullyQualifiedClassName(StringPiece package, StringPiece classname) {
if (classname.empty()) {
return {};
}
if (util::IsJavaClassName(classname)) {
- return classname.to_string();
+ return std::string(classname);
}
if (package.empty()) {
return {};
}
- std::string result = package.to_string();
+ std::string result{package};
if (classname.data()[0] != '.') {
result += '.';
}
@@ -251,7 +248,7 @@
return static_cast<size_t>(c - start);
}
-bool VerifyJavaStringFormat(const StringPiece& str) {
+bool VerifyJavaStringFormat(StringPiece str) {
const char* c = str.begin();
const char* const end = str.end();
@@ -341,7 +338,7 @@
return true;
}
-std::u16string Utf8ToUtf16(const StringPiece& utf8) {
+std::u16string Utf8ToUtf16(StringPiece utf8) {
ssize_t utf16_length = utf8_to_utf16_length(
reinterpret_cast<const uint8_t*>(utf8.data()), utf8.length());
if (utf16_length <= 0) {
@@ -381,7 +378,7 @@
const char* end = str_.end();
if (start == end) {
end_ = true;
- token_.assign(token_.end(), 0);
+ token_ = StringPiece(token_.end(), 0);
return *this;
}
@@ -389,12 +386,12 @@
const char* current = start;
while (current != end) {
if (*current == separator_) {
- token_.assign(start, current - start);
+ token_ = StringPiece(start, current - start);
return *this;
}
++current;
}
- token_.assign(start, end - start);
+ token_ = StringPiece(start, end - start);
return *this;
}
@@ -409,15 +406,17 @@
return !(*this == rhs);
}
-Tokenizer::iterator::iterator(const StringPiece& s, char sep, const StringPiece& tok, bool end)
- : str_(s), separator_(sep), token_(tok), end_(end) {}
+Tokenizer::iterator::iterator(StringPiece s, char sep, StringPiece tok, bool end)
+ : str_(s), separator_(sep), token_(tok), end_(end) {
+}
-Tokenizer::Tokenizer(const StringPiece& str, char sep)
+Tokenizer::Tokenizer(StringPiece str, char sep)
: begin_(++iterator(str, sep, StringPiece(str.begin() - 1, 0), false)),
- end_(str, sep, StringPiece(str.end(), 0), true) {}
+ end_(str, sep, StringPiece(str.end(), 0), true) {
+}
-bool ExtractResFilePathParts(const StringPiece& path, StringPiece* out_prefix,
- StringPiece* out_entry, StringPiece* out_suffix) {
+bool ExtractResFilePathParts(StringPiece path, StringPiece* out_prefix, StringPiece* out_entry,
+ StringPiece* out_suffix) {
const StringPiece res_prefix("res/");
if (!StartsWith(path, res_prefix)) {
return false;