diff --git a/src/CppParser/Bindings/CLI/CppParser.cpp b/src/CppParser/Bindings/CLI/CppParser.cpp index 7220ac36..aaf8e8a4 100644 --- a/src/CppParser/Bindings/CLI/CppParser.cpp +++ b/src/CppParser/Bindings/CLI/CppParser.cpp @@ -723,16 +723,6 @@ void CppSharp::Parser::ParserResult::Diagnostics::set(System::Collections::Gener ((::CppSharp::CppParser::ParserResult*)NativePtr)->Diagnostics = _tmpvalue; } -CppSharp::Parser::AST::ASTContext^ CppSharp::Parser::ParserResult::ASTContext::get() -{ - return (((::CppSharp::CppParser::ParserResult*)NativePtr)->ASTContext == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)((::CppSharp::CppParser::ParserResult*)NativePtr)->ASTContext); -} - -void CppSharp::Parser::ParserResult::ASTContext::set(CppSharp::Parser::AST::ASTContext^ value) -{ - ((::CppSharp::CppParser::ParserResult*)NativePtr)->ASTContext = (::CppSharp::CppParser::AST::ASTContext*)value->NativePtr; -} - CppSharp::Parser::AST::NativeLibrary^ CppSharp::Parser::ParserResult::Library::get() { return (((::CppSharp::CppParser::ParserResult*)NativePtr)->library == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)((::CppSharp::CppParser::ParserResult*)NativePtr)->library); diff --git a/src/CppParser/Bindings/CLI/CppParser.h b/src/CppParser/Bindings/CLI/CppParser.h index 127c486b..2832a8e0 100644 --- a/src/CppParser/Bindings/CLI/CppParser.h +++ b/src/CppParser/Bindings/CLI/CppParser.h @@ -368,12 +368,6 @@ namespace CppSharp void set(System::Collections::Generic::List<CppSharp::Parser::ParserDiagnostic^>^); } - property CppSharp::Parser::AST::ASTContext^ ASTContext - { - CppSharp::Parser::AST::ASTContext^ get(); - void set(CppSharp::Parser::AST::ASTContext^); - } - property CppSharp::Parser::AST::NativeLibrary^ Library { CppSharp::Parser::AST::NativeLibrary^ get(); diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs index d96cdcf6..aa5f94c4 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -18772,7 +18772,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 24)] + [StructLayout(LayoutKind.Explicit, Size = 20)] public partial struct __Internal { [FieldOffset(0)] @@ -18782,9 +18782,6 @@ namespace CppSharp internal global::Std.Vector.__Internalc__N_std_N___1_S_vector____N_CppSharp_N_CppParser_S_ParserDiagnostic___N_std_N___1_S_allocator__S0_ Diagnostics; [FieldOffset(16)] - internal global::System.IntPtr ASTContext; - - [FieldOffset(20)] internal global::System.IntPtr library; [SuppressUnmanagedCodeSecurity] @@ -18932,24 +18929,6 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.ASTContext ASTContext - { - get - { - global::CppSharp.Parser.AST.ASTContext __result0; - if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext)) - __result0 = (global::CppSharp.Parser.AST.ASTContext) global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext]; - else __result0 = global::CppSharp.Parser.AST.ASTContext.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext); - return __result0; - } - - set - { - ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; - } - } - public global::CppSharp.Parser.AST.NativeLibrary Library { get diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs index 62a17010..c5834ed2 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs @@ -18772,7 +18772,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 24)] + [StructLayout(LayoutKind.Explicit, Size = 20)] public partial struct __Internal { [FieldOffset(0)] @@ -18782,9 +18782,6 @@ namespace CppSharp internal global::Std.Vector.__Internalc__N_std_S_vector____N_CppSharp_N_CppParser_S_ParserDiagnostic___N_std_S_allocator__S0_ Diagnostics; [FieldOffset(16)] - internal global::System.IntPtr ASTContext; - - [FieldOffset(20)] internal global::System.IntPtr library; [SuppressUnmanagedCodeSecurity] @@ -18932,24 +18929,6 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.ASTContext ASTContext - { - get - { - global::CppSharp.Parser.AST.ASTContext __result0; - if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext)) - __result0 = (global::CppSharp.Parser.AST.ASTContext) global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext]; - else __result0 = global::CppSharp.Parser.AST.ASTContext.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext); - return __result0; - } - - set - { - ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; - } - } - public global::CppSharp.Parser.AST.NativeLibrary Library { get diff --git a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs index 8b1f98b5..80f412af 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -18771,7 +18771,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 48)] + [StructLayout(LayoutKind.Explicit, Size = 40)] public partial struct __Internal { [FieldOffset(0)] @@ -18781,9 +18781,6 @@ namespace CppSharp internal global::Std.Vector.__Internalc__N_std_N___1_S_vector____N_CppSharp_N_CppParser_S_ParserDiagnostic___N_std_N___1_S_allocator__S0_ Diagnostics; [FieldOffset(32)] - internal global::System.IntPtr ASTContext; - - [FieldOffset(40)] internal global::System.IntPtr library; [SuppressUnmanagedCodeSecurity] @@ -18931,24 +18928,6 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.ASTContext ASTContext - { - get - { - global::CppSharp.Parser.AST.ASTContext __result0; - if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext)) - __result0 = (global::CppSharp.Parser.AST.ASTContext) global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext]; - else __result0 = global::CppSharp.Parser.AST.ASTContext.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext); - return __result0; - } - - set - { - ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; - } - } - public global::CppSharp.Parser.AST.NativeLibrary Library { get diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs index 5aa9ad3d..47fa71ee 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs @@ -18771,7 +18771,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 48)] + [StructLayout(LayoutKind.Explicit, Size = 40)] public partial struct __Internal { [FieldOffset(0)] @@ -18781,9 +18781,6 @@ namespace CppSharp internal global::Std.Vector.__Internalc__N_std_S_vector____N_CppSharp_N_CppParser_S_ParserDiagnostic___N_std_S_allocator__S0_ Diagnostics; [FieldOffset(32)] - internal global::System.IntPtr ASTContext; - - [FieldOffset(40)] internal global::System.IntPtr library; [SuppressUnmanagedCodeSecurity] @@ -18931,24 +18928,6 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.ASTContext ASTContext - { - get - { - global::CppSharp.Parser.AST.ASTContext __result0; - if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext)) - __result0 = (global::CppSharp.Parser.AST.ASTContext) global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext]; - else __result0 = global::CppSharp.Parser.AST.ASTContext.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext); - return __result0; - } - - set - { - ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; - } - } - public global::CppSharp.Parser.AST.NativeLibrary Library { get diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs index 3f7e65dc..5e7ab41f 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs @@ -18771,7 +18771,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 48)] + [StructLayout(LayoutKind.Explicit, Size = 40)] public partial struct __Internal { [FieldOffset(0)] @@ -18781,9 +18781,6 @@ namespace CppSharp internal global::Std.Vector.__Internalc__N_std_S_vector____N_CppSharp_N_CppParser_S_ParserDiagnostic___N_std_S_allocator__S0_ Diagnostics; [FieldOffset(32)] - internal global::System.IntPtr ASTContext; - - [FieldOffset(40)] internal global::System.IntPtr library; [SuppressUnmanagedCodeSecurity] @@ -18931,24 +18928,6 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.ASTContext ASTContext - { - get - { - global::CppSharp.Parser.AST.ASTContext __result0; - if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext)) - __result0 = (global::CppSharp.Parser.AST.ASTContext) global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext]; - else __result0 = global::CppSharp.Parser.AST.ASTContext.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext); - return __result0; - } - - set - { - ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; - } - } - public global::CppSharp.Parser.AST.NativeLibrary Library { get diff --git a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs index 553c850e..6336e051 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs @@ -18772,7 +18772,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 48)] + [StructLayout(LayoutKind.Explicit, Size = 40)] public partial struct __Internal { [FieldOffset(0)] @@ -18782,9 +18782,6 @@ namespace CppSharp internal global::Std.Vector.__Internalc__N_std_S_vector____N_CppSharp_N_CppParser_S_ParserDiagnostic___N_std_S_allocator__S0_ Diagnostics; [FieldOffset(32)] - internal global::System.IntPtr ASTContext; - - [FieldOffset(40)] internal global::System.IntPtr library; [SuppressUnmanagedCodeSecurity] @@ -18932,24 +18929,6 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.ASTContext ASTContext - { - get - { - global::CppSharp.Parser.AST.ASTContext __result0; - if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext)) - __result0 = (global::CppSharp.Parser.AST.ASTContext) global::CppSharp.Parser.AST.ASTContext.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext]; - else __result0 = global::CppSharp.Parser.AST.ASTContext.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext); - return __result0; - } - - set - { - ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->ASTContext = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; - } - } - public global::CppSharp.Parser.AST.NativeLibrary Library { get diff --git a/src/CppParser/Comments.cpp b/src/CppParser/Comments.cpp index 256634b3..ba8c215b 100644 --- a/src/CppParser/Comments.cpp +++ b/src/CppParser/Comments.cpp @@ -42,7 +42,7 @@ RawComment* Parser::WalkRawComment(const clang::RawComment* RC) auto Comment = new RawComment(); Comment->kind = ConvertRawCommentKind(RC->getKind()); Comment->text = RC->getRawText(SM); - Comment->briefText = RC->getBriefText(*AST); + Comment->briefText = RC->getBriefText(c->getASTContext()); return Comment; } @@ -261,13 +261,13 @@ void Parser::HandleComments(const clang::Decl* D, Declaration* Decl) using namespace clang; const clang::RawComment* RC = 0; - if (!(RC = AST->getRawCommentForAnyRedecl(D))) + if (!(RC = c->getASTContext().getRawCommentForAnyRedecl(D))) return; auto RawComment = WalkRawComment(RC); Decl->comment = RawComment; - if (clang::comments::FullComment* FC = RC->parse(*AST, &c->getPreprocessor(), D)) + if (clang::comments::FullComment* FC = RC->parse(c->getASTContext(), &c->getPreprocessor(), D)) { auto CB = static_cast<FullComment*>(ConvertCommentBlock(FC)); RawComment->fullCommentBlock = CB; diff --git a/src/CppParser/CppParser.cpp b/src/CppParser/CppParser.cpp index aab12178..2c13d76d 100644 --- a/src/CppParser/CppParser.cpp +++ b/src/CppParser/CppParser.cpp @@ -34,15 +34,13 @@ DEF_VECTOR_STRING(CppParserOptions, LibraryDirs) DEF_VECTOR_STRING(CppParserOptions, SupportedStdTypes) ParserResult::ParserResult() - : ASTContext(0) - , library(0) + : library(0) { } ParserResult::ParserResult(const ParserResult& rhs) : kind(rhs.kind) , Diagnostics(rhs.Diagnostics) - , ASTContext(rhs.ASTContext) , library(rhs.library) {} diff --git a/src/CppParser/CppParser.h b/src/CppParser/CppParser.h index 2b3c9309..79273b37 100644 --- a/src/CppParser/CppParser.h +++ b/src/CppParser/CppParser.h @@ -84,7 +84,6 @@ struct CS_API ParserResult ParserResultKind kind; VECTOR(ParserDiagnostic, Diagnostics) - CppSharp::CppParser::AST::ASTContext* ASTContext; NativeLibrary* library; }; diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index 7e917a75..37c39395 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -68,7 +68,7 @@ void* IgnorePtr = reinterpret_cast<void*>(0x1); //-----------------------------------// -Parser::Parser(CppParserOptions* Opts) : lib(Opts->ASTContext), opts(Opts), index(0) +Parser::Parser(CppParserOptions* Opts) : opts(Opts), index(0) { for (const auto& SupportedStdType : Opts->SupportedStdTypes) supportedStdTypes.insert(SupportedStdType); @@ -396,13 +396,14 @@ std::string Parser::GetDeclMangledName(const clang::Decl* D) auto ND = cast<NamedDecl>(D); std::unique_ptr<MangleContext> MC; + auto& AST = c->getASTContext(); switch(targetABI) { default: - MC.reset(ItaniumMangleContext::create(*AST, AST->getDiagnostics())); + MC.reset(ItaniumMangleContext::create(AST, AST.getDiagnostics())); break; case TargetCXXABI::Microsoft: - MC.reset(MicrosoftMangleContext::create(*AST, AST->getDiagnostics())); + MC.reset(MicrosoftMangleContext::create(AST, AST.getDiagnostics())); break; } @@ -686,12 +687,13 @@ void Parser::WalkVTable(const clang::CXXRecordDecl* RD, Class* C) if (!C->layout) C->layout = new ClassLayout(); + auto& AST = c->getASTContext(); switch(targetABI) { case TargetCXXABI::Microsoft: { C->layout->ABI = CppAbi::Microsoft; - MicrosoftVTableContext VTContext(*AST); + MicrosoftVTableContext VTContext(AST); const auto& VFPtrs = VTContext.getVFPtrOffsets(RD); for (const auto& VFPtrInfo : VFPtrs) @@ -710,7 +712,7 @@ void Parser::WalkVTable(const clang::CXXRecordDecl* RD, Class* C) case TargetCXXABI::GenericItanium: { C->layout->ABI = CppAbi::Itanium; - ItaniumVTableContext VTContext(*AST); + ItaniumVTableContext VTContext(AST); auto& VTLayout = VTContext.getVTableLayout(RD); C->layout->layout = WalkVTableLayout(VTLayout); @@ -1868,7 +1870,7 @@ TranslationUnit* Parser::GetTranslationUnit(clang::SourceLocation Loc, if (Kind) *Kind = LocKind; - auto Unit = lib->FindOrCreateModule(File); + auto Unit = opts->ASTContext->FindOrCreateModule(File); Unit->originalPtr = (void*) Unit; assert(Unit->originalPtr != nullptr); @@ -2161,9 +2163,10 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL, const clang::Type* Type = QualType.getTypePtr(); + auto& AST = c->getASTContext(); if (DesugarType) { - clang::QualType Desugared = QualType.getDesugaredType(*AST); + clang::QualType Desugared = QualType.getDesugaredType(AST); assert(!Desugared.isNull() && "Expected a valid desugared type"); Type = Desugared.getTypePtr(); } @@ -2303,7 +2306,7 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL, } case clang::Type::ConstantArray: { - auto AT = AST->getAsConstantArrayType(QualType); + auto AT = AST.getAsConstantArrayType(QualType); TypeLoc Next; if (LocValid) Next = TL->getNextTypeLoc(); @@ -2312,16 +2315,16 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL, auto ElemTy = AT->getElementType(); A->qualifiedType = GetQualifiedType(ElemTy, &Next); A->sizeType = ArrayType::ArraySize::Constant; - A->size = AST->getConstantArrayElementCount(AT); + A->size = AST.getConstantArrayElementCount(AT); if (!ElemTy->isDependentType()) - A->elementSize = (long)AST->getTypeSize(ElemTy); + A->elementSize = (long)AST.getTypeSize(ElemTy); Ty = A; break; } case clang::Type::IncompleteArray: { - auto AT = AST->getAsIncompleteArrayType(QualType); + auto AT = AST.getAsIncompleteArrayType(QualType); TypeLoc Next; if (LocValid) Next = TL->getNextTypeLoc(); @@ -2335,7 +2338,7 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL, } case clang::Type::DependentSizedArray: { - auto AT = AST->getAsDependentSizedArrayType(QualType); + auto AT = AST.getAsDependentSizedArrayType(QualType); TypeLoc Next; if (LocValid) Next = TL->getNextTypeLoc(); @@ -3191,7 +3194,7 @@ bool Parser::IsValidDeclaration(const clang::SourceLocation& Loc) void Parser::WalkAST() { - auto TU = AST->getTranslationUnitDecl(); + auto TU = c->getASTContext().getTranslationUnitDecl(); for (auto D : TU->decls()) { if (D->getLocStart().isValid() && @@ -3963,7 +3966,6 @@ ParserResult* Parser::ParseHeader(const std::vector<std::string>& SourceFiles) assert(opts->ASTContext && "Expected a valid ASTContext"); auto res = new ParserResult(); - res->ASTContext = lib; if (SourceFiles.empty()) { @@ -4031,13 +4033,13 @@ ParserResult* Parser::ParseHeader(const std::vector<std::string>& SourceFiles) return res; } - AST = &c->getASTContext(); + auto& AST = c->getASTContext(); auto FileEntry = FileEntries[0]; auto FileName = FileEntry->getName(); - auto Unit = lib->FindOrCreateModule(FileName); + auto Unit = opts->ASTContext->FindOrCreateModule(FileName); - auto TU = AST->getTranslationUnitDecl(); + auto TU = AST.getTranslationUnitDecl(); HandleDeclaration(TU, Unit); if (Unit->originalPtr == nullptr) @@ -4047,8 +4049,8 @@ ParserResult* Parser::ParseHeader(const std::vector<std::string>& SourceFiles) llvm::LLVMContext Ctx; std::unique_ptr<llvm::Module> M(new llvm::Module("", Ctx)); - M->setTargetTriple(AST->getTargetInfo().getTriple().getTriple()); - M->setDataLayout(AST->getTargetInfo().getDataLayout()); + M->setTargetTriple(AST.getTargetInfo().getTriple().getTriple()); + M->setDataLayout(AST.getTargetInfo().getDataLayout()); std::unique_ptr<clang::CodeGen::CodeGenModule> CGM( new clang::CodeGen::CodeGenModule(c->getASTContext(), c->getHeaderSearchOpts(), @@ -4306,11 +4308,9 @@ ParserTargetInfo* Parser::GetTargetInfo() auto DiagClient = new DiagnosticConsumer(); c->getDiagnostics().setClient(DiagClient); - AST = &c->getASTContext(); - auto parserTargetInfo = new ParserTargetInfo(); - auto& TI = AST->getTargetInfo(); + auto& TI = c->getASTContext().getTargetInfo(); parserTargetInfo->ABI = TI.getABI(); parserTargetInfo->char16Type = ConvertIntType(TI.getChar16Type()); diff --git a/src/CppParser/Parser.h b/src/CppParser/Parser.h index 90695ec5..83ed76f1 100644 --- a/src/CppParser/Parser.h +++ b/src/CppParser/Parser.h @@ -153,10 +153,8 @@ private: Declaration* GetDeclarationFromFriend(clang::NamedDecl* FriendDecl); int index; - CppSharp::CppParser::AST::ASTContext* lib; CppParserOptions* opts; std::unique_ptr<clang::CompilerInstance> c; - clang::ASTContext* AST; clang::TargetCXXABI::Kind targetABI; clang::CodeGen::CodeGenTypes* codeGenTypes; std::unordered_map<const clang::TemplateTypeParmDecl*, TypeTemplateParameter*> walkedTypeTemplateParameters;