diff options
Diffstat (limited to 'tools/aapt2/Resource.cpp')
-rw-r--r-- | tools/aapt2/Resource.cpp | 18 |
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)) { |