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

Method PopulateResData

IDEHelper/Linker/BlContext.cpp:2497–2533  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2495
2496
2497void BlContext::PopulateResData(BlSegment* resSeg)
2498{
2499 int prevSize = resSeg->mCurSize;
2500
2501 // Insert fake chunk
2502 {
2503 BlChunk chunk;
2504 chunk.mOffset = 0;
2505 chunk.mAlignPad = 0;
2506 chunk.mData = 0;
2507 chunk.mSize = 0;
2508 resSeg->mChunks.push_back(chunk);
2509 }
2510
2511 int dirCount = 0;
2512 int dataCount = 0;
2513 int symsStrSize = 0;
2514 int dataSize = 0;
2515 GetResDataStats(&mRootResDirectory, dirCount, dataCount, symsStrSize, dataSize);
2516 int resDirSize = 16 + ((16 + 8) * dirCount) + ((8) * dataCount);
2517 resSeg->mCurSize = resDirSize + symsStrSize + (dataCount * 16);
2518
2519 DynMemStream symStrsStream;
2520 DynMemStream dataEntryStream;
2521 CreateResData(resSeg, &mRootResDirectory, resDirSize, symsStrSize, symStrsStream, dataEntryStream);
2522 BF_ASSERT(mResDataStream.GetSize() == resDirSize);
2523
2524 if (symStrsStream.GetSize() != 0)
2525 mResDataStream.Write(symStrsStream.GetPtr(), symStrsStream.GetSize());
2526 if (dataEntryStream.GetSize() != 0)
2527 mResDataStream.Write(dataEntryStream.GetPtr(), dataEntryStream.GetSize());
2528
2529 BlChunk& chunk = resSeg->mChunks.front();
2530 chunk.mData = (void*)&mResDataStream.mData[0];
2531 chunk.mSize = mResDataStream.GetSize();
2532 BF_ASSERT(resSeg->mCurSize == prevSize);
2533}
2534
2535BlSegment* BlContext::CreateSegment(const StringImpl& name, int characteristics, int align)
2536{

Callers

nothing calls this directly

Calls 5

frontMethod · 0.80
push_backMethod · 0.45
GetSizeMethod · 0.45
WriteMethod · 0.45
GetPtrMethod · 0.45

Tested by

no test coverage detected