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

Method Init

IDEHelper/Compiler/BfResolvedTypeUtils.cpp:2936–2977  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2934}
2935
2936void BfClosureType::Init(BfProject* bfProject)
2937{
2938 auto srcTypeDef = mSrcDelegate->mTypeDef;
2939 auto system = mSrcDelegate->mModule->mSystem;
2940
2941 mTypeDef = new BfTypeDef();
2942 mTypeDef->mSystem = system;
2943 mTypeDef->mSource = &mSource;
2944 mTypeDef->mSource->mRefCount++;
2945 mTypeDef->mProject = bfProject;
2946 mTypeDef->mTypeCode = srcTypeDef->mTypeCode;
2947 mTypeDef->mName = system->GetAtom(srcTypeDef->mName->mString + mNameAdd);
2948 // Purposely leave out 'mOuterType' - this fails if the outer type is generic
2949 //mTypeDef->mOuterType = srcTypeDef->mOuterType;
2950 mTypeDef->mNamespace = srcTypeDef->mNamespace;
2951 system->AddNamespaceUsage(mTypeDef->mNamespace, mTypeDef->mProject);
2952 mTypeDef->mHash = srcTypeDef->mHash;
2953 mTypeDef->mSignatureHash = srcTypeDef->mSignatureHash;
2954// mTypeDef->mFullName = srcTypeDef->mFullName;
2955// if (!mTypeDef->mFullName.mParts.IsEmpty())
2956// mTypeDef->mFullName.mParts.pop_back();
2957// mTypeDef->mFullName.mParts.push_back(mTypeDef->mName);
2958 if (srcTypeDef->mFullName.mSize > 0)
2959 mTypeDef->mFullName.Set(srcTypeDef->mFullName.mParts, srcTypeDef->mFullName.mSize - 1, &mTypeDef->mName, 1);
2960 else
2961 mTypeDef->mFullName.Set(&mTypeDef->mName, 1, NULL, 0);
2962 system->TrackName(mTypeDef);
2963
2964 mTypeDef->mTypeCode = BfTypeCode_Object;
2965 mTypeDef->mIsDelegate = true;
2966 mTypeDef->mIsClosure = true;
2967 mTypeDef->mDefState = BfTypeDef::DefState_Defined;
2968
2969 auto baseDirectTypeRef = BfAstNode::ZeroedAlloc<BfDirectTypeReference>();
2970 baseDirectTypeRef->Init(mSrcDelegate);
2971 mDirectAllocNodes.push_back(baseDirectTypeRef);
2972 mTypeDef->mBaseTypes.push_back(baseDirectTypeRef);
2973 //mTypeDef->mBaseTypes.push_back(BfDefBuilder::AllocTypeReference(&mSource, mSrcDelegate));
2974
2975 mCreatedTypeDef = true;
2976 //mTypeDef->mBaseTypes.push_back(srcTypeDef);
2977}
2978
2979BfFieldDef* BfClosureType::AddField(BfType* type, const StringImpl& name)
2980{

Callers 3

AddFieldMethod · 0.45
EvaluateToVariantMethod · 0.45
DoHashMethod · 0.45

Calls 6

GetAtomMethod · 0.80
AddNamespaceUsageMethod · 0.80
TrackNameMethod · 0.80
SetMethod · 0.45
push_backMethod · 0.45
ClearMethod · 0.45

Tested by

no test coverage detected