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

Method GetFileFromNode

IDEHelper/Compiler/BfModule.cpp:2689–2737  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2687}
2688
2689BfFileInstance* BfModule::GetFileFromNode(BfAstNode* astNode)
2690{
2691 auto bfParser = astNode->GetSourceData()->ToParserData();
2692 if (bfParser == NULL)
2693 return NULL;
2694
2695 BfFileInstance** fileInstancePtr = NULL;
2696
2697 if (!mFileInstanceMap.TryAdd(bfParser, NULL, &fileInstancePtr))
2698 {
2699 return *fileInstancePtr;
2700 }
2701 else
2702 {
2703 // It's possible two parsers have the same file name (ie: mNextRevision)
2704 BfFileInstance** namedFileInstancePtr = NULL;
2705 if (!mNamedFileInstanceMap.TryAdd(bfParser->mFileName, NULL, &namedFileInstancePtr))
2706 {
2707 auto bfFileInstance = *namedFileInstancePtr;
2708 *fileInstancePtr = bfFileInstance;
2709 return bfFileInstance;
2710 }
2711
2712 int slashPos = (int)bfParser->mFileName.LastIndexOf(DIR_SEP_CHAR);
2713
2714 auto bfFileInstance = new BfFileInstance();
2715 *fileInstancePtr = bfFileInstance;
2716 *namedFileInstancePtr = bfFileInstance;
2717
2718 bfFileInstance->mPrevPosition.mFileInstance = bfFileInstance;
2719 bfFileInstance->mParser = bfParser;
2720
2721 BfLogSysM("GetFileFromNode new file. Mod: %p FileInstance: %p Parser: %p\n", this, bfFileInstance, bfParser);
2722
2723 if ((mBfIRBuilder != NULL) && (mBfIRBuilder->DbgHasLineInfo()))
2724 {
2725 String fileName = bfParser->mFileName;
2726
2727 for (int i = 0; i < (int)fileName.length(); i++)
2728 {
2729 if (fileName[i] == DIR_SEP_CHAR_ALT)
2730 fileName[i] = DIR_SEP_CHAR;
2731 }
2732
2733 bfFileInstance->mDIFile = mBfIRBuilder->DbgCreateFile(fileName.Substring(slashPos + 1), fileName.Substring(0, BF_MAX(slashPos, 0)), bfParser->mMD5Hash);
2734 }
2735 return bfFileInstance;
2736 }
2737}
2738
2739void BfModule::UpdateSrcPos(BfAstNode* astNode, BfSrcPosFlags flags, int debugLocOffset)
2740{

Callers 2

CreateTypeDeclarationMethod · 0.80

Calls 8

GetSourceDataMethod · 0.80
DbgHasLineInfoMethod · 0.80
DbgCreateFileMethod · 0.80
SubstringMethod · 0.80
ToParserDataMethod · 0.45
TryAddMethod · 0.45
LastIndexOfMethod · 0.45
lengthMethod · 0.45

Tested by

no test coverage detected