X-Git-Url: https://git.saurik.com/android/aapt.git/blobdiff_plain/d38cd880626e1508ffec8d891a8e61b8f5c8cb7d..19d4a91456f218b4d8b07072958f29961b07865e:/ResourceTable.h diff --git a/ResourceTable.h b/ResourceTable.h index cc2a429..a3e0666 100644 --- a/ResourceTable.h +++ b/ResourceTable.h @@ -76,6 +76,37 @@ public: class Type; class Entry; + struct ConfigDescription : public ResTable_config { + ConfigDescription() { + memset(this, 0, sizeof(*this)); + size = sizeof(ResTable_config); + } + ConfigDescription(const ResTable_config&o) { + *static_cast(this) = o; + size = sizeof(ResTable_config); + } + ConfigDescription(const ConfigDescription&o) { + *static_cast(this) = o; + } + + ConfigDescription& operator=(const ResTable_config& o) { + *static_cast(this) = o; + size = sizeof(ResTable_config); + return *this; + } + ConfigDescription& operator=(const ConfigDescription& o) { + *static_cast(this) = o; + return *this; + } + + inline bool operator<(const ConfigDescription& o) const { return compare(o) < 0; } + inline bool operator<=(const ConfigDescription& o) const { return compare(o) <= 0; } + inline bool operator==(const ConfigDescription& o) const { return compare(o) == 0; } + inline bool operator!=(const ConfigDescription& o) const { return compare(o) != 0; } + inline bool operator>=(const ConfigDescription& o) const { return compare(o) >= 0; } + inline bool operator>(const ConfigDescription& o) const { return compare(o) > 0; } + }; + ResourceTable(Bundle* bundle, const String16& assetsPackage); status_t addIncludedResources(Bundle* bundle, const sp& assets); @@ -124,6 +155,11 @@ public: const String16& type, const String16& name) const; + bool hasBagOrEntry(const String16& package, + const String16& type, + const String16& name, + const ResTable_config& config) const; + bool hasBagOrEntry(const String16& ref, const String16* defType = NULL, const String16* defPackage = NULL); @@ -162,13 +198,13 @@ public: uint32_t getResId(const String16& package, const String16& type, const String16& name, - bool onlyPublic = false) const; + bool onlyPublic = true) const; uint32_t getResId(const String16& ref, const String16* defType = NULL, const String16* defPackage = NULL, const char** outErrorMsg = NULL, - bool onlyPublic = false) const; + bool onlyPublic = true) const; static bool isValidResourceName(const String16& s); @@ -178,7 +214,9 @@ public: uint32_t attrID, const Vector* style = NULL, String16* outStr = NULL, void* accessorCookie = NULL, - uint32_t attrType = ResTable_map::TYPE_ANY); + uint32_t attrType = ResTable_map::TYPE_ANY, + const String8* configTypeName = NULL, + const ConfigDescription* config = NULL); status_t assignResourceIds(); status_t addSymbols(const sp& outSymbols = NULL); @@ -300,7 +338,10 @@ public: status_t assignResourceIds(ResourceTable* table, const String16& package); - status_t prepareFlatten(StringPool* strings, ResourceTable* table); + status_t prepareFlatten(StringPool* strings, ResourceTable* table, + const String8* configTypeName, const ConfigDescription* config); + + status_t remapStringValue(StringPool* strings); ssize_t flatten(Bundle*, const sp& data, bool isPublic); @@ -317,37 +358,6 @@ public: uint32_t mParentId; SourcePos mPos; }; - - struct ConfigDescription : public ResTable_config { - ConfigDescription() { - memset(this, 0, sizeof(*this)); - size = sizeof(ResTable_config); - } - ConfigDescription(const ResTable_config&o) { - *static_cast(this) = o; - size = sizeof(ResTable_config); - } - ConfigDescription(const ConfigDescription&o) { - *static_cast(this) = o; - } - - ConfigDescription& operator=(const ResTable_config& o) { - *static_cast(this) = o; - size = sizeof(ResTable_config); - return *this; - } - ConfigDescription& operator=(const ConfigDescription& o) { - *static_cast(this) = o; - return *this; - } - - inline bool operator<(const ConfigDescription& o) const { return compare(o) < 0; } - inline bool operator<=(const ConfigDescription& o) const { return compare(o) <= 0; } - inline bool operator==(const ConfigDescription& o) const { return compare(o) == 0; } - inline bool operator!=(const ConfigDescription& o) const { return compare(o) != 0; } - inline bool operator>=(const ConfigDescription& o) const { return compare(o) >= 0; } - inline bool operator>(const ConfigDescription& o) const { return compare(o) > 0; } - }; class ConfigList : public RefBase { public: @@ -376,10 +386,6 @@ public: void addEntry(const ResTable_config& config, const sp& entry) { mEntries.add(config, entry); } - - void removeEntryAt(int32_t index) { - mEntries.removeItemsAt(index); - } const DefaultKeyedVector >& getEntries() const { return mEntries; } private: @@ -452,9 +458,6 @@ public: const DefaultKeyedVector >& getConfigs() const { return mConfigs; } const Vector >& getOrderedConfigs() const { return mOrderedConfigs; } - void removeUniqueConfig(ConfigDescription& config) { mUniqueConfigs.remove(config); } - void removeOrderedConfigAt(uint32_t index) { mOrderedConfigs.removeItemsAt(index); } - const SortedVector& getCanAddEntries() const { return mCanAddEntries; } const SourcePos& getPos() const { return mPos; } @@ -551,31 +554,4 @@ private: map > mLocalizations; }; -class ResourceFilter -{ -public: - ResourceFilter() : mData(), mContainsPseudo(false) {} - status_t parse(const char* arg); - bool match(int axis, uint32_t value); - bool match(const ResTable_config& config); - inline bool containsPseudo() { return mContainsPseudo; } - -private: - KeyedVector > mData; - bool mContainsPseudo; -}; - -class ResourceConfigReferences -{ -public: - ResourceConfigReferences() : mRoots() {} - ~ResourceConfigReferences(); - status_t add(uint32_t id, const ResTable_config& config); - bool isRoot(uint32_t id, const ResTable_config& config); - void dump(); - -private: - KeyedVector > mRoots; -}; - #endif