diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
commit | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /tools/aapt/ResourceTable.h | |
parent | 076357b8567458d4b6dfdcf839ef751634cd2bfb (diff) |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'tools/aapt/ResourceTable.h')
-rw-r--r-- | tools/aapt/ResourceTable.h | 534 |
1 files changed, 0 insertions, 534 deletions
diff --git a/tools/aapt/ResourceTable.h b/tools/aapt/ResourceTable.h deleted file mode 100644 index e8fbd9b7b7c7..000000000000 --- a/tools/aapt/ResourceTable.h +++ /dev/null @@ -1,534 +0,0 @@ -// -// Copyright 2006 The Android Open Source Project -// -// Build resource files from raw assets. -// - -#ifndef RESOURCE_TABLE_H -#define RESOURCE_TABLE_H - -#include "StringPool.h" -#include "SourcePos.h" - -#include <set> -#include <map> - -using namespace std; - -class ResourceTable; - -enum { - XML_COMPILE_STRIP_COMMENTS = 1<<0, - XML_COMPILE_ASSIGN_ATTRIBUTE_IDS = 1<<1, - XML_COMPILE_COMPACT_WHITESPACE = 1<<2, - XML_COMPILE_STRIP_WHITESPACE = 1<<3, - XML_COMPILE_STRIP_RAW_VALUES = 1<<4, - - XML_COMPILE_STANDARD_RESOURCE = - XML_COMPILE_STRIP_COMMENTS | XML_COMPILE_ASSIGN_ATTRIBUTE_IDS - | XML_COMPILE_STRIP_WHITESPACE | XML_COMPILE_STRIP_RAW_VALUES -}; - -status_t compileXmlFile(const sp<AaptAssets>& assets, - const sp<AaptFile>& target, - ResourceTable* table, - int options = XML_COMPILE_STANDARD_RESOURCE); - -status_t compileResourceFile(Bundle* bundle, - const sp<AaptAssets>& assets, - const sp<AaptFile>& in, - const ResTable_config& defParams, - const bool overwrite, - ResourceTable* outTable); - -struct AccessorCookie -{ - SourcePos sourcePos; - String8 attr; - String8 value; - - AccessorCookie(const SourcePos&p, const String8& a, const String8& v) - :sourcePos(p), - attr(a), - value(v) - { - } -}; - -class ResourceTable : public ResTable::Accessor -{ -public: - class Package; - class Type; - class Entry; - - ResourceTable(Bundle* bundle, const String16& assetsPackage); - - status_t addIncludedResources(Bundle* bundle, const sp<AaptAssets>& assets); - - status_t addPublic(const SourcePos& pos, - const String16& package, - const String16& type, - const String16& name, - const uint32_t ident); - - status_t addEntry(const SourcePos& pos, - const String16& package, - const String16& type, - const String16& name, - const String16& value, - const Vector<StringPool::entry_style_span>* style = NULL, - const ResTable_config* params = NULL, - const bool doSetIndex = false, - const int32_t format = ResTable_map::TYPE_ANY, - const bool overwrite = false); - - status_t startBag(const SourcePos& pos, - const String16& package, - const String16& type, - const String16& name, - const String16& bagParent, - const ResTable_config* params = NULL, - bool replace = false, - bool isId = false); - - status_t addBag(const SourcePos& pos, - const String16& package, - const String16& type, - const String16& name, - const String16& bagParent, - const String16& bagKey, - const String16& value, - const Vector<StringPool::entry_style_span>* style = NULL, - const ResTable_config* params = NULL, - bool replace = false, - bool isId = false, - const int32_t format = ResTable_map::TYPE_ANY); - - bool hasBagOrEntry(const String16& package, - const String16& type, - const String16& name) const; - - bool hasBagOrEntry(const String16& ref, - const String16* defType = NULL, - const String16* defPackage = NULL); - - bool appendComment(const String16& package, - const String16& type, - const String16& name, - const String16& comment, - bool onlyIfEmpty = false); - - bool appendTypeComment(const String16& package, - const String16& type, - const String16& name, - const String16& comment); - - size_t size() const; - size_t numLocalResources() const; - bool hasResources() const; - - sp<AaptFile> flatten(Bundle*); - - static inline uint32_t makeResId(uint32_t packageId, - uint32_t typeId, - uint32_t nameId) - { - return nameId | (typeId<<16) | (packageId<<24); - } - - static inline uint32_t getResId(const sp<Package>& p, - const sp<Type>& t, - uint32_t nameId); - - uint32_t getResId(const String16& package, - const String16& type, - const String16& name, - bool onlyPublic = false) const; - - uint32_t getResId(const String16& ref, - const String16* defType = NULL, - const String16* defPackage = NULL, - const char** outErrorMsg = NULL, - bool onlyPublic = false) const; - - static bool isValidResourceName(const String16& s); - - bool stringToValue(Res_value* outValue, StringPool* pool, - const String16& str, - bool preserveSpaces, bool coerceType, - uint32_t attrID, - const Vector<StringPool::entry_style_span>* style = NULL, - String16* outStr = NULL, void* accessorCookie = NULL, - uint32_t attrType = ResTable_map::TYPE_ANY); - - status_t assignResourceIds(); - status_t addSymbols(const sp<AaptSymbols>& outSymbols = NULL); - void addLocalization(const String16& name, const String8& locale); - status_t validateLocalizations(void); - - status_t flatten(Bundle*, const sp<AaptFile>& dest); - - void writePublicDefinitions(const String16& package, FILE* fp); - - virtual uint32_t getCustomResource(const String16& package, - const String16& type, - const String16& name) const; - virtual uint32_t getCustomResourceWithCreation(const String16& package, - const String16& type, - const String16& name, - const bool createIfNeeded); - virtual uint32_t getRemappedPackage(uint32_t origPackage) const; - virtual bool getAttributeType(uint32_t attrID, uint32_t* outType); - virtual bool getAttributeMin(uint32_t attrID, uint32_t* outMin); - virtual bool getAttributeMax(uint32_t attrID, uint32_t* outMax); - virtual bool getAttributeKeys(uint32_t attrID, Vector<String16>* outKeys); - virtual bool getAttributeEnum(uint32_t attrID, - const char16_t* name, size_t nameLen, - Res_value* outValue); - virtual bool getAttributeFlags(uint32_t attrID, - const char16_t* name, size_t nameLen, - Res_value* outValue); - virtual uint32_t getAttributeL10N(uint32_t attrID); - - virtual bool getLocalizationSetting(); - virtual void reportError(void* accessorCookie, const char* fmt, ...); - - void setCurrentXmlPos(const SourcePos& pos) { mCurrentXmlPos = pos; } - - class Item { - public: - Item() : isId(false), format(ResTable_map::TYPE_ANY), bagKeyId(0), evaluating(false) - { memset(&parsedValue, 0, sizeof(parsedValue)); } - Item(const SourcePos& pos, - bool _isId, - const String16& _value, - const Vector<StringPool::entry_style_span>* _style = NULL, - int32_t format = ResTable_map::TYPE_ANY); - Item(const Item& o) : sourcePos(o.sourcePos), - isId(o.isId), value(o.value), style(o.style), - format(o.format), bagKeyId(o.bagKeyId), evaluating(false) { - memset(&parsedValue, 0, sizeof(parsedValue)); - } - ~Item() { } - - Item& operator=(const Item& o) { - sourcePos = o.sourcePos; - isId = o.isId; - value = o.value; - style = o.style; - format = o.format; - bagKeyId = o.bagKeyId; - parsedValue = o.parsedValue; - return *this; - } - - SourcePos sourcePos; - mutable bool isId; - String16 value; - Vector<StringPool::entry_style_span> style; - int32_t format; - uint32_t bagKeyId; - mutable bool evaluating; - Res_value parsedValue; - }; - - class Entry : public RefBase { - public: - Entry(const String16& name, const SourcePos& pos) - : mName(name), mType(TYPE_UNKNOWN), - mItemFormat(ResTable_map::TYPE_ANY), mNameIndex(-1), mPos(pos) - { } - virtual ~Entry() { } - - enum type { - TYPE_UNKNOWN = 0, - TYPE_ITEM, - TYPE_BAG - }; - - String16 getName() const { return mName; } - type getType() const { return mType; } - - void setParent(const String16& parent) { mParent = parent; } - String16 getParent() const { return mParent; } - - status_t makeItABag(const SourcePos& sourcePos); - - status_t setItem(const SourcePos& pos, - const String16& value, - const Vector<StringPool::entry_style_span>* style = NULL, - int32_t format = ResTable_map::TYPE_ANY, - const bool overwrite = false); - - status_t addToBag(const SourcePos& pos, - const String16& key, const String16& value, - const Vector<StringPool::entry_style_span>* style = NULL, - bool replace=false, bool isId = false, - int32_t format = ResTable_map::TYPE_ANY); - - // Index of the entry's name string in the key pool. - int32_t getNameIndex() const { return mNameIndex; } - void setNameIndex(int32_t index) { mNameIndex = index; } - - const Item* getItem() const { return mType == TYPE_ITEM ? &mItem : NULL; } - const KeyedVector<String16, Item>& getBag() const { return mBag; } - - status_t generateAttributes(ResourceTable* table, - const String16& package); - - status_t assignResourceIds(ResourceTable* table, - const String16& package); - - status_t prepareFlatten(StringPool* strings, ResourceTable* table); - - ssize_t flatten(Bundle*, const sp<AaptFile>& data, bool isPublic); - - const SourcePos& getPos() const { return mPos; } - - private: - String16 mName; - String16 mParent; - type mType; - Item mItem; - int32_t mItemFormat; - KeyedVector<String16, Item> mBag; - int32_t mNameIndex; - 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<ResTable_config*>(this) = o; - size = sizeof(ResTable_config); - } - ConfigDescription(const ConfigDescription&o) { - *static_cast<ResTable_config*>(this) = o; - } - - ConfigDescription& operator=(const ResTable_config& o) { - *static_cast<ResTable_config*>(this) = o; - size = sizeof(ResTable_config); - return *this; - } - ConfigDescription& operator=(const ConfigDescription& o) { - *static_cast<ResTable_config*>(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: - ConfigList(const String16& name, const SourcePos& pos) - : mName(name), mPos(pos), mPublic(false), mEntryIndex(-1) { } - virtual ~ConfigList() { } - - String16 getName() const { return mName; } - const SourcePos& getPos() const { return mPos; } - - void appendComment(const String16& comment, bool onlyIfEmpty = false); - const String16& getComment() const { return mComment; } - - void appendTypeComment(const String16& comment); - const String16& getTypeComment() const { return mTypeComment; } - - // Index of this entry in its Type. - int32_t getEntryIndex() const { return mEntryIndex; } - void setEntryIndex(int32_t index) { mEntryIndex = index; } - - void setPublic(bool pub) { mPublic = pub; } - bool getPublic() const { return mPublic; } - void setPublicSourcePos(const SourcePos& pos) { mPublicSourcePos = pos; } - const SourcePos& getPublicSourcePos() { return mPublicSourcePos; } - - void addEntry(const ResTable_config& config, const sp<Entry>& entry) { - mEntries.add(config, entry); - } - - const DefaultKeyedVector<ConfigDescription, sp<Entry> >& getEntries() const { return mEntries; } - private: - const String16 mName; - const SourcePos mPos; - String16 mComment; - String16 mTypeComment; - bool mPublic; - SourcePos mPublicSourcePos; - int32_t mEntryIndex; - DefaultKeyedVector<ConfigDescription, sp<Entry> > mEntries; - }; - - class Public { - public: - Public() : sourcePos(), ident(0) { } - Public(const SourcePos& pos, - const String16& _comment, - uint32_t _ident) - : sourcePos(pos), - comment(_comment), ident(_ident) { } - Public(const Public& o) : sourcePos(o.sourcePos), - comment(o.comment), ident(o.ident) { } - ~Public() { } - - Public& operator=(const Public& o) { - sourcePos = o.sourcePos; - comment = o.comment; - ident = o.ident; - return *this; - } - - SourcePos sourcePos; - String16 comment; - uint32_t ident; - }; - - class Type : public RefBase { - public: - Type(const String16& name, const SourcePos& pos) - : mName(name), mFirstPublicSourcePos(NULL), mPublicIndex(-1), mIndex(-1), mPos(pos) - { } - virtual ~Type() { delete mFirstPublicSourcePos; } - - status_t addPublic(const SourcePos& pos, - const String16& name, - const uint32_t ident); - - String16 getName() const { return mName; } - sp<Entry> getEntry(const String16& entry, - const SourcePos& pos, - const ResTable_config* config = NULL, - bool doSetIndex = false); - - const SourcePos& getFirstPublicSourcePos() const { return *mFirstPublicSourcePos; } - - int32_t getPublicIndex() const { return mPublicIndex; } - - int32_t getIndex() const { return mIndex; } - void setIndex(int32_t index) { mIndex = index; } - - status_t applyPublicEntryOrder(); - - const SortedVector<ConfigDescription>& getUniqueConfigs() const { return mUniqueConfigs; } - - const DefaultKeyedVector<String16, sp<ConfigList> >& getConfigs() const { return mConfigs; } - const Vector<sp<ConfigList> >& getOrderedConfigs() const { return mOrderedConfigs; } - - const SourcePos& getPos() const { return mPos; } - private: - String16 mName; - SourcePos* mFirstPublicSourcePos; - DefaultKeyedVector<String16, Public> mPublic; - SortedVector<ConfigDescription> mUniqueConfigs; - DefaultKeyedVector<String16, sp<ConfigList> > mConfigs; - Vector<sp<ConfigList> > mOrderedConfigs; - int32_t mPublicIndex; - int32_t mIndex; - SourcePos mPos; - }; - - class Package : public RefBase { - public: - Package(const String16& name, ssize_t includedId=-1); - virtual ~Package() { } - - String16 getName() const { return mName; } - sp<Type> getType(const String16& type, - const SourcePos& pos, - bool doSetIndex = false); - - ssize_t getAssignedId() const { return mIncludedId; } - - const ResStringPool& getTypeStrings() const { return mTypeStrings; } - uint32_t indexOfTypeString(const String16& s) const { return mTypeStringsMapping.valueFor(s); } - const sp<AaptFile> getTypeStringsData() const { return mTypeStringsData; } - status_t setTypeStrings(const sp<AaptFile>& data); - - const ResStringPool& getKeyStrings() const { return mKeyStrings; } - uint32_t indexOfKeyString(const String16& s) const { return mKeyStringsMapping.valueFor(s); } - const sp<AaptFile> getKeyStringsData() const { return mKeyStringsData; } - status_t setKeyStrings(const sp<AaptFile>& data); - - status_t applyPublicTypeOrder(); - - const DefaultKeyedVector<String16, sp<Type> >& getTypes() const { return mTypes; } - const Vector<sp<Type> >& getOrderedTypes() const { return mOrderedTypes; } - - private: - status_t setStrings(const sp<AaptFile>& data, - ResStringPool* strings, - DefaultKeyedVector<String16, uint32_t>* mappings); - - const String16 mName; - const ssize_t mIncludedId; - DefaultKeyedVector<String16, sp<Type> > mTypes; - Vector<sp<Type> > mOrderedTypes; - sp<AaptFile> mTypeStringsData; - sp<AaptFile> mKeyStringsData; - ResStringPool mTypeStrings; - ResStringPool mKeyStrings; - DefaultKeyedVector<String16, uint32_t> mTypeStringsMapping; - DefaultKeyedVector<String16, uint32_t> mKeyStringsMapping; - }; - -private: - void writePublicDefinitions(const String16& package, FILE* fp, bool pub); - sp<Package> getPackage(const String16& package); - sp<Type> getType(const String16& package, - const String16& type, - const SourcePos& pos, - bool doSetIndex = false); - sp<Entry> getEntry(const String16& package, - const String16& type, - const String16& name, - const SourcePos& pos, - const ResTable_config* config = NULL, - bool doSetIndex = false); - sp<const Entry> getEntry(uint32_t resID, - const ResTable_config* config = NULL) const; - const Item* getItem(uint32_t resID, uint32_t attrID) const; - bool getItemValue(uint32_t resID, uint32_t attrID, - Res_value* outValue); - - - String16 mAssetsPackage; - sp<AaptAssets> mAssets; - DefaultKeyedVector<String16, sp<Package> > mPackages; - Vector<sp<Package> > mOrderedPackages; - uint32_t mNextPackageId; - bool mHaveAppPackage; - bool mIsAppPackage; - size_t mNumLocal; - SourcePos mCurrentXmlPos; - Bundle* mBundle; - - // key = string resource name, value = set of locales in which that name is defined - map<String16, set<String8> > 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<int,SortedVector<uint32_t> > mData; - bool mContainsPseudo; -}; - - -#endif |