MCPcopy Create free account
hub / github.com/beefytech/Beef / MapImport

Method MapImport

IDEHelper/COFF.cpp:4504–4592  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4502}
4503
4504int COFF::MapImport(CvCompileUnit* compileUnit, int id)
4505{
4506 BF_ASSERT((id & 0x80000000) != 0);
4507
4508 int scopeIdx = (id & 0x7FFF0000) >> 20;
4509 int itemId = (id & 0x0000FFFF);
4510
4511 if (mModuleNameSet.IsEmpty())
4512 {
4513 for (auto moduleInfo : mCvModuleInfo)
4514 {
4515 String name = moduleInfo->mModuleName;
4516 name = ToUpper(name);
4517
4518 CvModuleInfoNameEntry entry;
4519 entry.mModuleInfo = moduleInfo;
4520 mModuleNameSet.Add(entry);
4521 }
4522 }
4523
4524 if (scopeIdx < (int)compileUnit->mImports.size())
4525 {
4526 auto& importSection = compileUnit->mImports[scopeIdx];
4527 if (itemId < (int)importSection.mImports.size())
4528 {
4529 auto importId = importSection.mImports[itemId];
4530
4531 if (importSection.mScopeCompileUnit == NULL)
4532 {
4533 CvModuleInfo* moduleInfo = NULL;
4534 size_t nameHash = CvModuleInfoNameEntry::GetHashCode(importSection.mScopeName);
4535
4536 for (auto& nameEntry : mModuleNameSet.SelectHashes(nameHash))
4537 {
4538 String checkModuleName = nameEntry.mModuleInfo->mModuleName;
4539 checkModuleName.Replace("\\", "/");
4540 checkModuleName = ToUpper(checkModuleName);
4541
4542 String checkScopeName = importSection.mScopeName;
4543 checkScopeName.Replace("\\", "/");
4544 checkScopeName = ToUpper(checkScopeName);
4545
4546 bool matches = false;
4547 if (checkModuleName == checkScopeName)
4548 matches = true;
4549 else if (checkScopeName.EndsWith("/" + checkModuleName))
4550 matches = true;
4551
4552 if (matches)
4553 {
4554 ParseCompileUnit(nameEntry.mModuleInfo->mIdx);
4555
4556 auto externCompileUnit = nameEntry.mModuleInfo->mCompileUnit;
4557 if (externCompileUnit->mExportMap.IsEmpty())
4558 {
4559 for (auto& exportEntry : externCompileUnit->mExports)
4560 externCompileUnit->mExportMap[exportEntry.mLocalId] = exportEntry.mGlobalId;
4561 }

Callers

nothing calls this directly

Calls 8

SelectHashesMethod · 0.80
ContainsKeyMethod · 0.80
TryGetValueMethod · 0.80
IsEmptyMethod · 0.45
AddMethod · 0.45
sizeMethod · 0.45
ReplaceMethod · 0.45
EndsWithMethod · 0.45

Tested by

no test coverage detected