|
|
|
@ -165,6 +165,12 @@ Parser::Parser(CppParserOptions* Opts)
@@ -165,6 +165,12 @@ Parser::Parser(CppParserOptions* Opts)
|
|
|
|
|
{ |
|
|
|
|
supportedStdTypes.insert("allocator"); |
|
|
|
|
supportedStdTypes.insert("basic_string"); |
|
|
|
|
|
|
|
|
|
walkedNamespaces.reserve(8192); |
|
|
|
|
walkedTypeTemplateParameters.reserve(8192); |
|
|
|
|
walkedTemplateTemplateParameters.reserve(32); |
|
|
|
|
walkedNonTypeTemplateParameters.reserve(1024); |
|
|
|
|
walkedParameters.reserve(65536); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
LayoutField Parser::WalkVTablePointer(Class* Class, |
|
|
|
@ -424,27 +430,23 @@ void Parser::Setup(bool Compile)
@@ -424,27 +430,23 @@ void Parser::Setup(bool Compile)
|
|
|
|
|
if (opts->verbose) |
|
|
|
|
HSOpts.Verbose = true; |
|
|
|
|
|
|
|
|
|
for (unsigned I = 0, E = opts->IncludeDirs.size(); I != E; ++I) |
|
|
|
|
for (const auto& s : opts->IncludeDirs) |
|
|
|
|
{ |
|
|
|
|
const auto& s = opts->IncludeDirs[I]; |
|
|
|
|
HSOpts.AddPath(s, frontend::Angled, false, false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (unsigned I = 0, E = opts->SystemIncludeDirs.size(); I != E; ++I) |
|
|
|
|
for (const auto& s : opts->SystemIncludeDirs) |
|
|
|
|
{ |
|
|
|
|
const auto& s = opts->SystemIncludeDirs[I]; |
|
|
|
|
HSOpts.AddPath(s, frontend::System, false, false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (unsigned I = 0, E = opts->Defines.size(); I != E; ++I) |
|
|
|
|
for (const auto& define : opts->Defines) |
|
|
|
|
{ |
|
|
|
|
const auto& define = opts->Defines[I]; |
|
|
|
|
PPOpts.addMacroDef(define); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (unsigned I = 0, E = opts->Undefines.size(); I != E; ++I) |
|
|
|
|
for (const auto& undefine : opts->Undefines) |
|
|
|
|
{ |
|
|
|
|
const auto& undefine = opts->Undefines[I]; |
|
|
|
|
PPOpts.addMacroUndef(undefine); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -480,7 +482,6 @@ void Parser::Setup(bool Compile)
@@ -480,7 +482,6 @@ void Parser::Setup(bool Compile)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (TC) |
|
|
|
|
delete TC; |
|
|
|
|
|
|
|
|
|
// Enable preprocessing record.
|
|
|
|
@ -2537,7 +2538,7 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL, bool
@@ -2537,7 +2538,7 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL, bool
|
|
|
|
|
EnumDecl* ED = ET->getDecl(); |
|
|
|
|
|
|
|
|
|
auto TT = new AST::TagType(); |
|
|
|
|
TT->declaration = TT->declaration = WalkDeclaration(ED); |
|
|
|
|
TT->declaration = WalkDeclaration(ED); |
|
|
|
|
|
|
|
|
|
Ty = TT; |
|
|
|
|
break; |
|
|
|
@ -4430,8 +4431,8 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D)
@@ -4430,8 +4431,8 @@ Declaration* Parser::WalkDeclaration(const clang::Decl* D)
|
|
|
|
|
{ |
|
|
|
|
auto MD = cast<CXXMethodDecl>(D); |
|
|
|
|
Decl = WalkMethodCXX(MD); |
|
|
|
|
if (Decl == nullptr) |
|
|
|
|
return Decl; |
|
|
|
|
if (!Decl) |
|
|
|
|
return nullptr; |
|
|
|
|
|
|
|
|
|
auto NS = GetNamespace(MD); |
|
|
|
|
Decl->_namespace = NS; |
|
|
|
@ -4609,7 +4610,7 @@ void Parser::SetupLLVMCodegen()
@@ -4609,7 +4610,7 @@ void Parser::SetupLLVMCodegen()
|
|
|
|
|
c->getHeaderSearchOpts(), c->getPreprocessorOpts(), |
|
|
|
|
c->getCodeGenOpts(), *LLVMModule, c->getDiagnostics())); |
|
|
|
|
|
|
|
|
|
codeGenTypes.reset(new clang::CodeGen::CodeGenTypes(*CGM.get())); |
|
|
|
|
codeGenTypes.reset(new clang::CodeGen::CodeGenTypes(*CGM)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool Parser::SetupSourceFiles(const std::vector<std::string>& SourceFiles, |
|
|
|
@ -4710,7 +4711,7 @@ ParserResult* Parser::Parse(const std::vector<std::string>& SourceFiles)
@@ -4710,7 +4711,7 @@ ParserResult* Parser::Parse(const std::vector<std::string>& SourceFiles)
|
|
|
|
|
|
|
|
|
|
DiagClient->BeginSourceFile(c->getLangOpts(), &c->getPreprocessor()); |
|
|
|
|
|
|
|
|
|
ParseAST(c->getSema()); |
|
|
|
|
ParseAST(c->getSema(), opts->verbose, opts->skipFunctionBodies); |
|
|
|
|
|
|
|
|
|
DiagClient->EndSourceFile(); |
|
|
|
|
|
|
|
|
|