From: Jeff Brown Date: Fri, 16 Mar 2012 22:25:17 +0000 (-0700) Subject: Remove dead code in StringPool. X-Git-Url: https://git.saurik.com/android/aapt.git/commitdiff_plain/6ac028674a7425ad205b58d0f5e8852c1ece79c6?ds=inline;hp=--cc Remove dead code in StringPool. The sorted string pool option was no longer used. Neither were strings with associated identifiers. Change-Id: Ic5f6368637fbeedfda873d63f4ad0f3ea9d0d603 --- 6ac028674a7425ad205b58d0f5e8852c1ece79c6 diff --git a/ResourceTable.cpp b/ResourceTable.cpp index df6abe8..0195727 100644 --- a/ResourceTable.cpp +++ b/ResourceTable.cpp @@ -2598,7 +2598,7 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp& dest) // Iterate through all data, collecting all values (strings, // references, etc). - StringPool valueStrings = StringPool(false, useUTF8); + StringPool valueStrings(useUTF8); Vector > allEntries; for (pi=0; pi p = mOrderedPackages.itemAt(pi); @@ -2607,8 +2607,8 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp& dest) continue; } - StringPool typeStrings = StringPool(false, useUTF8); - StringPool keyStrings = StringPool(false, useUTF8); + StringPool typeStrings(useUTF8); + StringPool keyStrings(useUTF8); const size_t N = p->getOrderedTypes().size(); for (size_t ti=0; ti& spans, const String8* configTypeName, const ResTable_config* config) { - ssize_t res = add(String16(), value, false, configTypeName, config); + ssize_t res = add(value, false, configTypeName, config); if (res >= 0) { addStyleSpans(res, spans); } return res; } -ssize_t StringPool::add(const String16& ident, const String16& value, +ssize_t StringPool::add(const String16& value, bool mergeDuplicates, const String8* configTypeName, const ResTable_config* config) { - if (ident.size() > 0) { - ssize_t idx = mIdents.valueFor(ident); - if (idx >= 0) { - fprintf(stderr, "ERROR: Duplicate string identifier %s\n", - String8(mEntries[idx].value).string()); - return UNKNOWN_ERROR; - } - } - ssize_t vidx = mValues.indexOfKey(value); ssize_t pos = vidx >= 0 ? mValues.valueAt(vidx) : -1; ssize_t eidx = pos >= 0 ? mEntryArray.itemAt(pos) : -1; @@ -181,14 +166,8 @@ ssize_t StringPool::add(const String16& ident, const String16& value, if (first) { vidx = mValues.add(value, pos); } - if (!mSorted) { - entry& ent = mEntries.editItemAt(eidx); - ent.indices.add(pos); - } - } - - if (ident.size() > 0) { - mIdents.add(ident, vidx); + entry& ent = mEntries.editItemAt(eidx); + ent.indices.add(pos); } NOISY(printf("Adding string %s to pool: pos=%d eidx=%d vidx=%d\n", @@ -221,8 +200,6 @@ status_t StringPool::addStyleSpans(size_t idx, const Vector& s status_t StringPool::addStyleSpan(size_t idx, const entry_style_span& span) { - LOG_ALWAYS_FATAL_IF(mSorted, "Can't use styles with sorted string pools."); - // Place blank entries in the span array up to this index. while (mEntryStyleArray.size() <= idx) { mEntryStyleArray.add(); @@ -234,25 +211,6 @@ status_t StringPool::addStyleSpan(size_t idx, const entry_style_span& span) return NO_ERROR; } -size_t StringPool::size() const -{ - return mSorted ? mValues.size() : mEntryArray.size(); -} - -const StringPool::entry& StringPool::entryAt(size_t idx) const -{ - if (!mSorted) { - return mEntries[mEntryArray[idx]]; - } else { - return mEntries[mEntryArray[mValues.valueAt(idx)]]; - } -} - -size_t StringPool::countIdentifiers() const -{ - return mIdents.size(); -} - int StringPool::config_sort(const size_t* lhs, const size_t* rhs, void* state) { StringPool* pool = (StringPool*)state; @@ -263,8 +221,6 @@ int StringPool::config_sort(const size_t* lhs, const size_t* rhs, void* state) void StringPool::sortByConfig() { - LOG_ALWAYS_FATAL_IF(mSorted, "Can't sort string pool containing identifiers."); - LOG_ALWAYS_FATAL_IF(mIdents.size() > 0, "Can't sort string pool containing identifiers."); LOG_ALWAYS_FATAL_IF(mOriginalPosToNewPos.size() > 0, "Can't sort string pool after already sorted."); const size_t N = mEntryArray.size(); @@ -432,7 +388,7 @@ status_t StringPool::writeStringBlock(const sp& pool) } } - const size_t ENTRIES = size(); + const size_t ENTRIES = mEntryArray.size(); // Now build the pool of unique strings. @@ -566,9 +522,6 @@ status_t StringPool::writeStringBlock(const sp& pool) header->header.size = htodl(pool->getSize()); header->stringCount = htodl(ENTRIES); header->styleCount = htodl(STYLES); - if (mSorted) { - header->flags |= htodl(ResStringPool_header::SORTED_FLAG); - } if (mUTF8) { header->flags |= htodl(ResStringPool_header::UTF8_FLAG); } @@ -578,33 +531,18 @@ status_t StringPool::writeStringBlock(const sp& pool) // Write string index array. uint32_t* index = (uint32_t*)(header+1); - if (mSorted) { - for (i=0; i(entryAt(i)); - ent.indices.clear(); - ent.indices.add(i); - *index++ = htodl(ent.offset); - } - } else { - for (i=0; i& spans, const String8* configTypeName = NULL, const ResTable_config* config = NULL); - ssize_t add(const String16& ident, const String16& value, - bool mergeDuplicates = false, - const String8* configTypeName = NULL, const ResTable_config* config = NULL); - status_t addStyleSpan(size_t idx, const String16& name, uint32_t start, uint32_t end); status_t addStyleSpans(size_t idx, const Vector& spans); status_t addStyleSpan(size_t idx, const entry_style_span& span); - size_t size() const; - - const entry& entryAt(size_t idx) const; - - size_t countIdentifiers() const; - // Sort the contents of the string block by the configuration associated // with each item. After doing this you can use mapOriginalPosToNewPos() - // to find out the new position given the position originall returned by + // to find out the new position given the position originally returned by // add(). void sortByConfig(); @@ -159,7 +141,6 @@ public: private: static int config_sort(const size_t* lhs, const size_t* rhs, void* state); - const bool mSorted; const bool mUTF8; // The following data structures represent the actual structures @@ -186,9 +167,6 @@ private: // Unique set of all the strings added to the pool, mapped to // the first index of mEntryArray where the value was added. DefaultKeyedVector mValues; - // Unique set of all (optional) identifiers of strings in the - // pool, mapping to indices in mEntries. - DefaultKeyedVector mIdents; // This array maps from the original position a string was placed at // in mEntryArray to its new position after being sorted with sortByConfig(). Vector mOriginalPosToNewPos; diff --git a/XMLNode.cpp b/XMLNode.cpp index 8d7acee..0dba950 100644 --- a/XMLNode.cpp +++ b/XMLNode.cpp @@ -973,7 +973,7 @@ status_t XMLNode::assignResourceIds(const sp& assets, status_t XMLNode::flatten(const sp& dest, bool stripComments, bool stripRawValues) const { - StringPool strings = StringPool(false, mUTF8); + StringPool strings(mUTF8); Vector resids; // First collect just the strings for attribute names that have a