From 3ab4d570a3053b9c4a6ea098ed7470454b044673 Mon Sep 17 00:00:00 2001 From: triton Date: Sun, 26 Oct 2014 01:11:23 +0100 Subject: [PATCH] Removes the remaining SetClassAsValueType from ParserGen. Fixes diagnostics not showing up. These cannot be value types else diagnostics won't be copied in CLI copy constructors. --- src/CppParser/Bindings/CLI/CppParser.cpp | 185 ++++++-------- src/CppParser/Bindings/CLI/CppParser.h | 45 ++-- .../i686-apple-darwin12.4.0/CppParser.cs | 223 ++++++++++------- .../Bindings/CSharp/i686-pc-win32-msvc/AST.cs | 212 ++++++++++++---- .../CSharp/i686-pc-win32-msvc/CppParser.cs | 231 +++++++++++------- .../CSharp/i686-pc-win32-msvc/Sources.cs | 4 +- .../CSharp/i686-pc-win32-msvc/Target.cs | 4 +- .../CSharp/x86_64-linux-gnu/CppParser.cs | 223 ++++++++++------- src/CppParser/Bindings/ParserGen.cs | 3 - 9 files changed, 680 insertions(+), 450 deletions(-) diff --git a/src/CppParser/Bindings/CLI/CppParser.cpp b/src/CppParser/Bindings/CLI/CppParser.cpp index db0c7801..413cebb3 100644 --- a/src/CppParser/Bindings/CLI/CppParser.cpp +++ b/src/CppParser/Bindings/CLI/CppParser.cpp @@ -291,211 +291,166 @@ void CppSharp::Parser::ParserOptions::LanguageVersion::set(CppSharp::Parser::Lan CppSharp::Parser::ParserDiagnostic::ParserDiagnostic(::CppSharp::CppParser::ParserDiagnostic* native) { - __Level = (CppSharp::Parser::ParserDiagnosticLevel)native->Level; - __LineNumber = native->LineNumber; - __ColumnNumber = native->ColumnNumber; + NativePtr = native; } CppSharp::Parser::ParserDiagnostic::ParserDiagnostic(System::IntPtr native) { auto __native = (::CppSharp::CppParser::ParserDiagnostic*)native.ToPointer(); - __Level = (CppSharp::Parser::ParserDiagnosticLevel)__native->Level; - __LineNumber = __native->LineNumber; - __ColumnNumber = __native->ColumnNumber; + 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 _this0 = ::CppSharp::CppParser::ParserDiagnostic(); - _this0.Level = (::CppSharp::CppParser::ParserDiagnosticLevel)(*this).Level; - _this0.LineNumber = (*this).LineNumber; - _this0.ColumnNumber = (*this).ColumnNumber; - auto __ret = _this0.getFileName(); - __Level = (CppSharp::Parser::ParserDiagnosticLevel)_this0.Level; - __LineNumber = _this0.LineNumber; - __ColumnNumber = _this0.ColumnNumber; + auto __ret = ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->getFileName(); if (__ret == nullptr) return nullptr; return clix::marshalString(__ret); } void CppSharp::Parser::ParserDiagnostic::FileName::set(System::String^ s) { - auto _this0 = ::CppSharp::CppParser::ParserDiagnostic(); - _this0.Level = (::CppSharp::CppParser::ParserDiagnosticLevel)(*this).Level; - _this0.LineNumber = (*this).LineNumber; - _this0.ColumnNumber = (*this).ColumnNumber; auto _arg0 = clix::marshalString(s); auto arg0 = _arg0.c_str(); - _this0.setFileName(arg0); - __Level = (CppSharp::Parser::ParserDiagnosticLevel)_this0.Level; - __LineNumber = _this0.LineNumber; - __ColumnNumber = _this0.ColumnNumber; + ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->setFileName(arg0); } System::String^ CppSharp::Parser::ParserDiagnostic::Message::get() { - auto _this0 = ::CppSharp::CppParser::ParserDiagnostic(); - _this0.Level = (::CppSharp::CppParser::ParserDiagnosticLevel)(*this).Level; - _this0.LineNumber = (*this).LineNumber; - _this0.ColumnNumber = (*this).ColumnNumber; - auto __ret = _this0.getMessage(); - __Level = (CppSharp::Parser::ParserDiagnosticLevel)_this0.Level; - __LineNumber = _this0.LineNumber; - __ColumnNumber = _this0.ColumnNumber; + auto __ret = ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->getMessage(); if (__ret == nullptr) return nullptr; return clix::marshalString(__ret); } void CppSharp::Parser::ParserDiagnostic::Message::set(System::String^ s) { - auto _this0 = ::CppSharp::CppParser::ParserDiagnostic(); - _this0.Level = (::CppSharp::CppParser::ParserDiagnosticLevel)(*this).Level; - _this0.LineNumber = (*this).LineNumber; - _this0.ColumnNumber = (*this).ColumnNumber; auto _arg0 = clix::marshalString(s); auto arg0 = _arg0.c_str(); - _this0.setMessage(arg0); - __Level = (CppSharp::Parser::ParserDiagnosticLevel)_this0.Level; - __LineNumber = _this0.LineNumber; - __ColumnNumber = _this0.ColumnNumber; + ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->setMessage(arg0); } CppSharp::Parser::ParserDiagnosticLevel CppSharp::Parser::ParserDiagnostic::Level::get() { - return __Level; + return (CppSharp::Parser::ParserDiagnosticLevel)((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->Level; } void CppSharp::Parser::ParserDiagnostic::Level::set(CppSharp::Parser::ParserDiagnosticLevel value) { - __Level = value; + ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->Level = (::CppSharp::CppParser::ParserDiagnosticLevel)value; } int CppSharp::Parser::ParserDiagnostic::LineNumber::get() { - return __LineNumber; + return ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->LineNumber; } void CppSharp::Parser::ParserDiagnostic::LineNumber::set(int value) { - __LineNumber = value; + ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->LineNumber = value; } int CppSharp::Parser::ParserDiagnostic::ColumnNumber::get() { - return __ColumnNumber; + return ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->ColumnNumber; } void CppSharp::Parser::ParserDiagnostic::ColumnNumber::set(int value) { - __ColumnNumber = value; + ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->ColumnNumber = value; } CppSharp::Parser::ParserResult::ParserResult(::CppSharp::CppParser::ParserResult* native) { - __Kind = (CppSharp::Parser::ParserResultKind)native->Kind; - __ASTContext = (native->ASTContext == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)native->ASTContext); - __Library = (native->Library == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)native->Library); + NativePtr = native; } CppSharp::Parser::ParserResult::ParserResult(System::IntPtr native) { auto __native = (::CppSharp::CppParser::ParserResult*)native.ToPointer(); - __Kind = (CppSharp::Parser::ParserResultKind)__native->Kind; - __ASTContext = (__native->ASTContext == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)__native->ASTContext); - __Library = (__native->Library == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)__native->Library); -} - -CppSharp::Parser::ParserDiagnostic CppSharp::Parser::ParserResult::getDiagnostics(unsigned int i) -{ - auto _this0 = ::CppSharp::CppParser::ParserResult(); - _this0.Kind = (::CppSharp::CppParser::ParserResultKind)(*this).Kind; - if ((*this).ASTContext != nullptr) - _this0.ASTContext = (::CppSharp::CppParser::AST::ASTContext*)(*this).ASTContext->NativePtr; - if ((*this).Library != nullptr) - _this0.Library = (::CppSharp::CppParser::AST::NativeLibrary*)(*this).Library->NativePtr; - auto __ret = _this0.getDiagnostics(i); - __Kind = (CppSharp::Parser::ParserResultKind)_this0.Kind; - __ASTContext = (_this0.ASTContext == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)_this0.ASTContext); - __Library = (_this0.Library == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)_this0.Library); - return CppSharp::Parser::ParserDiagnostic((::CppSharp::CppParser::ParserDiagnostic*)&__ret); -} - -void CppSharp::Parser::ParserResult::addDiagnostics(CppSharp::Parser::ParserDiagnostic s) -{ - auto _this0 = ::CppSharp::CppParser::ParserResult(); - _this0.Kind = (::CppSharp::CppParser::ParserResultKind)(*this).Kind; - if ((*this).ASTContext != nullptr) - _this0.ASTContext = (::CppSharp::CppParser::AST::ASTContext*)(*this).ASTContext->NativePtr; - if ((*this).Library != nullptr) - _this0.Library = (::CppSharp::CppParser::AST::NativeLibrary*)(*this).Library->NativePtr; - auto _marshal0 = ::CppSharp::CppParser::ParserDiagnostic(); - _marshal0.Level = (::CppSharp::CppParser::ParserDiagnosticLevel)s.Level; - _marshal0.LineNumber = s.LineNumber; - _marshal0.ColumnNumber = s.ColumnNumber; - auto arg0 = _marshal0; - _this0.addDiagnostics(arg0); - __Kind = (CppSharp::Parser::ParserResultKind)_this0.Kind; - __ASTContext = (_this0.ASTContext == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)_this0.ASTContext); - __Library = (_this0.Library == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)_this0.Library); + 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 (____ret == nullptr) ? nullptr : 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); } void CppSharp::Parser::ParserResult::clearDiagnostics() { - auto _this0 = ::CppSharp::CppParser::ParserResult(); - _this0.Kind = (::CppSharp::CppParser::ParserResultKind)(*this).Kind; - if ((*this).ASTContext != nullptr) - _this0.ASTContext = (::CppSharp::CppParser::AST::ASTContext*)(*this).ASTContext->NativePtr; - if ((*this).Library != nullptr) - _this0.Library = (::CppSharp::CppParser::AST::NativeLibrary*)(*this).Library->NativePtr; - _this0.clearDiagnostics(); - __Kind = (CppSharp::Parser::ParserResultKind)_this0.Kind; - __ASTContext = (_this0.ASTContext == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)_this0.ASTContext); - __Library = (_this0.Library == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)_this0.Library); + ((::CppSharp::CppParser::ParserResult*)NativePtr)->clearDiagnostics(); +} + +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 _this0 = ::CppSharp::CppParser::ParserResult(); - _this0.Kind = (::CppSharp::CppParser::ParserResultKind)(*this).Kind; - if ((*this).ASTContext != nullptr) - _this0.ASTContext = (::CppSharp::CppParser::AST::ASTContext*)(*this).ASTContext->NativePtr; - if ((*this).Library != nullptr) - _this0.Library = (::CppSharp::CppParser::AST::NativeLibrary*)(*this).Library->NativePtr; - auto __ret = _this0.getDiagnosticsCount(); - __Kind = (CppSharp::Parser::ParserResultKind)_this0.Kind; - __ASTContext = (_this0.ASTContext == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)_this0.ASTContext); - __Library = (_this0.Library == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)_this0.Library); + auto __ret = ((::CppSharp::CppParser::ParserResult*)NativePtr)->getDiagnosticsCount(); return __ret; } CppSharp::Parser::ParserResultKind CppSharp::Parser::ParserResult::Kind::get() { - return __Kind; + return (CppSharp::Parser::ParserResultKind)((::CppSharp::CppParser::ParserResult*)NativePtr)->Kind; } void CppSharp::Parser::ParserResult::Kind::set(CppSharp::Parser::ParserResultKind value) { - __Kind = value; + ((::CppSharp::CppParser::ParserResult*)NativePtr)->Kind = (::CppSharp::CppParser::ParserResultKind)value; } CppSharp::Parser::AST::ASTContext^ CppSharp::Parser::ParserResult::ASTContext::get() { - return __ASTContext; + 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) { - __ASTContext = value; + ((::CppSharp::CppParser::ParserResult*)NativePtr)->ASTContext = (::CppSharp::CppParser::AST::ASTContext*)value->NativePtr; } CppSharp::Parser::AST::NativeLibrary^ CppSharp::Parser::ParserResult::Library::get() { - return __Library; + return (((::CppSharp::CppParser::ParserResult*)NativePtr)->Library == nullptr) ? nullptr : 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) { - __Library = value; + ((::CppSharp::CppParser::ParserResult*)NativePtr)->Library = (::CppSharp::CppParser::AST::NativeLibrary*)value->NativePtr; } CppSharp::Parser::ClangParser::ClangParser(::CppSharp::CppParser::ClangParser* native) @@ -509,18 +464,20 @@ CppSharp::Parser::ClangParser::ClangParser(System::IntPtr native) NativePtr = __native; } -CppSharp::Parser::ParserResult CppSharp::Parser::ClangParser::ParseHeader(CppSharp::Parser::ParserOptions^ Opts) +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); - return CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret); + if (__ret == nullptr) return nullptr; + return (__ret == nullptr) ? nullptr : gcnew CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret); } -CppSharp::Parser::ParserResult CppSharp::Parser::ClangParser::ParseLibrary(CppSharp::Parser::ParserOptions^ Opts) +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); - return CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret); + if (__ret == nullptr) return nullptr; + return (__ret == nullptr) ? nullptr : gcnew CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret); } CppSharp::Parser::ParserTargetInfo^ CppSharp::Parser::ClangParser::GetTargetInfo(CppSharp::Parser::ParserOptions^ Opts) diff --git a/src/CppParser/Bindings/CLI/CppParser.h b/src/CppParser/Bindings/CLI/CppParser.h index b0d16fb0..4f737172 100644 --- a/src/CppParser/Bindings/CLI/CppParser.h +++ b/src/CppParser/Bindings/CLI/CppParser.h @@ -13,10 +13,10 @@ namespace CppSharp enum struct SourceLocationKind; ref class ClangParser; ref class Parser; + ref class ParserDiagnostic; ref class ParserOptions; + ref class ParserResult; ref class ParserTargetInfo; - value struct ParserDiagnostic; - value struct ParserResult; namespace AST { enum struct CppAbi; @@ -207,12 +207,21 @@ namespace CppSharp void clearLibraryDirs(); }; - public value struct ParserDiagnostic + 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(); @@ -242,19 +251,23 @@ namespace CppSharp int get(); void set(int); } - - private: - CppSharp::Parser::ParserDiagnosticLevel __Level; - int __LineNumber; - int __ColumnNumber; }; - public value struct ParserResult + 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(); @@ -278,17 +291,11 @@ namespace CppSharp void set(CppSharp::Parser::AST::NativeLibrary^); } - CppSharp::Parser::ParserDiagnostic getDiagnostics(unsigned int i); + CppSharp::Parser::ParserDiagnostic^ getDiagnostics(unsigned int i); - void addDiagnostics(CppSharp::Parser::ParserDiagnostic s); + void addDiagnostics(CppSharp::Parser::ParserDiagnostic^ s); void clearDiagnostics(); - - private: - CppSharp::Parser::ParserResultKind __Kind; - CppSharp::Parser::AST::ASTContext^ __ASTContext; - CppSharp::Parser::AST::NativeLibrary^ __Library; - CppSharp::Parser::Parser^ __CodeParser; }; public ref class ClangParser : ICppInstance @@ -306,9 +313,9 @@ namespace CppSharp ClangParser(System::IntPtr native); ClangParser(); - static CppSharp::Parser::ParserResult ParseHeader(CppSharp::Parser::ParserOptions^ Opts); + static CppSharp::Parser::ParserResult^ ParseHeader(CppSharp::Parser::ParserOptions^ Opts); - static CppSharp::Parser::ParserResult ParseLibrary(CppSharp::Parser::ParserOptions^ Opts); + static CppSharp::Parser::ParserResult^ ParseLibrary(CppSharp::Parser::ParserOptions^ Opts); static CppSharp::Parser::ParserTargetInfo^ GetTargetInfo(CppSharp::Parser::ParserOptions^ Opts); }; diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppParser.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppParser.cs index b9b56ca1..ea22d7dc 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppParser.cs @@ -602,7 +602,7 @@ namespace CppSharp } } - public unsafe partial struct ParserDiagnostic + public unsafe partial class ParserDiagnostic : IDisposable { [StructLayout(LayoutKind.Explicit, Size = 36)] public partial struct Internal @@ -652,49 +652,60 @@ namespace CppSharp internal static extern void setMessage_0(global::System.IntPtr instance, global::System.IntPtr s); } + public global::System.IntPtr __Instance { get; protected set; } + + private readonly bool __ownsNativeInstance; + public static new ParserDiagnostic __CreateInstance(global::System.IntPtr native) { return new ParserDiagnostic((ParserDiagnostic.Internal*) native); } + private static ParserDiagnostic.Internal* __CopyValue(ParserDiagnostic.Internal native) + { + var ret = Marshal.AllocHGlobal(36); + CppSharp.Parser.ParserDiagnostic.Internal.cctor_1(ret, new global::System.IntPtr(&native)); + return (ParserDiagnostic.Internal*) ret; + } + internal ParserDiagnostic(ParserDiagnostic.Internal native) - : this(&native) + : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - private ParserDiagnostic(ParserDiagnostic.Internal* native, bool isInternalImpl = false) : this() + protected ParserDiagnostic(ParserDiagnostic.Internal* native, bool isInternalImpl = false) { - var __ptr = native; - Level = __ptr->Level; - LineNumber = __ptr->LineNumber; - ColumnNumber = __ptr->ColumnNumber; + __Instance = new global::System.IntPtr(native); } - internal Internal ToInternal() + public ParserDiagnostic() { - var __native = new CppSharp.Parser.ParserDiagnostic.Internal(); - var __ptr = &__native; - __native.Level = Level; - __native.LineNumber = LineNumber; - __native.ColumnNumber = ColumnNumber; - return __native; + __Instance = Marshal.AllocHGlobal(36); + __ownsNativeInstance = true; + Internal.ctor_0(__Instance); } - internal void FromInternal(Internal* native) + public void Dispose() { - var __ptr = native; - Level = __ptr->Level; - LineNumber = __ptr->LineNumber; - ColumnNumber = __ptr->ColumnNumber; + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + Internal.dtor_0(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string FileName { get { - var __fixedInstance = ToInternal(); - var __ret = Internal.getFileName_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + var __ret = Internal.getFileName_0(__Instance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -702,10 +713,8 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - var __fixedInstance = ToInternal(); - Internal.setFileName_0(new global::System.IntPtr(&__fixedInstance), arg0); + Internal.setFileName_0(__Instance, arg0); Marshal.FreeHGlobal(arg0); - FromInternal(&__fixedInstance); } } @@ -713,9 +722,7 @@ namespace CppSharp { get { - var __fixedInstance = ToInternal(); - var __ret = Internal.getMessage_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + var __ret = Internal.getMessage_0(__Instance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -723,36 +730,58 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - var __fixedInstance = ToInternal(); - Internal.setMessage_0(new global::System.IntPtr(&__fixedInstance), arg0); + Internal.setMessage_0(__Instance, arg0); Marshal.FreeHGlobal(arg0); - FromInternal(&__fixedInstance); } } public CppSharp.Parser.ParserDiagnosticLevel Level { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->Level; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->Level = value; + } } public int LineNumber { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->LineNumber; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->LineNumber = value; + } } public int ColumnNumber { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->ColumnNumber; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->ColumnNumber = value; + } } } - public unsafe partial struct ParserResult + public unsafe partial class ParserResult : IDisposable { [StructLayout(LayoutKind.Explicit, Size = 28)] public partial struct Internal @@ -805,103 +834,125 @@ namespace CppSharp internal static extern uint getDiagnosticsCount_0(global::System.IntPtr instance); } + public global::System.IntPtr __Instance { get; protected set; } + + private readonly bool __ownsNativeInstance; + public static new ParserResult __CreateInstance(global::System.IntPtr native) { return new ParserResult((ParserResult.Internal*) native); } + private static ParserResult.Internal* __CopyValue(ParserResult.Internal native) + { + var ret = Marshal.AllocHGlobal(28); + CppSharp.Parser.ParserResult.Internal.cctor_1(ret, new global::System.IntPtr(&native)); + return (ParserResult.Internal*) ret; + } + internal ParserResult(ParserResult.Internal native) - : this(&native) + : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - private ParserResult(ParserResult.Internal* native, bool isInternalImpl = false) : this() + protected ParserResult(ParserResult.Internal* native, bool isInternalImpl = false) { - var __ptr = native; - Kind = __ptr->Kind; - ASTContext = (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); - Library = (__ptr->Library == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ptr->Library); + __Instance = new global::System.IntPtr(native); } - internal Internal ToInternal() + public ParserResult() { - var __native = new CppSharp.Parser.ParserResult.Internal(); - var __ptr = &__native; - __native.Kind = Kind; - if (ASTContext != null) - { - __native.ASTContext = ASTContext == (CppSharp.Parser.AST.ASTContext) null ? global::System.IntPtr.Zero : ASTContext.__Instance; - } - if (Library != null) - { - __native.Library = Library == (CppSharp.Parser.AST.NativeLibrary) null ? global::System.IntPtr.Zero : Library.__Instance; - } - return __native; + __Instance = Marshal.AllocHGlobal(28); + __ownsNativeInstance = true; + Internal.ctor_0(__Instance); } - internal void FromInternal(Internal* native) + public void Dispose() { - var __ptr = native; - Kind = __ptr->Kind; - ASTContext = (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); - Library = (__ptr->Library == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ptr->Library); + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + Internal.dtor_0(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.ParserDiagnostic getDiagnostics(uint i) { var __ret = new CppSharp.Parser.ParserDiagnostic.Internal(); - var __fixedInstance = ToInternal(); - Internal.getDiagnostics_0(new IntPtr(&__ret), new global::System.IntPtr(&__fixedInstance), i); - FromInternal(&__fixedInstance); + Internal.getDiagnostics_0(new IntPtr(&__ret), __Instance, i); return new CppSharp.Parser.ParserDiagnostic(__ret); } public void addDiagnostics(CppSharp.Parser.ParserDiagnostic s) { - var __arg0 = s.ToInternal(); - var arg0 = new global::System.IntPtr(&__arg0); - var __fixedInstance = ToInternal(); - Internal.addDiagnostics_0(new global::System.IntPtr(&__fixedInstance), arg0); - FromInternal(&__fixedInstance); + var arg0 = s == (CppSharp.Parser.ParserDiagnostic) null ? global::System.IntPtr.Zero : s.__Instance; + Internal.addDiagnostics_0(__Instance, arg0); } public void clearDiagnostics() { - var __fixedInstance = ToInternal(); - Internal.clearDiagnostics_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + Internal.clearDiagnostics_0(__Instance); } public uint DiagnosticsCount { get { - var __fixedInstance = ToInternal(); - var __ret = Internal.getDiagnosticsCount_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + var __ret = Internal.getDiagnosticsCount_0(__Instance); return __ret; } } public CppSharp.Parser.ParserResultKind Kind { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->Kind; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->Kind = value; + } } public CppSharp.Parser.AST.ASTContext ASTContext { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->ASTContext = value == (CppSharp.Parser.AST.ASTContext) null ? global::System.IntPtr.Zero : value.__Instance; + } } public CppSharp.Parser.AST.NativeLibrary Library { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return (__ptr->Library == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ptr->Library); + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->Library = value == (CppSharp.Parser.AST.NativeLibrary) null ? global::System.IntPtr.Zero : value.__Instance; + } } } @@ -982,16 +1033,16 @@ namespace CppSharp { var arg0 = Opts == (CppSharp.Parser.ParserOptions) null ? global::System.IntPtr.Zero : Opts.__Instance; var __ret = Internal.ParseHeader_0(arg0); - if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); - return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : CppSharp.Parser.ParserResult.__CreateInstance(__ret); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } public static CppSharp.Parser.ParserResult ParseLibrary(CppSharp.Parser.ParserOptions Opts) { var arg0 = Opts == (CppSharp.Parser.ParserOptions) null ? global::System.IntPtr.Zero : Opts.__Instance; var __ret = Internal.ParseLibrary_0(arg0); - if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); - return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : CppSharp.Parser.ParserResult.__CreateInstance(__ret); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } public static CppSharp.Parser.ParserTargetInfo GetTargetInfo(CppSharp.Parser.ParserOptions Opts) diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs index ba46883d..4c0a910b 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs @@ -279,7 +279,9 @@ namespace CppSharp __Instance = Marshal.AllocHGlobal(8); __ownsNativeInstance = true; var arg0 = kind; - Internal.ctor_0(__Instance, arg0); + var __ret = Internal.ctor_0(__Instance, arg0); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ret); } public void Dispose() @@ -493,7 +495,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(8); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.QualifiedType.__CreateInstance(__ret); } public void Dispose() @@ -596,7 +600,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(12); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TagType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -693,7 +699,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.ArrayType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -834,7 +842,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(32); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -970,7 +980,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(20); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.PointerType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -1068,7 +1080,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(16); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.MemberPointerType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -1151,7 +1165,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(12); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TypedefType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -1237,7 +1253,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.AttributedType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -1341,7 +1359,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(32); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.DecayedType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -1470,7 +1490,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(20); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TemplateArgument.__CreateInstance(__ret); } public void Dispose() @@ -1631,7 +1653,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(28); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TemplateSpecializationType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -1772,7 +1796,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(28); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TemplateParameter.__CreateInstance(__ret); } public void Dispose() @@ -1905,7 +1931,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TemplateParameterType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -2033,7 +2061,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(16); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TemplateParameterSubstitutionType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -2119,7 +2149,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(16); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.InjectedClassNameType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -2214,7 +2246,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(8); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.DependentNameType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -2279,7 +2313,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(8); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.PackExpansionType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -2347,7 +2383,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(12); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.BuiltinType.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -2431,7 +2469,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(12); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.VTableComponent.__CreateInstance(__ret); } public void Dispose() @@ -2566,7 +2606,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(12); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.VTableLayout.__CreateInstance(__ret); } public void Dispose() @@ -2676,7 +2718,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(32); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.VFTableInfo.__CreateInstance(__ret); } public void Dispose() @@ -2848,7 +2892,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassLayout.__CreateInstance(__ret); } public void Dispose() @@ -3122,7 +3168,9 @@ namespace CppSharp __Instance = Marshal.AllocHGlobal(120); __ownsNativeInstance = true; var arg0 = kind; - Internal.ctor_0(__Instance, arg0); + var __ret = Internal.ctor_0(__Instance, arg0); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ret); } public void Dispose() @@ -3577,7 +3625,9 @@ namespace CppSharp __Instance = Marshal.AllocHGlobal(216); __ownsNativeInstance = true; var arg0 = kind; - Internal.ctor_0(__Instance, arg0); + var __ret = Internal.ctor_0(__Instance, arg0); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.DeclarationContext.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -3878,7 +3928,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(128); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TypedefDecl.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -4181,7 +4233,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(140); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Parameter.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -4420,7 +4474,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(208); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Function.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -4791,7 +4847,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(236); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Method.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -5169,7 +5227,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(152); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Enumeration.Item.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -5244,7 +5304,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(240); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Enumeration.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -5423,7 +5485,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(152); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Variable.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -5524,7 +5588,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(12); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.BaseClassSpecifier.__CreateInstance(__ret); } public void Dispose() @@ -5677,7 +5743,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(136); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Field.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -5816,7 +5884,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(120); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.AccessSpecifierDecl.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -6023,7 +6093,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(280); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -6404,7 +6476,9 @@ namespace CppSharp __Instance = Marshal.AllocHGlobal(136); __ownsNativeInstance = true; var arg0 = kind; - Internal.ctor_0(__Instance, arg0); + var __ret = Internal.ctor_0(__Instance, arg0); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Template.__CreateInstance(__ret); } public Template() @@ -6412,7 +6486,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(136); __ownsNativeInstance = true; - Internal.ctor_1(__Instance); + var __ret = Internal.ctor_1(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Template.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -6571,7 +6647,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(148); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassTemplate.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -6751,7 +6829,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(300); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -6941,7 +7021,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(300); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassTemplatePartialSpecialization.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -7058,7 +7140,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(148); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplate.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -7179,7 +7263,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplateSpecialization.__CreateInstance(__ret); } public void Dispose() @@ -7357,7 +7443,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(220); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Namespace.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -7469,7 +7557,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(124); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.PreprocessedEntity.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -7591,7 +7681,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(148); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.MacroDefinition.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -7718,7 +7810,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(152); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.MacroExpansion.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -7883,7 +7977,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(260); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TranslationUnit.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -8060,7 +8156,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(52); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ret); } public void Dispose() @@ -8239,7 +8337,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(12); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ret); } public void Dispose() @@ -8336,7 +8436,9 @@ namespace CppSharp __Instance = Marshal.AllocHGlobal(4); __ownsNativeInstance = true; var arg0 = kind; - Internal.ctor_0(__Instance, arg0); + var __ret = Internal.ctor_0(__Instance, arg0); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Comment.__CreateInstance(__ret); } public void Dispose() @@ -8418,7 +8520,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(4); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.FullComment.__CreateInstance(__ret); } protected override void Dispose(bool disposing) @@ -8509,7 +8613,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(56); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.RawComment.__CreateInstance(__ret); } public void Dispose() diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs index ec5bd156..51b53270 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs @@ -261,7 +261,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(140); __ownsNativeInstance = true; - Internal.ctor_0(__Instance); + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserOptions.__CreateInstance(__ret); } public void Dispose() @@ -602,7 +604,7 @@ namespace CppSharp } } - public unsafe partial struct ParserDiagnostic + public unsafe partial class ParserDiagnostic : IDisposable { [StructLayout(LayoutKind.Explicit, Size = 60)] public partial struct Internal @@ -652,49 +654,62 @@ namespace CppSharp internal static extern void setMessage_0(global::System.IntPtr instance, global::System.IntPtr s); } + public global::System.IntPtr __Instance { get; protected set; } + + private readonly bool __ownsNativeInstance; + public static new ParserDiagnostic __CreateInstance(global::System.IntPtr native) { return new ParserDiagnostic((ParserDiagnostic.Internal*) native); } + private static ParserDiagnostic.Internal* __CopyValue(ParserDiagnostic.Internal native) + { + var ret = Marshal.AllocHGlobal(60); + CppSharp.Parser.ParserDiagnostic.Internal.cctor_1(ret, new global::System.IntPtr(&native)); + return (ParserDiagnostic.Internal*) ret; + } + internal ParserDiagnostic(ParserDiagnostic.Internal native) - : this(&native) + : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - private ParserDiagnostic(ParserDiagnostic.Internal* native, bool isInternalImpl = false) : this() + protected ParserDiagnostic(ParserDiagnostic.Internal* native, bool isInternalImpl = false) { - var __ptr = native; - Level = __ptr->Level; - LineNumber = __ptr->LineNumber; - ColumnNumber = __ptr->ColumnNumber; + __Instance = new global::System.IntPtr(native); } - internal Internal ToInternal() + public ParserDiagnostic() { - var __native = new CppSharp.Parser.ParserDiagnostic.Internal(); - var __ptr = &__native; - __native.Level = Level; - __native.LineNumber = LineNumber; - __native.ColumnNumber = ColumnNumber; - return __native; + __Instance = Marshal.AllocHGlobal(60); + __ownsNativeInstance = true; + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserDiagnostic.__CreateInstance(__ret); } - internal void FromInternal(Internal* native) + public void Dispose() { - var __ptr = native; - Level = __ptr->Level; - LineNumber = __ptr->LineNumber; - ColumnNumber = __ptr->ColumnNumber; + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + Internal.dtor_0(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string FileName { get { - var __fixedInstance = ToInternal(); - var __ret = Internal.getFileName_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + var __ret = Internal.getFileName_0(__Instance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -702,10 +717,8 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - var __fixedInstance = ToInternal(); - Internal.setFileName_0(new global::System.IntPtr(&__fixedInstance), arg0); + Internal.setFileName_0(__Instance, arg0); Marshal.FreeHGlobal(arg0); - FromInternal(&__fixedInstance); } } @@ -713,9 +726,7 @@ namespace CppSharp { get { - var __fixedInstance = ToInternal(); - var __ret = Internal.getMessage_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + var __ret = Internal.getMessage_0(__Instance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -723,36 +734,58 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - var __fixedInstance = ToInternal(); - Internal.setMessage_0(new global::System.IntPtr(&__fixedInstance), arg0); + Internal.setMessage_0(__Instance, arg0); Marshal.FreeHGlobal(arg0); - FromInternal(&__fixedInstance); } } public CppSharp.Parser.ParserDiagnosticLevel Level { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->Level; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->Level = value; + } } public int LineNumber { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->LineNumber; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->LineNumber = value; + } } public int ColumnNumber { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->ColumnNumber; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->ColumnNumber = value; + } } } - public unsafe partial struct ParserResult + public unsafe partial class ParserResult : IDisposable { [StructLayout(LayoutKind.Explicit, Size = 28)] public partial struct Internal @@ -805,103 +838,127 @@ namespace CppSharp internal static extern uint getDiagnosticsCount_0(global::System.IntPtr instance); } + public global::System.IntPtr __Instance { get; protected set; } + + private readonly bool __ownsNativeInstance; + public static new ParserResult __CreateInstance(global::System.IntPtr native) { return new ParserResult((ParserResult.Internal*) native); } + private static ParserResult.Internal* __CopyValue(ParserResult.Internal native) + { + var ret = Marshal.AllocHGlobal(28); + CppSharp.Parser.ParserResult.Internal.cctor_1(ret, new global::System.IntPtr(&native)); + return (ParserResult.Internal*) ret; + } + internal ParserResult(ParserResult.Internal native) - : this(&native) + : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - private ParserResult(ParserResult.Internal* native, bool isInternalImpl = false) : this() + protected ParserResult(ParserResult.Internal* native, bool isInternalImpl = false) { - var __ptr = native; - Kind = __ptr->Kind; - ASTContext = (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); - Library = (__ptr->Library == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ptr->Library); + __Instance = new global::System.IntPtr(native); } - internal Internal ToInternal() + public ParserResult() { - var __native = new CppSharp.Parser.ParserResult.Internal(); - var __ptr = &__native; - __native.Kind = Kind; - if (ASTContext != null) - { - __native.ASTContext = ASTContext == (CppSharp.Parser.AST.ASTContext) null ? global::System.IntPtr.Zero : ASTContext.__Instance; - } - if (Library != null) - { - __native.Library = Library == (CppSharp.Parser.AST.NativeLibrary) null ? global::System.IntPtr.Zero : Library.__Instance; - } - return __native; + __Instance = Marshal.AllocHGlobal(28); + __ownsNativeInstance = true; + var __ret = Internal.ctor_0(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } - internal void FromInternal(Internal* native) + public void Dispose() { - var __ptr = native; - Kind = __ptr->Kind; - ASTContext = (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); - Library = (__ptr->Library == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ptr->Library); + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + Internal.dtor_0(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.ParserDiagnostic getDiagnostics(uint i) { var __ret = new CppSharp.Parser.ParserDiagnostic.Internal(); - var __fixedInstance = ToInternal(); - Internal.getDiagnostics_0(new global::System.IntPtr(&__fixedInstance), new IntPtr(&__ret), i); - FromInternal(&__fixedInstance); + Internal.getDiagnostics_0(__Instance, new IntPtr(&__ret), i); return new CppSharp.Parser.ParserDiagnostic(__ret); } public void addDiagnostics(CppSharp.Parser.ParserDiagnostic s) { - var __arg0 = s.ToInternal(); - var arg0 = new global::System.IntPtr(&__arg0); - var __fixedInstance = ToInternal(); - Internal.addDiagnostics_0(new global::System.IntPtr(&__fixedInstance), arg0); - FromInternal(&__fixedInstance); + var arg0 = s == (CppSharp.Parser.ParserDiagnostic) null ? global::System.IntPtr.Zero : s.__Instance; + Internal.addDiagnostics_0(__Instance, arg0); } public void clearDiagnostics() { - var __fixedInstance = ToInternal(); - Internal.clearDiagnostics_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + Internal.clearDiagnostics_0(__Instance); } public uint DiagnosticsCount { get { - var __fixedInstance = ToInternal(); - var __ret = Internal.getDiagnosticsCount_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + var __ret = Internal.getDiagnosticsCount_0(__Instance); return __ret; } } public CppSharp.Parser.ParserResultKind Kind { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->Kind; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->Kind = value; + } } public CppSharp.Parser.AST.ASTContext ASTContext { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->ASTContext = value == (CppSharp.Parser.AST.ASTContext) null ? global::System.IntPtr.Zero : value.__Instance; + } } public CppSharp.Parser.AST.NativeLibrary Library { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return (__ptr->Library == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ptr->Library); + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->Library = value == (CppSharp.Parser.AST.NativeLibrary) null ? global::System.IntPtr.Zero : value.__Instance; + } } } @@ -982,16 +1039,16 @@ namespace CppSharp { var arg0 = Opts == (CppSharp.Parser.ParserOptions) null ? global::System.IntPtr.Zero : Opts.__Instance; var __ret = Internal.ParseHeader_0(arg0); - if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); - return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : CppSharp.Parser.ParserResult.__CreateInstance(__ret); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } public static CppSharp.Parser.ParserResult ParseLibrary(CppSharp.Parser.ParserOptions Opts) { var arg0 = Opts == (CppSharp.Parser.ParserOptions) null ? global::System.IntPtr.Zero : Opts.__Instance; var __ret = Internal.ParseLibrary_0(arg0); - if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); - return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : CppSharp.Parser.ParserResult.__CreateInstance(__ret); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } public static CppSharp.Parser.ParserTargetInfo GetTargetInfo(CppSharp.Parser.ParserOptions Opts) diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Sources.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Sources.cs index c92c9973..3907703f 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Sources.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Sources.cs @@ -68,8 +68,10 @@ namespace CppSharp : this() { var __fixedInstance = ToInternal(); - Internal.ctor_1(new global::System.IntPtr(&__fixedInstance), ID); + var __ret = Internal.ctor_1(new global::System.IntPtr(&__fixedInstance), ID); FromInternal(&__fixedInstance); + if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.SourceLocation(); + return (__ret == IntPtr.Zero) ? new CppSharp.Parser.SourceLocation() : CppSharp.Parser.SourceLocation.__CreateInstance(__ret); } public uint ID diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs index cb6fc8f4..dc9f10f9 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs @@ -201,7 +201,9 @@ namespace CppSharp { __Instance = Marshal.AllocHGlobal(176); __ownsNativeInstance = true; - Internal.ctor_1(__Instance); + var __ret = Internal.ctor_1(__Instance); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); } public void Dispose() diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs index d698acec..91961b71 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs @@ -602,7 +602,7 @@ namespace CppSharp } } - public unsafe partial struct ParserDiagnostic + public unsafe partial class ParserDiagnostic : IDisposable { [StructLayout(LayoutKind.Explicit, Size = 32)] public partial struct Internal @@ -652,49 +652,60 @@ namespace CppSharp internal static extern void setMessage_0(global::System.IntPtr instance, global::System.IntPtr s); } + public global::System.IntPtr __Instance { get; protected set; } + + private readonly bool __ownsNativeInstance; + public static new ParserDiagnostic __CreateInstance(global::System.IntPtr native) { return new ParserDiagnostic((ParserDiagnostic.Internal*) native); } + private static ParserDiagnostic.Internal* __CopyValue(ParserDiagnostic.Internal native) + { + var ret = Marshal.AllocHGlobal(32); + CppSharp.Parser.ParserDiagnostic.Internal.cctor_1(ret, new global::System.IntPtr(&native)); + return (ParserDiagnostic.Internal*) ret; + } + internal ParserDiagnostic(ParserDiagnostic.Internal native) - : this(&native) + : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - private ParserDiagnostic(ParserDiagnostic.Internal* native, bool isInternalImpl = false) : this() + protected ParserDiagnostic(ParserDiagnostic.Internal* native, bool isInternalImpl = false) { - var __ptr = native; - Level = __ptr->Level; - LineNumber = __ptr->LineNumber; - ColumnNumber = __ptr->ColumnNumber; + __Instance = new global::System.IntPtr(native); } - internal Internal ToInternal() + public ParserDiagnostic() { - var __native = new CppSharp.Parser.ParserDiagnostic.Internal(); - var __ptr = &__native; - __native.Level = Level; - __native.LineNumber = LineNumber; - __native.ColumnNumber = ColumnNumber; - return __native; + __Instance = Marshal.AllocHGlobal(32); + __ownsNativeInstance = true; + Internal.ctor_0(__Instance); } - internal void FromInternal(Internal* native) + public void Dispose() { - var __ptr = native; - Level = __ptr->Level; - LineNumber = __ptr->LineNumber; - ColumnNumber = __ptr->ColumnNumber; + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + Internal.dtor_0(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string FileName { get { - var __fixedInstance = ToInternal(); - var __ret = Internal.getFileName_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + var __ret = Internal.getFileName_0(__Instance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -702,10 +713,8 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - var __fixedInstance = ToInternal(); - Internal.setFileName_0(new global::System.IntPtr(&__fixedInstance), arg0); + Internal.setFileName_0(__Instance, arg0); Marshal.FreeHGlobal(arg0); - FromInternal(&__fixedInstance); } } @@ -713,9 +722,7 @@ namespace CppSharp { get { - var __fixedInstance = ToInternal(); - var __ret = Internal.getMessage_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + var __ret = Internal.getMessage_0(__Instance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -723,36 +730,58 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - var __fixedInstance = ToInternal(); - Internal.setMessage_0(new global::System.IntPtr(&__fixedInstance), arg0); + Internal.setMessage_0(__Instance, arg0); Marshal.FreeHGlobal(arg0); - FromInternal(&__fixedInstance); } } public CppSharp.Parser.ParserDiagnosticLevel Level { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->Level; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->Level = value; + } } public int LineNumber { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->LineNumber; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->LineNumber = value; + } } public int ColumnNumber { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->ColumnNumber; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->ColumnNumber = value; + } } } - public unsafe partial struct ParserResult + public unsafe partial class ParserResult : IDisposable { [StructLayout(LayoutKind.Explicit, Size = 56)] public partial struct Internal @@ -805,103 +834,125 @@ namespace CppSharp internal static extern uint getDiagnosticsCount_0(global::System.IntPtr instance); } + public global::System.IntPtr __Instance { get; protected set; } + + private readonly bool __ownsNativeInstance; + public static new ParserResult __CreateInstance(global::System.IntPtr native) { return new ParserResult((ParserResult.Internal*) native); } + private static ParserResult.Internal* __CopyValue(ParserResult.Internal native) + { + var ret = Marshal.AllocHGlobal(56); + CppSharp.Parser.ParserResult.Internal.cctor_1(ret, new global::System.IntPtr(&native)); + return (ParserResult.Internal*) ret; + } + internal ParserResult(ParserResult.Internal native) - : this(&native) + : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - private ParserResult(ParserResult.Internal* native, bool isInternalImpl = false) : this() + protected ParserResult(ParserResult.Internal* native, bool isInternalImpl = false) { - var __ptr = native; - Kind = __ptr->Kind; - ASTContext = (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); - Library = (__ptr->Library == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ptr->Library); + __Instance = new global::System.IntPtr(native); } - internal Internal ToInternal() + public ParserResult() { - var __native = new CppSharp.Parser.ParserResult.Internal(); - var __ptr = &__native; - __native.Kind = Kind; - if (ASTContext != null) - { - __native.ASTContext = ASTContext == (CppSharp.Parser.AST.ASTContext) null ? global::System.IntPtr.Zero : ASTContext.__Instance; - } - if (Library != null) - { - __native.Library = Library == (CppSharp.Parser.AST.NativeLibrary) null ? global::System.IntPtr.Zero : Library.__Instance; - } - return __native; + __Instance = Marshal.AllocHGlobal(56); + __ownsNativeInstance = true; + Internal.ctor_0(__Instance); } - internal void FromInternal(Internal* native) + public void Dispose() { - var __ptr = native; - Kind = __ptr->Kind; - ASTContext = (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); - Library = (__ptr->Library == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ptr->Library); + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + Internal.dtor_0(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.ParserDiagnostic getDiagnostics(uint i) { var __ret = new CppSharp.Parser.ParserDiagnostic.Internal(); - var __fixedInstance = ToInternal(); - Internal.getDiagnostics_0(new IntPtr(&__ret), new global::System.IntPtr(&__fixedInstance), i); - FromInternal(&__fixedInstance); + Internal.getDiagnostics_0(new IntPtr(&__ret), __Instance, i); return new CppSharp.Parser.ParserDiagnostic(__ret); } public void addDiagnostics(CppSharp.Parser.ParserDiagnostic s) { - var __arg0 = s.ToInternal(); - var arg0 = new global::System.IntPtr(&__arg0); - var __fixedInstance = ToInternal(); - Internal.addDiagnostics_0(new global::System.IntPtr(&__fixedInstance), arg0); - FromInternal(&__fixedInstance); + var arg0 = s == (CppSharp.Parser.ParserDiagnostic) null ? global::System.IntPtr.Zero : s.__Instance; + Internal.addDiagnostics_0(__Instance, arg0); } public void clearDiagnostics() { - var __fixedInstance = ToInternal(); - Internal.clearDiagnostics_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + Internal.clearDiagnostics_0(__Instance); } public uint DiagnosticsCount { get { - var __fixedInstance = ToInternal(); - var __ret = Internal.getDiagnosticsCount_0(new global::System.IntPtr(&__fixedInstance)); - FromInternal(&__fixedInstance); + var __ret = Internal.getDiagnosticsCount_0(__Instance); return __ret; } } public CppSharp.Parser.ParserResultKind Kind { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return __ptr->Kind; + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->Kind = value; + } } public CppSharp.Parser.AST.ASTContext ASTContext { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->ASTContext = value == (CppSharp.Parser.AST.ASTContext) null ? global::System.IntPtr.Zero : value.__Instance; + } } public CppSharp.Parser.AST.NativeLibrary Library { - get; + get + { + var __ptr = (Internal*)__Instance.ToPointer(); + return (__ptr->Library == IntPtr.Zero) ? null : CppSharp.Parser.AST.NativeLibrary.__CreateInstance(__ptr->Library); + } - set; + set + { + var __ptr = (Internal*)__Instance.ToPointer(); + __ptr->Library = value == (CppSharp.Parser.AST.NativeLibrary) null ? global::System.IntPtr.Zero : value.__Instance; + } } } @@ -982,16 +1033,16 @@ namespace CppSharp { var arg0 = Opts == (CppSharp.Parser.ParserOptions) null ? global::System.IntPtr.Zero : Opts.__Instance; var __ret = Internal.ParseHeader_0(arg0); - if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); - return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : CppSharp.Parser.ParserResult.__CreateInstance(__ret); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } public static CppSharp.Parser.ParserResult ParseLibrary(CppSharp.Parser.ParserOptions Opts) { var arg0 = Opts == (CppSharp.Parser.ParserOptions) null ? global::System.IntPtr.Zero : Opts.__Instance; var __ret = Internal.ParseLibrary_0(arg0); - if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); - return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : CppSharp.Parser.ParserResult.__CreateInstance(__ret); + if (__ret == global::System.IntPtr.Zero) return null; + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } public static CppSharp.Parser.ParserTargetInfo GetTargetInfo(CppSharp.Parser.ParserOptions Opts) diff --git a/src/CppParser/Bindings/ParserGen.cs b/src/CppParser/Bindings/ParserGen.cs index 8c6dca42..46b7f7f2 100644 --- a/src/CppParser/Bindings/ParserGen.cs +++ b/src/CppParser/Bindings/ParserGen.cs @@ -126,9 +126,6 @@ namespace CppSharp public void Preprocess(Driver driver, ASTContext ctx) { - ctx.SetClassAsValueType("CppSharp::ParserDiagnostic"); - ctx.SetClassAsValueType("CppSharp::ParserResult"); - ctx.RenameNamespace("CppSharp::CppParser", "Parser"); }