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

Method UpdateEmittedTypeDef

IDEHelper/Compiler/BfSystem.cpp:3713–3824  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3711}
3712
3713void BfSystem::UpdateEmittedTypeDef(BfTypeDef* typeDef)
3714{
3715 auto fromTypeDef = typeDef->mEmitParent;
3716
3717 BF_ASSERT(fromTypeDef->mNextRevision == NULL);
3718
3719 BfLogSys(this, "UpdateTypeDefCopy %p from %p (decl:%p)\n", typeDef, fromTypeDef, fromTypeDef->mTypeDeclaration);
3720
3721 BF_ASSERT((typeDef->mDefState == BfTypeDef::DefState_Emitted) || (typeDef->mDefState == BfTypeDef::DefState_EmittedDirty));
3722 BF_ASSERT((fromTypeDef->mDefState != BfTypeDef::DefState_Emitted) && (fromTypeDef->mDefState != BfTypeDef::DefState_EmittedDirty));
3723
3724 typeDef->mTypeDeclaration = fromTypeDef->mTypeDeclaration;
3725 typeDef->mOuterType = fromTypeDef->mOuterType;
3726
3727 for (int methodIdx = 0; methodIdx < (int)typeDef->mMethods.size(); methodIdx++)
3728 {
3729 auto methodDef = typeDef->mMethods[methodIdx];
3730 if (methodIdx >= fromTypeDef->mMethods.mSize)
3731 {
3732 BF_ASSERT(methodDef->mDeclaringType == typeDef);
3733 continue;
3734 }
3735
3736 BF_ASSERT(methodDef->mDeclaringType != typeDef);
3737
3738 for (auto param : methodDef->mParams)
3739 delete param;
3740 for (auto genericParam : methodDef->mGenericParams)
3741 delete genericParam;
3742
3743 auto fromMethodDef = fromTypeDef->mMethods[methodIdx];
3744
3745 if ((fromMethodDef->mIsOperator) && (methodDef->mIsOperator))
3746 {
3747 auto fromOperatorDef = (BfOperatorDef*)fromMethodDef;
3748 auto operatorDef = (BfOperatorDef*)methodDef;
3749 *operatorDef = *fromOperatorDef;
3750 }
3751 else
3752 {
3753 *methodDef = *fromMethodDef;
3754 }
3755
3756 for (int paramIdx = 0; paramIdx < fromMethodDef->mParams.mSize; paramIdx++)
3757 {
3758 auto fromParamDef = fromMethodDef->mParams[paramIdx];
3759 BfParameterDef* paramDef = new BfParameterDef();
3760 *paramDef = *fromParamDef;
3761 methodDef->mParams[paramIdx] = paramDef;
3762 }
3763
3764 for (int genericParamIdx = 0; genericParamIdx < fromMethodDef->mGenericParams.mSize; genericParamIdx++)
3765 {
3766 auto fromGenericParam = fromMethodDef->mGenericParams[genericParamIdx];
3767 BfGenericParamDef* genericParam = new BfGenericParamDef();
3768 *genericParam = *fromGenericParam;
3769 methodDef->mGenericParams[genericParamIdx] = genericParam;
3770 }

Callers 1

Calls 3

sizeMethod · 0.45
ClearMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected