Browse Source

Merge pull request #195 from InitialForce/feature_parser_collect_targetinfo

Extend parser to collect TargetInfo (type widths etc)
pull/210/head
João Matos 12 years ago
parent
commit
e7bfb757b2
  1. 12
      src/Core/Parser/Parser.cs
  2. 5509
      src/CppParser/Bindings/CLI/AST.cpp
  3. 3613
      src/CppParser/Bindings/CLI/AST.h
  4. 868
      src/CppParser/Bindings/CLI/CppParser.cpp
  5. 558
      src/CppParser/Bindings/CLI/CppParser.h
  6. 1
      src/CppParser/CppParser.cpp
  7. 1
      src/CppParser/CppParser.h
  8. 117
      src/CppParser/Parser.cpp
  9. 1
      src/CppParser/Parser.h
  10. 77
      src/CppParser/Target.h
  11. 4
      src/Generator/Driver.cs
  12. 6
      src/Parser/Main.cpp
  13. 119
      src/Parser/Parser.cpp
  14. 2
      src/Parser/Parser.h
  15. 69
      src/Parser/Target.h

12
src/Core/Parser/Parser.cs

@ -38,6 +38,18 @@ namespace CppSharp @@ -38,6 +38,18 @@ namespace CppSharp
ASTContext = context;
}
/// <summary>
/// Get info about that target
/// </summary>
/// <param name="options"></param>
/// <returns></returns>
public ParserTargetInfo GetTargetInfo(ParserOptions options)
{
options.ASTContext = ASTContext;
return Parser.ClangParser.GetTargetInfo(options);
}
/// <summary>
/// Parses a C++ source file to a translation unit.
/// </summary>

5509
src/CppParser/Bindings/CLI/AST.cpp

File diff suppressed because it is too large Load Diff

3613
src/CppParser/Bindings/CLI/AST.h

File diff suppressed because it is too large Load Diff

868
src/CppParser/Bindings/CLI/CppParser.cpp

@ -1,434 +1,434 @@ @@ -1,434 +1,434 @@
#include "CppParser.h"
#include "AST.h"
using namespace System;
using namespace System::Runtime::InteropServices;
CppSharp::Parser::ParserOptions::ParserOptions(::CppSharp::CppParser::ParserOptions* native)
{
NativePtr = native;
}
CppSharp::Parser::ParserOptions::ParserOptions(System::IntPtr native)
{
auto __native = (::CppSharp::CppParser::ParserOptions*)native.ToPointer();
NativePtr = __native;
}
CppSharp::Parser::ParserOptions::ParserOptions()
{
NativePtr = new ::CppSharp::CppParser::ParserOptions();
}
System::String^ CppSharp::Parser::ParserOptions::getArguments(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getArguments(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addArguments(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addArguments(arg0);
}
System::String^ CppSharp::Parser::ParserOptions::getIncludeDirs(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getIncludeDirs(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addIncludeDirs(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addIncludeDirs(arg0);
}
System::String^ CppSharp::Parser::ParserOptions::getSystemIncludeDirs(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getSystemIncludeDirs(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addSystemIncludeDirs(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addSystemIncludeDirs(arg0);
}
System::String^ CppSharp::Parser::ParserOptions::getDefines(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getDefines(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addDefines(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addDefines(arg0);
}
System::String^ CppSharp::Parser::ParserOptions::getLibraryDirs(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getLibraryDirs(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addLibraryDirs(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addLibraryDirs(arg0);
}
System::IntPtr CppSharp::Parser::ParserOptions::__Instance::get()
{
return System::IntPtr(NativePtr);
}
void CppSharp::Parser::ParserOptions::__Instance::set(System::IntPtr object)
{
NativePtr = (::CppSharp::CppParser::ParserOptions*)object.ToPointer();
}
unsigned int CppSharp::Parser::ParserOptions::ArgumentsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getArgumentsCount();
return __ret;
}
System::String^ CppSharp::Parser::ParserOptions::FileName::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getFileName();
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::FileName::set(System::String^ value)
{
auto s = value;
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->setFileName(arg0);
}
unsigned int CppSharp::Parser::ParserOptions::IncludeDirsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getIncludeDirsCount();
return __ret;
}
unsigned int CppSharp::Parser::ParserOptions::SystemIncludeDirsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getSystemIncludeDirsCount();
return __ret;
}
unsigned int CppSharp::Parser::ParserOptions::DefinesCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getDefinesCount();
return __ret;
}
unsigned int CppSharp::Parser::ParserOptions::LibraryDirsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getLibraryDirsCount();
return __ret;
}
System::String^ CppSharp::Parser::ParserOptions::TargetTriple::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getTargetTriple();
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::TargetTriple::set(System::String^ value)
{
auto s = value;
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->setTargetTriple(arg0);
}
CppSharp::Parser::AST::ASTContext^ CppSharp::Parser::ParserOptions::ASTContext::get()
{
return gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)((::CppSharp::CppParser::ParserOptions*)NativePtr)->ASTContext);
}
void CppSharp::Parser::ParserOptions::ASTContext::set(CppSharp::Parser::AST::ASTContext^ value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->ASTContext = (::CppSharp::CppParser::AST::ASTContext*)value->NativePtr;
}
int CppSharp::Parser::ParserOptions::ToolSetToUse::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->ToolSetToUse;
}
void CppSharp::Parser::ParserOptions::ToolSetToUse::set(int value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->ToolSetToUse = value;
}
CppSharp::Parser::AST::CppAbi CppSharp::Parser::ParserOptions::Abi::get()
{
return (CppSharp::Parser::AST::CppAbi)((::CppSharp::CppParser::ParserOptions*)NativePtr)->Abi;
}
void CppSharp::Parser::ParserOptions::Abi::set(CppSharp::Parser::AST::CppAbi value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->Abi = (::CppSharp::CppParser::AST::CppAbi)value;
}
bool CppSharp::Parser::ParserOptions::NoStandardIncludes::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->NoStandardIncludes;
}
void CppSharp::Parser::ParserOptions::NoStandardIncludes::set(bool value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->NoStandardIncludes = value;
}
bool CppSharp::Parser::ParserOptions::NoBuiltinIncludes::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->NoBuiltinIncludes;
}
void CppSharp::Parser::ParserOptions::NoBuiltinIncludes::set(bool value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->NoBuiltinIncludes = value;
}
bool CppSharp::Parser::ParserOptions::MicrosoftMode::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->MicrosoftMode;
}
void CppSharp::Parser::ParserOptions::MicrosoftMode::set(bool value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->MicrosoftMode = value;
}
bool CppSharp::Parser::ParserOptions::Verbose::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->Verbose;
}
void CppSharp::Parser::ParserOptions::Verbose::set(bool value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->Verbose = value;
}
CppSharp::Parser::ParserDiagnostic::ParserDiagnostic(::CppSharp::CppParser::ParserDiagnostic* native)
{
NativePtr = native;
}
CppSharp::Parser::ParserDiagnostic::ParserDiagnostic(System::IntPtr native)
{
auto __native = (::CppSharp::CppParser::ParserDiagnostic*)native.ToPointer();
NativePtr = __native;
}
CppSharp::Parser::ParserDiagnostic::ParserDiagnostic()
{
NativePtr = new ::CppSharp::CppParser::ParserDiagnostic();
}
System::IntPtr CppSharp::Parser::ParserDiagnostic::__Instance::get()
{
return System::IntPtr(NativePtr);
}
void CppSharp::Parser::ParserDiagnostic::__Instance::set(System::IntPtr object)
{
NativePtr = (::CppSharp::CppParser::ParserDiagnostic*)object.ToPointer();
}
System::String^ CppSharp::Parser::ParserDiagnostic::FileName::get()
{
auto __ret = ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->getFileName();
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserDiagnostic::FileName::set(System::String^ value)
{
auto s = value;
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->setFileName(arg0);
}
System::String^ CppSharp::Parser::ParserDiagnostic::Message::get()
{
auto __ret = ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->getMessage();
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserDiagnostic::Message::set(System::String^ value)
{
auto s = value;
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->setMessage(arg0);
}
CppSharp::Parser::ParserDiagnosticLevel CppSharp::Parser::ParserDiagnostic::Level::get()
{
return (CppSharp::Parser::ParserDiagnosticLevel)((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->Level;
}
void CppSharp::Parser::ParserDiagnostic::Level::set(CppSharp::Parser::ParserDiagnosticLevel value)
{
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->Level = (::CppSharp::CppParser::ParserDiagnosticLevel)value;
}
int CppSharp::Parser::ParserDiagnostic::LineNumber::get()
{
return ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->LineNumber;
}
void CppSharp::Parser::ParserDiagnostic::LineNumber::set(int value)
{
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->LineNumber = value;
}
int CppSharp::Parser::ParserDiagnostic::ColumnNumber::get()
{
return ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->ColumnNumber;
}
void CppSharp::Parser::ParserDiagnostic::ColumnNumber::set(int value)
{
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->ColumnNumber = value;
}
CppSharp::Parser::ParserResult::ParserResult(::CppSharp::CppParser::ParserResult* native)
{
NativePtr = native;
}
CppSharp::Parser::ParserResult::ParserResult(System::IntPtr native)
{
auto __native = (::CppSharp::CppParser::ParserResult*)native.ToPointer();
NativePtr = __native;
}
CppSharp::Parser::ParserResult::ParserResult()
{
NativePtr = new ::CppSharp::CppParser::ParserResult();
}
CppSharp::Parser::ParserDiagnostic^ CppSharp::Parser::ParserResult::getDiagnostics(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserResult*)NativePtr)->getDiagnostics(i);
auto ____ret = new ::CppSharp::CppParser::ParserDiagnostic(__ret);
return gcnew CppSharp::Parser::ParserDiagnostic((::CppSharp::CppParser::ParserDiagnostic*)____ret);
}
void CppSharp::Parser::ParserResult::addDiagnostics(CppSharp::Parser::ParserDiagnostic^ s)
{
auto &arg0 = *(::CppSharp::CppParser::ParserDiagnostic*)s->NativePtr;
((::CppSharp::CppParser::ParserResult*)NativePtr)->addDiagnostics(arg0);
}
System::IntPtr CppSharp::Parser::ParserResult::__Instance::get()
{
return System::IntPtr(NativePtr);
}
void CppSharp::Parser::ParserResult::__Instance::set(System::IntPtr object)
{
NativePtr = (::CppSharp::CppParser::ParserResult*)object.ToPointer();
}
unsigned int CppSharp::Parser::ParserResult::DiagnosticsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserResult*)NativePtr)->getDiagnosticsCount();
return __ret;
}
CppSharp::Parser::ParserResultKind CppSharp::Parser::ParserResult::Kind::get()
{
return (CppSharp::Parser::ParserResultKind)((::CppSharp::CppParser::ParserResult*)NativePtr)->Kind;
}
void CppSharp::Parser::ParserResult::Kind::set(CppSharp::Parser::ParserResultKind value)
{
((::CppSharp::CppParser::ParserResult*)NativePtr)->Kind = (::CppSharp::CppParser::ParserResultKind)value;
}
CppSharp::Parser::AST::ASTContext^ CppSharp::Parser::ParserResult::ASTContext::get()
{
return 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 gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)((::CppSharp::CppParser::ParserResult*)NativePtr)->Library);
}
void CppSharp::Parser::ParserResult::Library::set(CppSharp::Parser::AST::NativeLibrary^ value)
{
((::CppSharp::CppParser::ParserResult*)NativePtr)->Library = (::CppSharp::CppParser::AST::NativeLibrary*)value->NativePtr;
}
CppSharp::Parser::ClangParser::ClangParser(::CppSharp::CppParser::ClangParser* native)
{
NativePtr = native;
}
CppSharp::Parser::ClangParser::ClangParser(System::IntPtr native)
{
auto __native = (::CppSharp::CppParser::ClangParser*)native.ToPointer();
NativePtr = __native;
}
CppSharp::Parser::ParserResult^ CppSharp::Parser::ClangParser::ParseHeader(CppSharp::Parser::ParserOptions^ Opts)
{
auto arg0 = (::CppSharp::CppParser::ParserOptions*)Opts->NativePtr;
auto __ret = ::CppSharp::CppParser::ClangParser::ParseHeader(arg0);
if (__ret == nullptr) return nullptr;
return gcnew CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret);
}
CppSharp::Parser::ParserResult^ CppSharp::Parser::ClangParser::ParseLibrary(CppSharp::Parser::ParserOptions^ Opts)
{
auto arg0 = (::CppSharp::CppParser::ParserOptions*)Opts->NativePtr;
auto __ret = ::CppSharp::CppParser::ClangParser::ParseLibrary(arg0);
if (__ret == nullptr) return nullptr;
return gcnew CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret);
}
CppSharp::Parser::ClangParser::ClangParser()
{
NativePtr = new ::CppSharp::CppParser::ClangParser();
}
System::IntPtr CppSharp::Parser::ClangParser::__Instance::get()
{
return System::IntPtr(NativePtr);
}
void CppSharp::Parser::ClangParser::__Instance::set(System::IntPtr object)
{
NativePtr = (::CppSharp::CppParser::ClangParser*)object.ToPointer();
}
#include "CppParser.h"
#include "AST.h"
using namespace System;
using namespace System::Runtime::InteropServices;
CppSharp::Parser::ParserOptions::ParserOptions(::CppSharp::CppParser::ParserOptions* native)
{
NativePtr = native;
}
CppSharp::Parser::ParserOptions::ParserOptions(System::IntPtr native)
{
auto __native = (::CppSharp::CppParser::ParserOptions*)native.ToPointer();
NativePtr = __native;
}
CppSharp::Parser::ParserOptions::ParserOptions()
{
NativePtr = new ::CppSharp::CppParser::ParserOptions();
}
System::String^ CppSharp::Parser::ParserOptions::getArguments(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getArguments(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addArguments(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addArguments(arg0);
}
System::String^ CppSharp::Parser::ParserOptions::getIncludeDirs(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getIncludeDirs(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addIncludeDirs(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addIncludeDirs(arg0);
}
System::String^ CppSharp::Parser::ParserOptions::getSystemIncludeDirs(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getSystemIncludeDirs(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addSystemIncludeDirs(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addSystemIncludeDirs(arg0);
}
System::String^ CppSharp::Parser::ParserOptions::getDefines(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getDefines(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addDefines(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addDefines(arg0);
}
System::String^ CppSharp::Parser::ParserOptions::getLibraryDirs(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getLibraryDirs(i);
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::addLibraryDirs(System::String^ s)
{
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->addLibraryDirs(arg0);
}
System::IntPtr CppSharp::Parser::ParserOptions::__Instance::get()
{
return System::IntPtr(NativePtr);
}
void CppSharp::Parser::ParserOptions::__Instance::set(System::IntPtr object)
{
NativePtr = (::CppSharp::CppParser::ParserOptions*)object.ToPointer();
}
unsigned int CppSharp::Parser::ParserOptions::ArgumentsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getArgumentsCount();
return __ret;
}
System::String^ CppSharp::Parser::ParserOptions::FileName::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getFileName();
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::FileName::set(System::String^ value)
{
auto s = value;
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->setFileName(arg0);
}
unsigned int CppSharp::Parser::ParserOptions::IncludeDirsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getIncludeDirsCount();
return __ret;
}
unsigned int CppSharp::Parser::ParserOptions::SystemIncludeDirsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getSystemIncludeDirsCount();
return __ret;
}
unsigned int CppSharp::Parser::ParserOptions::DefinesCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getDefinesCount();
return __ret;
}
unsigned int CppSharp::Parser::ParserOptions::LibraryDirsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getLibraryDirsCount();
return __ret;
}
System::String^ CppSharp::Parser::ParserOptions::TargetTriple::get()
{
auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getTargetTriple();
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserOptions::TargetTriple::set(System::String^ value)
{
auto s = value;
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserOptions*)NativePtr)->setTargetTriple(arg0);
}
CppSharp::Parser::AST::ASTContext^ CppSharp::Parser::ParserOptions::ASTContext::get()
{
return gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)((::CppSharp::CppParser::ParserOptions*)NativePtr)->ASTContext);
}
void CppSharp::Parser::ParserOptions::ASTContext::set(CppSharp::Parser::AST::ASTContext^ value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->ASTContext = (::CppSharp::CppParser::AST::ASTContext*)value->NativePtr;
}
int CppSharp::Parser::ParserOptions::ToolSetToUse::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->ToolSetToUse;
}
void CppSharp::Parser::ParserOptions::ToolSetToUse::set(int value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->ToolSetToUse = value;
}
CppSharp::Parser::AST::CppAbi CppSharp::Parser::ParserOptions::Abi::get()
{
return (CppSharp::Parser::AST::CppAbi)((::CppSharp::CppParser::ParserOptions*)NativePtr)->Abi;
}
void CppSharp::Parser::ParserOptions::Abi::set(CppSharp::Parser::AST::CppAbi value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->Abi = (::CppSharp::CppParser::AST::CppAbi)value;
}
bool CppSharp::Parser::ParserOptions::NoStandardIncludes::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->NoStandardIncludes;
}
void CppSharp::Parser::ParserOptions::NoStandardIncludes::set(bool value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->NoStandardIncludes = value;
}
bool CppSharp::Parser::ParserOptions::NoBuiltinIncludes::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->NoBuiltinIncludes;
}
void CppSharp::Parser::ParserOptions::NoBuiltinIncludes::set(bool value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->NoBuiltinIncludes = value;
}
bool CppSharp::Parser::ParserOptions::MicrosoftMode::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->MicrosoftMode;
}
void CppSharp::Parser::ParserOptions::MicrosoftMode::set(bool value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->MicrosoftMode = value;
}
bool CppSharp::Parser::ParserOptions::Verbose::get()
{
return ((::CppSharp::CppParser::ParserOptions*)NativePtr)->Verbose;
}
void CppSharp::Parser::ParserOptions::Verbose::set(bool value)
{
((::CppSharp::CppParser::ParserOptions*)NativePtr)->Verbose = value;
}
CppSharp::Parser::ParserDiagnostic::ParserDiagnostic(::CppSharp::CppParser::ParserDiagnostic* native)
{
NativePtr = native;
}
CppSharp::Parser::ParserDiagnostic::ParserDiagnostic(System::IntPtr native)
{
auto __native = (::CppSharp::CppParser::ParserDiagnostic*)native.ToPointer();
NativePtr = __native;
}
CppSharp::Parser::ParserDiagnostic::ParserDiagnostic()
{
NativePtr = new ::CppSharp::CppParser::ParserDiagnostic();
}
System::IntPtr CppSharp::Parser::ParserDiagnostic::__Instance::get()
{
return System::IntPtr(NativePtr);
}
void CppSharp::Parser::ParserDiagnostic::__Instance::set(System::IntPtr object)
{
NativePtr = (::CppSharp::CppParser::ParserDiagnostic*)object.ToPointer();
}
System::String^ CppSharp::Parser::ParserDiagnostic::FileName::get()
{
auto __ret = ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->getFileName();
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserDiagnostic::FileName::set(System::String^ value)
{
auto s = value;
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->setFileName(arg0);
}
System::String^ CppSharp::Parser::ParserDiagnostic::Message::get()
{
auto __ret = ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->getMessage();
if (__ret == nullptr) return nullptr;
return clix::marshalString<clix::E_UTF8>(__ret);
}
void CppSharp::Parser::ParserDiagnostic::Message::set(System::String^ value)
{
auto s = value;
auto _arg0 = clix::marshalString<clix::E_UTF8>(s);
auto arg0 = _arg0.c_str();
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->setMessage(arg0);
}
CppSharp::Parser::ParserDiagnosticLevel CppSharp::Parser::ParserDiagnostic::Level::get()
{
return (CppSharp::Parser::ParserDiagnosticLevel)((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->Level;
}
void CppSharp::Parser::ParserDiagnostic::Level::set(CppSharp::Parser::ParserDiagnosticLevel value)
{
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->Level = (::CppSharp::CppParser::ParserDiagnosticLevel)value;
}
int CppSharp::Parser::ParserDiagnostic::LineNumber::get()
{
return ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->LineNumber;
}
void CppSharp::Parser::ParserDiagnostic::LineNumber::set(int value)
{
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->LineNumber = value;
}
int CppSharp::Parser::ParserDiagnostic::ColumnNumber::get()
{
return ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->ColumnNumber;
}
void CppSharp::Parser::ParserDiagnostic::ColumnNumber::set(int value)
{
((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->ColumnNumber = value;
}
CppSharp::Parser::ParserResult::ParserResult(::CppSharp::CppParser::ParserResult* native)
{
NativePtr = native;
}
CppSharp::Parser::ParserResult::ParserResult(System::IntPtr native)
{
auto __native = (::CppSharp::CppParser::ParserResult*)native.ToPointer();
NativePtr = __native;
}
CppSharp::Parser::ParserResult::ParserResult()
{
NativePtr = new ::CppSharp::CppParser::ParserResult();
}
CppSharp::Parser::ParserDiagnostic^ CppSharp::Parser::ParserResult::getDiagnostics(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::ParserResult*)NativePtr)->getDiagnostics(i);
auto ____ret = new ::CppSharp::CppParser::ParserDiagnostic(__ret);
return gcnew CppSharp::Parser::ParserDiagnostic((::CppSharp::CppParser::ParserDiagnostic*)____ret);
}
void CppSharp::Parser::ParserResult::addDiagnostics(CppSharp::Parser::ParserDiagnostic^ s)
{
auto &arg0 = *(::CppSharp::CppParser::ParserDiagnostic*)s->NativePtr;
((::CppSharp::CppParser::ParserResult*)NativePtr)->addDiagnostics(arg0);
}
System::IntPtr CppSharp::Parser::ParserResult::__Instance::get()
{
return System::IntPtr(NativePtr);
}
void CppSharp::Parser::ParserResult::__Instance::set(System::IntPtr object)
{
NativePtr = (::CppSharp::CppParser::ParserResult*)object.ToPointer();
}
unsigned int CppSharp::Parser::ParserResult::DiagnosticsCount::get()
{
auto __ret = ((::CppSharp::CppParser::ParserResult*)NativePtr)->getDiagnosticsCount();
return __ret;
}
CppSharp::Parser::ParserResultKind CppSharp::Parser::ParserResult::Kind::get()
{
return (CppSharp::Parser::ParserResultKind)((::CppSharp::CppParser::ParserResult*)NativePtr)->Kind;
}
void CppSharp::Parser::ParserResult::Kind::set(CppSharp::Parser::ParserResultKind value)
{
((::CppSharp::CppParser::ParserResult*)NativePtr)->Kind = (::CppSharp::CppParser::ParserResultKind)value;
}
CppSharp::Parser::AST::ASTContext^ CppSharp::Parser::ParserResult::ASTContext::get()
{
return 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 gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)((::CppSharp::CppParser::ParserResult*)NativePtr)->Library);
}
void CppSharp::Parser::ParserResult::Library::set(CppSharp::Parser::AST::NativeLibrary^ value)
{
((::CppSharp::CppParser::ParserResult*)NativePtr)->Library = (::CppSharp::CppParser::AST::NativeLibrary*)value->NativePtr;
}
CppSharp::Parser::ClangParser::ClangParser(::CppSharp::CppParser::ClangParser* native)
{
NativePtr = native;
}
CppSharp::Parser::ClangParser::ClangParser(System::IntPtr native)
{
auto __native = (::CppSharp::CppParser::ClangParser*)native.ToPointer();
NativePtr = __native;
}
CppSharp::Parser::ParserResult^ CppSharp::Parser::ClangParser::ParseHeader(CppSharp::Parser::ParserOptions^ Opts)
{
auto arg0 = (::CppSharp::CppParser::ParserOptions*)Opts->NativePtr;
auto __ret = ::CppSharp::CppParser::ClangParser::ParseHeader(arg0);
if (__ret == nullptr) return nullptr;
return gcnew CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret);
}
CppSharp::Parser::ParserResult^ CppSharp::Parser::ClangParser::ParseLibrary(CppSharp::Parser::ParserOptions^ Opts)
{
auto arg0 = (::CppSharp::CppParser::ParserOptions*)Opts->NativePtr;
auto __ret = ::CppSharp::CppParser::ClangParser::ParseLibrary(arg0);
if (__ret == nullptr) return nullptr;
return gcnew CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret);
}
CppSharp::Parser::ClangParser::ClangParser()
{
NativePtr = new ::CppSharp::CppParser::ClangParser();
}
System::IntPtr CppSharp::Parser::ClangParser::__Instance::get()
{
return System::IntPtr(NativePtr);
}
void CppSharp::Parser::ClangParser::__Instance::set(System::IntPtr object)
{
NativePtr = (::CppSharp::CppParser::ClangParser*)object.ToPointer();
}

558
src/CppParser/Bindings/CLI/CppParser.h

@ -1,279 +1,279 @@ @@ -1,279 +1,279 @@
#pragma once
#include "CppSharp.h"
#include <CppParser.h>
namespace CppSharp
{
namespace Parser
{
enum struct ParserDiagnosticLevel;
enum struct ParserResultKind;
enum struct SourceLocationKind;
ref class ClangParser;
ref class ParserDiagnostic;
ref class ParserOptions;
ref class ParserResult;
namespace AST
{
enum struct CppAbi;
ref class ASTContext;
ref class NativeLibrary;
}
}
}
namespace CppSharp
{
namespace Parser
{
public enum struct ParserDiagnosticLevel
{
Ignored = 0,
Note = 1,
Warning = 2,
Error = 3,
Fatal = 4
};
public enum struct ParserResultKind
{
Success = 0,
Error = 1,
FileNotFound = 2
};
public enum struct SourceLocationKind
{
Invalid = 0,
Builtin = 1,
CommandLine = 2,
System = 3,
User = 4
};
public ref class ParserOptions : ICppInstance
{
public:
property ::CppSharp::CppParser::ParserOptions* NativePtr;
property System::IntPtr __Instance
{
virtual System::IntPtr get();
virtual void set(System::IntPtr instance);
}
ParserOptions(::CppSharp::CppParser::ParserOptions* native);
ParserOptions(System::IntPtr native);
ParserOptions();
property unsigned int ArgumentsCount
{
unsigned int get();
}
property System::String^ FileName
{
System::String^ get();
void set(System::String^);
}
property unsigned int IncludeDirsCount
{
unsigned int get();
}
property unsigned int SystemIncludeDirsCount
{
unsigned int get();
}
property unsigned int DefinesCount
{
unsigned int get();
}
property unsigned int LibraryDirsCount
{
unsigned int get();
}
property System::String^ TargetTriple
{
System::String^ get();
void set(System::String^);
}
property CppSharp::Parser::AST::ASTContext^ ASTContext
{
CppSharp::Parser::AST::ASTContext^ get();
void set(CppSharp::Parser::AST::ASTContext^);
}
property int ToolSetToUse
{
int get();
void set(int);
}
property CppSharp::Parser::AST::CppAbi Abi
{
CppSharp::Parser::AST::CppAbi get();
void set(CppSharp::Parser::AST::CppAbi);
}
property bool NoStandardIncludes
{
bool get();
void set(bool);
}
property bool NoBuiltinIncludes
{
bool get();
void set(bool);
}
property bool MicrosoftMode
{
bool get();
void set(bool);
}
property bool Verbose
{
bool get();
void set(bool);
}
System::String^ getArguments(unsigned int i);
void addArguments(System::String^ s);
System::String^ getIncludeDirs(unsigned int i);
void addIncludeDirs(System::String^ s);
System::String^ getSystemIncludeDirs(unsigned int i);
void addSystemIncludeDirs(System::String^ s);
System::String^ getDefines(unsigned int i);
void addDefines(System::String^ s);
System::String^ getLibraryDirs(unsigned int i);
void addLibraryDirs(System::String^ s);
};
public ref class ParserDiagnostic : ICppInstance
{
public:
property ::CppSharp::CppParser::ParserDiagnostic* NativePtr;
property System::IntPtr __Instance
{
virtual System::IntPtr get();
virtual void set(System::IntPtr instance);
}
ParserDiagnostic(::CppSharp::CppParser::ParserDiagnostic* native);
ParserDiagnostic(System::IntPtr native);
ParserDiagnostic();
property System::String^ FileName
{
System::String^ get();
void set(System::String^);
}
property System::String^ Message
{
System::String^ get();
void set(System::String^);
}
property CppSharp::Parser::ParserDiagnosticLevel Level
{
CppSharp::Parser::ParserDiagnosticLevel get();
void set(CppSharp::Parser::ParserDiagnosticLevel);
}
property int LineNumber
{
int get();
void set(int);
}
property int ColumnNumber
{
int get();
void set(int);
}
};
public ref class ParserResult : ICppInstance
{
public:
property ::CppSharp::CppParser::ParserResult* NativePtr;
property System::IntPtr __Instance
{
virtual System::IntPtr get();
virtual void set(System::IntPtr instance);
}
ParserResult(::CppSharp::CppParser::ParserResult* native);
ParserResult(System::IntPtr native);
ParserResult();
property unsigned int DiagnosticsCount
{
unsigned int get();
}
property CppSharp::Parser::ParserResultKind Kind
{
CppSharp::Parser::ParserResultKind get();
void set(CppSharp::Parser::ParserResultKind);
}
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();
void set(CppSharp::Parser::AST::NativeLibrary^);
}
CppSharp::Parser::ParserDiagnostic^ getDiagnostics(unsigned int i);
void addDiagnostics(CppSharp::Parser::ParserDiagnostic^ s);
};
public ref class ClangParser : ICppInstance
{
public:
property ::CppSharp::CppParser::ClangParser* NativePtr;
property System::IntPtr __Instance
{
virtual System::IntPtr get();
virtual void set(System::IntPtr instance);
}
ClangParser(::CppSharp::CppParser::ClangParser* native);
ClangParser(System::IntPtr native);
ClangParser();
static CppSharp::Parser::ParserResult^ ParseHeader(CppSharp::Parser::ParserOptions^ Opts);
static CppSharp::Parser::ParserResult^ ParseLibrary(CppSharp::Parser::ParserOptions^ Opts);
};
}
}
#pragma once
#include "CppSharp.h"
#include <CppParser.h>
namespace CppSharp
{
namespace Parser
{
enum struct ParserDiagnosticLevel;
enum struct ParserResultKind;
enum struct SourceLocationKind;
ref class ClangParser;
ref class ParserDiagnostic;
ref class ParserOptions;
ref class ParserResult;
namespace AST
{
enum struct CppAbi;
ref class ASTContext;
ref class NativeLibrary;
}
}
}
namespace CppSharp
{
namespace Parser
{
public enum struct ParserDiagnosticLevel
{
Ignored = 0,
Note = 1,
Warning = 2,
Error = 3,
Fatal = 4
};
public enum struct ParserResultKind
{
Success = 0,
Error = 1,
FileNotFound = 2
};
public enum struct SourceLocationKind
{
Invalid = 0,
Builtin = 1,
CommandLine = 2,
System = 3,
User = 4
};
public ref class ParserOptions : ICppInstance
{
public:
property ::CppSharp::CppParser::ParserOptions* NativePtr;
property System::IntPtr __Instance
{
virtual System::IntPtr get();
virtual void set(System::IntPtr instance);
}
ParserOptions(::CppSharp::CppParser::ParserOptions* native);
ParserOptions(System::IntPtr native);
ParserOptions();
property unsigned int ArgumentsCount
{
unsigned int get();
}
property System::String^ FileName
{
System::String^ get();
void set(System::String^);
}
property unsigned int IncludeDirsCount
{
unsigned int get();
}
property unsigned int SystemIncludeDirsCount
{
unsigned int get();
}
property unsigned int DefinesCount
{
unsigned int get();
}
property unsigned int LibraryDirsCount
{
unsigned int get();
}
property System::String^ TargetTriple
{
System::String^ get();
void set(System::String^);
}
property CppSharp::Parser::AST::ASTContext^ ASTContext
{
CppSharp::Parser::AST::ASTContext^ get();
void set(CppSharp::Parser::AST::ASTContext^);
}
property int ToolSetToUse
{
int get();
void set(int);
}
property CppSharp::Parser::AST::CppAbi Abi
{
CppSharp::Parser::AST::CppAbi get();
void set(CppSharp::Parser::AST::CppAbi);
}
property bool NoStandardIncludes
{
bool get();
void set(bool);
}
property bool NoBuiltinIncludes
{
bool get();
void set(bool);
}
property bool MicrosoftMode
{
bool get();
void set(bool);
}
property bool Verbose
{
bool get();
void set(bool);
}
System::String^ getArguments(unsigned int i);
void addArguments(System::String^ s);
System::String^ getIncludeDirs(unsigned int i);
void addIncludeDirs(System::String^ s);
System::String^ getSystemIncludeDirs(unsigned int i);
void addSystemIncludeDirs(System::String^ s);
System::String^ getDefines(unsigned int i);
void addDefines(System::String^ s);
System::String^ getLibraryDirs(unsigned int i);
void addLibraryDirs(System::String^ s);
};
public ref class ParserDiagnostic : ICppInstance
{
public:
property ::CppSharp::CppParser::ParserDiagnostic* NativePtr;
property System::IntPtr __Instance
{
virtual System::IntPtr get();
virtual void set(System::IntPtr instance);
}
ParserDiagnostic(::CppSharp::CppParser::ParserDiagnostic* native);
ParserDiagnostic(System::IntPtr native);
ParserDiagnostic();
property System::String^ FileName
{
System::String^ get();
void set(System::String^);
}
property System::String^ Message
{
System::String^ get();
void set(System::String^);
}
property CppSharp::Parser::ParserDiagnosticLevel Level
{
CppSharp::Parser::ParserDiagnosticLevel get();
void set(CppSharp::Parser::ParserDiagnosticLevel);
}
property int LineNumber
{
int get();
void set(int);
}
property int ColumnNumber
{
int get();
void set(int);
}
};
public ref class ParserResult : ICppInstance
{
public:
property ::CppSharp::CppParser::ParserResult* NativePtr;
property System::IntPtr __Instance
{
virtual System::IntPtr get();
virtual void set(System::IntPtr instance);
}
ParserResult(::CppSharp::CppParser::ParserResult* native);
ParserResult(System::IntPtr native);
ParserResult();
property unsigned int DiagnosticsCount
{
unsigned int get();
}
property CppSharp::Parser::ParserResultKind Kind
{
CppSharp::Parser::ParserResultKind get();
void set(CppSharp::Parser::ParserResultKind);
}
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();
void set(CppSharp::Parser::AST::NativeLibrary^);
}
CppSharp::Parser::ParserDiagnostic^ getDiagnostics(unsigned int i);
void addDiagnostics(CppSharp::Parser::ParserDiagnostic^ s);
};
public ref class ClangParser : ICppInstance
{
public:
property ::CppSharp::CppParser::ClangParser* NativePtr;
property System::IntPtr __Instance
{
virtual System::IntPtr get();
virtual void set(System::IntPtr instance);
}
ClangParser(::CppSharp::CppParser::ClangParser* native);
ClangParser(System::IntPtr native);
ClangParser();
static CppSharp::Parser::ParserResult^ ParseHeader(CppSharp::Parser::ParserOptions^ Opts);
static CppSharp::Parser::ParserResult^ ParseLibrary(CppSharp::Parser::ParserOptions^ Opts);
};
}
}

1
src/CppParser/CppParser.cpp

@ -27,6 +27,7 @@ DEF_VECTOR_STRING(ParserOptions, SystemIncludeDirs) @@ -27,6 +27,7 @@ DEF_VECTOR_STRING(ParserOptions, SystemIncludeDirs)
DEF_VECTOR_STRING(ParserOptions, Defines)
DEF_VECTOR_STRING(ParserOptions, LibraryDirs)
DEF_STRING(ParserOptions, TargetTriple)
DEF_STRING(ParserTargetInfo, ABI)
ParserResult::ParserResult()
: ASTContext(0)

1
src/CppParser/CppParser.h

@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
#include "AST.h"
#include "Helpers.h"
#include "Target.h"
namespace CppSharp { namespace CppParser {

117
src/CppParser/Parser.cpp

@ -1210,6 +1210,37 @@ static CallingConvention ConvertCallConv(clang::CallingConv CC) @@ -1210,6 +1210,37 @@ static CallingConvention ConvertCallConv(clang::CallingConv CC)
return CallingConvention::Default;
}
static ParserIntType ConvertIntType(clang::TargetInfo::IntType IT)
{
switch (IT)
{
case clang::TargetInfo::IntType::NoInt:
return ParserIntType::NoInt;
case clang::TargetInfo::IntType::SignedChar:
return ParserIntType::SignedChar;
case clang::TargetInfo::IntType::UnsignedChar:
return ParserIntType::UnsignedChar;
case clang::TargetInfo::IntType::SignedShort:
return ParserIntType::SignedShort;
case clang::TargetInfo::IntType::UnsignedShort:
return ParserIntType::UnsignedShort;
case clang::TargetInfo::IntType::SignedInt:
return ParserIntType::SignedInt;
case clang::TargetInfo::IntType::UnsignedInt:
return ParserIntType::UnsignedInt;
case clang::TargetInfo::IntType::SignedLong:
return ParserIntType::SignedLong;
case clang::TargetInfo::IntType::UnsignedLong:
return ParserIntType::UnsignedLong;
case clang::TargetInfo::IntType::SignedLongLong:
return ParserIntType::SignedLongLong;
case clang::TargetInfo::IntType::UnsignedLongLong:
return ParserIntType::UnsignedLongLong;
}
llvm_unreachable("Unknown parser integer type");
}
Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
bool DesugarType)
{
@ -2688,3 +2719,89 @@ ParserResult* ClangParser::ParseLibrary(ParserOptions* Opts) @@ -2688,3 +2719,89 @@ ParserResult* ClangParser::ParseLibrary(ParserOptions* Opts)
Parser parser(Opts);
return parser.ParseLibrary(Opts->FileName);
}
ParserTargetInfo* Parser::GetTargetInfo()
{
assert(Opts->ASTContext && "Expected a valid ASTContext");
auto res = new ParserResult();
res->ASTContext = Lib;
SetupHeader();
auto SC = new clang::SemaConsumer();
C->setASTConsumer(SC);
C->createSema(clang::TU_Complete, 0);
SC->InitializeSema(C->getSema());
auto DiagClient = new DiagnosticConsumer();
C->getDiagnostics().setClient(DiagClient);
AST = &C->getASTContext();
// Initialize enough Clang codegen machinery so we can get at ABI details.
llvm::LLVMContext Ctx;
llvm::OwningPtr<llvm::Module> M(new llvm::Module("", Ctx));
M->setTargetTriple(AST->getTargetInfo().getTriple().getTriple());
M->setDataLayout(AST->getTargetInfo().getTargetDescription());
llvm::OwningPtr<llvm::DataLayout> TD(new llvm::DataLayout(AST->getTargetInfo()
.getTargetDescription()));
llvm::OwningPtr<clang::CodeGen::CodeGenModule> CGM(
new clang::CodeGen::CodeGenModule(C->getASTContext(), C->getCodeGenOpts(),
*M, *TD, C->getDiagnostics()));
llvm::OwningPtr<clang::CodeGen::CodeGenTypes> CGT(
new clang::CodeGen::CodeGenTypes(*CGM.get()));
CodeGenInfo = (clang::TargetCodeGenInfo*) &CGM->getTargetCodeGenInfo();
CodeGenTypes = CGT.get();
auto parserTargetInfo = new ParserTargetInfo();
parserTargetInfo->ABI = AST->getTargetInfo().getABI();
parserTargetInfo->Char16Type = ConvertIntType(AST->getTargetInfo().getChar16Type());
parserTargetInfo->Char32Type = ConvertIntType(AST->getTargetInfo().getChar32Type());
parserTargetInfo->Int64Type = ConvertIntType(AST->getTargetInfo().getInt64Type());
parserTargetInfo->IntMaxType = ConvertIntType(AST->getTargetInfo().getIntMaxType());
parserTargetInfo->IntPtrType = ConvertIntType(AST->getTargetInfo().getIntPtrType());
parserTargetInfo->SizeType = ConvertIntType(AST->getTargetInfo().getSizeType());
parserTargetInfo->UIntMaxType = ConvertIntType(AST->getTargetInfo().getUIntMaxType());
parserTargetInfo->WCharType = ConvertIntType(AST->getTargetInfo().getWCharType());
parserTargetInfo->WIntType = ConvertIntType(AST->getTargetInfo().getWIntType());
parserTargetInfo->BoolAlign = AST->getTargetInfo().getBoolAlign();
parserTargetInfo->BoolWidth = AST->getTargetInfo().getBoolWidth();
parserTargetInfo->CharAlign = AST->getTargetInfo().getCharAlign();
parserTargetInfo->CharWidth = AST->getTargetInfo().getCharWidth();
parserTargetInfo->Char16Align = AST->getTargetInfo().getChar16Align();
parserTargetInfo->Char16Width = AST->getTargetInfo().getChar16Width();
parserTargetInfo->Char32Align = AST->getTargetInfo().getChar32Align();
parserTargetInfo->Char32Width = AST->getTargetInfo().getChar32Width();
parserTargetInfo->HalfAlign = AST->getTargetInfo().getHalfAlign();
parserTargetInfo->HalfWidth = AST->getTargetInfo().getHalfWidth();
parserTargetInfo->FloatAlign = AST->getTargetInfo().getFloatAlign();
parserTargetInfo->FloatWidth = AST->getTargetInfo().getFloatWidth();
parserTargetInfo->DoubleAlign = AST->getTargetInfo().getDoubleAlign();
parserTargetInfo->DoubleWidth = AST->getTargetInfo().getDoubleWidth();
parserTargetInfo->ShortAlign = AST->getTargetInfo().getShortAlign();
parserTargetInfo->ShortWidth = AST->getTargetInfo().getShortWidth();
parserTargetInfo->IntAlign = AST->getTargetInfo().getIntAlign();
parserTargetInfo->IntWidth = AST->getTargetInfo().getIntWidth();
parserTargetInfo->IntMaxTWidth = AST->getTargetInfo().getIntMaxTWidth();
parserTargetInfo->LongAlign = AST->getTargetInfo().getLongAlign();
parserTargetInfo->LongWidth = AST->getTargetInfo().getLongWidth();
parserTargetInfo->LongDoubleAlign = AST->getTargetInfo().getLongDoubleAlign();
parserTargetInfo->LongDoubleWidth = AST->getTargetInfo().getLongDoubleWidth();
parserTargetInfo->LongLongAlign = AST->getTargetInfo().getLongLongAlign();
parserTargetInfo->LongLongWidth = AST->getTargetInfo().getLongLongWidth();
parserTargetInfo->PointerAlign = AST->getTargetInfo().getPointerAlign(0);
parserTargetInfo->PointerWidth = AST->getTargetInfo().getPointerWidth(0);
parserTargetInfo->WCharAlign = AST->getTargetInfo().getWCharAlign();
parserTargetInfo->WCharWidth = AST->getTargetInfo().getWCharWidth();
return parserTargetInfo;
}

1
src/CppParser/Parser.h

@ -56,6 +56,7 @@ struct Parser @@ -56,6 +56,7 @@ struct Parser
ParserResultKind ParseSharedLib(llvm::StringRef File,
llvm::MemoryBuffer *Buffer,
CppSharp::CppParser::NativeLibrary*& NativeLib);
ParserTargetInfo* GetTargetInfo();
protected:

77
src/CppParser/Target.h

@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
/************************************************************************
*
* CppSharp
* Licensed under the simplified BSD license. All rights reserved.
*
************************************************************************/
#pragma once
#include "AST.h"
#include "Helpers.h"
namespace CppSharp { namespace CppParser {
using namespace CppSharp::CppParser::AST;
enum struct ParserIntType
{
NoInt = 0,
SignedChar,
UnsignedChar,
SignedShort,
UnsignedShort,
SignedInt,
UnsignedInt,
SignedLong,
UnsignedLong,
SignedLongLong,
UnsignedLongLong
};
struct CS_API ParserTargetInfo
{
STRING(ABI);
ParserIntType Char16Type;
ParserIntType Char32Type;
ParserIntType Int64Type;
ParserIntType IntMaxType;
ParserIntType IntPtrType;
ParserIntType SizeType;
ParserIntType UIntMaxType;
ParserIntType WCharType;
ParserIntType WIntType;
unsigned int BoolAlign;
unsigned int BoolWidth;
unsigned int CharAlign;
unsigned int CharWidth;
unsigned int Char16Align;
unsigned int Char16Width;
unsigned int Char32Align;
unsigned int Char32Width;
unsigned int HalfAlign;
unsigned int HalfWidth;
unsigned int FloatAlign;
unsigned int FloatWidth;
unsigned int DoubleAlign;
unsigned int DoubleWidth;
unsigned int ShortAlign;
unsigned int ShortWidth;
unsigned int IntAlign;
unsigned int IntWidth;
unsigned int IntMaxTWidth;
unsigned int LongAlign;
unsigned int LongWidth;
unsigned int LongDoubleAlign;
unsigned int LongDoubleWidth;
unsigned int LongLongAlign;
unsigned int LongLongWidth;
unsigned int PointerAlign;
unsigned int PointerWidth;
unsigned int WCharAlign;
unsigned int WCharWidth;
};
} }

4
src/Generator/Driver.cs

@ -213,6 +213,8 @@ namespace CppSharp @@ -213,6 +213,8 @@ namespace CppSharp
parser.SourceParsed += OnSourceFileParsed;
parser.ParseProject(Project, Options);
TargetInfo = parser.GetTargetInfo(Options);
#if !OLD_PARSER
ASTContext = ClangParser.ConvertASTContext(parser.ASTContext);
@ -221,6 +223,8 @@ namespace CppSharp @@ -221,6 +223,8 @@ namespace CppSharp
return true;
}
public ParserTargetInfo TargetInfo { get; set; }
public bool ParseLibraries()
{
foreach (var library in Options.Libraries)

6
src/Parser/Main.cpp

@ -14,6 +14,12 @@ public ref class ClangParser @@ -14,6 +14,12 @@ public ref class ClangParser
{
public:
static ParserTargetInfo^ GetTargetInfo(ParserOptions^ Opts)
{
::Parser parser(Opts);
return parser.GetTargetInfo();
}
static ParserResult^ ParseHeader(ParserOptions^ Opts)
{
if (!Opts->FileName) return nullptr;

119
src/Parser/Parser.cpp

@ -1233,6 +1233,37 @@ static CppSharp::AST::CallingConvention ConvertCallConv(clang::CallingConv CC) @@ -1233,6 +1233,37 @@ static CppSharp::AST::CallingConvention ConvertCallConv(clang::CallingConv CC)
return CppSharp::AST::CallingConvention::Default;
}
static ParserIntType ConvertIntType(clang::TargetInfo::IntType IT)
{
switch (IT)
{
case clang::TargetInfo::IntType::NoInt:
return ParserIntType::NoInt;
case clang::TargetInfo::IntType::SignedChar:
return ParserIntType::SignedChar;
case clang::TargetInfo::IntType::UnsignedChar:
return ParserIntType::UnsignedChar;
case clang::TargetInfo::IntType::SignedShort:
return ParserIntType::SignedShort;
case clang::TargetInfo::IntType::UnsignedShort:
return ParserIntType::UnsignedShort;
case clang::TargetInfo::IntType::SignedInt:
return ParserIntType::SignedInt;
case clang::TargetInfo::IntType::UnsignedInt:
return ParserIntType::UnsignedInt;
case clang::TargetInfo::IntType::SignedLong:
return ParserIntType::SignedLong;
case clang::TargetInfo::IntType::UnsignedLong:
return ParserIntType::UnsignedLong;
case clang::TargetInfo::IntType::SignedLongLong:
return ParserIntType::SignedLongLong;
case clang::TargetInfo::IntType::UnsignedLongLong:
return ParserIntType::UnsignedLongLong;
}
llvm_unreachable("Unknown parser integer type");
}
CppSharp::AST::QualifiedType^ Parser::WalkQualifiedType(clang::TypeSourceInfo* TSI)
{
auto TL = TSI->getTypeLoc();
@ -2684,4 +2715,90 @@ ParserResult^ Parser::ParseLibrary(const std::string& File) @@ -2684,4 +2715,90 @@ ParserResult^ Parser::ParseLibrary(const std::string& File)
return res;
return res;
}
}
ParserTargetInfo^ Parser::GetTargetInfo()
{
assert(Opts->ASTContext && "Expected a valid ASTContext");
auto res = gcnew ParserResult();
res->ASTContext = Lib;
SetupHeader();
auto SC = new clang::SemaConsumer();
C->setASTConsumer(SC);
C->createSema(clang::TU_Complete, 0);
SC->InitializeSema(C->getSema());
auto DiagClient = new DiagnosticConsumer();
C->getDiagnostics().setClient(DiagClient);
AST = &C->getASTContext();
// Initialize enough Clang codegen machinery so we can get at ABI details.
llvm::LLVMContext Ctx;
llvm::OwningPtr<llvm::Module> M(new llvm::Module("", Ctx));
M->setTargetTriple(AST->getTargetInfo().getTriple().getTriple());
M->setDataLayout(AST->getTargetInfo().getTargetDescription());
llvm::OwningPtr<llvm::DataLayout> TD(new llvm::DataLayout(AST->getTargetInfo()
.getTargetDescription()));
llvm::OwningPtr<clang::CodeGen::CodeGenModule> CGM(
new clang::CodeGen::CodeGenModule(C->getASTContext(), C->getCodeGenOpts(),
*M, *TD, C->getDiagnostics()));
llvm::OwningPtr<clang::CodeGen::CodeGenTypes> CGT(
new clang::CodeGen::CodeGenTypes(*CGM.get()));
CodeGenInfo = (clang::TargetCodeGenInfo*) &CGM->getTargetCodeGenInfo();
CodeGenTypes = CGT.get();
auto parserTargetInfo = gcnew ParserTargetInfo();
parserTargetInfo->ABI = clix::marshalString<clix::E_UTF8>(AST->getTargetInfo().getABI());
parserTargetInfo->Char16Type = ConvertIntType(AST->getTargetInfo().getChar16Type());
parserTargetInfo->Char32Type = ConvertIntType(AST->getTargetInfo().getChar32Type());
parserTargetInfo->Int64Type = ConvertIntType(AST->getTargetInfo().getInt64Type());
parserTargetInfo->IntMaxType = ConvertIntType(AST->getTargetInfo().getIntMaxType());
parserTargetInfo->IntPtrType = ConvertIntType(AST->getTargetInfo().getIntPtrType());
parserTargetInfo->SizeType = ConvertIntType(AST->getTargetInfo().getSizeType());
parserTargetInfo->UIntMaxType = ConvertIntType(AST->getTargetInfo().getUIntMaxType());
parserTargetInfo->WCharType = ConvertIntType(AST->getTargetInfo().getWCharType());
parserTargetInfo->WIntType = ConvertIntType(AST->getTargetInfo().getWIntType());
parserTargetInfo->BoolAlign = AST->getTargetInfo().getBoolAlign();
parserTargetInfo->BoolWidth = AST->getTargetInfo().getBoolWidth();
parserTargetInfo->CharAlign = AST->getTargetInfo().getCharAlign();
parserTargetInfo->CharWidth = AST->getTargetInfo().getCharWidth();
parserTargetInfo->Char16Align = AST->getTargetInfo().getChar16Align();
parserTargetInfo->Char16Width = AST->getTargetInfo().getChar16Width();
parserTargetInfo->Char32Align = AST->getTargetInfo().getChar32Align();
parserTargetInfo->Char32Width = AST->getTargetInfo().getChar32Width();
parserTargetInfo->HalfAlign = AST->getTargetInfo().getHalfAlign();
parserTargetInfo->HalfWidth = AST->getTargetInfo().getHalfWidth();
parserTargetInfo->FloatAlign = AST->getTargetInfo().getFloatAlign();
parserTargetInfo->FloatWidth = AST->getTargetInfo().getFloatWidth();
parserTargetInfo->DoubleAlign = AST->getTargetInfo().getDoubleAlign();
parserTargetInfo->DoubleWidth = AST->getTargetInfo().getDoubleWidth();
parserTargetInfo->ShortAlign = AST->getTargetInfo().getShortAlign();
parserTargetInfo->ShortWidth = AST->getTargetInfo().getShortWidth();
parserTargetInfo->IntAlign = AST->getTargetInfo().getIntAlign();
parserTargetInfo->IntWidth = AST->getTargetInfo().getIntWidth();
parserTargetInfo->IntMaxTWidth = AST->getTargetInfo().getIntMaxTWidth();
parserTargetInfo->LongAlign = AST->getTargetInfo().getLongAlign();
parserTargetInfo->LongWidth = AST->getTargetInfo().getLongWidth();
parserTargetInfo->LongDoubleAlign = AST->getTargetInfo().getLongDoubleAlign();
parserTargetInfo->LongDoubleWidth = AST->getTargetInfo().getLongDoubleWidth();
parserTargetInfo->LongLongAlign = AST->getTargetInfo().getLongLongAlign();
parserTargetInfo->LongLongWidth = AST->getTargetInfo().getLongLongWidth();
parserTargetInfo->PointerAlign = AST->getTargetInfo().getPointerAlign(0);
parserTargetInfo->PointerWidth = AST->getTargetInfo().getPointerWidth(0);
parserTargetInfo->WCharAlign = AST->getTargetInfo().getWCharAlign();
parserTargetInfo->WCharWidth = AST->getTargetInfo().getWCharWidth();
return parserTargetInfo;
}

2
src/Parser/Parser.h

@ -27,6 +27,7 @@ @@ -27,6 +27,7 @@
#include <clang/Sema/Sema.h>
#include "CXXABI.h"
#include "Options.h"
#include "Target.h"
#include <vcclr.h>
#include <string>
@ -54,6 +55,7 @@ struct Parser @@ -54,6 +55,7 @@ struct Parser
ParserResultKind ParseSharedLib(llvm::StringRef File,
llvm::MemoryBuffer *Buffer,
CppSharp::AST::NativeLibrary^ NativeLib);
ParserTargetInfo^ GetTargetInfo();
protected:

69
src/Parser/Target.h

@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
/************************************************************************
*
* CppSharp
* Licensed under the simplified BSD license. All rights reserved.
*
************************************************************************/
#using <CppSharp.AST.dll>
using namespace System::Collections::Generic;
public enum ParserIntType
{
NoInt = 0,
SignedChar,
UnsignedChar,
SignedShort,
UnsignedShort,
SignedInt,
UnsignedInt,
SignedLong,
UnsignedLong,
SignedLongLong,
UnsignedLongLong
};
public ref struct ParserTargetInfo
{
System::String^ ABI;
ParserIntType Char16Type;
ParserIntType Char32Type;
ParserIntType Int64Type;
ParserIntType IntMaxType;
ParserIntType IntPtrType;
ParserIntType SizeType;
ParserIntType UIntMaxType;
ParserIntType WCharType;
ParserIntType WIntType;
unsigned int BoolAlign;
unsigned int BoolWidth;
unsigned int CharAlign;
unsigned int CharWidth;
unsigned int Char16Align;
unsigned int Char16Width;
unsigned int Char32Align;
unsigned int Char32Width;
unsigned int HalfAlign;
unsigned int HalfWidth;
unsigned int FloatAlign;
unsigned int FloatWidth;
unsigned int DoubleAlign;
unsigned int DoubleWidth;
unsigned int ShortAlign;
unsigned int ShortWidth;
unsigned int IntAlign;
unsigned int IntWidth;
unsigned int IntMaxTWidth;
unsigned int LongAlign;
unsigned int LongWidth;
unsigned int LongDoubleAlign;
unsigned int LongDoubleWidth;
unsigned int LongLongAlign;
unsigned int LongLongWidth;
unsigned int PointerAlign;
unsigned int PointerWidth;
unsigned int WCharAlign;
unsigned int WCharWidth;
};
Loading…
Cancel
Save