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

Method CopyTypeDef

IDEHelper/Compiler/BfSystem.cpp:3559–3711  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3557}
3558
3559void BfSystem::CopyTypeDef(BfTypeDef* typeDef, BfTypeDef* fromTypeDef)
3560{
3561 BfLogSys(this, "CopyTypeDef %p from %p Hash: %d\n", typeDef, fromTypeDef, fromTypeDef->mHash);
3562
3563 for (auto fromMethodDef : fromTypeDef->mMethods)
3564 {
3565 BfMethodDef* methodDef;
3566 if (fromMethodDef->mIsOperator)
3567 {
3568 auto fromOperatorDef = (BfOperatorDef*)fromMethodDef;
3569 auto operatorDef = new BfOperatorDef();
3570 methodDef = operatorDef;
3571 *operatorDef = *fromOperatorDef;
3572 }
3573 else
3574 {
3575 methodDef = new BfMethodDef();
3576 *methodDef = *fromMethodDef;
3577 }
3578 fromMethodDef->mParamNameMap = NULL;
3579
3580 if (methodDef->mDeclaringType == fromTypeDef)
3581 methodDef->mDeclaringType = typeDef;
3582
3583 for (int paramIdx = 0; paramIdx < fromMethodDef->mParams.mSize; paramIdx++)
3584 {
3585 auto fromParamDef = fromMethodDef->mParams[paramIdx];
3586 BfParameterDef* paramDef = new BfParameterDef();
3587 *paramDef = *fromParamDef;
3588 methodDef->mParams[paramIdx] = paramDef;
3589 }
3590
3591 for (int genericParamIdx = 0; genericParamIdx < fromMethodDef->mGenericParams.mSize; genericParamIdx++)
3592 {
3593 auto fromGenericParam = fromMethodDef->mGenericParams[genericParamIdx];
3594 BfGenericParamDef* genericParam = new BfGenericParamDef();
3595 *genericParam = *fromGenericParam;
3596 methodDef->mGenericParams[genericParamIdx] = genericParam;
3597 }
3598
3599 methodDef->mNextWithSameName = NULL;
3600 typeDef->mMethods.Add(methodDef);
3601 }
3602
3603 for (auto operatorDef : fromTypeDef->mOperators)
3604 {
3605 auto methodDef = typeDef->mMethods[operatorDef->mIdx];
3606 BF_ASSERT(methodDef->mIsOperator);
3607 if (methodDef->mIsOperator)
3608 typeDef->mOperators.Add((BfOperatorDef*)methodDef);
3609 }
3610
3611 for (auto fromPropDef : fromTypeDef->mProperties)
3612 {
3613 BfPropertyDef* propDef = new BfPropertyDef();
3614 *propDef = *fromPropDef;
3615 if (propDef->mDeclaringType == fromTypeDef)
3616 propDef->mDeclaringType = typeDef;

Callers 1

CEEmitParseMethod · 0.80

Calls 2

AddMethod · 0.45
ClearMethod · 0.45

Tested by

no test coverage detected