diff --git a/src/Parser/Options.h b/src/Parser/Options.h index 2b410e86..67d2ded0 100644 --- a/src/Parser/Options.h +++ b/src/Parser/Options.h @@ -31,7 +31,7 @@ public ref struct ParserOptions // C/C++ header file name. System::String^ FileName; - CppSharp::AST::Library^ Library; + CppSharp::AST::ASTContext^ ASTContext; int ToolSetToUse; System::String^ TargetTriple; @@ -77,8 +77,10 @@ public ref struct ParserResult } ParserResultKind Kind; - CppSharp::AST::Library^ Library; List^ Diagnostics; + + CppSharp::AST::ASTContext^ ASTContext; + CppSharp::AST::NativeLibrary^ Library; }; enum class SourceLocationKind diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index 99baec58..4c7bcb78 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -33,7 +33,7 @@ //-----------------------------------// -Parser::Parser(ParserOptions^ Opts) : Lib(Opts->Library), Opts(Opts), Index(0) +Parser::Parser(ParserOptions^ Opts) : Lib(Opts->ASTContext), Opts(Opts), Index(0) { } @@ -2207,7 +2207,7 @@ void Parser::HandleDiagnostics(ParserResult^ res) ParserResult^ Parser::ParseHeader(const std::string& File) { auto res = gcnew ParserResult(); - res->Library = Lib; + res->ASTContext = Lib; if (File.empty()) { @@ -2297,7 +2297,7 @@ ParserResultKind Parser::ParseArchive(llvm::StringRef File, return ParserResultKind::Error; auto LibName = clix::marshalString(File); - auto NativeLib = Lib->FindOrCreateLibrary(LibName); + auto NativeLib = Symbols->FindOrCreateLibrary(LibName); for(auto it = Archive.begin_symbols(); it != Archive.end_symbols(); ++it) { @@ -2322,7 +2322,7 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File, return ParserResultKind::Error; auto LibName = clix::marshalString(File); - auto NativeLib = Lib->FindOrCreateLibrary(LibName); + auto NativeLib = Symbols->FindOrCreateLibrary(LibName); llvm::error_code ec; for(auto it = Object->begin_symbols(); it != Object->end_symbols(); it.increment(ec)) @@ -2351,10 +2351,11 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File, return ParserResultKind::Success; } - ParserResult^ Parser::ParseLibrary(const std::string& File) +ParserResult^ Parser::ParseLibrary(const std::string& File) { auto res = gcnew ParserResult(); - res->Library = Lib; + res->Library = gcnew CppSharp::AST::NativeLibrary(); + res->Library->FileName = clix::marshalString(File); if (File.empty()) { diff --git a/src/Parser/Parser.h b/src/Parser/Parser.h index 1cc1f08c..305cff25 100644 --- a/src/Parser/Parser.h +++ b/src/Parser/Parser.h @@ -5,6 +5,8 @@ * ************************************************************************/ +#using + #include #include #include @@ -26,6 +28,7 @@ #include "CXXABI.h" #include "Options.h" +#include #include typedef std::string String; @@ -100,7 +103,8 @@ protected: void HandleDiagnostics(ParserResult^ res); int Index; - gcroot Lib; + gcroot Lib; + gcroot Symbols; gcroot Opts; llvm::OwningPtr C; clang::ASTContext* AST;