| 5387 | } |
| 5388 | |
| 5389 | void BfResolvedTypeSet::RemoveEntry(BfResolvedTypeSet::EntryRef entry) |
| 5390 | { |
| 5391 | int hashIdx = (entry->mHashCode & 0x7FFFFFFF) % mHashSize; |
| 5392 | // if (entry->mPrev == NULL) |
| 5393 | // { |
| 5394 | // if (entry->mNext != NULL) |
| 5395 | // entry->mNext->mPrev = NULL; |
| 5396 | // BF_ASSERT(mHashHeads[bucket] == entry); |
| 5397 | // mHashHeads[bucket] = entry->mNext; |
| 5398 | // } |
| 5399 | // else |
| 5400 | // { |
| 5401 | // entry->mPrev->mNext = entry->mNext; |
| 5402 | // if (entry->mNext != NULL) |
| 5403 | // entry->mNext->mPrev = entry->mPrev; |
| 5404 | // } |
| 5405 | // |
| 5406 | // mSize--; |
| 5407 | |
| 5408 | bool found = false; |
| 5409 | |
| 5410 | int* srcCheckEntryPtr = &this->mHashHeads[hashIdx]; |
| 5411 | int checkEntryIdx = *srcCheckEntryPtr; |
| 5412 | while (checkEntryIdx != -1) |
| 5413 | { |
| 5414 | auto checkEntry = &mEntries[checkEntryIdx]; |
| 5415 | if (checkEntryIdx == entry.mIndex) |
| 5416 | { |
| 5417 | *srcCheckEntryPtr = checkEntry->mNext; |
| 5418 | found = true; |
| 5419 | } |
| 5420 | srcCheckEntryPtr = &checkEntry->mNext; |
| 5421 | checkEntryIdx = checkEntry->mNext; |
| 5422 | } |
| 5423 | |
| 5424 | BF_ASSERT(found); |
| 5425 | BF_ASSERT(entry->mValue == NULL); |
| 5426 | FreeIdx(entry.mIndex); |
| 5427 | } |
| 5428 | |
| 5429 | // BfResolvedTypeSet::Iterator BfResolvedTypeSet::begin() |
| 5430 | // { |