+ if ( pos == _instantiatedEntries.end() ) {
+ // Have to find the index of this member
+ const Entry* start;
+ uint32_t index;
+ if (_instantiatedEntries.size() == 0) {
+ start = (Entry*)&_archiveFileContent[8];
+ index = 1;
+ } else {
+ MemberState &lastKnown = _instantiatedEntries.rbegin()->second;
+ start = lastKnown.entry->next();
+ index = lastKnown.index+1;
+ }
+ for (const Entry* p=start; p <= member; p = p->next(), index++) {
+ MemberState state = {NULL, p, false, false, index};
+ _instantiatedEntries[p] = state;
+ if (member == p) {
+ memberIndex = index;
+ }
+ }
+ } else {
+ MemberState& state = pos->second;
+ if (state.file)
+ return state;
+ memberIndex = state.index;
+ }
+ assert(memberIndex != 0);
+ char memberName[256];
+ member->getName(memberName, sizeof(memberName));