| /* |
| * Copyright (C) 2014 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. |
| */ |
| |
| #ifndef AAPT_SYMBOL_H |
| #define AAPT_SYMBOL_H |
| |
| #include <utils/String8.h> |
| #include <utils/String16.h> |
| |
| #include "ConfigDescription.h" |
| #include "SourcePos.h" |
| |
| /** |
| * A resource symbol, not attached to any configuration or context. |
| */ |
| struct Symbol { |
| inline Symbol(); |
| inline Symbol(const android::String16& p, const android::String16& t, const android::String16& n, uint32_t i); |
| inline android::String8 toString() const; |
| inline bool operator<(const Symbol& rhs) const; |
| |
| android::String16 package; |
| android::String16 type; |
| android::String16 name; |
| uint32_t id; |
| |
| }; |
| |
| /** |
| * A specific defintion of a symbol, defined with a configuration and a definition site. |
| */ |
| struct SymbolDefinition { |
| inline SymbolDefinition(); |
| inline SymbolDefinition(const Symbol& s, const ConfigDescription& c, const SourcePos& src); |
| inline bool operator<(const SymbolDefinition& rhs) const; |
| |
| Symbol symbol; |
| ConfigDescription config; |
| SourcePos source; |
| }; |
| |
| // |
| // Implementations |
| // |
| |
| Symbol::Symbol() { |
| } |
| |
| Symbol::Symbol(const android::String16& p, const android::String16& t, const android::String16& n, uint32_t i) |
| : package(p) |
| , type(t) |
| , name(n) |
| , id(i) { |
| } |
| |
| android::String8 Symbol::toString() const { |
| return android::String8::format("%s:%s/%s (0x%08x)", |
| android::String8(package).c_str(), |
| android::String8(type).c_str(), |
| android::String8(name).c_str(), |
| (int) id); |
| } |
| |
| bool Symbol::operator<(const Symbol& rhs) const { |
| return (package < rhs.package) || (type < rhs.type) || (name < rhs.name) || (id < rhs.id); |
| } |
| |
| SymbolDefinition::SymbolDefinition() { |
| } |
| |
| SymbolDefinition::SymbolDefinition(const Symbol& s, const ConfigDescription& c, const SourcePos& src) |
| : symbol(s) |
| , config(c) |
| , source(src) { |
| } |
| |
| bool SymbolDefinition::operator<(const SymbolDefinition& rhs) const { |
| return (symbol < rhs.symbol) || (config < rhs.config) || (source < rhs.source); |
| } |
| |
| #endif // AAPT_SYMBOL_H |
| |