Make StringPiece to be std::string_view alias
Bug: 237583012
Test: build + boot + UTs
Change-Id: I849831f4466d3b9c7ec842b75256e7fcba77a0c0
diff --git a/tools/aapt2/java/AnnotationProcessor.cpp b/tools/aapt2/java/AnnotationProcessor.cpp
index 482d91a..87da09a 100644
--- a/tools/aapt2/java/AnnotationProcessor.cpp
+++ b/tools/aapt2/java/AnnotationProcessor.cpp
@@ -30,7 +30,7 @@
namespace aapt {
-StringPiece AnnotationProcessor::ExtractFirstSentence(const StringPiece& comment) {
+StringPiece AnnotationProcessor::ExtractFirstSentence(StringPiece comment) {
Utf8Iterator iter(comment);
while (iter.HasNext()) {
const char32_t codepoint = iter.Next();
@@ -62,7 +62,7 @@
}};
void AnnotationProcessor::AppendCommentLine(std::string comment) {
- static const std::string sDeprecated = "@deprecated";
+ static constexpr std::string_view sDeprecated = "@deprecated";
// Treat deprecated specially, since we don't remove it from the source comment.
if (comment.find(sDeprecated) != std::string::npos) {
@@ -74,7 +74,7 @@
if (idx != std::string::npos) {
// Captures all parameters associated with the specified annotation rule
// by matching the first pair of parantheses after the rule.
- std::regex re(rule.doc_str.to_string() + "\\s*\\((.+)\\)");
+ std::regex re(std::string(rule.doc_str) += "\\s*\\((.+)\\)");
std::smatch match_result;
const bool is_match = std::regex_search(comment, match_result, re);
// We currently only capture and preserve parameters for SystemApi.
@@ -97,7 +97,7 @@
// If there was trimming to do, copy the string.
if (trimmed.size() != comment.size()) {
- comment = trimmed.to_string();
+ comment = std::string(trimmed);
}
if (!has_comments_) {
@@ -107,12 +107,12 @@
comment_ << "\n * " << std::move(comment);
}
-void AnnotationProcessor::AppendComment(const StringPiece& comment) {
+void AnnotationProcessor::AppendComment(StringPiece comment) {
// We need to process line by line to clean-up whitespace and append prefixes.
for (StringPiece line : util::Tokenize(comment, '\n')) {
line = util::TrimWhitespace(line);
if (!line.empty()) {
- AppendCommentLine(line.to_string());
+ AppendCommentLine(std::string(line));
}
}
}
@@ -126,7 +126,7 @@
void AnnotationProcessor::Print(Printer* printer, bool strip_api_annotations) const {
if (has_comments_) {
std::string result = comment_.str();
- for (const StringPiece& line : util::Tokenize(result, '\n')) {
+ for (StringPiece line : util::Tokenize(result, '\n')) {
printer->Println(line);
}
printer->Println(" */");
diff --git a/tools/aapt2/java/AnnotationProcessor.h b/tools/aapt2/java/AnnotationProcessor.h
index f217afb..db3437e 100644
--- a/tools/aapt2/java/AnnotationProcessor.h
+++ b/tools/aapt2/java/AnnotationProcessor.h
@@ -56,11 +56,11 @@
// Extracts the first sentence of a comment. The algorithm selects the substring starting from
// the beginning of the string, and ending at the first '.' character that is followed by a
// whitespace character. If these requirements are not met, the whole string is returned.
- static android::StringPiece ExtractFirstSentence(const android::StringPiece& comment);
+ static android::StringPiece ExtractFirstSentence(android::StringPiece comment);
// Adds more comments. Resources can have value definitions for various configurations, and
// each of the definitions may have comments that need to be processed.
- void AppendComment(const android::StringPiece& comment);
+ void AppendComment(android::StringPiece comment);
void AppendNewLine();
diff --git a/tools/aapt2/java/ClassDefinition.cpp b/tools/aapt2/java/ClassDefinition.cpp
index 3163497..98f3bd2 100644
--- a/tools/aapt2/java/ClassDefinition.cpp
+++ b/tools/aapt2/java/ClassDefinition.cpp
@@ -27,8 +27,8 @@
processor_.Print(printer, strip_api_annotations);
}
-void MethodDefinition::AppendStatement(const StringPiece& statement) {
- statements_.push_back(statement.to_string());
+void MethodDefinition::AppendStatement(StringPiece statement) {
+ statements_.emplace_back(statement);
}
void MethodDefinition::Print(bool final, Printer* printer, bool) const {
@@ -110,8 +110,8 @@
" * should not be modified by hand.\n"
" */\n\n";
-void ClassDefinition::WriteJavaFile(const ClassDefinition* def, const StringPiece& package,
- bool final, bool strip_api_annotations, io::OutputStream* out) {
+void ClassDefinition::WriteJavaFile(const ClassDefinition* def, StringPiece package, bool final,
+ bool strip_api_annotations, io::OutputStream* out) {
Printer printer(out);
printer.Print(sWarningHeader).Print("package ").Print(package).Println(";");
printer.Println();
diff --git a/tools/aapt2/java/ClassDefinition.h b/tools/aapt2/java/ClassDefinition.h
index 2acdadb..63c9982 100644
--- a/tools/aapt2/java/ClassDefinition.h
+++ b/tools/aapt2/java/ClassDefinition.h
@@ -59,8 +59,8 @@
template <typename T>
class PrimitiveMember : public ClassMember {
public:
- PrimitiveMember(const android::StringPiece& name, const T& val, bool staged_api = false)
- : name_(name.to_string()), val_(val), staged_api_(staged_api) {
+ PrimitiveMember(android::StringPiece name, const T& val, bool staged_api = false)
+ : name_(name), val_(val), staged_api_(staged_api) {
}
bool empty() const override {
@@ -104,8 +104,8 @@
template <>
class PrimitiveMember<std::string> : public ClassMember {
public:
- PrimitiveMember(const android::StringPiece& name, const std::string& val, bool staged_api = false)
- : name_(name.to_string()), val_(val) {
+ PrimitiveMember(android::StringPiece name, const std::string& val, bool staged_api = false)
+ : name_(name), val_(val) {
}
bool empty() const override {
@@ -141,7 +141,8 @@
template <typename T, typename StringConverter>
class PrimitiveArrayMember : public ClassMember {
public:
- explicit PrimitiveArrayMember(const android::StringPiece& name) : name_(name.to_string()) {}
+ explicit PrimitiveArrayMember(android::StringPiece name) : name_(name) {
+ }
void AddElement(const T& val) {
elements_.emplace_back(val);
@@ -209,12 +210,12 @@
class MethodDefinition : public ClassMember {
public:
// Expected method signature example: 'public static void onResourcesLoaded(int p)'.
- explicit MethodDefinition(const android::StringPiece& signature)
- : signature_(signature.to_string()) {}
+ explicit MethodDefinition(android::StringPiece signature) : signature_(signature) {
+ }
// Appends a single statement to the method. It should include no newlines or else
// formatting may be broken.
- void AppendStatement(const android::StringPiece& statement);
+ void AppendStatement(android::StringPiece statement);
// Not quite the same as a name, but good enough.
const std::string& GetName() const override {
@@ -239,11 +240,12 @@
class ClassDefinition : public ClassMember {
public:
- static void WriteJavaFile(const ClassDefinition* def, const android::StringPiece& package,
- bool final, bool strip_api_annotations, io::OutputStream* out);
+ static void WriteJavaFile(const ClassDefinition* def, android::StringPiece package, bool final,
+ bool strip_api_annotations, io::OutputStream* out);
- ClassDefinition(const android::StringPiece& name, ClassQualifier qualifier, bool createIfEmpty)
- : name_(name.to_string()), qualifier_(qualifier), create_if_empty_(createIfEmpty) {}
+ ClassDefinition(android::StringPiece name, ClassQualifier qualifier, bool createIfEmpty)
+ : name_(name), qualifier_(qualifier), create_if_empty_(createIfEmpty) {
+ }
enum class Result {
kAdded,
diff --git a/tools/aapt2/java/JavaClassGenerator.cpp b/tools/aapt2/java/JavaClassGenerator.cpp
index a25ca22..7665d0e 100644
--- a/tools/aapt2/java/JavaClassGenerator.cpp
+++ b/tools/aapt2/java/JavaClassGenerator.cpp
@@ -57,14 +57,14 @@
"transient", "try", "void", "volatile", "while",
"true", "false", "null"};
-static bool IsValidSymbol(const StringPiece& symbol) {
+static bool IsValidSymbol(StringPiece symbol) {
return sJavaIdentifiers.find(symbol) == sJavaIdentifiers.end();
}
// Java symbols can not contain . or -, but those are valid in a resource name.
// Replace those with '_'.
-std::string JavaClassGenerator::TransformToFieldName(const StringPiece& symbol) {
- std::string output = symbol.to_string();
+std::string JavaClassGenerator::TransformToFieldName(StringPiece symbol) {
+ std::string output(symbol);
for (char& c : output) {
if (c == '.' || c == '-') {
c = '_';
@@ -84,7 +84,7 @@
// Foo_bar
static std::string TransformNestedAttr(const ResourceNameRef& attr_name,
const std::string& styleable_class_name,
- const StringPiece& package_name_to_generate) {
+ StringPiece package_name_to_generate) {
std::string output = styleable_class_name;
// We may reference IDs from other packages, so prefix the entry name with
@@ -226,16 +226,15 @@
static FieldReference GetRFieldReference(const ResourceName& name,
StringPiece fallback_package_name) {
- const std::string package_name =
- name.package.empty() ? fallback_package_name.to_string() : name.package;
+ const std::string_view package_name = name.package.empty() ? fallback_package_name : name.package;
const std::string entry = JavaClassGenerator::TransformToFieldName(name.entry);
- return FieldReference(StringPrintf("%s.R.%s.%s", package_name.c_str(),
- name.type.to_string().data(), entry.c_str()));
+ return FieldReference(
+ StringPrintf("%s.R.%s.%s", package_name.data(), name.type.to_string().data(), entry.c_str()));
}
bool JavaClassGenerator::ProcessStyleable(const ResourceNameRef& name, const ResourceId& id,
const Styleable& styleable,
- const StringPiece& package_name_to_generate,
+ StringPiece package_name_to_generate,
ClassDefinition* out_class_def,
MethodDefinition* out_rewrite_method,
Printer* r_txt_printer) {
@@ -314,7 +313,8 @@
return true;
}
const StringPiece attr_comment_line = entry.symbol.value().attribute->GetComment();
- return attr_comment_line.contains("@removed") || attr_comment_line.contains("@hide");
+ return attr_comment_line.find("@removed") != std::string::npos ||
+ attr_comment_line.find("@hide") != std::string::npos;
});
documentation_attrs.erase(documentation_remove_iter, documentation_attrs.end());
@@ -397,7 +397,7 @@
comment = styleable_attr.symbol.value().attribute->GetComment();
}
- if (comment.contains("@removed")) {
+ if (comment.find("@removed") != std::string::npos) {
// Removed attributes are public but hidden from the documentation, so
// don't emit them as part of the class documentation.
continue;
@@ -497,7 +497,7 @@
}
if (out_rewrite_method != nullptr) {
- const std::string type_str = name.type.to_string();
+ const auto type_str = name.type.to_string();
out_rewrite_method->AppendStatement(
StringPrintf("%s.%s = (%s.%s & 0x00ffffff) | packageIdBits;", type_str.data(),
field_name.data(), type_str.data(), field_name.data()));
@@ -505,8 +505,7 @@
}
std::optional<std::string> JavaClassGenerator::UnmangleResource(
- const StringPiece& package_name, const StringPiece& package_name_to_generate,
- const ResourceEntry& entry) {
+ StringPiece package_name, StringPiece package_name_to_generate, const ResourceEntry& entry) {
if (SkipSymbol(entry.visibility.level)) {
return {};
}
@@ -528,7 +527,7 @@
return {std::move(unmangled_name)};
}
-bool JavaClassGenerator::ProcessType(const StringPiece& package_name_to_generate,
+bool JavaClassGenerator::ProcessType(StringPiece package_name_to_generate,
const ResourceTablePackage& package,
const ResourceTableType& type,
ClassDefinition* out_type_class_def,
@@ -577,7 +576,7 @@
return true;
}
-bool JavaClassGenerator::Generate(const StringPiece& package_name_to_generate, OutputStream* out,
+bool JavaClassGenerator::Generate(StringPiece package_name_to_generate, OutputStream* out,
OutputStream* out_r_txt) {
return Generate(package_name_to_generate, package_name_to_generate, out, out_r_txt);
}
@@ -591,8 +590,8 @@
}
}
-bool JavaClassGenerator::Generate(const StringPiece& package_name_to_generate,
- const StringPiece& out_package_name, OutputStream* out,
+bool JavaClassGenerator::Generate(StringPiece package_name_to_generate,
+ StringPiece out_package_name, OutputStream* out,
OutputStream* out_r_txt) {
ClassDefinition r_class("R", ClassQualifier::kNone, true);
std::unique_ptr<MethodDefinition> rewrite_method;
diff --git a/tools/aapt2/java/JavaClassGenerator.h b/tools/aapt2/java/JavaClassGenerator.h
index b45a2f1..234df04 100644
--- a/tools/aapt2/java/JavaClassGenerator.h
+++ b/tools/aapt2/java/JavaClassGenerator.h
@@ -70,16 +70,16 @@
// All symbols technically belong to a single package, but linked libraries will
// have their names mangled, denoting that they came from a different package.
// We need to generate these symbols in a separate file. Returns true on success.
- bool Generate(const android::StringPiece& package_name_to_generate, io::OutputStream* out,
+ bool Generate(android::StringPiece package_name_to_generate, io::OutputStream* out,
io::OutputStream* out_r_txt = nullptr);
- bool Generate(const android::StringPiece& package_name_to_generate,
- const android::StringPiece& output_package_name, io::OutputStream* out,
+ bool Generate(android::StringPiece package_name_to_generate,
+ android::StringPiece output_package_name, io::OutputStream* out,
io::OutputStream* out_r_txt = nullptr);
const std::string& GetError() const;
- static std::string TransformToFieldName(const android::StringPiece& symbol);
+ static std::string TransformToFieldName(android::StringPiece symbol);
private:
bool SkipSymbol(Visibility::Level state);
@@ -87,11 +87,11 @@
// Returns the unmangled resource entry name if the unmangled package is the same as
// package_name_to_generate. Returns nothing if the resource should be skipped.
- std::optional<std::string> UnmangleResource(const android::StringPiece& package_name,
- const android::StringPiece& package_name_to_generate,
+ std::optional<std::string> UnmangleResource(android::StringPiece package_name,
+ android::StringPiece package_name_to_generate,
const ResourceEntry& entry);
- bool ProcessType(const android::StringPiece& package_name_to_generate,
+ bool ProcessType(android::StringPiece package_name_to_generate,
const ResourceTablePackage& package, const ResourceTableType& type,
ClassDefinition* out_type_class_def, MethodDefinition* out_rewrite_method_def,
text::Printer* r_txt_printer);
@@ -106,8 +106,7 @@
// its package ID if `out_rewrite_method` is not nullptr.
// `package_name_to_generate` is the package
bool ProcessStyleable(const ResourceNameRef& name, const ResourceId& id,
- const Styleable& styleable,
- const android::StringPiece& package_name_to_generate,
+ const Styleable& styleable, android::StringPiece package_name_to_generate,
ClassDefinition* out_class_def, MethodDefinition* out_rewrite_method,
text::Printer* r_txt_printer);