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

Method GetTranslationUnit

IDEHelper/Clang/ClangHelper.cpp:509–711  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

507}
508
509ClangTranslationUnit* ClangHelper::GetTranslationUnit(const StringImpl& fileName, const char* headerPrefix, BfSourceClassifier::CharData* charData, int charLen, const char** args, int argCount, bool forceReparse, bool noTransUnit, bool noReparse)
510{
511 ThreadProtect threadProtect(this);
512
513 BfLogClang("%d Clang GetTranslationUnit %s\n", ::GetCurrentThreadId(), fileName.c_str());
514
515 uint32 options;
516 if (mIsForResolve)
517 {
518 options = CXTranslationUnit_DetailedPreprocessingRecord |
519 CXTranslationUnit_IncludeBriefCommentsInCodeCompletion |
520 CXTranslationUnit_Incomplete |
521 CXTranslationUnit_PrecompiledPreamble |
522 CXTranslationUnit_CacheCompletionResults;
523 }
524 else
525 {
526 options = CXTranslationUnit_SkipFunctionBodies |
527 CXTranslationUnit_PrecompiledPreamble |
528 CXTranslationUnit_Incomplete;
529 }
530
531 //options = clang_defaultEditingTranslationUnitOptions();
532
533 std::map<String, ClangTranslationUnit, StrPathCompare> transMap;
534 auto itr2 = transMap.find(fileName);
535
536 auto itr = mTranslationUnits.find(fileName);
537 if (itr == mTranslationUnits.end())
538 {
539 if (fileName[fileName.length() - 1] == 'h')
540 {
541 BF_ASSERT(headerPrefix != NULL);
542 }
543
544 const char* defaultArgs [] = { "-cc1", "-x", "c++", "-std=c++11", "-stdlib=libc++", "-target-cpu", "x86-64", "-target-feature", "+sse2",
545 "-triple", "x86_64-pc-windows-gnu", "-D__x86_64__", "-D__x86_64", "-MD"};
546 if (args == NULL)
547 {
548 args = defaultArgs;
549 argCount = BF_ARRAY_COUNT(defaultArgs);
550 }
551
552 ClangTranslationUnit transUnit;
553
554 bool isHeader = headerPrefix != NULL;
555
556 if (headerPrefix != NULL)
557 {
558 transUnit.mHeaderPrefix = _strdup(headerPrefix);
559 transUnit.mHeaderPrefixLen = (int)strlen(headerPrefix);
560
561 transUnit.mCharLen = transUnit.mHeaderPrefixLen + 1;
562 transUnit.mChars = new char[transUnit.mCharLen + 1];
563 transUnit.mChars[transUnit.mHeaderPrefixLen] = 0;
564 for (int i = 0; i < transUnit.mHeaderPrefixLen; i++)
565 transUnit.mChars[i] = headerPrefix[i];
566

Calls 8

VecFirstRefFunction · 0.85
findMethod · 0.80
c_strMethod · 0.45
endMethod · 0.45
lengthMethod · 0.45
push_backMethod · 0.45
sizeMethod · 0.45
backMethod · 0.45

Tested by

no test coverage detected