| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #include "Resource.h" |
| #include "util/StringPiece.h" |
| |
| #include <map> |
| #include <string> |
| |
| namespace aapt { |
| |
| StringPiece toString(ResourceType type) { |
| switch (type) { |
| case ResourceType::kAnim: return "anim"; |
| case ResourceType::kAnimator: return "animator"; |
| case ResourceType::kArray: return "array"; |
| case ResourceType::kAttr: return "attr"; |
| case ResourceType::kAttrPrivate: return "^attr-private"; |
| case ResourceType::kBool: return "bool"; |
| case ResourceType::kColor: return "color"; |
| case ResourceType::kDimen: return "dimen"; |
| case ResourceType::kDrawable: return "drawable"; |
| case ResourceType::kFraction: return "fraction"; |
| case ResourceType::kId: return "id"; |
| case ResourceType::kInteger: return "integer"; |
| case ResourceType::kInterpolator: return "interpolator"; |
| case ResourceType::kLayout: return "layout"; |
| case ResourceType::kMenu: return "menu"; |
| case ResourceType::kMipmap: return "mipmap"; |
| case ResourceType::kPlurals: return "plurals"; |
| case ResourceType::kRaw: return "raw"; |
| case ResourceType::kString: return "string"; |
| case ResourceType::kStyle: return "style"; |
| case ResourceType::kStyleable: return "styleable"; |
| case ResourceType::kTransition: return "transition"; |
| case ResourceType::kXml: return "xml"; |
| } |
| return {}; |
| } |
| |
| static const std::map<StringPiece, ResourceType> sResourceTypeMap { |
| { "anim", ResourceType::kAnim }, |
| { "animator", ResourceType::kAnimator }, |
| { "array", ResourceType::kArray }, |
| { "attr", ResourceType::kAttr }, |
| { "^attr-private", ResourceType::kAttrPrivate }, |
| { "bool", ResourceType::kBool }, |
| { "color", ResourceType::kColor }, |
| { "dimen", ResourceType::kDimen }, |
| { "drawable", ResourceType::kDrawable }, |
| { "fraction", ResourceType::kFraction }, |
| { "id", ResourceType::kId }, |
| { "integer", ResourceType::kInteger }, |
| { "interpolator", ResourceType::kInterpolator }, |
| { "layout", ResourceType::kLayout }, |
| { "menu", ResourceType::kMenu }, |
| { "mipmap", ResourceType::kMipmap }, |
| { "plurals", ResourceType::kPlurals }, |
| { "raw", ResourceType::kRaw }, |
| { "string", ResourceType::kString }, |
| { "style", ResourceType::kStyle }, |
| { "styleable", ResourceType::kStyleable }, |
| { "transition", ResourceType::kTransition }, |
| { "xml", ResourceType::kXml }, |
| }; |
| |
| const ResourceType* parseResourceType(const StringPiece& str) { |
| auto iter = sResourceTypeMap.find(str); |
| if (iter == std::end(sResourceTypeMap)) { |
| return nullptr; |
| } |
| return &iter->second; |
| } |
| |
| bool operator<(const ResourceKey& a, const ResourceKey& b) { |
| return std::tie(a.name, a.config) < std::tie(b.name, b.config); |
| } |
| |
| bool operator<(const ResourceKeyRef& a, const ResourceKeyRef& b) { |
| return std::tie(a.name, a.config) < std::tie(b.name, b.config); |
| } |
| |
| } // namespace aapt |