Replace Maybe with std::optional
With c++17, std::optional provides the functionality that Maybe
provided.
Bug: 183215655
Test: aapt2_tests
Change-Id: I62bb9c2fa4985dc5217a6ed153df92b85ad9a034
diff --git a/tools/aapt2/java/JavaClassGenerator.cpp b/tools/aapt2/java/JavaClassGenerator.cpp
index de6524d..3b3c6e1 100644
--- a/tools/aapt2/java/JavaClassGenerator.cpp
+++ b/tools/aapt2/java/JavaClassGenerator.cpp
@@ -204,7 +204,7 @@
}
// Whether or not to skip writing this symbol.
-bool JavaClassGenerator::SkipSymbol(const Maybe<SymbolTable::Symbol>& symbol) {
+bool JavaClassGenerator::SkipSymbol(const std::optional<SymbolTable::Symbol>& symbol) {
return !symbol || (options_.types == JavaClassGeneratorOptions::SymbolTypes::kPublic &&
!symbol.value().is_public);
}
@@ -212,12 +212,12 @@
struct StyleableAttr {
const Reference* attr_ref = nullptr;
std::string field_name;
- Maybe<SymbolTable::Symbol> symbol;
+ std::optional<SymbolTable::Symbol> symbol;
};
static bool operator<(const StyleableAttr& lhs, const StyleableAttr& rhs) {
- const ResourceId lhs_id = lhs.attr_ref->id.value_or_default(ResourceId(0));
- const ResourceId rhs_id = rhs.attr_ref->id.value_or_default(ResourceId(0));
+ const ResourceId lhs_id = lhs.attr_ref->id.value_or(ResourceId(0));
+ const ResourceId rhs_id = rhs.attr_ref->id.value_or(ResourceId(0));
if (lhs_id == rhs_id) {
return lhs.attr_ref->name.value() < rhs.attr_ref->name.value();
}
@@ -362,7 +362,7 @@
array_def->AddElement(field_name);
r_txt_contents = field_name.ref;
} else {
- const ResourceId attr_id = attr.attr_ref->id.value_or_default(ResourceId(0));
+ const ResourceId attr_id = attr.attr_ref->id.value_or(ResourceId(0));
array_def->AddElement(attr_id);
r_txt_contents = to_string(attr_id);
}
@@ -504,9 +504,9 @@
}
}
-Maybe<std::string> JavaClassGenerator::UnmangleResource(const StringPiece& package_name,
- const StringPiece& package_name_to_generate,
- const ResourceEntry& entry) {
+std::optional<std::string> JavaClassGenerator::UnmangleResource(
+ const StringPiece& package_name, const StringPiece& package_name_to_generate,
+ const ResourceEntry& entry) {
if (SkipSymbol(entry.visibility.level)) {
return {};
}
@@ -535,7 +535,7 @@
MethodDefinition* out_rewrite_method_def,
Printer* r_txt_printer) {
for (const auto& entry : type.entries) {
- const Maybe<std::string> unmangled_name =
+ const std::optional<std::string> unmangled_name =
UnmangleResource(package.name, package_name_to_generate, *entry);
if (!unmangled_name) {
continue;
diff --git a/tools/aapt2/java/JavaClassGenerator.h b/tools/aapt2/java/JavaClassGenerator.h
index d9d1b39..b45a2f1 100644
--- a/tools/aapt2/java/JavaClassGenerator.h
+++ b/tools/aapt2/java/JavaClassGenerator.h
@@ -46,7 +46,7 @@
// If set, generates code to rewrite the package ID of resources.
// Implies use_final == true. Default is unset.
- Maybe<OnResourcesLoadedCallbackOptions> rewrite_callback_options;
+ std::optional<OnResourcesLoadedCallbackOptions> rewrite_callback_options;
enum class SymbolTypes {
kAll,
@@ -83,13 +83,13 @@
private:
bool SkipSymbol(Visibility::Level state);
- bool SkipSymbol(const Maybe<SymbolTable::Symbol>& symbol);
+ bool SkipSymbol(const std::optional<SymbolTable::Symbol>& symbol);
// 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.
- Maybe<std::string> UnmangleResource(const android::StringPiece& package_name,
- const android::StringPiece& package_name_to_generate,
- const ResourceEntry& entry);
+ std::optional<std::string> UnmangleResource(const android::StringPiece& package_name,
+ const android::StringPiece& package_name_to_generate,
+ const ResourceEntry& entry);
bool ProcessType(const android::StringPiece& package_name_to_generate,
const ResourceTablePackage& package, const ResourceTableType& type,
diff --git a/tools/aapt2/java/ManifestClassGenerator.cpp b/tools/aapt2/java/ManifestClassGenerator.cpp
index 09ea03b..a0db41b 100644
--- a/tools/aapt2/java/ManifestClassGenerator.cpp
+++ b/tools/aapt2/java/ManifestClassGenerator.cpp
@@ -19,19 +19,17 @@
#include <algorithm>
#include "Source.h"
-#include "java/AnnotationProcessor.h"
#include "java/ClassDefinition.h"
#include "java/JavaClassGenerator.h"
#include "text/Unicode.h"
-#include "util/Maybe.h"
#include "xml/XmlDom.h"
using ::aapt::text::IsJavaIdentifier;
namespace aapt {
-static Maybe<std::string> ExtractJavaIdentifier(IDiagnostics* diag, const Source& source,
- const std::string& value) {
+static std::optional<std::string> ExtractJavaIdentifier(IDiagnostics* diag, const Source& source,
+ const std::string& value) {
std::string result = value;
size_t pos = value.rfind('.');
if (pos != std::string::npos) {
@@ -63,7 +61,7 @@
return false;
}
- Maybe<std::string> result =
+ std::optional<std::string> result =
ExtractJavaIdentifier(diag, source.WithLine(el->line_number), attr->value);
if (!result) {
return false;
diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp
index d9a4caa..b939f35 100644
--- a/tools/aapt2/java/ProguardRules.cpp
+++ b/tools/aapt2/java/ProguardRules.cpp
@@ -48,7 +48,7 @@
void Visit(xml::Element* node) override {
if (!node->namespace_uri.empty()) {
- Maybe<xml::ExtractedPackage> maybe_package =
+ std::optional<xml::ExtractedPackage> maybe_package =
xml::ExtractPackageFromNamespace(node->namespace_uri);
if (maybe_package) {
// This is a custom view, let's figure out the class name from this.
@@ -270,14 +270,16 @@
get_name = true;
xml::Attribute* attr = node->FindAttribute(xml::kSchemaAndroid, "backupAgent");
if (attr) {
- Maybe<std::string> result = util::GetFullyQualifiedClassName(package_, attr->value);
+ std::optional<std::string> result =
+ util::GetFullyQualifiedClassName(package_, attr->value);
if (result) {
AddClass(node->line_number, result.value(), "");
}
}
attr = node->FindAttribute(xml::kSchemaAndroid, "appComponentFactory");
if (attr) {
- Maybe<std::string> result = util::GetFullyQualifiedClassName(package_, attr->value);
+ std::optional<std::string> result =
+ util::GetFullyQualifiedClassName(package_, attr->value);
if (result) {
AddClass(node->line_number, result.value(), "");
}
@@ -285,7 +287,8 @@
attr = node->FindAttribute(xml::kSchemaAndroid, "zygotePreloadName");
if (attr) {
- Maybe<std::string> result = util::GetFullyQualifiedClassName(package_, attr->value);
+ std::optional<std::string> result =
+ util::GetFullyQualifiedClassName(package_, attr->value);
if (result) {
AddClass(node->line_number, result.value(), "");
}
@@ -317,7 +320,8 @@
get_name = attr != nullptr;
if (get_name) {
- Maybe<std::string> result = util::GetFullyQualifiedClassName(package_, attr->value);
+ std::optional<std::string> result =
+ util::GetFullyQualifiedClassName(package_, attr->value);
if (result) {
AddClass(node->line_number, result.value(), "");
}