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

Method IncludeHelper

IDEHelper/Clang/CDepChecker.cpp:56–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54}
55
56bool CppParser::IncludeHelper(BfAstNode* paramNode, bool includeNext, bool scanOnly)
57{
58 String name;
59 bool isLocalInclude = false;
60
61 auto checkNode = paramNode;
62 if (auto identifier = BfNodeDynCast<BfIdentifierNode>(checkNode))
63 {
64 //EvaluatePreprocessor(identifier, NULL, &checkNode);
65 return false;
66 }
67
68 if (auto token = BfNodeDynCast<BfTokenNode>(checkNode))
69 {
70 //TODO: DO THIS
71 /*if (token->mToken == BfToken_LChevron)
72 {
73 auto curNode = checkNode->mNext;
74 while (curNode != NULL)
75 {
76 if ((token = BfNodeDynCast<BfTokenNode>(curNode)))
77 {
78 if (token->mToken == BfToken_RChevron)
79 break;
80 }
81
82 name += curNode->ToString();
83 curNode = curNode->mNext;
84 }
85 }*/
86 }
87 else if (auto literalExpr = BfNodeDynCast<BfLiteralExpression>(checkNode))
88 {
89 if (literalExpr->mValue.mTypeCode == BfTypeCode_CharPtr)
90 {
91 name = String(literalExpr->GetSourceData()->mSrc + literalExpr->GetSrcStart() + 1, literalExpr->GetSourceData()->mSrc + literalExpr->GetSrcEnd() - 1);
92 isLocalInclude = true;
93 }
94 }
95
96 if (name.empty())
97 return false;
98
99 for (int i = 0; i < (int)name.length(); i++)
100 if (name[i] == DIR_SEP_CHAR_ALT)
101 name[i] = DIR_SEP_CHAR;
102
103 String curDir = GetFileDir(mFileName);
104
105 bool found = false;
106 bool foundCurPath = false;
107 for (int i = isLocalInclude ? -1 : 0; i < (int)mCDepChecker->mIncludeDirs.size(); i++)
108 {
109 String checkPath;
110 if (i == -1)
111 checkPath = curDir;
112 else
113 checkPath = mCDepChecker->mIncludeDirs[i];

Callers

nothing calls this directly

Calls 9

StringClass · 0.85
GetSourceDataMethod · 0.80
CachedFileExistsMethod · 0.80
LoadFileMethod · 0.80
GetSrcStartMethod · 0.45
GetSrcEndMethod · 0.45
emptyMethod · 0.45
lengthMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected