summaryrefslogtreecommitdiff
path: root/tools/aapt2/Resource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/aapt2/Resource.cpp')
-rw-r--r--tools/aapt2/Resource.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/aapt2/Resource.cpp b/tools/aapt2/Resource.cpp
index 6364ccdd09e5..0bb330e26e6f 100644
--- a/tools/aapt2/Resource.cpp
+++ b/tools/aapt2/Resource.cpp
@@ -134,6 +134,24 @@ static const std::map<StringPiece, ResourceType> sResourceTypeMap{
{"xml", ResourceType::kXml},
};
+ResourceNamedTypeRef ResourceNamedTypeWithDefaultName(ResourceType t) {
+ return {to_string(t), t};
+}
+
+std::optional<ResourceNamedTypeRef> ParseResourceNamedType(const android::StringPiece& s) {
+ auto colon = std::find(s.begin(), s.end(), ':');
+ const ResourceType* parsedType;
+ if (colon != s.end() && colon != std::prev(s.end())) {
+ parsedType = ParseResourceType(s.substr(s.begin(), colon));
+ } else {
+ parsedType = ParseResourceType(s);
+ }
+ if (parsedType == nullptr) {
+ return std::nullopt;
+ }
+ return ResourceNamedTypeRef(s, *parsedType);
+}
+
const ResourceType* ParseResourceType(const StringPiece& str) {
auto iter = sResourceTypeMap.find(str);
if (iter == std::end(sResourceTypeMap)) {