Browse Source

Updated the C++ parser project to the new ASTContext class.

pull/86/head
triton 12 years ago
parent
commit
078b71be45
  1. 6
      src/CppParser/CppParser.h
  2. 12
      src/CppParser/Parser.cpp
  3. 2
      src/CppParser/Parser.h

6
src/CppParser/CppParser.h

@ -31,8 +31,6 @@ struct CS_API ParserOptions
// C/C++ header file name. // C/C++ header file name.
std::string FileName; std::string FileName;
CppSharp::CppParser::AST::Library* Library;
int ToolSetToUse; int ToolSetToUse;
std::string TargetTriple; std::string TargetTriple;
@ -72,8 +70,10 @@ enum struct ParserResultKind
struct CS_API ParserResult struct CS_API ParserResult
{ {
ParserResultKind Kind; ParserResultKind Kind;
CppSharp::CppParser::AST::Library* Library;
std::vector<ParserDiagnostic> Diagnostics; std::vector<ParserDiagnostic> Diagnostics;
CppSharp::CppParser::AST::ASTContext* ASTContext;
CppSharp::CppParser::AST::NativeLibrary* Library;
}; };
enum class SourceLocationKind enum class SourceLocationKind

12
src/CppParser/Parser.cpp

@ -34,7 +34,7 @@ using namespace CppSharp::CppParser;
//-----------------------------------// //-----------------------------------//
Parser::Parser(ParserOptions* Opts) : Lib(Opts->Library), Opts(Opts), Index(0) Parser::Parser(ParserOptions* Opts) : Lib(Opts->ASTContext), Opts(Opts), Index(0)
{ {
} }
@ -2203,7 +2203,7 @@ void Parser::HandleDiagnostics(ParserResult* res)
ParserResult* Parser::ParseHeader(const std::string& File) ParserResult* Parser::ParseHeader(const std::string& File)
{ {
auto res = new ParserResult(); auto res = new ParserResult();
res->Library = Lib; res->ASTContext = Lib;
if (File.empty()) if (File.empty())
{ {
@ -2293,7 +2293,8 @@ ParserResultKind Parser::ParseArchive(llvm::StringRef File,
return ParserResultKind::Error; return ParserResultKind::Error;
auto LibName = File; auto LibName = File;
auto NativeLib = Lib->FindOrCreateLibrary(LibName); auto NativeLib = new NativeLibrary();
NativeLib->FileName = LibName;
for(auto it = Archive.begin_symbols(); it != Archive.end_symbols(); ++it) for(auto it = Archive.begin_symbols(); it != Archive.end_symbols(); ++it)
{ {
@ -2317,7 +2318,8 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File,
return ParserResultKind::Error; return ParserResultKind::Error;
auto LibName = File; auto LibName = File;
auto NativeLib = Lib->FindOrCreateLibrary(LibName); auto NativeLib = new NativeLibrary();
NativeLib->FileName = LibName;
llvm::error_code ec; llvm::error_code ec;
for(auto it = Object->begin_symbols(); it != Object->end_symbols(); it.increment(ec)) for(auto it = Object->begin_symbols(); it != Object->end_symbols(); it.increment(ec))
@ -2347,7 +2349,7 @@ ParserResultKind Parser::ParseSharedLib(llvm::StringRef File,
ParserResult* Parser::ParseLibrary(const std::string& File) ParserResult* Parser::ParseLibrary(const std::string& File)
{ {
auto res = new ParserResult(); auto res = new ParserResult();
res->Library = Lib; res->ASTContext = Lib;
if (File.empty()) if (File.empty())
{ {

2
src/CppParser/Parser.h

@ -108,7 +108,7 @@ protected:
void HandleDiagnostics(ParserResult* res); void HandleDiagnostics(ParserResult* res);
int Index; int Index;
Library* Lib; ASTContext* Lib;
ParserOptions* Opts; ParserOptions* Opts;
llvm::OwningPtr<clang::CompilerInstance> C; llvm::OwningPtr<clang::CompilerInstance> C;
clang::ASTContext* AST; clang::ASTContext* AST;

Loading…
Cancel
Save