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

Method CvParseIPI

IDEHelper/COFF.cpp:5332–5418  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5330}
5331
5332void COFF::CvParseIPI()
5333{
5334 BF_ASSERT(!mCvIPIReader.IsSetup());
5335
5336 //uint8* sectionData;
5337 int sectionSize = 0;
5338 int hashAdjOffset = 0;
5339 int32 hashStream = -1;
5340 int32 hashAdjSize = 0;
5341 int32 dataOffset = 0;
5342 ParseTypeData(4, mCvIPIReader, sectionSize, dataOffset, hashStream, hashAdjOffset, hashAdjSize, mCvIPIMinTag, mCvIPIMaxTag);
5343 //mCvIPIData = sectionData;
5344
5345 int recordCount = mCvIPIMaxTag - mCvIPIMinTag;
5346 mCvIPITagStartMap.Resize(recordCount + 1);
5347
5348 //uint8* data = sectionData + dataOffset;
5349 int offset = dataOffset;
5350 for (int idx = 0; idx < recordCount; idx++)
5351 {
5352 //BF_ASSERT(((offset) & 3) == 0);
5353 uint8* data = mCvIPIReader.GetTempPtr(offset, 4);
5354 uint16 trLength = GET(uint16);
5355 int offsetStart = offset;
5356 offset += 2;
5357 data = mCvIPIReader.GetTempPtr(offset, trLength);
5358 uint8* dataStart = data;
5359 uint16 trLeafType = GET(uint16);
5360 //uint8* dataEnd = dataStart + trLength;
5361 offset += trLength;
5362
5363 /*
5364 */
5365
5366 lfEasy& funcLeaf = *(lfEasy*)dataStart;
5367 switch (funcLeaf.leaf)
5368 {
5369 case LF_FUNC_ID:
5370 {
5371 lfFuncId* funcData = (lfFuncId*)dataStart;
5372 //subprogram->mName = (const char*)funcData->name;
5373
5374 bool doScope = true;
5375
5376 /*if (strcmp(curSubprogram->mName, "DispatchToMethod") == 0)
5377 {
5378 doScope = true;
5379 }*/
5380
5381 if ((funcData->scopeId != 0) && (doScope))
5382 {
5383 uint8* data = CvGetTagData(funcData->scopeId, true);
5384 CvAutoReleaseTempData releaseTempData(this, data);
5385
5386 lfEasy& leaf = *(lfEasy*)data;
5387 switch (leaf.leaf)
5388 {
5389 case LF_STRING_ID:

Callers 1

TestPDBFunction · 0.80

Calls 3

IsSetupMethod · 0.80
GetTempPtrMethod · 0.80
ResizeMethod · 0.45

Tested by 1

TestPDBFunction · 0.64