ResourceTable.h revision 4b4f4a908895bc0ba63f929bfdc02eec22c0f6e5
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Copyright 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Build resource files from raw assets. 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef RESOURCE_TABLE_H 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define RESOURCE_TABLE_H 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "StringPool.h" 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "SourcePos.h" 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <set> 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <map> 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectusing namespace std; 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ResourceTable; 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectenum { 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project XML_COMPILE_STRIP_COMMENTS = 1<<0, 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project XML_COMPILE_ASSIGN_ATTRIBUTE_IDS = 1<<1, 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project XML_COMPILE_COMPACT_WHITESPACE = 1<<2, 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project XML_COMPILE_STRIP_WHITESPACE = 1<<3, 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project XML_COMPILE_STRIP_RAW_VALUES = 1<<4, 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project XML_COMPILE_STANDARD_RESOURCE = 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project XML_COMPILE_STRIP_COMMENTS | XML_COMPILE_ASSIGN_ATTRIBUTE_IDS 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project | XML_COMPILE_STRIP_WHITESPACE | XML_COMPILE_STRIP_RAW_VALUES 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatus_t compileXmlFile(const sp<AaptAssets>& assets, 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const sp<AaptFile>& target, 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ResourceTable* table, 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int options = XML_COMPILE_STANDARD_RESOURCE); 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatus_t compileResourceFile(Bundle* bundle, 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const sp<AaptAssets>& assets, 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const sp<AaptFile>& in, 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ResTable_config& defParams, 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const bool overwrite, 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ResourceTable* outTable); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct AccessorCookie 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SourcePos sourcePos; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String8 attr; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String8 value; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AccessorCookie(const SourcePos&p, const String8& a, const String8& v) 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :sourcePos(p), 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project attr(a), 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project value(v) 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ResourceTable : public ResTable::Accessor 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class Package; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class Type; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class Entry; 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ResourceTable(Bundle* bundle, const String16& assetsPackage); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t addIncludedResources(Bundle* bundle, const sp<AaptAssets>& assets); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t addPublic(const SourcePos& pos, 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& package, 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const uint32_t ident); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t addEntry(const SourcePos& pos, 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& package, 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& value, 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Vector<StringPool::entry_style_span>* style = NULL, 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ResTable_config* params = NULL, 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const bool doSetIndex = false, 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const int32_t format = ResTable_map::TYPE_ANY, 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const bool overwrite = false); 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t startBag(const SourcePos& pos, 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& package, 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& bagParent, 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ResTable_config* params = NULL, 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool replace = false, 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool isId = false); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t addBag(const SourcePos& pos, 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& package, 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& bagParent, 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& bagKey, 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& value, 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Vector<StringPool::entry_style_span>* style = NULL, 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ResTable_config* params = NULL, 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool replace = false, 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool isId = false, 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const int32_t format = ResTable_map::TYPE_ANY); 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool hasBagOrEntry(const String16& package, 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name) const; 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool hasBagOrEntry(const String16& ref, 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16* defType = NULL, 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16* defPackage = NULL); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool appendComment(const String16& package, 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& comment, 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool onlyIfEmpty = false); 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool appendTypeComment(const String16& package, 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& comment); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t size() const; 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t numLocalResources() const; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool hasResources() const; 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<AaptFile> flatten(Bundle*); 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static inline uint32_t makeResId(uint32_t packageId, 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t typeId, 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t nameId) 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return nameId | (typeId<<16) | (packageId<<24); 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static inline uint32_t getResId(const sp<Package>& p, 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const sp<Type>& t, 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t nameId); 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t getResId(const String16& package, 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool onlyPublic = false) const; 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t getResId(const String16& ref, 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16* defType = NULL, 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16* defPackage = NULL, 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char** outErrorMsg = NULL, 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool onlyPublic = false) const; 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static bool isValidResourceName(const String16& s); 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool stringToValue(Res_value* outValue, StringPool* pool, 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& str, 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool preserveSpaces, bool coerceType, 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t attrID, 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Vector<StringPool::entry_style_span>* style = NULL, 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16* outStr = NULL, void* accessorCookie = NULL, 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t attrType = ResTable_map::TYPE_ANY); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t assignResourceIds(); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t addSymbols(const sp<AaptSymbols>& outSymbols = NULL); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addLocalization(const String16& name, const String8& locale); 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t validateLocalizations(void); 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t flatten(Bundle*, const sp<AaptFile>& dest); 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void writePublicDefinitions(const String16& package, FILE* fp); 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual uint32_t getCustomResource(const String16& package, 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name) const; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual uint32_t getCustomResourceWithCreation(const String16& package, 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const bool createIfNeeded); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual uint32_t getRemappedPackage(uint32_t origPackage) const; 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool getAttributeType(uint32_t attrID, uint32_t* outType); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool getAttributeMin(uint32_t attrID, uint32_t* outMin); 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool getAttributeMax(uint32_t attrID, uint32_t* outMax); 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool getAttributeKeys(uint32_t attrID, Vector<String16>* outKeys); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool getAttributeEnum(uint32_t attrID, 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char16_t* name, size_t nameLen, 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Res_value* outValue); 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool getAttributeFlags(uint32_t attrID, 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char16_t* name, size_t nameLen, 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Res_value* outValue); 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual uint32_t getAttributeL10N(uint32_t attrID); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool getLocalizationSetting(); 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void reportError(void* accessorCookie, const char* fmt, ...); 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setCurrentXmlPos(const SourcePos& pos) { mCurrentXmlPos = pos; } 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class Item { 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public: 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Item() : isId(false), format(ResTable_map::TYPE_ANY), bagKeyId(0), evaluating(false) 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { memset(&parsedValue, 0, sizeof(parsedValue)); } 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Item(const SourcePos& pos, 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool _isId, 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& _value, 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Vector<StringPool::entry_style_span>* _style = NULL, 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t format = ResTable_map::TYPE_ANY); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Item(const Item& o) : sourcePos(o.sourcePos), 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isId(o.isId), value(o.value), style(o.style), 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project format(o.format), bagKeyId(o.bagKeyId), evaluating(false) { 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project memset(&parsedValue, 0, sizeof(parsedValue)); 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ~Item() { } 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Item& operator=(const Item& o) { 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sourcePos = o.sourcePos; 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isId = o.isId; 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project value = o.value; 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project style = o.style; 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project format = o.format; 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bagKeyId = o.bagKeyId; 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project parsedValue = o.parsedValue; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return *this; 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SourcePos sourcePos; 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mutable bool isId; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 value; 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Vector<StringPool::entry_style_span> style; 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t format; 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t bagKeyId; 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mutable bool evaluating; 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Res_value parsedValue; 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class Entry : public RefBase { 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public: 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Entry(const String16& name, const SourcePos& pos) 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : mName(name), mType(TYPE_UNKNOWN), 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mItemFormat(ResTable_map::TYPE_ANY), mNameIndex(-1), mPos(pos) 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { } 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Entry() { } 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project enum type { 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TYPE_UNKNOWN = 0, 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TYPE_ITEM, 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TYPE_BAG 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 getName() const { return mName; } 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project type getType() const { return mType; } 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setParent(const String16& parent) { mParent = parent; } 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 getParent() const { return mParent; } 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t makeItABag(const SourcePos& sourcePos); 2574b4f4a908895bc0ba63f929bfdc02eec22c0f6e5Robert Greenwalt 2584b4f4a908895bc0ba63f929bfdc02eec22c0f6e5Robert Greenwalt status_t emptyBag(const SourcePos& sourcePos); 2594b4f4a908895bc0ba63f929bfdc02eec22c0f6e5Robert Greenwalt 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setItem(const SourcePos& pos, 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& value, 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Vector<StringPool::entry_style_span>* style = NULL, 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t format = ResTable_map::TYPE_ANY, 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const bool overwrite = false); 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t addToBag(const SourcePos& pos, 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& key, const String16& value, 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Vector<StringPool::entry_style_span>* style = NULL, 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool replace=false, bool isId = false, 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t format = ResTable_map::TYPE_ANY); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Index of the entry's name string in the key pool. 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t getNameIndex() const { return mNameIndex; } 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setNameIndex(int32_t index) { mNameIndex = index; } 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Item* getItem() const { return mType == TYPE_ITEM ? &mItem : NULL; } 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const KeyedVector<String16, Item>& getBag() const { return mBag; } 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t generateAttributes(ResourceTable* table, 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& package); 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t assignResourceIds(ResourceTable* table, 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& package); 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t prepareFlatten(StringPool* strings, ResourceTable* table); 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ssize_t flatten(Bundle*, const sp<AaptFile>& data, bool isPublic); 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos& getPos() const { return mPos; } 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private: 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 mName; 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 mParent; 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project type mType; 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Item mItem; 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t mItemFormat; 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project KeyedVector<String16, Item> mBag; 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t mNameIndex; 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t mParentId; 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SourcePos mPos; 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project struct ConfigDescription : public ResTable_config { 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ConfigDescription() { 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project memset(this, 0, sizeof(*this)); 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size = sizeof(ResTable_config); 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ConfigDescription(const ResTable_config&o) { 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *static_cast<ResTable_config*>(this) = o; 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size = sizeof(ResTable_config); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ConfigDescription(const ConfigDescription&o) { 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *static_cast<ResTable_config*>(this) = o; 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ConfigDescription& operator=(const ResTable_config& o) { 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *static_cast<ResTable_config*>(this) = o; 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size = sizeof(ResTable_config); 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return *this; 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ConfigDescription& operator=(const ConfigDescription& o) { 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *static_cast<ResTable_config*>(this) = o; 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return *this; 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool operator<(const ConfigDescription& o) const { return compare(o) < 0; } 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool operator<=(const ConfigDescription& o) const { return compare(o) <= 0; } 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool operator==(const ConfigDescription& o) const { return compare(o) == 0; } 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool operator!=(const ConfigDescription& o) const { return compare(o) != 0; } 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool operator>=(const ConfigDescription& o) const { return compare(o) >= 0; } 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool operator>(const ConfigDescription& o) const { return compare(o) > 0; } 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class ConfigList : public RefBase { 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public: 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ConfigList(const String16& name, const SourcePos& pos) 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : mName(name), mPos(pos), mPublic(false), mEntryIndex(-1) { } 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~ConfigList() { } 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 getName() const { return mName; } 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos& getPos() const { return mPos; } 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void appendComment(const String16& comment, bool onlyIfEmpty = false); 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& getComment() const { return mComment; } 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void appendTypeComment(const String16& comment); 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& getTypeComment() const { return mTypeComment; } 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Index of this entry in its Type. 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t getEntryIndex() const { return mEntryIndex; } 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setEntryIndex(int32_t index) { mEntryIndex = index; } 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setPublic(bool pub) { mPublic = pub; } 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getPublic() const { return mPublic; } 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setPublicSourcePos(const SourcePos& pos) { mPublicSourcePos = pos; } 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos& getPublicSourcePos() { return mPublicSourcePos; } 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void addEntry(const ResTable_config& config, const sp<Entry>& entry) { 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mEntries.add(config, entry); 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const DefaultKeyedVector<ConfigDescription, sp<Entry> >& getEntries() const { return mEntries; } 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private: 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16 mName; 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos mPos; 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 mComment; 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 mTypeComment; 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mPublic; 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SourcePos mPublicSourcePos; 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t mEntryIndex; 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DefaultKeyedVector<ConfigDescription, sp<Entry> > mEntries; 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class Public { 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public: 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Public() : sourcePos(), ident(0) { } 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Public(const SourcePos& pos, 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& _comment, 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t _ident) 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : sourcePos(pos), 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project comment(_comment), ident(_ident) { } 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Public(const Public& o) : sourcePos(o.sourcePos), 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project comment(o.comment), ident(o.ident) { } 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ~Public() { } 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Public& operator=(const Public& o) { 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sourcePos = o.sourcePos; 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project comment = o.comment; 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ident = o.ident; 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return *this; 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SourcePos sourcePos; 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 comment; 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t ident; 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class Type : public RefBase { 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public: 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type(const String16& name, const SourcePos& pos) 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project : mName(name), mFirstPublicSourcePos(NULL), mPublicIndex(-1), mIndex(-1), mPos(pos) 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { } 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Type() { delete mFirstPublicSourcePos; } 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t addPublic(const SourcePos& pos, 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const uint32_t ident); 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 getName() const { return mName; } 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<Entry> getEntry(const String16& entry, 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos& pos, 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ResTable_config* config = NULL, 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool doSetIndex = false); 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos& getFirstPublicSourcePos() const { return *mFirstPublicSourcePos; } 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t getPublicIndex() const { return mPublicIndex; } 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t getIndex() const { return mIndex; } 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setIndex(int32_t index) { mIndex = index; } 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t applyPublicEntryOrder(); 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SortedVector<ConfigDescription>& getUniqueConfigs() const { return mUniqueConfigs; } 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const DefaultKeyedVector<String16, sp<ConfigList> >& getConfigs() const { return mConfigs; } 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Vector<sp<ConfigList> >& getOrderedConfigs() const { return mOrderedConfigs; } 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos& getPos() const { return mPos; } 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private: 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 mName; 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SourcePos* mFirstPublicSourcePos; 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DefaultKeyedVector<String16, Public> mPublic; 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SortedVector<ConfigDescription> mUniqueConfigs; 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DefaultKeyedVector<String16, sp<ConfigList> > mConfigs; 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Vector<sp<ConfigList> > mOrderedConfigs; 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t mPublicIndex; 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t mIndex; 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SourcePos mPos; 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class Package : public RefBase { 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public: 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Package(const String16& name, ssize_t includedId=-1); 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Package() { } 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 getName() const { return mName; } 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<Type> getType(const String16& type, 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos& pos, 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool doSetIndex = false); 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ssize_t getAssignedId() const { return mIncludedId; } 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ResStringPool& getTypeStrings() const { return mTypeStrings; } 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t indexOfTypeString(const String16& s) const { return mTypeStringsMapping.valueFor(s); } 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const sp<AaptFile> getTypeStringsData() const { return mTypeStringsData; } 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setTypeStrings(const sp<AaptFile>& data); 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ResStringPool& getKeyStrings() const { return mKeyStrings; } 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t indexOfKeyString(const String16& s) const { return mKeyStringsMapping.valueFor(s); } 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const sp<AaptFile> getKeyStringsData() const { return mKeyStringsData; } 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setKeyStrings(const sp<AaptFile>& data); 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t applyPublicTypeOrder(); 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const DefaultKeyedVector<String16, sp<Type> >& getTypes() const { return mTypes; } 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Vector<sp<Type> >& getOrderedTypes() const { return mOrderedTypes; } 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private: 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t setStrings(const sp<AaptFile>& data, 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ResStringPool* strings, 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DefaultKeyedVector<String16, uint32_t>* mappings); 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16 mName; 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ssize_t mIncludedId; 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DefaultKeyedVector<String16, sp<Type> > mTypes; 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Vector<sp<Type> > mOrderedTypes; 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<AaptFile> mTypeStringsData; 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<AaptFile> mKeyStringsData; 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ResStringPool mTypeStrings; 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ResStringPool mKeyStrings; 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DefaultKeyedVector<String16, uint32_t> mTypeStringsMapping; 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DefaultKeyedVector<String16, uint32_t> mKeyStringsMapping; 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void writePublicDefinitions(const String16& package, FILE* fp, bool pub); 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<Package> getPackage(const String16& package); 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<Type> getType(const String16& package, 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos& pos, 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool doSetIndex = false); 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<Entry> getEntry(const String16& package, 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& type, 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const String16& name, 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const SourcePos& pos, 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ResTable_config* config = NULL, 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool doSetIndex = false); 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<const Entry> getEntry(uint32_t resID, 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const ResTable_config* config = NULL) const; 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Item* getItem(uint32_t resID, uint32_t attrID) const; 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool getItemValue(uint32_t resID, uint32_t attrID, 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Res_value* outValue); 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String16 mAssetsPackage; 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<AaptAssets> mAssets; 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DefaultKeyedVector<String16, sp<Package> > mPackages; 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Vector<sp<Package> > mOrderedPackages; 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint32_t mNextPackageId; 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mHaveAppPackage; 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mIsAppPackage; 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t mNumLocal; 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SourcePos mCurrentXmlPos; 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle* mBundle; 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // key = string resource name, value = set of locales in which that name is defined 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project map<String16, set<String8> > mLocalizations; 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ResourceFilter 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ResourceFilter() : mData(), mContainsPseudo(false) {} 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project status_t parse(const char* arg); 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool match(int axis, uint32_t value); 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool match(const ResTable_config& config); 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool containsPseudo() { return mContainsPseudo; } 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project KeyedVector<int,SortedVector<uint32_t> > mData; 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool mContainsPseudo; 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 537