/* * 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 #include 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 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