| Adam Lesinski | de7de47 | 2014-11-03 12:03:08 -0800 | [diff] [blame] | 1 | /* | 
|  | 2 | * Copyright (C) 2014 The Android Open Source Project | 
|  | 3 | * | 
|  | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | 5 | * you may not use this file except in compliance with the License. | 
|  | 6 | * You may obtain a copy of the License at | 
|  | 7 | * | 
|  | 8 | *      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | 9 | * | 
|  | 10 | * Unless required by applicable law or agreed to in writing, software | 
|  | 11 | * distributed under the License is distributed on an "AS IS" BASIS, | 
|  | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | 13 | * See the License for the specific language governing permissions and | 
|  | 14 | * limitations under the License. | 
|  | 15 | */ | 
|  | 16 |  | 
|  | 17 | #ifndef AAPT_SYMBOL_H | 
|  | 18 | #define AAPT_SYMBOL_H | 
|  | 19 |  | 
|  | 20 | #include <utils/String8.h> | 
|  | 21 | #include <utils/String16.h> | 
|  | 22 |  | 
|  | 23 | #include "ConfigDescription.h" | 
|  | 24 | #include "SourcePos.h" | 
|  | 25 |  | 
|  | 26 | /** | 
|  | 27 | * A resource symbol, not attached to any configuration or context. | 
|  | 28 | */ | 
|  | 29 | struct Symbol { | 
|  | 30 | inline Symbol(); | 
|  | 31 | inline Symbol(const android::String16& p, const android::String16& t, const android::String16& n, uint32_t i); | 
|  | 32 | inline android::String8 toString() const; | 
|  | 33 | inline bool operator<(const Symbol& rhs) const; | 
|  | 34 |  | 
|  | 35 | android::String16 package; | 
|  | 36 | android::String16 type; | 
|  | 37 | android::String16 name; | 
|  | 38 | uint32_t id; | 
|  | 39 |  | 
|  | 40 | }; | 
|  | 41 |  | 
|  | 42 | /** | 
|  | 43 | * A specific defintion of a symbol, defined with a configuration and a definition site. | 
|  | 44 | */ | 
|  | 45 | struct SymbolDefinition { | 
|  | 46 | inline SymbolDefinition(); | 
|  | 47 | inline SymbolDefinition(const Symbol& s, const ConfigDescription& c, const SourcePos& src); | 
|  | 48 | inline bool operator<(const SymbolDefinition& rhs) const; | 
|  | 49 |  | 
|  | 50 | Symbol symbol; | 
|  | 51 | ConfigDescription config; | 
|  | 52 | SourcePos source; | 
|  | 53 | }; | 
|  | 54 |  | 
|  | 55 | // | 
|  | 56 | // Implementations | 
|  | 57 | // | 
|  | 58 |  | 
|  | 59 | Symbol::Symbol() { | 
|  | 60 | } | 
|  | 61 |  | 
|  | 62 | Symbol::Symbol(const android::String16& p, const android::String16& t, const android::String16& n, uint32_t i) | 
|  | 63 | : package(p) | 
|  | 64 | , type(t) | 
|  | 65 | , name(n) | 
|  | 66 | , id(i) { | 
|  | 67 | } | 
|  | 68 |  | 
|  | 69 | android::String8 Symbol::toString() const { | 
|  | 70 | return android::String8::format("%s:%s/%s (0x%08x)", | 
| Tomasz Wasilczyk | ade0631 | 2023-08-10 23:54:44 +0000 | [diff] [blame^] | 71 | android::String8(package).c_str(), | 
|  | 72 | android::String8(type).c_str(), | 
|  | 73 | android::String8(name).c_str(), | 
| Adam Lesinski | de7de47 | 2014-11-03 12:03:08 -0800 | [diff] [blame] | 74 | (int) id); | 
|  | 75 | } | 
|  | 76 |  | 
|  | 77 | bool Symbol::operator<(const Symbol& rhs) const { | 
|  | 78 | return (package < rhs.package) || (type < rhs.type) || (name < rhs.name) || (id < rhs.id); | 
|  | 79 | } | 
|  | 80 |  | 
|  | 81 | SymbolDefinition::SymbolDefinition() { | 
|  | 82 | } | 
|  | 83 |  | 
|  | 84 | SymbolDefinition::SymbolDefinition(const Symbol& s, const ConfigDescription& c, const SourcePos& src) | 
|  | 85 | : symbol(s) | 
|  | 86 | , config(c) | 
|  | 87 | , source(src) { | 
|  | 88 | } | 
|  | 89 |  | 
|  | 90 | bool SymbolDefinition::operator<(const SymbolDefinition& rhs) const { | 
|  | 91 | return (symbol < rhs.symbol) || (config < rhs.config) || (source < rhs.source); | 
|  | 92 | } | 
|  | 93 |  | 
|  | 94 | #endif // AAPT_SYMBOL_H | 
|  | 95 |  |