/* * 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 { StringPiece16 toString(ResourceType type) { switch (type) { case ResourceType::kAnim: return u"anim"; case ResourceType::kAnimator: return u"animator"; case ResourceType::kArray: return u"array"; case ResourceType::kAttr: return u"attr"; case ResourceType::kAttrPrivate: return u"^attr-private"; case ResourceType::kBool: return u"bool"; case ResourceType::kColor: return u"color"; case ResourceType::kDimen: return u"dimen"; case ResourceType::kDrawable: return u"drawable"; case ResourceType::kFraction: return u"fraction"; case ResourceType::kId: return u"id"; case ResourceType::kInteger: return u"integer"; case ResourceType::kInterpolator: return u"interpolator"; case ResourceType::kLayout: return u"layout"; case ResourceType::kMenu: return u"menu"; case ResourceType::kMipmap: return u"mipmap"; case ResourceType::kPlurals: return u"plurals"; case ResourceType::kRaw: return u"raw"; case ResourceType::kString: return u"string"; case ResourceType::kStyle: return u"style"; case ResourceType::kStyleable: return u"styleable"; case ResourceType::kTransition: return u"transition"; case ResourceType::kXml: return u"xml"; } return {}; } static const std::map<StringPiece16, ResourceType> sResourceTypeMap { { u"anim", ResourceType::kAnim }, { u"animator", ResourceType::kAnimator }, { u"array", ResourceType::kArray }, { u"attr", ResourceType::kAttr }, { u"^attr-private", ResourceType::kAttrPrivate }, { u"bool", ResourceType::kBool }, { u"color", ResourceType::kColor }, { u"dimen", ResourceType::kDimen }, { u"drawable", ResourceType::kDrawable }, { u"fraction", ResourceType::kFraction }, { u"id", ResourceType::kId }, { u"integer", ResourceType::kInteger }, { u"interpolator", ResourceType::kInterpolator }, { u"layout", ResourceType::kLayout }, { u"menu", ResourceType::kMenu }, { u"mipmap", ResourceType::kMipmap }, { u"plurals", ResourceType::kPlurals }, { u"raw", ResourceType::kRaw }, { u"string", ResourceType::kString }, { u"style", ResourceType::kStyle }, { u"styleable", ResourceType::kStyleable }, { u"transition", ResourceType::kTransition }, { u"xml", ResourceType::kXml }, }; const ResourceType* parseResourceType(const StringPiece16& 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