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

Method GetDataRange

IDEHelper/Compiler/BfResolvedTypeUtils.cpp:575–613  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

573}
574
575void BfFieldInstance::GetDataRange(int& dataIdx, int& dataCount)
576{
577 int minMergedDataIdx = mMergedDataIdx;
578 int maxMergedDataIdx = minMergedDataIdx + 1;
579 if (mResolvedType->IsStruct())
580 maxMergedDataIdx = minMergedDataIdx + mResolvedType->ToTypeInstance()->mMergedFieldDataCount;
581
582 if (mOwner->mIsUnion)
583 {
584 for (auto& checkFieldInstance : mOwner->mFieldInstances)
585 {
586 if (&checkFieldInstance == this)
587 continue;
588
589 if (checkFieldInstance.mDataIdx == mDataIdx)
590 {
591 int checkMinMergedDataIdx = checkFieldInstance.mMergedDataIdx;
592 int checkMaxMergedDataIdx = checkMinMergedDataIdx + 1;
593 if (checkFieldInstance.GetResolvedType()->IsStruct())
594 checkMaxMergedDataIdx = checkMinMergedDataIdx + checkFieldInstance.mResolvedType->ToTypeInstance()->mMergedFieldDataCount;
595
596 minMergedDataIdx = BF_MIN(minMergedDataIdx, checkMinMergedDataIdx);
597 maxMergedDataIdx = BF_MAX(maxMergedDataIdx, checkMaxMergedDataIdx);
598 }
599 }
600 }
601
602 int fieldIdx = dataIdx - 1;
603 if (fieldIdx == -1)
604 {
605 dataIdx = minMergedDataIdx + 1;
606 }
607 else
608 {
609 fieldIdx += minMergedDataIdx;
610 dataIdx = fieldIdx + 1;
611 }
612 dataCount = maxMergedDataIdx - minMergedDataIdx;
613}
614
615int BfFieldInstance::GetAlign(int packing)
616{

Callers 3

MarkFieldInitializedMethod · 0.80
LoadFieldMethod · 0.80
VisitMethod · 0.80

Calls 3

GetResolvedTypeMethod · 0.80
IsStructMethod · 0.45
ToTypeInstanceMethod · 0.45

Tested by

no test coverage detected