diff --git a/src/CppParser/Bindings/CLI/CppParser.cpp b/src/CppParser/Bindings/CLI/CppParser.cpp index 413cebb3..db0c7801 100644 --- a/src/CppParser/Bindings/CLI/CppParser.cpp +++ b/src/CppParser/Bindings/CLI/CppParser.cpp @@ -291,166 +291,211 @@ void CppSharp::Parser::ParserOptions::LanguageVersion::set(CppSharp::Parser::Lan CppSharp::Parser::ParserDiagnostic::ParserDiagnostic(::CppSharp::CppParser::ParserDiagnostic* native) { - NativePtr = native; + __Level = (CppSharp::Parser::ParserDiagnosticLevel)native->Level; + __LineNumber = native->LineNumber; + __ColumnNumber = native->ColumnNumber; } 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(); + __Level = (CppSharp::Parser::ParserDiagnosticLevel)__native->Level; + __LineNumber = __native->LineNumber; + __ColumnNumber = __native->ColumnNumber; } System::String^ CppSharp::Parser::ParserDiagnostic::FileName::get() { - auto __ret = ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->getFileName(); + 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; 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(); - ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->setFileName(arg0); + _this0.setFileName(arg0); + __Level = (CppSharp::Parser::ParserDiagnosticLevel)_this0.Level; + __LineNumber = _this0.LineNumber; + __ColumnNumber = _this0.ColumnNumber; } System::String^ CppSharp::Parser::ParserDiagnostic::Message::get() { - auto __ret = ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->getMessage(); + 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; 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(); - ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->setMessage(arg0); + _this0.setMessage(arg0); + __Level = (CppSharp::Parser::ParserDiagnosticLevel)_this0.Level; + __LineNumber = _this0.LineNumber; + __ColumnNumber = _this0.ColumnNumber; } CppSharp::Parser::ParserDiagnosticLevel CppSharp::Parser::ParserDiagnostic::Level::get() { - return (CppSharp::Parser::ParserDiagnosticLevel)((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->Level; + return __Level; } void CppSharp::Parser::ParserDiagnostic::Level::set(CppSharp::Parser::ParserDiagnosticLevel value) { - ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->Level = (::CppSharp::CppParser::ParserDiagnosticLevel)value; + __Level = value; } int CppSharp::Parser::ParserDiagnostic::LineNumber::get() { - return ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->LineNumber; + return __LineNumber; } void CppSharp::Parser::ParserDiagnostic::LineNumber::set(int value) { - ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->LineNumber = value; + __LineNumber = value; } int CppSharp::Parser::ParserDiagnostic::ColumnNumber::get() { - return ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->ColumnNumber; + return __ColumnNumber; } void CppSharp::Parser::ParserDiagnostic::ColumnNumber::set(int value) { - ((::CppSharp::CppParser::ParserDiagnostic*)NativePtr)->ColumnNumber = value; + __ColumnNumber = value; } CppSharp::Parser::ParserResult::ParserResult(::CppSharp::CppParser::ParserResult* native) { - NativePtr = 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); } 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 (____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); + __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); } void CppSharp::Parser::ParserResult::clearDiagnostics() { - ((::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(); + 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); } unsigned int CppSharp::Parser::ParserResult::DiagnosticsCount::get() { - auto __ret = ((::CppSharp::CppParser::ParserResult*)NativePtr)->getDiagnosticsCount(); + 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); return __ret; } CppSharp::Parser::ParserResultKind CppSharp::Parser::ParserResult::Kind::get() { - return (CppSharp::Parser::ParserResultKind)((::CppSharp::CppParser::ParserResult*)NativePtr)->Kind; + return __Kind; } void CppSharp::Parser::ParserResult::Kind::set(CppSharp::Parser::ParserResultKind value) { - ((::CppSharp::CppParser::ParserResult*)NativePtr)->Kind = (::CppSharp::CppParser::ParserResultKind)value; + __Kind = value; } CppSharp::Parser::AST::ASTContext^ CppSharp::Parser::ParserResult::ASTContext::get() { - return (((::CppSharp::CppParser::ParserResult*)NativePtr)->ASTContext == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::ASTContext((::CppSharp::CppParser::AST::ASTContext*)((::CppSharp::CppParser::ParserResult*)NativePtr)->ASTContext); + return __ASTContext; } void CppSharp::Parser::ParserResult::ASTContext::set(CppSharp::Parser::AST::ASTContext^ value) { - ((::CppSharp::CppParser::ParserResult*)NativePtr)->ASTContext = (::CppSharp::CppParser::AST::ASTContext*)value->NativePtr; + __ASTContext = value; } CppSharp::Parser::AST::NativeLibrary^ CppSharp::Parser::ParserResult::Library::get() { - return (((::CppSharp::CppParser::ParserResult*)NativePtr)->Library == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::NativeLibrary((::CppSharp::CppParser::AST::NativeLibrary*)((::CppSharp::CppParser::ParserResult*)NativePtr)->Library); + return __Library; } void CppSharp::Parser::ParserResult::Library::set(CppSharp::Parser::AST::NativeLibrary^ value) { - ((::CppSharp::CppParser::ParserResult*)NativePtr)->Library = (::CppSharp::CppParser::AST::NativeLibrary*)value->NativePtr; + __Library = value; } CppSharp::Parser::ClangParser::ClangParser(::CppSharp::CppParser::ClangParser* native) @@ -464,20 +509,18 @@ 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); - if (__ret == nullptr) return nullptr; - return (__ret == nullptr) ? nullptr : gcnew CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret); + return 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); - if (__ret == nullptr) return nullptr; - return (__ret == nullptr) ? nullptr : gcnew CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret); + return 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 4f737172..b0d16fb0 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,21 +207,12 @@ namespace CppSharp void clearLibraryDirs(); }; - public ref class ParserDiagnostic : ICppInstance + public value struct ParserDiagnostic { 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(); @@ -251,23 +242,19 @@ namespace CppSharp int get(); void set(int); } + + private: + CppSharp::Parser::ParserDiagnosticLevel __Level; + int __LineNumber; + int __ColumnNumber; }; - public ref class ParserResult : ICppInstance + public value struct ParserResult { 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(); @@ -291,11 +278,17 @@ 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 @@ -313,9 +306,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/AST.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs index ab7be822..095830a3 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs @@ -247,31 +247,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Type(Type.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Type __CreateInstance(global::System.IntPtr native) { + return new Type((Type.Internal*) native); } - private static global::System.IntPtr __CopyValue(Type.Internal native) + private static Type.Internal* __CopyValue(Type.Internal native) { var ret = Marshal.AllocHGlobal(8); CppSharp.Parser.AST.Type.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Type.Internal*) ret; } internal Type(Type.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Type(global::System.IntPtr native, bool isInternalImpl = false) + protected Type(Type.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public Type(CppSharp.Parser.AST.TypeKind kind) { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } @@ -284,7 +288,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TypeKind Kind @@ -340,31 +347,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal TypeQualifiers(TypeQualifiers.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TypeQualifiers __CreateInstance(global::System.IntPtr native) { + return new TypeQualifiers((TypeQualifiers.Internal*) native); } - private static global::System.IntPtr __CopyValue(TypeQualifiers.Internal native) + private static TypeQualifiers.Internal* __CopyValue(TypeQualifiers.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(3); - *(TypeQualifiers.Internal*) ret = native; + TypeQualifiers.Internal* ret = (TypeQualifiers.Internal*) Marshal.AllocHGlobal(3); + *ret = native; return ret; } internal TypeQualifiers(TypeQualifiers.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TypeQualifiers(global::System.IntPtr native, bool isInternalImpl = false) + protected TypeQualifiers(TypeQualifiers.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public TypeQualifiers() { __Instance = Marshal.AllocHGlobal(3); + __ownsNativeInstance = true; } public void Dispose() @@ -375,7 +386,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public bool IsConst @@ -448,31 +462,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal QualifiedType(QualifiedType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new QualifiedType __CreateInstance(global::System.IntPtr native) { + return new QualifiedType((QualifiedType.Internal*) native); } - private static global::System.IntPtr __CopyValue(QualifiedType.Internal native) + private static QualifiedType.Internal* __CopyValue(QualifiedType.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(8); - *(QualifiedType.Internal*) ret = native; + QualifiedType.Internal* ret = (QualifiedType.Internal*) Marshal.AllocHGlobal(8); + *ret = native; return ret; } internal QualifiedType(QualifiedType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public QualifiedType(global::System.IntPtr native, bool isInternalImpl = false) + protected QualifiedType(QualifiedType.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public QualifiedType() { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -484,7 +502,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.Type Type @@ -492,7 +513,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Type == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Type); + return (__ptr->Type == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Type); } set @@ -543,37 +564,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal TagType(TagType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TagType __CreateInstance(global::System.IntPtr native) { + return new TagType((TagType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TagType.Internal native) + private static TagType.Internal* __CopyValue(TagType.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.TagType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TagType.Internal*) ret; } internal TagType(TagType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TagType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TagType(TagType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TagType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -582,7 +611,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Declaration); } set @@ -632,37 +661,45 @@ namespace CppSharp Incomplete = 3 } - internal ArrayType(ArrayType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ArrayType __CreateInstance(global::System.IntPtr native) { + return new ArrayType((ArrayType.Internal*) native); } - private static global::System.IntPtr __CopyValue(ArrayType.Internal native) + private static ArrayType.Internal* __CopyValue(ArrayType.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.ArrayType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ArrayType.Internal*) ret; } internal ArrayType(ArrayType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ArrayType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ArrayType(ArrayType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public ArrayType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -765,37 +802,45 @@ namespace CppSharp internal static extern uint getParametersCount_0(global::System.IntPtr instance); } - internal FunctionType(FunctionType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FunctionType __CreateInstance(global::System.IntPtr native) { + return new FunctionType((FunctionType.Internal*) native); } - private static global::System.IntPtr __CopyValue(FunctionType.Internal native) + private static FunctionType.Internal* __CopyValue(FunctionType.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.FunctionType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (FunctionType.Internal*) ret; } internal FunctionType(FunctionType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FunctionType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected FunctionType(FunctionType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public FunctionType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(32); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -803,7 +848,7 @@ namespace CppSharp { var __ret = Internal.getParameters_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Parameter(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Parameter.__CreateInstance(__ret); } public void addParameters(CppSharp.Parser.AST.Parameter s) @@ -893,37 +938,45 @@ namespace CppSharp RVReference = 3 } - internal PointerType(PointerType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new PointerType __CreateInstance(global::System.IntPtr native) { + return new PointerType((PointerType.Internal*) native); } - private static global::System.IntPtr __CopyValue(PointerType.Internal native) + private static PointerType.Internal* __CopyValue(PointerType.Internal native) { var ret = Marshal.AllocHGlobal(20); CppSharp.Parser.AST.PointerType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (PointerType.Internal*) ret; } internal PointerType(PointerType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public PointerType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected PointerType(PointerType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public PointerType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(20); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -983,37 +1036,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal MemberPointerType(MemberPointerType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new MemberPointerType __CreateInstance(global::System.IntPtr native) { + return new MemberPointerType((MemberPointerType.Internal*) native); } - private static global::System.IntPtr __CopyValue(MemberPointerType.Internal native) + private static MemberPointerType.Internal* __CopyValue(MemberPointerType.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.MemberPointerType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (MemberPointerType.Internal*) ret; } internal MemberPointerType(MemberPointerType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public MemberPointerType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected MemberPointerType(MemberPointerType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public MemberPointerType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1058,37 +1119,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal TypedefType(TypedefType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TypedefType __CreateInstance(global::System.IntPtr native) { + return new TypedefType((TypedefType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TypedefType.Internal native) + private static TypedefType.Internal* __CopyValue(TypedefType.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.TypedefType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TypedefType.Internal*) ret; } internal TypedefType(TypedefType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TypedefType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TypedefType(TypedefType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TypedefType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1097,7 +1166,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TypedefDecl(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.TypedefDecl.__CreateInstance(__ptr->Declaration); } set @@ -1136,37 +1205,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal AttributedType(AttributedType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new AttributedType __CreateInstance(global::System.IntPtr native) { + return new AttributedType((AttributedType.Internal*) native); } - private static global::System.IntPtr __CopyValue(AttributedType.Internal native) + private static AttributedType.Internal* __CopyValue(AttributedType.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.AttributedType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (AttributedType.Internal*) ret; } internal AttributedType(AttributedType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public AttributedType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected AttributedType(AttributedType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public AttributedType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1232,37 +1309,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal DecayedType(DecayedType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new DecayedType __CreateInstance(global::System.IntPtr native) { + return new DecayedType((DecayedType.Internal*) native); } - private static global::System.IntPtr __CopyValue(DecayedType.Internal native) + private static DecayedType.Internal* __CopyValue(DecayedType.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.DecayedType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (DecayedType.Internal*) ret; } internal DecayedType(DecayedType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public DecayedType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected DecayedType(DecayedType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public DecayedType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(32); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1354,31 +1439,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal TemplateArgument(TemplateArgument.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateArgument __CreateInstance(global::System.IntPtr native) { + return new TemplateArgument((TemplateArgument.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateArgument.Internal native) + private static TemplateArgument.Internal* __CopyValue(TemplateArgument.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(20); - *(TemplateArgument.Internal*) ret = native; + TemplateArgument.Internal* ret = (TemplateArgument.Internal*) Marshal.AllocHGlobal(20); + *ret = native; return ret; } internal TemplateArgument(TemplateArgument.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateArgument(global::System.IntPtr native, bool isInternalImpl = false) + protected TemplateArgument(TemplateArgument.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public TemplateArgument() { __Instance = Marshal.AllocHGlobal(20); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -1390,7 +1479,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TemplateArgument.ArgumentKind Kind @@ -1428,7 +1520,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Declaration); } set @@ -1507,37 +1599,45 @@ namespace CppSharp internal static extern uint getArgumentsCount_0(global::System.IntPtr instance); } - internal TemplateSpecializationType(TemplateSpecializationType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateSpecializationType __CreateInstance(global::System.IntPtr native) { + return new TemplateSpecializationType((TemplateSpecializationType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateSpecializationType.Internal native) + private static TemplateSpecializationType.Internal* __CopyValue(TemplateSpecializationType.Internal native) { var ret = Marshal.AllocHGlobal(28); CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateSpecializationType.Internal*) ret; } internal TemplateSpecializationType(TemplateSpecializationType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateSpecializationType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TemplateSpecializationType(TemplateSpecializationType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TemplateSpecializationType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(28); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1573,7 +1673,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Template == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Template(__ptr->Template); + return (__ptr->Template == IntPtr.Zero) ? null : CppSharp.Parser.AST.Template.__CreateInstance(__ptr->Template); } set @@ -1588,7 +1688,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Desugared == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Desugared); + return (__ptr->Desugared == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Desugared); } set @@ -1641,31 +1741,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal TemplateParameter(TemplateParameter.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateParameter __CreateInstance(global::System.IntPtr native) { + return new TemplateParameter((TemplateParameter.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateParameter.Internal native) + private static TemplateParameter.Internal* __CopyValue(TemplateParameter.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateParameter.Internal*) ret; } internal TemplateParameter(TemplateParameter.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateParameter(global::System.IntPtr native, bool isInternalImpl = false) + protected TemplateParameter(TemplateParameter.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public TemplateParameter() { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -1678,7 +1782,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public static bool operator !=(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param) @@ -1766,37 +1873,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal TemplateParameterType(TemplateParameterType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateParameterType __CreateInstance(global::System.IntPtr native) { + return new TemplateParameterType((TemplateParameterType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateParameterType.Internal native) + private static TemplateParameterType.Internal* __CopyValue(TemplateParameterType.Internal native) { var ret = Marshal.AllocHGlobal(36); CppSharp.Parser.AST.TemplateParameterType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateParameterType.Internal*) ret; } internal TemplateParameterType(TemplateParameterType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateParameterType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TemplateParameterType(TemplateParameterType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TemplateParameterType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(36); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1886,37 +2001,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal TemplateParameterSubstitutionType(TemplateParameterSubstitutionType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateParameterSubstitutionType __CreateInstance(global::System.IntPtr native) { + return new TemplateParameterSubstitutionType((TemplateParameterSubstitutionType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateParameterSubstitutionType.Internal native) + private static TemplateParameterSubstitutionType.Internal* __CopyValue(TemplateParameterSubstitutionType.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.TemplateParameterSubstitutionType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateParameterSubstitutionType.Internal*) ret; } internal TemplateParameterSubstitutionType(TemplateParameterSubstitutionType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateParameterSubstitutionType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TemplateParameterSubstitutionType(TemplateParameterSubstitutionType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TemplateParameterSubstitutionType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1964,37 +2087,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal InjectedClassNameType(InjectedClassNameType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new InjectedClassNameType __CreateInstance(global::System.IntPtr native) { + return new InjectedClassNameType((InjectedClassNameType.Internal*) native); } - private static global::System.IntPtr __CopyValue(InjectedClassNameType.Internal native) + private static InjectedClassNameType.Internal* __CopyValue(InjectedClassNameType.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.InjectedClassNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (InjectedClassNameType.Internal*) ret; } internal InjectedClassNameType(InjectedClassNameType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public InjectedClassNameType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected InjectedClassNameType(InjectedClassNameType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public InjectedClassNameType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -2003,7 +2134,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->TemplateSpecialization == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TemplateSpecializationType(__ptr->TemplateSpecialization); + return (__ptr->TemplateSpecialization == IntPtr.Zero) ? null : CppSharp.Parser.AST.TemplateSpecializationType.__CreateInstance(__ptr->TemplateSpecialization); } set @@ -2018,7 +2149,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Class == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Class(__ptr->Class); + return (__ptr->Class == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ptr->Class); } set @@ -2051,37 +2182,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal DependentNameType(DependentNameType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new DependentNameType __CreateInstance(global::System.IntPtr native) { + return new DependentNameType((DependentNameType.Internal*) native); } - private static global::System.IntPtr __CopyValue(DependentNameType.Internal native) + private static DependentNameType.Internal* __CopyValue(DependentNameType.Internal native) { var ret = Marshal.AllocHGlobal(8); CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (DependentNameType.Internal*) ret; } internal DependentNameType(DependentNameType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public DependentNameType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected DependentNameType(DependentNameType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public DependentNameType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -2108,37 +2247,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal PackExpansionType(PackExpansionType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new PackExpansionType __CreateInstance(global::System.IntPtr native) { + return new PackExpansionType((PackExpansionType.Internal*) native); } - private static global::System.IntPtr __CopyValue(PackExpansionType.Internal native) + private static PackExpansionType.Internal* __CopyValue(PackExpansionType.Internal native) { var ret = Marshal.AllocHGlobal(8); CppSharp.Parser.AST.PackExpansionType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (PackExpansionType.Internal*) ret; } internal PackExpansionType(PackExpansionType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public PackExpansionType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected PackExpansionType(PackExpansionType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public PackExpansionType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -2168,37 +2315,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal BuiltinType(BuiltinType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new BuiltinType __CreateInstance(global::System.IntPtr native) { + return new BuiltinType((BuiltinType.Internal*) native); } - private static global::System.IntPtr __CopyValue(BuiltinType.Internal native) + private static BuiltinType.Internal* __CopyValue(BuiltinType.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.BuiltinType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (BuiltinType.Internal*) ret; } internal BuiltinType(BuiltinType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public BuiltinType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected BuiltinType(BuiltinType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public BuiltinType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -2245,31 +2400,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal VTableComponent(VTableComponent.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new VTableComponent __CreateInstance(global::System.IntPtr native) { + return new VTableComponent((VTableComponent.Internal*) native); } - private static global::System.IntPtr __CopyValue(VTableComponent.Internal native) + private static VTableComponent.Internal* __CopyValue(VTableComponent.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(12); - *(VTableComponent.Internal*) ret = native; + VTableComponent.Internal* ret = (VTableComponent.Internal*) Marshal.AllocHGlobal(12); + *ret = native; return ret; } internal VTableComponent(VTableComponent.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public VTableComponent(global::System.IntPtr native, bool isInternalImpl = false) + protected VTableComponent(VTableComponent.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public VTableComponent() { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2281,7 +2440,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.VTableComponentKind Kind @@ -2319,7 +2481,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Declaration); } set @@ -2373,31 +2535,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal VTableLayout(VTableLayout.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new VTableLayout __CreateInstance(global::System.IntPtr native) { + return new VTableLayout((VTableLayout.Internal*) native); } - private static global::System.IntPtr __CopyValue(VTableLayout.Internal native) + private static VTableLayout.Internal* __CopyValue(VTableLayout.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.VTableLayout.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (VTableLayout.Internal*) ret; } internal VTableLayout(VTableLayout.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public VTableLayout(global::System.IntPtr native, bool isInternalImpl = false) + protected VTableLayout(VTableLayout.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public VTableLayout() { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2410,7 +2576,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.VTableComponent getComponents(uint i) @@ -2476,31 +2645,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal VFTableInfo(VFTableInfo.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new VFTableInfo __CreateInstance(global::System.IntPtr native) { + return new VFTableInfo((VFTableInfo.Internal*) native); } - private static global::System.IntPtr __CopyValue(VFTableInfo.Internal native) + private static VFTableInfo.Internal* __CopyValue(VFTableInfo.Internal native) { var ret = Marshal.AllocHGlobal(28); CppSharp.Parser.AST.VFTableInfo.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (VFTableInfo.Internal*) ret; } internal VFTableInfo(VFTableInfo.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public VFTableInfo(global::System.IntPtr native, bool isInternalImpl = false) + protected VFTableInfo(VFTableInfo.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public VFTableInfo() { __Instance = Marshal.AllocHGlobal(28); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2513,7 +2686,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public ulong VBTableIndex @@ -2641,31 +2817,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ClassLayout(ClassLayout.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassLayout __CreateInstance(global::System.IntPtr native) { + return new ClassLayout((ClassLayout.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassLayout.Internal native) + private static ClassLayout.Internal* __CopyValue(ClassLayout.Internal native) { var ret = Marshal.AllocHGlobal(48); CppSharp.Parser.AST.ClassLayout.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassLayout.Internal*) ret; } internal ClassLayout(ClassLayout.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassLayout(global::System.IntPtr native, bool isInternalImpl = false) + protected ClassLayout(ClassLayout.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ClassLayout() { __Instance = Marshal.AllocHGlobal(48); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2678,7 +2858,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.VFTableInfo getVFTables(uint i) @@ -2847,7 +3030,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2907,31 +3090,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Declaration(Declaration.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Declaration __CreateInstance(global::System.IntPtr native) { + return new Declaration((Declaration.Internal*) native); } - private static global::System.IntPtr __CopyValue(Declaration.Internal native) + private static Declaration.Internal* __CopyValue(Declaration.Internal native) { var ret = Marshal.AllocHGlobal(84); CppSharp.Parser.AST.Declaration.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Declaration.Internal*) ret; } internal Declaration(Declaration.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Declaration(global::System.IntPtr native, bool isInternalImpl = false) + protected Declaration(Declaration.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public Declaration(CppSharp.Parser.AST.DeclarationKind kind) { __Instance = Marshal.AllocHGlobal(84); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } @@ -2945,14 +3132,17 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.PreprocessedEntity getPreprocessedEntities(uint i) { var __ret = Internal.getPreprocessedEntities_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.PreprocessedEntity(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.PreprocessedEntity.__CreateInstance(__ret); } public void addPreprocessedEntities(CppSharp.Parser.AST.PreprocessedEntity s) @@ -3044,7 +3234,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->_Namespace == IntPtr.Zero) ? null : new CppSharp.Parser.AST.DeclarationContext(__ptr->_Namespace); + return (__ptr->_Namespace == IntPtr.Zero) ? null : CppSharp.Parser.AST.DeclarationContext.__CreateInstance(__ptr->_Namespace); } set @@ -3074,7 +3264,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Comment == IntPtr.Zero) ? null : new CppSharp.Parser.AST.RawComment(__ptr->Comment); + return (__ptr->Comment == IntPtr.Zero) ? null : CppSharp.Parser.AST.RawComment.__CreateInstance(__ptr->Comment); } set @@ -3119,7 +3309,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->CompleteDeclaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->CompleteDeclaration); + return (__ptr->CompleteDeclaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->CompleteDeclaration); } set @@ -3144,7 +3334,7 @@ namespace CppSharp } } - public void* OriginalPtr + public global::System.IntPtr OriginalPtr { get { @@ -3193,10 +3383,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; - - [FieldOffset(168)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(180)] public bool IsAnonymous; @@ -3357,38 +3544,46 @@ namespace CppSharp internal static extern uint getVariablesCount_0(global::System.IntPtr instance); } - internal DeclarationContext(DeclarationContext.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new DeclarationContext __CreateInstance(global::System.IntPtr native) { + return new DeclarationContext((DeclarationContext.Internal*) native); } - private static global::System.IntPtr __CopyValue(DeclarationContext.Internal native) + private static DeclarationContext.Internal* __CopyValue(DeclarationContext.Internal native) { var ret = Marshal.AllocHGlobal(184); CppSharp.Parser.AST.DeclarationContext.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (DeclarationContext.Internal*) ret; } internal DeclarationContext(DeclarationContext.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public DeclarationContext(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected DeclarationContext(DeclarationContext.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public DeclarationContext(CppSharp.Parser.AST.DeclarationKind kind) - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(184); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -3396,7 +3591,7 @@ namespace CppSharp { var __ret = Internal.getNamespaces_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Namespace(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Namespace.__CreateInstance(__ret); } public void addNamespaces(CppSharp.Parser.AST.Namespace s) @@ -3414,7 +3609,7 @@ namespace CppSharp { var __ret = Internal.getEnums_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Enumeration(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Enumeration.__CreateInstance(__ret); } public void addEnums(CppSharp.Parser.AST.Enumeration s) @@ -3432,7 +3627,7 @@ namespace CppSharp { var __ret = Internal.getFunctions_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Function(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Function.__CreateInstance(__ret); } public void addFunctions(CppSharp.Parser.AST.Function s) @@ -3450,7 +3645,7 @@ namespace CppSharp { var __ret = Internal.getClasses_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Class(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ret); } public void addClasses(CppSharp.Parser.AST.Class s) @@ -3468,7 +3663,7 @@ namespace CppSharp { var __ret = Internal.getTemplates_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Template(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Template.__CreateInstance(__ret); } public void addTemplates(CppSharp.Parser.AST.Template s) @@ -3486,7 +3681,7 @@ namespace CppSharp { var __ret = Internal.getTypedefs_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TypedefDecl(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TypedefDecl.__CreateInstance(__ret); } public void addTypedefs(CppSharp.Parser.AST.TypedefDecl s) @@ -3504,7 +3699,7 @@ namespace CppSharp { var __ret = Internal.getVariables_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Variable(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Variable.__CreateInstance(__ret); } public void addVariables(CppSharp.Parser.AST.Variable s) @@ -3630,7 +3825,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -3651,37 +3846,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal TypedefDecl(TypedefDecl.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TypedefDecl __CreateInstance(global::System.IntPtr native) { + return new TypedefDecl((TypedefDecl.Internal*) native); } - private static global::System.IntPtr __CopyValue(TypedefDecl.Internal native) + private static TypedefDecl.Internal* __CopyValue(TypedefDecl.Internal native) { var ret = Marshal.AllocHGlobal(92); CppSharp.Parser.AST.TypedefDecl.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TypedefDecl.Internal*) ret; } internal TypedefDecl(TypedefDecl.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TypedefDecl(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TypedefDecl(TypedefDecl.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public TypedefDecl() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(92); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -3735,26 +3938,29 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Statement(Statement.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Statement __CreateInstance(global::System.IntPtr native) { + return new Statement((Statement.Internal*) native); } - private static global::System.IntPtr __CopyValue(Statement.Internal native) + private static Statement.Internal* __CopyValue(Statement.Internal native) { var ret = Marshal.AllocHGlobal(20); CppSharp.Parser.AST.Statement.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Statement.Internal*) ret; } internal Statement(Statement.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Statement(global::System.IntPtr native, bool isInternalImpl = false) + protected Statement(Statement.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public void Dispose() @@ -3766,7 +3972,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string String @@ -3806,7 +4015,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Decl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Decl); + return (__ptr->Decl == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Decl); } set @@ -3839,30 +4048,37 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Expression(Expression.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Expression __CreateInstance(global::System.IntPtr native) { + return new Expression((Expression.Internal*) native); } - private static global::System.IntPtr __CopyValue(Expression.Internal native) + private static Expression.Internal* __CopyValue(Expression.Internal native) { var ret = Marshal.AllocHGlobal(20); CppSharp.Parser.AST.Expression.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Expression.Internal*) ret; } internal Expression(Expression.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Expression(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Expression(Expression.Internal* native, bool isInternalImpl = false) + : base((Statement.Internal*) native) { } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -3900,7 +4116,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -3933,37 +4149,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Parameter(Parameter.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Parameter __CreateInstance(global::System.IntPtr native) { + return new Parameter((Parameter.Internal*) native); } - private static global::System.IntPtr __CopyValue(Parameter.Internal native) + private static Parameter.Internal* __CopyValue(Parameter.Internal native) { var ret = Marshal.AllocHGlobal(104); CppSharp.Parser.AST.Parameter.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Parameter.Internal*) ret; } internal Parameter(Parameter.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Parameter(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Parameter(Parameter.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Parameter() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4032,7 +4256,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->DefaultArgument == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Expression(__ptr->DefaultArgument); + return (__ptr->DefaultArgument == IntPtr.Zero) ? null : CppSharp.Parser.AST.Expression.__CreateInstance(__ptr->DefaultArgument); } set @@ -4076,7 +4300,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public CppSharp.Parser.AST.QualifiedType.Internal ReturnType; @@ -4161,37 +4385,45 @@ namespace CppSharp internal static extern uint getParametersCount_0(global::System.IntPtr instance); } - internal Function(Function.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Function __CreateInstance(global::System.IntPtr native) { + return new Function((Function.Internal*) native); } - private static global::System.IntPtr __CopyValue(Function.Internal native) + private static Function.Internal* __CopyValue(Function.Internal native) { var ret = Marshal.AllocHGlobal(148); CppSharp.Parser.AST.Function.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Function.Internal*) ret; } internal Function(Function.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Function(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Function(Function.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Function() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(148); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4199,7 +4431,7 @@ namespace CppSharp { var __ret = Internal.getParameters_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Parameter(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Parameter.__CreateInstance(__ret); } public void addParameters(CppSharp.Parser.AST.Parameter s) @@ -4381,7 +4613,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->SpecializationInfo == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FunctionTemplateSpecialization(__ptr->SpecializationInfo); + return (__ptr->SpecializationInfo == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplateSpecialization.__CreateInstance(__ptr->SpecializationInfo); } set @@ -4425,7 +4657,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public CppSharp.Parser.AST.QualifiedType.Internal ReturnType; @@ -4506,37 +4738,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Method(Method.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Method __CreateInstance(global::System.IntPtr native) { + return new Method((Method.Internal*) native); } - private static global::System.IntPtr __CopyValue(Method.Internal native) + private static Method.Internal* __CopyValue(Method.Internal native) { var ret = Marshal.AllocHGlobal(176); CppSharp.Parser.AST.Method.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Method.Internal*) ret; } internal Method(Method.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Method(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Method(Method.Internal* native, bool isInternalImpl = false) + : base((Function.Internal*) native) { } public Method() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(176); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4545,7 +4785,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->AccessDecl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.AccessSpecifierDecl(__ptr->AccessDecl); + return (__ptr->AccessDecl == IntPtr.Zero) ? null : CppSharp.Parser.AST.AccessSpecifierDecl.__CreateInstance(__ptr->AccessDecl); } set @@ -4754,10 +4994,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; - - [FieldOffset(168)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(180)] public bool IsAnonymous; @@ -4848,7 +5085,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(96)] public ulong Value; @@ -4879,37 +5116,45 @@ namespace CppSharp internal static extern void setExpression_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal Item(Item.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Item __CreateInstance(global::System.IntPtr native) { + return new Item((Item.Internal*) native); } - private static global::System.IntPtr __CopyValue(Item.Internal native) + private static Item.Internal* __CopyValue(Item.Internal native) { var ret = Marshal.AllocHGlobal(104); CppSharp.Parser.AST.Enumeration.Item.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Item.Internal*) ret; } internal Item(Item.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Item(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Item(Item.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Item() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4946,37 +5191,45 @@ namespace CppSharp } } - internal Enumeration(Enumeration.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Enumeration __CreateInstance(global::System.IntPtr native) { + return new Enumeration((Enumeration.Internal*) native); } - private static global::System.IntPtr __CopyValue(Enumeration.Internal native) + private static Enumeration.Internal* __CopyValue(Enumeration.Internal native) { var ret = Marshal.AllocHGlobal(208); CppSharp.Parser.AST.Enumeration.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Enumeration.Internal*) ret; } internal Enumeration(Enumeration.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Enumeration(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Enumeration(Enumeration.Internal* native, bool isInternalImpl = false) + : base((DeclarationContext.Internal*) native) { } public Enumeration() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(208); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5027,7 +5280,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Type == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Type); + return (__ptr->Type == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Type); } set @@ -5042,7 +5295,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->BuiltinType == IntPtr.Zero) ? null : new CppSharp.Parser.AST.BuiltinType(__ptr->BuiltinType); + return (__ptr->BuiltinType == IntPtr.Zero) ? null : CppSharp.Parser.AST.BuiltinType.__CreateInstance(__ptr->BuiltinType); } set @@ -5086,7 +5339,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(96)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -5117,37 +5370,45 @@ namespace CppSharp internal static extern void setMangled_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal Variable(Variable.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Variable __CreateInstance(global::System.IntPtr native) { + return new Variable((Variable.Internal*) native); } - private static global::System.IntPtr __CopyValue(Variable.Internal native) + private static Variable.Internal* __CopyValue(Variable.Internal native) { var ret = Marshal.AllocHGlobal(104); CppSharp.Parser.AST.Variable.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Variable.Internal*) ret; } internal Variable(Variable.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Variable(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Variable(Variable.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Variable() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5211,31 +5472,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal BaseClassSpecifier(BaseClassSpecifier.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new BaseClassSpecifier __CreateInstance(global::System.IntPtr native) { + return new BaseClassSpecifier((BaseClassSpecifier.Internal*) native); } - private static global::System.IntPtr __CopyValue(BaseClassSpecifier.Internal native) + private static BaseClassSpecifier.Internal* __CopyValue(BaseClassSpecifier.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(12); - *(BaseClassSpecifier.Internal*) ret = native; + BaseClassSpecifier.Internal* ret = (BaseClassSpecifier.Internal*) Marshal.AllocHGlobal(12); + *ret = native; return ret; } internal BaseClassSpecifier(BaseClassSpecifier.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public BaseClassSpecifier(global::System.IntPtr native, bool isInternalImpl = false) + protected BaseClassSpecifier(BaseClassSpecifier.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public BaseClassSpecifier() { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -5247,7 +5512,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.AccessSpecifier Access @@ -5285,7 +5553,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Type == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Type); + return (__ptr->Type == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Type); } set @@ -5329,7 +5597,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -5356,37 +5624,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Field(Field.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Field __CreateInstance(global::System.IntPtr native) { + return new Field((Field.Internal*) native); } - private static global::System.IntPtr __CopyValue(Field.Internal native) + private static Field.Internal* __CopyValue(Field.Internal native) { var ret = Marshal.AllocHGlobal(100); CppSharp.Parser.AST.Field.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Field.Internal*) ret; } internal Field(Field.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Field(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Field(Field.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Field() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(100); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5425,7 +5701,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Class == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Class(__ptr->Class); + return (__ptr->Class == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ptr->Class); } set @@ -5469,7 +5745,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -5487,37 +5763,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal AccessSpecifierDecl(AccessSpecifierDecl.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new AccessSpecifierDecl __CreateInstance(global::System.IntPtr native) { + return new AccessSpecifierDecl((AccessSpecifierDecl.Internal*) native); } - private static global::System.IntPtr __CopyValue(AccessSpecifierDecl.Internal native) + private static AccessSpecifierDecl.Internal* __CopyValue(AccessSpecifierDecl.Internal native) { var ret = Marshal.AllocHGlobal(84); CppSharp.Parser.AST.AccessSpecifierDecl.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (AccessSpecifierDecl.Internal*) ret; } internal AccessSpecifierDecl(AccessSpecifierDecl.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public AccessSpecifierDecl(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected AccessSpecifierDecl(AccessSpecifierDecl.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public AccessSpecifierDecl() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(84); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -5555,10 +5839,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; - - [FieldOffset(168)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(180)] public bool IsAnonymous; @@ -5689,37 +5970,45 @@ namespace CppSharp internal static extern uint getSpecifiersCount_0(global::System.IntPtr instance); } - internal Class(Class.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Class __CreateInstance(global::System.IntPtr native) { + return new Class((Class.Internal*) native); } - private static global::System.IntPtr __CopyValue(Class.Internal native) + private static Class.Internal* __CopyValue(Class.Internal native) { var ret = Marshal.AllocHGlobal(248); CppSharp.Parser.AST.Class.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Class.Internal*) ret; } internal Class(Class.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Class(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Class(Class.Internal* native, bool isInternalImpl = false) + : base((DeclarationContext.Internal*) native) { } public Class() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(248); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5727,7 +6016,7 @@ namespace CppSharp { var __ret = Internal.getBases_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.BaseClassSpecifier(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.BaseClassSpecifier.__CreateInstance(__ret); } public void addBases(CppSharp.Parser.AST.BaseClassSpecifier s) @@ -5745,7 +6034,7 @@ namespace CppSharp { var __ret = Internal.getFields_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Field(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Field.__CreateInstance(__ret); } public void addFields(CppSharp.Parser.AST.Field s) @@ -5763,7 +6052,7 @@ namespace CppSharp { var __ret = Internal.getMethods_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Method(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Method.__CreateInstance(__ret); } public void addMethods(CppSharp.Parser.AST.Method s) @@ -5781,7 +6070,7 @@ namespace CppSharp { var __ret = Internal.getSpecifiers_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.AccessSpecifierDecl(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.AccessSpecifierDecl.__CreateInstance(__ret); } public void addSpecifiers(CppSharp.Parser.AST.AccessSpecifierDecl s) @@ -5971,7 +6260,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Layout == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ClassLayout(__ptr->Layout); + return (__ptr->Layout == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassLayout.__CreateInstance(__ptr->Layout); } set @@ -6015,7 +6304,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public global::System.IntPtr TemplatedDecl; @@ -6061,45 +6350,54 @@ namespace CppSharp internal static extern uint getParametersCount_0(global::System.IntPtr instance); } - internal Template(Template.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Template __CreateInstance(global::System.IntPtr native) { + return new Template((Template.Internal*) native); } - private static global::System.IntPtr __CopyValue(Template.Internal native) + private static Template.Internal* __CopyValue(Template.Internal native) { var ret = Marshal.AllocHGlobal(100); CppSharp.Parser.AST.Template.Internal.cctor_3(ret, new global::System.IntPtr(&native)); - return ret; + return (Template.Internal*) ret; } internal Template(Template.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Template(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Template(Template.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Template(CppSharp.Parser.AST.DeclarationKind kind) - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(100); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } public Template() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(100); + __ownsNativeInstance = true; Internal.ctor_1(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6135,7 +6433,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->TemplatedDecl); + return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->TemplatedDecl); } set @@ -6179,7 +6477,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public global::System.IntPtr TemplatedDecl; @@ -6220,37 +6518,45 @@ namespace CppSharp internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance); } - internal ClassTemplate(ClassTemplate.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassTemplate __CreateInstance(global::System.IntPtr native) { + return new ClassTemplate((ClassTemplate.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassTemplate.Internal native) + private static ClassTemplate.Internal* __CopyValue(ClassTemplate.Internal native) { var ret = Marshal.AllocHGlobal(112); CppSharp.Parser.AST.ClassTemplate.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassTemplate.Internal*) ret; } internal ClassTemplate(ClassTemplate.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassTemplate(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ClassTemplate(ClassTemplate.Internal* native, bool isInternalImpl = false) + : base((Template.Internal*) native) { } public ClassTemplate() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(112); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6258,7 +6564,7 @@ namespace CppSharp { var __ret = Internal.getSpecializations_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ClassTemplateSpecialization(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret); } public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization s) @@ -6315,10 +6621,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; - - [FieldOffset(168)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(180)] public bool IsAnonymous; @@ -6395,37 +6698,45 @@ namespace CppSharp internal static extern uint getArgumentsCount_0(global::System.IntPtr instance); } - internal ClassTemplateSpecialization(ClassTemplateSpecialization.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassTemplateSpecialization __CreateInstance(global::System.IntPtr native) { + return new ClassTemplateSpecialization((ClassTemplateSpecialization.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassTemplateSpecialization.Internal native) + private static ClassTemplateSpecialization.Internal* __CopyValue(ClassTemplateSpecialization.Internal native) { var ret = Marshal.AllocHGlobal(268); CppSharp.Parser.AST.ClassTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassTemplateSpecialization.Internal*) ret; } internal ClassTemplateSpecialization(ClassTemplateSpecialization.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassTemplateSpecialization(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ClassTemplateSpecialization(ClassTemplateSpecialization.Internal* native, bool isInternalImpl = false) + : base((Class.Internal*) native) { } public ClassTemplateSpecialization() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(268); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6461,7 +6772,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ClassTemplate(__ptr->TemplatedDecl); + return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassTemplate.__CreateInstance(__ptr->TemplatedDecl); } set @@ -6520,10 +6831,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; - - [FieldOffset(168)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(180)] public bool IsAnonymous; @@ -6580,37 +6888,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal ClassTemplatePartialSpecialization(ClassTemplatePartialSpecialization.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassTemplatePartialSpecialization __CreateInstance(global::System.IntPtr native) { + return new ClassTemplatePartialSpecialization((ClassTemplatePartialSpecialization.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassTemplatePartialSpecialization.Internal native) + private static ClassTemplatePartialSpecialization.Internal* __CopyValue(ClassTemplatePartialSpecialization.Internal native) { var ret = Marshal.AllocHGlobal(268); CppSharp.Parser.AST.ClassTemplatePartialSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassTemplatePartialSpecialization.Internal*) ret; } internal ClassTemplatePartialSpecialization(ClassTemplatePartialSpecialization.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassTemplatePartialSpecialization(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ClassTemplatePartialSpecialization(ClassTemplatePartialSpecialization.Internal* native, bool isInternalImpl = false) + : base((ClassTemplateSpecialization.Internal*) native) { } public ClassTemplatePartialSpecialization() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(268); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -6648,7 +6964,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public global::System.IntPtr TemplatedDecl; @@ -6689,37 +7005,45 @@ namespace CppSharp internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance); } - internal FunctionTemplate(FunctionTemplate.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FunctionTemplate __CreateInstance(global::System.IntPtr native) { + return new FunctionTemplate((FunctionTemplate.Internal*) native); } - private static global::System.IntPtr __CopyValue(FunctionTemplate.Internal native) + private static FunctionTemplate.Internal* __CopyValue(FunctionTemplate.Internal native) { var ret = Marshal.AllocHGlobal(112); CppSharp.Parser.AST.FunctionTemplate.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (FunctionTemplate.Internal*) ret; } internal FunctionTemplate(FunctionTemplate.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FunctionTemplate(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected FunctionTemplate(FunctionTemplate.Internal* native, bool isInternalImpl = false) + : base((Template.Internal*) native) { } public FunctionTemplate() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(112); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6727,7 +7051,7 @@ namespace CppSharp { var __ret = Internal.getSpecializations_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FunctionTemplateSpecialization(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplateSpecialization.__CreateInstance(__ret); } public void addSpecializations(CppSharp.Parser.AST.FunctionTemplateSpecialization s) @@ -6803,31 +7127,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal FunctionTemplateSpecialization(FunctionTemplateSpecialization.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FunctionTemplateSpecialization __CreateInstance(global::System.IntPtr native) { + return new FunctionTemplateSpecialization((FunctionTemplateSpecialization.Internal*) native); } - private static global::System.IntPtr __CopyValue(FunctionTemplateSpecialization.Internal native) + private static FunctionTemplateSpecialization.Internal* __CopyValue(FunctionTemplateSpecialization.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (FunctionTemplateSpecialization.Internal*) ret; } internal FunctionTemplateSpecialization(FunctionTemplateSpecialization.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FunctionTemplateSpecialization(global::System.IntPtr native, bool isInternalImpl = false) + protected FunctionTemplateSpecialization(FunctionTemplateSpecialization.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public FunctionTemplateSpecialization() { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -6840,7 +7168,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TemplateArgument getArguments(uint i) @@ -6875,7 +7206,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Template == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FunctionTemplate(__ptr->Template); + return (__ptr->Template == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplate.__CreateInstance(__ptr->Template); } set @@ -6890,7 +7221,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->SpecializedFunction == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Function(__ptr->SpecializedFunction); + return (__ptr->SpecializedFunction == IntPtr.Zero) ? null : CppSharp.Parser.AST.Function.__CreateInstance(__ptr->SpecializedFunction); } set @@ -6949,10 +7280,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; - - [FieldOffset(168)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(180)] public bool IsAnonymous; @@ -6976,37 +7304,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Namespace(Namespace.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Namespace __CreateInstance(global::System.IntPtr native) { + return new Namespace((Namespace.Internal*) native); } - private static global::System.IntPtr __CopyValue(Namespace.Internal native) + private static Namespace.Internal* __CopyValue(Namespace.Internal native) { var ret = Marshal.AllocHGlobal(184); CppSharp.Parser.AST.Namespace.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Namespace.Internal*) ret; } internal Namespace(Namespace.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Namespace(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Namespace(Namespace.Internal* native, bool isInternalImpl = false) + : base((DeclarationContext.Internal*) native) { } public Namespace() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(184); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7059,7 +7395,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public CppSharp.Parser.AST.MacroLocation MacroLocation; @@ -7080,37 +7416,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal PreprocessedEntity(PreprocessedEntity.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new PreprocessedEntity __CreateInstance(global::System.IntPtr native) { + return new PreprocessedEntity((PreprocessedEntity.Internal*) native); } - private static global::System.IntPtr __CopyValue(PreprocessedEntity.Internal native) + private static PreprocessedEntity.Internal* __CopyValue(PreprocessedEntity.Internal native) { var ret = Marshal.AllocHGlobal(88); CppSharp.Parser.AST.PreprocessedEntity.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (PreprocessedEntity.Internal*) ret; } internal PreprocessedEntity(PreprocessedEntity.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public PreprocessedEntity(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected PreprocessedEntity(PreprocessedEntity.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public PreprocessedEntity() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(88); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7163,7 +7507,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public CppSharp.Parser.AST.MacroLocation MacroLocation; @@ -7194,37 +7538,45 @@ namespace CppSharp internal static extern void setExpression_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal MacroDefinition(MacroDefinition.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new MacroDefinition __CreateInstance(global::System.IntPtr native) { + return new MacroDefinition((MacroDefinition.Internal*) native); } - private static global::System.IntPtr __CopyValue(MacroDefinition.Internal native) + private static MacroDefinition.Internal* __CopyValue(MacroDefinition.Internal native) { var ret = Marshal.AllocHGlobal(100); CppSharp.Parser.AST.MacroDefinition.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (MacroDefinition.Internal*) ret; } internal MacroDefinition(MacroDefinition.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public MacroDefinition(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected MacroDefinition(MacroDefinition.Internal* native, bool isInternalImpl = false) + : base((PreprocessedEntity.Internal*) native) { } public MacroDefinition() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(100); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7279,7 +7631,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(84)] public CppSharp.Parser.AST.MacroLocation MacroLocation; @@ -7313,37 +7665,45 @@ namespace CppSharp internal static extern void setText_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal MacroExpansion(MacroExpansion.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new MacroExpansion __CreateInstance(global::System.IntPtr native) { + return new MacroExpansion((MacroExpansion.Internal*) native); } - private static global::System.IntPtr __CopyValue(MacroExpansion.Internal native) + private static MacroExpansion.Internal* __CopyValue(MacroExpansion.Internal native) { var ret = Marshal.AllocHGlobal(104); CppSharp.Parser.AST.MacroExpansion.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (MacroExpansion.Internal*) ret; } internal MacroExpansion(MacroExpansion.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public MacroExpansion(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected MacroExpansion(MacroExpansion.Internal* native, bool isInternalImpl = false) + : base((PreprocessedEntity.Internal*) native) { } public MacroExpansion() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7369,7 +7729,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Definition == IntPtr.Zero) ? null : new CppSharp.Parser.AST.MacroDefinition(__ptr->Definition); + return (__ptr->Definition == IntPtr.Zero) ? null : CppSharp.Parser.AST.MacroDefinition.__CreateInstance(__ptr->Definition); } set @@ -7413,10 +7773,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(68)] - public void* OriginalPtr; - - [FieldOffset(168)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(180)] public bool IsAnonymous; @@ -7473,37 +7830,45 @@ namespace CppSharp internal static extern uint getMacrosCount_0(global::System.IntPtr instance); } - internal TranslationUnit(TranslationUnit.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TranslationUnit __CreateInstance(global::System.IntPtr native) { + return new TranslationUnit((TranslationUnit.Internal*) native); } - private static global::System.IntPtr __CopyValue(TranslationUnit.Internal native) + private static TranslationUnit.Internal* __CopyValue(TranslationUnit.Internal native) { var ret = Marshal.AllocHGlobal(212); CppSharp.Parser.AST.TranslationUnit.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TranslationUnit.Internal*) ret; } internal TranslationUnit(TranslationUnit.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TranslationUnit(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TranslationUnit(TranslationUnit.Internal* native, bool isInternalImpl = false) + : base((Namespace.Internal*) native) { } public TranslationUnit() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(212); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7511,7 +7876,7 @@ namespace CppSharp { var __ret = Internal.getMacros_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.MacroDefinition(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.MacroDefinition.__CreateInstance(__ret); } public void addMacros(CppSharp.Parser.AST.MacroDefinition s) @@ -7643,31 +8008,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal NativeLibrary(NativeLibrary.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new NativeLibrary __CreateInstance(global::System.IntPtr native) { + return new NativeLibrary((NativeLibrary.Internal*) native); } - private static global::System.IntPtr __CopyValue(NativeLibrary.Internal native) + private static NativeLibrary.Internal* __CopyValue(NativeLibrary.Internal native) { var ret = Marshal.AllocHGlobal(40); CppSharp.Parser.AST.NativeLibrary.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (NativeLibrary.Internal*) ret; } internal NativeLibrary(NativeLibrary.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public NativeLibrary(global::System.IntPtr native, bool isInternalImpl = false) + protected NativeLibrary(NativeLibrary.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public NativeLibrary() { __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -7680,7 +8049,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string getSymbols(uint i) @@ -7815,31 +8187,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ASTContext(ASTContext.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ASTContext __CreateInstance(global::System.IntPtr native) { + return new ASTContext((ASTContext.Internal*) native); } - private static global::System.IntPtr __CopyValue(ASTContext.Internal native) + private static ASTContext.Internal* __CopyValue(ASTContext.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.ASTContext.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ASTContext.Internal*) ret; } internal ASTContext(ASTContext.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ASTContext(global::System.IntPtr native, bool isInternalImpl = false) + protected ASTContext(ASTContext.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ASTContext() { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -7852,14 +8228,17 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TranslationUnit getTranslationUnits(uint i) { var __ret = Internal.getTranslationUnits_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TranslationUnit(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TranslationUnit.__CreateInstance(__ret); } public void addTranslationUnits(CppSharp.Parser.AST.TranslationUnit s) @@ -7904,31 +8283,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Comment(Comment.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Comment __CreateInstance(global::System.IntPtr native) { + return new Comment((Comment.Internal*) native); } - private static global::System.IntPtr __CopyValue(Comment.Internal native) + private static Comment.Internal* __CopyValue(Comment.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(4); - *(Comment.Internal*) ret = native; + Comment.Internal* ret = (Comment.Internal*) Marshal.AllocHGlobal(4); + *ret = native; return ret; } internal Comment(Comment.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Comment(global::System.IntPtr native, bool isInternalImpl = false) + protected Comment(Comment.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public Comment(CppSharp.Parser.AST.CommentKind kind) { __Instance = Marshal.AllocHGlobal(4); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } @@ -7941,7 +8324,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.CommentKind Kind @@ -7979,37 +8365,45 @@ namespace CppSharp internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0); } - internal FullComment(FullComment.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FullComment __CreateInstance(global::System.IntPtr native) { + return new FullComment((FullComment.Internal*) native); } - private static global::System.IntPtr __CopyValue(FullComment.Internal native) + private static FullComment.Internal* __CopyValue(FullComment.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(4); - *(FullComment.Internal*) ret = native; + FullComment.Internal* ret = (FullComment.Internal*) Marshal.AllocHGlobal(4); + *ret = native; return ret; } internal FullComment(FullComment.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FullComment(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected FullComment(FullComment.Internal* native, bool isInternalImpl = false) + : base((Comment.Internal*) native) { } public FullComment() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(4); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -8063,31 +8457,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal RawComment(RawComment.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new RawComment __CreateInstance(global::System.IntPtr native) { + return new RawComment((RawComment.Internal*) native); } - private static global::System.IntPtr __CopyValue(RawComment.Internal native) + private static RawComment.Internal* __CopyValue(RawComment.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.RawComment.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (RawComment.Internal*) ret; } internal RawComment(RawComment.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public RawComment(global::System.IntPtr native, bool isInternalImpl = false) + protected RawComment(RawComment.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public RawComment() { __Instance = Marshal.AllocHGlobal(32); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -8100,7 +8498,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string Text @@ -8157,7 +8558,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->FullCommentBlock == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FullComment(__ptr->FullCommentBlock); + return (__ptr->FullCommentBlock == IntPtr.Zero) ? null : CppSharp.Parser.AST.FullComment.__CreateInstance(__ptr->FullCommentBlock); } set 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 834141a6..b9b56ca1 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 @@ -232,31 +232,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ParserOptions(ParserOptions.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ParserOptions __CreateInstance(global::System.IntPtr native) { + return new ParserOptions((ParserOptions.Internal*) native); } - private static global::System.IntPtr __CopyValue(ParserOptions.Internal native) + private static ParserOptions.Internal* __CopyValue(ParserOptions.Internal native) { var ret = Marshal.AllocHGlobal(116); CppSharp.Parser.ParserOptions.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ParserOptions.Internal*) ret; } internal ParserOptions(ParserOptions.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ParserOptions(global::System.IntPtr native, bool isInternalImpl = false) + protected ParserOptions(ParserOptions.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ParserOptions() { __Instance = Marshal.AllocHGlobal(116); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -269,7 +273,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string getArguments(uint i) @@ -479,7 +486,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->ASTContext == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ASTContext(__ptr->ASTContext); + return (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); } set @@ -595,7 +602,7 @@ namespace CppSharp } } - public unsafe partial class ParserDiagnostic : IDisposable + public unsafe partial struct ParserDiagnostic { [StructLayout(LayoutKind.Explicit, Size = 36)] public partial struct Internal @@ -645,53 +652,49 @@ namespace CppSharp internal static extern void setMessage_0(global::System.IntPtr instance, global::System.IntPtr s); } - public global::System.IntPtr __Instance { get; protected set; } - - internal ParserDiagnostic(ParserDiagnostic.Internal* native) - : this(new global::System.IntPtr(native)) - { - } - - private static global::System.IntPtr __CopyValue(ParserDiagnostic.Internal native) + public static new ParserDiagnostic __CreateInstance(global::System.IntPtr native) { - var ret = Marshal.AllocHGlobal(36); - CppSharp.Parser.ParserDiagnostic.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return new ParserDiagnostic((ParserDiagnostic.Internal*) native); } internal ParserDiagnostic(ParserDiagnostic.Internal native) - : this(__CopyValue(native)) - { - } - - public ParserDiagnostic(global::System.IntPtr native, bool isInternalImpl = false) + : this(&native) { - __Instance = native; } - public ParserDiagnostic() + private ParserDiagnostic(ParserDiagnostic.Internal* native, bool isInternalImpl = false) : this() { - __Instance = Marshal.AllocHGlobal(36); - Internal.ctor_0(__Instance); + var __ptr = native; + Level = __ptr->Level; + LineNumber = __ptr->LineNumber; + ColumnNumber = __ptr->ColumnNumber; } - public void Dispose() + internal Internal ToInternal() { - Dispose(disposing: true); - GC.SuppressFinalize(this); + var __native = new CppSharp.Parser.ParserDiagnostic.Internal(); + var __ptr = &__native; + __native.Level = Level; + __native.LineNumber = LineNumber; + __native.ColumnNumber = ColumnNumber; + return __native; } - protected virtual void Dispose(bool disposing) + internal void FromInternal(Internal* native) { - Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + var __ptr = native; + Level = __ptr->Level; + LineNumber = __ptr->LineNumber; + ColumnNumber = __ptr->ColumnNumber; } public string FileName { get { - var __ret = Internal.getFileName_0(__Instance); + var __fixedInstance = ToInternal(); + var __ret = Internal.getFileName_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -699,8 +702,10 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - Internal.setFileName_0(__Instance, arg0); + var __fixedInstance = ToInternal(); + Internal.setFileName_0(new global::System.IntPtr(&__fixedInstance), arg0); Marshal.FreeHGlobal(arg0); + FromInternal(&__fixedInstance); } } @@ -708,7 +713,9 @@ namespace CppSharp { get { - var __ret = Internal.getMessage_0(__Instance); + var __fixedInstance = ToInternal(); + var __ret = Internal.getMessage_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -716,58 +723,36 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - Internal.setMessage_0(__Instance, arg0); + var __fixedInstance = ToInternal(); + Internal.setMessage_0(new global::System.IntPtr(&__fixedInstance), arg0); Marshal.FreeHGlobal(arg0); + FromInternal(&__fixedInstance); } } public CppSharp.Parser.ParserDiagnosticLevel Level { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->Level; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->Level = value; - } + set; } public int LineNumber { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->LineNumber; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->LineNumber = value; - } + set; } public int ColumnNumber { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->ColumnNumber; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->ColumnNumber = value; - } + set; } } - public unsafe partial class ParserResult : IDisposable + public unsafe partial struct ParserResult { [StructLayout(LayoutKind.Explicit, Size = 28)] public partial struct Internal @@ -820,118 +805,103 @@ namespace CppSharp internal static extern uint getDiagnosticsCount_0(global::System.IntPtr instance); } - public global::System.IntPtr __Instance { get; protected set; } - - internal ParserResult(ParserResult.Internal* native) - : this(new global::System.IntPtr(native)) - { - } - - private static global::System.IntPtr __CopyValue(ParserResult.Internal native) + public static new ParserResult __CreateInstance(global::System.IntPtr native) { - var ret = Marshal.AllocHGlobal(28); - CppSharp.Parser.ParserResult.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return new ParserResult((ParserResult.Internal*) native); } internal ParserResult(ParserResult.Internal native) - : this(__CopyValue(native)) - { - } - - public ParserResult(global::System.IntPtr native, bool isInternalImpl = false) + : this(&native) { - __Instance = native; } - public ParserResult() + private ParserResult(ParserResult.Internal* native, bool isInternalImpl = false) : this() { - __Instance = Marshal.AllocHGlobal(28); - Internal.ctor_0(__Instance); + 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); } - public void Dispose() + internal Internal ToInternal() { - Dispose(disposing: true); - GC.SuppressFinalize(this); + 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; } - protected virtual void Dispose(bool disposing) + internal void FromInternal(Internal* native) { - Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + 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); } public CppSharp.Parser.ParserDiagnostic getDiagnostics(uint i) { var __ret = new CppSharp.Parser.ParserDiagnostic.Internal(); - Internal.getDiagnostics_0(new IntPtr(&__ret), __Instance, i); + var __fixedInstance = ToInternal(); + Internal.getDiagnostics_0(new IntPtr(&__ret), new global::System.IntPtr(&__fixedInstance), i); + FromInternal(&__fixedInstance); return new CppSharp.Parser.ParserDiagnostic(__ret); } public void addDiagnostics(CppSharp.Parser.ParserDiagnostic s) { - var arg0 = s == (CppSharp.Parser.ParserDiagnostic) null ? global::System.IntPtr.Zero : s.__Instance; - Internal.addDiagnostics_0(__Instance, arg0); + 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); } public void clearDiagnostics() { - Internal.clearDiagnostics_0(__Instance); + var __fixedInstance = ToInternal(); + Internal.clearDiagnostics_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); } public uint DiagnosticsCount { get { - var __ret = Internal.getDiagnosticsCount_0(__Instance); + var __fixedInstance = ToInternal(); + var __ret = Internal.getDiagnosticsCount_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); return __ret; } } public CppSharp.Parser.ParserResultKind Kind { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->Kind; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->Kind = value; - } + set; } public CppSharp.Parser.AST.ASTContext ASTContext { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->ASTContext == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ASTContext(__ptr->ASTContext); - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->ASTContext = value == (CppSharp.Parser.AST.ASTContext) null ? global::System.IntPtr.Zero : value.__Instance; - } + set; } public CppSharp.Parser.AST.NativeLibrary Library { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Library == IntPtr.Zero) ? null : new CppSharp.Parser.AST.NativeLibrary(__ptr->Library); - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->Library = value == (CppSharp.Parser.AST.NativeLibrary) null ? global::System.IntPtr.Zero : value.__Instance; - } + set; } } @@ -963,31 +933,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ClangParser(ClangParser.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClangParser __CreateInstance(global::System.IntPtr native) { + return new ClangParser((ClangParser.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClangParser.Internal native) + private static ClangParser.Internal* __CopyValue(ClangParser.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(1); - *(ClangParser.Internal*) ret = native; + ClangParser.Internal* ret = (ClangParser.Internal*) Marshal.AllocHGlobal(1); + *ret = native; return ret; } internal ClangParser(ClangParser.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClangParser(global::System.IntPtr native, bool isInternalImpl = false) + protected ClangParser(ClangParser.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ClangParser() { __Instance = Marshal.AllocHGlobal(1); + __ownsNativeInstance = true; } public void Dispose() @@ -998,23 +972,26 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public static CppSharp.Parser.ParserResult ParseHeader(CppSharp.Parser.ParserOptions Opts) { 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 null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.ParserResult(__ret); + if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); + return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : 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 null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.ParserResult(__ret); + if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); + return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } public static CppSharp.Parser.ParserTargetInfo GetTargetInfo(CppSharp.Parser.ParserOptions Opts) @@ -1022,7 +999,7 @@ namespace CppSharp var arg0 = Opts == (CppSharp.Parser.ParserOptions) null ? global::System.IntPtr.Zero : Opts.__Instance; var __ret = Internal.GetTargetInfo_0(arg0); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.ParserTargetInfo(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); } } } diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Sources.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Sources.cs index 1ddf423b..deae31fd 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Sources.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Sources.cs @@ -34,9 +34,9 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal SourceLocation(SourceLocation.Internal* native) - : this(new global::System.IntPtr(native)) + public static new SourceLocation __CreateInstance(global::System.IntPtr native) { + return new SourceLocation((SourceLocation.Internal*) native); } internal SourceLocation(SourceLocation.Internal native) @@ -44,9 +44,9 @@ namespace CppSharp { } - public SourceLocation(global::System.IntPtr native, bool isInternalImpl = false) : this() + private SourceLocation(SourceLocation.Internal* native, bool isInternalImpl = false) : this() { - var __ptr = (Internal*)native.ToPointer(); + var __ptr = native; ID = __ptr->ID; } diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Target.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Target.cs index af0f0cf7..77baaf4b 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Target.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Target.cs @@ -172,31 +172,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ParserTargetInfo(ParserTargetInfo.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ParserTargetInfo __CreateInstance(global::System.IntPtr native) { + return new ParserTargetInfo((ParserTargetInfo.Internal*) native); } - private static global::System.IntPtr __CopyValue(ParserTargetInfo.Internal native) + private static ParserTargetInfo.Internal* __CopyValue(ParserTargetInfo.Internal native) { var ret = Marshal.AllocHGlobal(164); CppSharp.Parser.ParserTargetInfo.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ParserTargetInfo.Internal*) ret; } internal ParserTargetInfo(ParserTargetInfo.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ParserTargetInfo(global::System.IntPtr native, bool isInternalImpl = false) + protected ParserTargetInfo(ParserTargetInfo.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ParserTargetInfo() { __Instance = Marshal.AllocHGlobal(164); + __ownsNativeInstance = true; Internal.ctor_1(__Instance); } @@ -209,7 +213,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string ABI 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 19eecda6..7bf99308 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs @@ -247,31 +247,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Type(Type.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Type __CreateInstance(global::System.IntPtr native) { + return new Type((Type.Internal*) native); } - private static global::System.IntPtr __CopyValue(Type.Internal native) + private static Type.Internal* __CopyValue(Type.Internal native) { var ret = Marshal.AllocHGlobal(8); CppSharp.Parser.AST.Type.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Type.Internal*) ret; } internal Type(Type.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Type(global::System.IntPtr native, bool isInternalImpl = false) + protected Type(Type.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public Type(CppSharp.Parser.AST.TypeKind kind) { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } @@ -284,7 +288,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TypeKind Kind @@ -340,31 +347,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal TypeQualifiers(TypeQualifiers.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TypeQualifiers __CreateInstance(global::System.IntPtr native) { + return new TypeQualifiers((TypeQualifiers.Internal*) native); } - private static global::System.IntPtr __CopyValue(TypeQualifiers.Internal native) + private static TypeQualifiers.Internal* __CopyValue(TypeQualifiers.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(3); - *(TypeQualifiers.Internal*) ret = native; + TypeQualifiers.Internal* ret = (TypeQualifiers.Internal*) Marshal.AllocHGlobal(3); + *ret = native; return ret; } internal TypeQualifiers(TypeQualifiers.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TypeQualifiers(global::System.IntPtr native, bool isInternalImpl = false) + protected TypeQualifiers(TypeQualifiers.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public TypeQualifiers() { __Instance = Marshal.AllocHGlobal(3); + __ownsNativeInstance = true; } public void Dispose() @@ -375,7 +386,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public bool IsConst @@ -448,31 +462,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal QualifiedType(QualifiedType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new QualifiedType __CreateInstance(global::System.IntPtr native) { + return new QualifiedType((QualifiedType.Internal*) native); } - private static global::System.IntPtr __CopyValue(QualifiedType.Internal native) + private static QualifiedType.Internal* __CopyValue(QualifiedType.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(8); - *(QualifiedType.Internal*) ret = native; + QualifiedType.Internal* ret = (QualifiedType.Internal*) Marshal.AllocHGlobal(8); + *ret = native; return ret; } internal QualifiedType(QualifiedType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public QualifiedType(global::System.IntPtr native, bool isInternalImpl = false) + protected QualifiedType(QualifiedType.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public QualifiedType() { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -484,7 +502,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.Type Type @@ -492,7 +513,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Type == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Type); + return (__ptr->Type == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Type); } set @@ -543,37 +564,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal TagType(TagType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TagType __CreateInstance(global::System.IntPtr native) { + return new TagType((TagType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TagType.Internal native) + private static TagType.Internal* __CopyValue(TagType.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.TagType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TagType.Internal*) ret; } internal TagType(TagType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TagType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TagType(TagType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TagType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -582,7 +611,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Declaration); } set @@ -632,37 +661,45 @@ namespace CppSharp Incomplete = 3 } - internal ArrayType(ArrayType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ArrayType __CreateInstance(global::System.IntPtr native) { + return new ArrayType((ArrayType.Internal*) native); } - private static global::System.IntPtr __CopyValue(ArrayType.Internal native) + private static ArrayType.Internal* __CopyValue(ArrayType.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.ArrayType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ArrayType.Internal*) ret; } internal ArrayType(ArrayType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ArrayType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ArrayType(ArrayType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public ArrayType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -765,37 +802,45 @@ namespace CppSharp internal static extern uint getParametersCount_0(global::System.IntPtr instance); } - internal FunctionType(FunctionType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FunctionType __CreateInstance(global::System.IntPtr native) { + return new FunctionType((FunctionType.Internal*) native); } - private static global::System.IntPtr __CopyValue(FunctionType.Internal native) + private static FunctionType.Internal* __CopyValue(FunctionType.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.FunctionType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (FunctionType.Internal*) ret; } internal FunctionType(FunctionType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FunctionType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected FunctionType(FunctionType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public FunctionType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(32); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -803,7 +848,7 @@ namespace CppSharp { var __ret = Internal.getParameters_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Parameter(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Parameter.__CreateInstance(__ret); } public void addParameters(CppSharp.Parser.AST.Parameter s) @@ -893,37 +938,45 @@ namespace CppSharp RVReference = 3 } - internal PointerType(PointerType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new PointerType __CreateInstance(global::System.IntPtr native) { + return new PointerType((PointerType.Internal*) native); } - private static global::System.IntPtr __CopyValue(PointerType.Internal native) + private static PointerType.Internal* __CopyValue(PointerType.Internal native) { var ret = Marshal.AllocHGlobal(20); CppSharp.Parser.AST.PointerType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (PointerType.Internal*) ret; } internal PointerType(PointerType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public PointerType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected PointerType(PointerType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public PointerType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(20); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -983,37 +1036,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal MemberPointerType(MemberPointerType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new MemberPointerType __CreateInstance(global::System.IntPtr native) { + return new MemberPointerType((MemberPointerType.Internal*) native); } - private static global::System.IntPtr __CopyValue(MemberPointerType.Internal native) + private static MemberPointerType.Internal* __CopyValue(MemberPointerType.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.MemberPointerType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (MemberPointerType.Internal*) ret; } internal MemberPointerType(MemberPointerType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public MemberPointerType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected MemberPointerType(MemberPointerType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public MemberPointerType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1058,37 +1119,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal TypedefType(TypedefType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TypedefType __CreateInstance(global::System.IntPtr native) { + return new TypedefType((TypedefType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TypedefType.Internal native) + private static TypedefType.Internal* __CopyValue(TypedefType.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.TypedefType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TypedefType.Internal*) ret; } internal TypedefType(TypedefType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TypedefType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TypedefType(TypedefType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TypedefType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1097,7 +1166,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TypedefDecl(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.TypedefDecl.__CreateInstance(__ptr->Declaration); } set @@ -1136,37 +1205,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal AttributedType(AttributedType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new AttributedType __CreateInstance(global::System.IntPtr native) { + return new AttributedType((AttributedType.Internal*) native); } - private static global::System.IntPtr __CopyValue(AttributedType.Internal native) + private static AttributedType.Internal* __CopyValue(AttributedType.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.AttributedType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (AttributedType.Internal*) ret; } internal AttributedType(AttributedType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public AttributedType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected AttributedType(AttributedType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public AttributedType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1232,37 +1309,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal DecayedType(DecayedType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new DecayedType __CreateInstance(global::System.IntPtr native) { + return new DecayedType((DecayedType.Internal*) native); } - private static global::System.IntPtr __CopyValue(DecayedType.Internal native) + private static DecayedType.Internal* __CopyValue(DecayedType.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.DecayedType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (DecayedType.Internal*) ret; } internal DecayedType(DecayedType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public DecayedType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected DecayedType(DecayedType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public DecayedType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(32); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1354,31 +1439,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal TemplateArgument(TemplateArgument.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateArgument __CreateInstance(global::System.IntPtr native) { + return new TemplateArgument((TemplateArgument.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateArgument.Internal native) + private static TemplateArgument.Internal* __CopyValue(TemplateArgument.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(20); - *(TemplateArgument.Internal*) ret = native; + TemplateArgument.Internal* ret = (TemplateArgument.Internal*) Marshal.AllocHGlobal(20); + *ret = native; return ret; } internal TemplateArgument(TemplateArgument.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateArgument(global::System.IntPtr native, bool isInternalImpl = false) + protected TemplateArgument(TemplateArgument.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public TemplateArgument() { __Instance = Marshal.AllocHGlobal(20); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -1390,7 +1479,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TemplateArgument.ArgumentKind Kind @@ -1428,7 +1520,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Declaration); } set @@ -1507,37 +1599,45 @@ namespace CppSharp internal static extern uint getArgumentsCount_0(global::System.IntPtr instance); } - internal TemplateSpecializationType(TemplateSpecializationType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateSpecializationType __CreateInstance(global::System.IntPtr native) { + return new TemplateSpecializationType((TemplateSpecializationType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateSpecializationType.Internal native) + private static TemplateSpecializationType.Internal* __CopyValue(TemplateSpecializationType.Internal native) { var ret = Marshal.AllocHGlobal(28); CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateSpecializationType.Internal*) ret; } internal TemplateSpecializationType(TemplateSpecializationType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateSpecializationType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TemplateSpecializationType(TemplateSpecializationType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TemplateSpecializationType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(28); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1573,7 +1673,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Template == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Template(__ptr->Template); + return (__ptr->Template == IntPtr.Zero) ? null : CppSharp.Parser.AST.Template.__CreateInstance(__ptr->Template); } set @@ -1588,7 +1688,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Desugared == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Desugared); + return (__ptr->Desugared == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Desugared); } set @@ -1641,31 +1741,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal TemplateParameter(TemplateParameter.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateParameter __CreateInstance(global::System.IntPtr native) { + return new TemplateParameter((TemplateParameter.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateParameter.Internal native) + private static TemplateParameter.Internal* __CopyValue(TemplateParameter.Internal native) { var ret = Marshal.AllocHGlobal(28); CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateParameter.Internal*) ret; } internal TemplateParameter(TemplateParameter.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateParameter(global::System.IntPtr native, bool isInternalImpl = false) + protected TemplateParameter(TemplateParameter.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public TemplateParameter() { __Instance = Marshal.AllocHGlobal(28); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -1678,7 +1782,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public static bool operator !=(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param) @@ -1766,37 +1873,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal TemplateParameterType(TemplateParameterType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateParameterType __CreateInstance(global::System.IntPtr native) { + return new TemplateParameterType((TemplateParameterType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateParameterType.Internal native) + private static TemplateParameterType.Internal* __CopyValue(TemplateParameterType.Internal native) { var ret = Marshal.AllocHGlobal(48); CppSharp.Parser.AST.TemplateParameterType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateParameterType.Internal*) ret; } internal TemplateParameterType(TemplateParameterType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateParameterType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TemplateParameterType(TemplateParameterType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TemplateParameterType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(48); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1886,37 +2001,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal TemplateParameterSubstitutionType(TemplateParameterSubstitutionType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateParameterSubstitutionType __CreateInstance(global::System.IntPtr native) { + return new TemplateParameterSubstitutionType((TemplateParameterSubstitutionType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateParameterSubstitutionType.Internal native) + private static TemplateParameterSubstitutionType.Internal* __CopyValue(TemplateParameterSubstitutionType.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.TemplateParameterSubstitutionType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateParameterSubstitutionType.Internal*) ret; } internal TemplateParameterSubstitutionType(TemplateParameterSubstitutionType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateParameterSubstitutionType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TemplateParameterSubstitutionType(TemplateParameterSubstitutionType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TemplateParameterSubstitutionType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1964,37 +2087,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal InjectedClassNameType(InjectedClassNameType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new InjectedClassNameType __CreateInstance(global::System.IntPtr native) { + return new InjectedClassNameType((InjectedClassNameType.Internal*) native); } - private static global::System.IntPtr __CopyValue(InjectedClassNameType.Internal native) + private static InjectedClassNameType.Internal* __CopyValue(InjectedClassNameType.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.InjectedClassNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (InjectedClassNameType.Internal*) ret; } internal InjectedClassNameType(InjectedClassNameType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public InjectedClassNameType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected InjectedClassNameType(InjectedClassNameType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public InjectedClassNameType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -2003,7 +2134,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->TemplateSpecialization == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TemplateSpecializationType(__ptr->TemplateSpecialization); + return (__ptr->TemplateSpecialization == IntPtr.Zero) ? null : CppSharp.Parser.AST.TemplateSpecializationType.__CreateInstance(__ptr->TemplateSpecialization); } set @@ -2018,7 +2149,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Class == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Class(__ptr->Class); + return (__ptr->Class == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ptr->Class); } set @@ -2051,37 +2182,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal DependentNameType(DependentNameType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new DependentNameType __CreateInstance(global::System.IntPtr native) { + return new DependentNameType((DependentNameType.Internal*) native); } - private static global::System.IntPtr __CopyValue(DependentNameType.Internal native) + private static DependentNameType.Internal* __CopyValue(DependentNameType.Internal native) { var ret = Marshal.AllocHGlobal(8); CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (DependentNameType.Internal*) ret; } internal DependentNameType(DependentNameType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public DependentNameType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected DependentNameType(DependentNameType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public DependentNameType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -2108,37 +2247,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal PackExpansionType(PackExpansionType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new PackExpansionType __CreateInstance(global::System.IntPtr native) { + return new PackExpansionType((PackExpansionType.Internal*) native); } - private static global::System.IntPtr __CopyValue(PackExpansionType.Internal native) + private static PackExpansionType.Internal* __CopyValue(PackExpansionType.Internal native) { var ret = Marshal.AllocHGlobal(8); CppSharp.Parser.AST.PackExpansionType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (PackExpansionType.Internal*) ret; } internal PackExpansionType(PackExpansionType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public PackExpansionType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected PackExpansionType(PackExpansionType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public PackExpansionType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -2168,37 +2315,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal BuiltinType(BuiltinType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new BuiltinType __CreateInstance(global::System.IntPtr native) { + return new BuiltinType((BuiltinType.Internal*) native); } - private static global::System.IntPtr __CopyValue(BuiltinType.Internal native) + private static BuiltinType.Internal* __CopyValue(BuiltinType.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.BuiltinType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (BuiltinType.Internal*) ret; } internal BuiltinType(BuiltinType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public BuiltinType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected BuiltinType(BuiltinType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public BuiltinType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -2245,31 +2400,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal VTableComponent(VTableComponent.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new VTableComponent __CreateInstance(global::System.IntPtr native) { + return new VTableComponent((VTableComponent.Internal*) native); } - private static global::System.IntPtr __CopyValue(VTableComponent.Internal native) + private static VTableComponent.Internal* __CopyValue(VTableComponent.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(12); - *(VTableComponent.Internal*) ret = native; + VTableComponent.Internal* ret = (VTableComponent.Internal*) Marshal.AllocHGlobal(12); + *ret = native; return ret; } internal VTableComponent(VTableComponent.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public VTableComponent(global::System.IntPtr native, bool isInternalImpl = false) + protected VTableComponent(VTableComponent.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public VTableComponent() { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2281,7 +2440,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.VTableComponentKind Kind @@ -2319,7 +2481,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Declaration); } set @@ -2373,31 +2535,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal VTableLayout(VTableLayout.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new VTableLayout __CreateInstance(global::System.IntPtr native) { + return new VTableLayout((VTableLayout.Internal*) native); } - private static global::System.IntPtr __CopyValue(VTableLayout.Internal native) + private static VTableLayout.Internal* __CopyValue(VTableLayout.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.VTableLayout.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (VTableLayout.Internal*) ret; } internal VTableLayout(VTableLayout.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public VTableLayout(global::System.IntPtr native, bool isInternalImpl = false) + protected VTableLayout(VTableLayout.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public VTableLayout() { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2410,7 +2576,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.VTableComponent getComponents(uint i) @@ -2476,31 +2645,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal VFTableInfo(VFTableInfo.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new VFTableInfo __CreateInstance(global::System.IntPtr native) { + return new VFTableInfo((VFTableInfo.Internal*) native); } - private static global::System.IntPtr __CopyValue(VFTableInfo.Internal native) + private static VFTableInfo.Internal* __CopyValue(VFTableInfo.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.VFTableInfo.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (VFTableInfo.Internal*) ret; } internal VFTableInfo(VFTableInfo.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public VFTableInfo(global::System.IntPtr native, bool isInternalImpl = false) + protected VFTableInfo(VFTableInfo.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public VFTableInfo() { __Instance = Marshal.AllocHGlobal(32); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2513,7 +2686,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public ulong VBTableIndex @@ -2641,31 +2817,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ClassLayout(ClassLayout.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassLayout __CreateInstance(global::System.IntPtr native) { + return new ClassLayout((ClassLayout.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassLayout.Internal native) + private static ClassLayout.Internal* __CopyValue(ClassLayout.Internal native) { var ret = Marshal.AllocHGlobal(48); CppSharp.Parser.AST.ClassLayout.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassLayout.Internal*) ret; } internal ClassLayout(ClassLayout.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassLayout(global::System.IntPtr native, bool isInternalImpl = false) + protected ClassLayout(ClassLayout.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ClassLayout() { __Instance = Marshal.AllocHGlobal(48); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2678,7 +2858,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.VFTableInfo getVFTables(uint i) @@ -2847,7 +3030,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -2907,31 +3090,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Declaration(Declaration.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Declaration __CreateInstance(global::System.IntPtr native) { + return new Declaration((Declaration.Internal*) native); } - private static global::System.IntPtr __CopyValue(Declaration.Internal native) + private static Declaration.Internal* __CopyValue(Declaration.Internal native) { var ret = Marshal.AllocHGlobal(120); CppSharp.Parser.AST.Declaration.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Declaration.Internal*) ret; } internal Declaration(Declaration.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Declaration(global::System.IntPtr native, bool isInternalImpl = false) + protected Declaration(Declaration.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public Declaration(CppSharp.Parser.AST.DeclarationKind kind) { __Instance = Marshal.AllocHGlobal(120); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } @@ -2945,14 +3132,17 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.PreprocessedEntity getPreprocessedEntities(uint i) { var __ret = Internal.getPreprocessedEntities_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.PreprocessedEntity(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.PreprocessedEntity.__CreateInstance(__ret); } public void addPreprocessedEntities(CppSharp.Parser.AST.PreprocessedEntity s) @@ -3044,7 +3234,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->_Namespace == IntPtr.Zero) ? null : new CppSharp.Parser.AST.DeclarationContext(__ptr->_Namespace); + return (__ptr->_Namespace == IntPtr.Zero) ? null : CppSharp.Parser.AST.DeclarationContext.__CreateInstance(__ptr->_Namespace); } set @@ -3074,7 +3264,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Comment == IntPtr.Zero) ? null : new CppSharp.Parser.AST.RawComment(__ptr->Comment); + return (__ptr->Comment == IntPtr.Zero) ? null : CppSharp.Parser.AST.RawComment.__CreateInstance(__ptr->Comment); } set @@ -3119,7 +3309,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->CompleteDeclaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->CompleteDeclaration); + return (__ptr->CompleteDeclaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->CompleteDeclaration); } set @@ -3144,7 +3334,7 @@ namespace CppSharp } } - public void* OriginalPtr + public global::System.IntPtr OriginalPtr { get { @@ -3193,10 +3383,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; - - [FieldOffset(204)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(212)] public bool IsAnonymous; @@ -3357,38 +3544,46 @@ namespace CppSharp internal static extern uint getVariablesCount_0(global::System.IntPtr instance); } - internal DeclarationContext(DeclarationContext.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new DeclarationContext __CreateInstance(global::System.IntPtr native) { + return new DeclarationContext((DeclarationContext.Internal*) native); } - private static global::System.IntPtr __CopyValue(DeclarationContext.Internal native) + private static DeclarationContext.Internal* __CopyValue(DeclarationContext.Internal native) { var ret = Marshal.AllocHGlobal(216); CppSharp.Parser.AST.DeclarationContext.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (DeclarationContext.Internal*) ret; } internal DeclarationContext(DeclarationContext.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public DeclarationContext(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected DeclarationContext(DeclarationContext.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public DeclarationContext(CppSharp.Parser.AST.DeclarationKind kind) - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(216); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -3396,7 +3591,7 @@ namespace CppSharp { var __ret = Internal.getNamespaces_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Namespace(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Namespace.__CreateInstance(__ret); } public void addNamespaces(CppSharp.Parser.AST.Namespace s) @@ -3414,7 +3609,7 @@ namespace CppSharp { var __ret = Internal.getEnums_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Enumeration(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Enumeration.__CreateInstance(__ret); } public void addEnums(CppSharp.Parser.AST.Enumeration s) @@ -3432,7 +3627,7 @@ namespace CppSharp { var __ret = Internal.getFunctions_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Function(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Function.__CreateInstance(__ret); } public void addFunctions(CppSharp.Parser.AST.Function s) @@ -3450,7 +3645,7 @@ namespace CppSharp { var __ret = Internal.getClasses_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Class(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ret); } public void addClasses(CppSharp.Parser.AST.Class s) @@ -3468,7 +3663,7 @@ namespace CppSharp { var __ret = Internal.getTemplates_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Template(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Template.__CreateInstance(__ret); } public void addTemplates(CppSharp.Parser.AST.Template s) @@ -3486,7 +3681,7 @@ namespace CppSharp { var __ret = Internal.getTypedefs_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TypedefDecl(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TypedefDecl.__CreateInstance(__ret); } public void addTypedefs(CppSharp.Parser.AST.TypedefDecl s) @@ -3504,7 +3699,7 @@ namespace CppSharp { var __ret = Internal.getVariables_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Variable(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Variable.__CreateInstance(__ret); } public void addVariables(CppSharp.Parser.AST.Variable s) @@ -3630,7 +3825,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -3651,37 +3846,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal TypedefDecl(TypedefDecl.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TypedefDecl __CreateInstance(global::System.IntPtr native) { + return new TypedefDecl((TypedefDecl.Internal*) native); } - private static global::System.IntPtr __CopyValue(TypedefDecl.Internal native) + private static TypedefDecl.Internal* __CopyValue(TypedefDecl.Internal native) { var ret = Marshal.AllocHGlobal(128); CppSharp.Parser.AST.TypedefDecl.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TypedefDecl.Internal*) ret; } internal TypedefDecl(TypedefDecl.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TypedefDecl(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TypedefDecl(TypedefDecl.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public TypedefDecl() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(128); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -3735,26 +3938,29 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Statement(Statement.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Statement __CreateInstance(global::System.IntPtr native) { + return new Statement((Statement.Internal*) native); } - private static global::System.IntPtr __CopyValue(Statement.Internal native) + private static Statement.Internal* __CopyValue(Statement.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.Statement.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Statement.Internal*) ret; } internal Statement(Statement.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Statement(global::System.IntPtr native, bool isInternalImpl = false) + protected Statement(Statement.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public void Dispose() @@ -3766,7 +3972,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string String @@ -3806,7 +4015,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Decl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Decl); + return (__ptr->Decl == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Decl); } set @@ -3839,30 +4048,37 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Expression(Expression.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Expression __CreateInstance(global::System.IntPtr native) { + return new Expression((Expression.Internal*) native); } - private static global::System.IntPtr __CopyValue(Expression.Internal native) + private static Expression.Internal* __CopyValue(Expression.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.Expression.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Expression.Internal*) ret; } internal Expression(Expression.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Expression(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Expression(Expression.Internal* native, bool isInternalImpl = false) + : base((Statement.Internal*) native) { } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -3900,7 +4116,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -3933,37 +4149,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Parameter(Parameter.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Parameter __CreateInstance(global::System.IntPtr native) { + return new Parameter((Parameter.Internal*) native); } - private static global::System.IntPtr __CopyValue(Parameter.Internal native) + private static Parameter.Internal* __CopyValue(Parameter.Internal native) { var ret = Marshal.AllocHGlobal(140); CppSharp.Parser.AST.Parameter.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Parameter.Internal*) ret; } internal Parameter(Parameter.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Parameter(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Parameter(Parameter.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Parameter() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(140); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4032,7 +4256,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->DefaultArgument == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Expression(__ptr->DefaultArgument); + return (__ptr->DefaultArgument == IntPtr.Zero) ? null : CppSharp.Parser.AST.Expression.__CreateInstance(__ptr->DefaultArgument); } set @@ -4076,7 +4300,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public CppSharp.Parser.AST.QualifiedType.Internal ReturnType; @@ -4161,37 +4385,45 @@ namespace CppSharp internal static extern uint getParametersCount_0(global::System.IntPtr instance); } - internal Function(Function.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Function __CreateInstance(global::System.IntPtr native) { + return new Function((Function.Internal*) native); } - private static global::System.IntPtr __CopyValue(Function.Internal native) + private static Function.Internal* __CopyValue(Function.Internal native) { var ret = Marshal.AllocHGlobal(208); CppSharp.Parser.AST.Function.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Function.Internal*) ret; } internal Function(Function.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Function(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Function(Function.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Function() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(208); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4199,7 +4431,7 @@ namespace CppSharp { var __ret = Internal.getParameters_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Parameter(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Parameter.__CreateInstance(__ret); } public void addParameters(CppSharp.Parser.AST.Parameter s) @@ -4381,7 +4613,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->SpecializationInfo == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FunctionTemplateSpecialization(__ptr->SpecializationInfo); + return (__ptr->SpecializationInfo == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplateSpecialization.__CreateInstance(__ptr->SpecializationInfo); } set @@ -4425,7 +4657,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public CppSharp.Parser.AST.QualifiedType.Internal ReturnType; @@ -4506,37 +4738,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Method(Method.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Method __CreateInstance(global::System.IntPtr native) { + return new Method((Method.Internal*) native); } - private static global::System.IntPtr __CopyValue(Method.Internal native) + private static Method.Internal* __CopyValue(Method.Internal native) { var ret = Marshal.AllocHGlobal(236); CppSharp.Parser.AST.Method.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Method.Internal*) ret; } internal Method(Method.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Method(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Method(Method.Internal* native, bool isInternalImpl = false) + : base((Function.Internal*) native) { } public Method() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(236); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4545,7 +4785,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->AccessDecl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.AccessSpecifierDecl(__ptr->AccessDecl); + return (__ptr->AccessDecl == IntPtr.Zero) ? null : CppSharp.Parser.AST.AccessSpecifierDecl.__CreateInstance(__ptr->AccessDecl); } set @@ -4754,10 +4994,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; - - [FieldOffset(204)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(212)] public bool IsAnonymous; @@ -4848,7 +5085,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(144)] public ulong Value; @@ -4879,37 +5116,45 @@ namespace CppSharp internal static extern void setExpression_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal Item(Item.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Item __CreateInstance(global::System.IntPtr native) { + return new Item((Item.Internal*) native); } - private static global::System.IntPtr __CopyValue(Item.Internal native) + private static Item.Internal* __CopyValue(Item.Internal native) { var ret = Marshal.AllocHGlobal(152); CppSharp.Parser.AST.Enumeration.Item.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Item.Internal*) ret; } internal Item(Item.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Item(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Item(Item.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Item() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(152); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4946,37 +5191,45 @@ namespace CppSharp } } - internal Enumeration(Enumeration.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Enumeration __CreateInstance(global::System.IntPtr native) { + return new Enumeration((Enumeration.Internal*) native); } - private static global::System.IntPtr __CopyValue(Enumeration.Internal native) + private static Enumeration.Internal* __CopyValue(Enumeration.Internal native) { var ret = Marshal.AllocHGlobal(240); CppSharp.Parser.AST.Enumeration.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Enumeration.Internal*) ret; } internal Enumeration(Enumeration.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Enumeration(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Enumeration(Enumeration.Internal* native, bool isInternalImpl = false) + : base((DeclarationContext.Internal*) native) { } public Enumeration() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(240); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5027,7 +5280,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Type == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Type); + return (__ptr->Type == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Type); } set @@ -5042,7 +5295,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->BuiltinType == IntPtr.Zero) ? null : new CppSharp.Parser.AST.BuiltinType(__ptr->BuiltinType); + return (__ptr->BuiltinType == IntPtr.Zero) ? null : CppSharp.Parser.AST.BuiltinType.__CreateInstance(__ptr->BuiltinType); } set @@ -5086,7 +5339,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(144)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -5117,37 +5370,45 @@ namespace CppSharp internal static extern void setMangled_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal Variable(Variable.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Variable __CreateInstance(global::System.IntPtr native) { + return new Variable((Variable.Internal*) native); } - private static global::System.IntPtr __CopyValue(Variable.Internal native) + private static Variable.Internal* __CopyValue(Variable.Internal native) { var ret = Marshal.AllocHGlobal(152); CppSharp.Parser.AST.Variable.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Variable.Internal*) ret; } internal Variable(Variable.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Variable(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Variable(Variable.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Variable() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(152); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5211,31 +5472,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal BaseClassSpecifier(BaseClassSpecifier.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new BaseClassSpecifier __CreateInstance(global::System.IntPtr native) { + return new BaseClassSpecifier((BaseClassSpecifier.Internal*) native); } - private static global::System.IntPtr __CopyValue(BaseClassSpecifier.Internal native) + private static BaseClassSpecifier.Internal* __CopyValue(BaseClassSpecifier.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(12); - *(BaseClassSpecifier.Internal*) ret = native; + BaseClassSpecifier.Internal* ret = (BaseClassSpecifier.Internal*) Marshal.AllocHGlobal(12); + *ret = native; return ret; } internal BaseClassSpecifier(BaseClassSpecifier.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public BaseClassSpecifier(global::System.IntPtr native, bool isInternalImpl = false) + protected BaseClassSpecifier(BaseClassSpecifier.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public BaseClassSpecifier() { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -5247,7 +5512,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.AccessSpecifier Access @@ -5285,7 +5553,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Type == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Type); + return (__ptr->Type == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Type); } set @@ -5329,7 +5597,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -5356,37 +5624,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Field(Field.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Field __CreateInstance(global::System.IntPtr native) { + return new Field((Field.Internal*) native); } - private static global::System.IntPtr __CopyValue(Field.Internal native) + private static Field.Internal* __CopyValue(Field.Internal native) { var ret = Marshal.AllocHGlobal(136); CppSharp.Parser.AST.Field.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Field.Internal*) ret; } internal Field(Field.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Field(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Field(Field.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Field() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(136); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5425,7 +5701,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Class == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Class(__ptr->Class); + return (__ptr->Class == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ptr->Class); } set @@ -5469,7 +5745,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -5487,37 +5763,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal AccessSpecifierDecl(AccessSpecifierDecl.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new AccessSpecifierDecl __CreateInstance(global::System.IntPtr native) { + return new AccessSpecifierDecl((AccessSpecifierDecl.Internal*) native); } - private static global::System.IntPtr __CopyValue(AccessSpecifierDecl.Internal native) + private static AccessSpecifierDecl.Internal* __CopyValue(AccessSpecifierDecl.Internal native) { var ret = Marshal.AllocHGlobal(120); CppSharp.Parser.AST.AccessSpecifierDecl.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (AccessSpecifierDecl.Internal*) ret; } internal AccessSpecifierDecl(AccessSpecifierDecl.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public AccessSpecifierDecl(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected AccessSpecifierDecl(AccessSpecifierDecl.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public AccessSpecifierDecl() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(120); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -5555,10 +5839,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; - - [FieldOffset(204)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(212)] public bool IsAnonymous; @@ -5689,37 +5970,45 @@ namespace CppSharp internal static extern uint getSpecifiersCount_0(global::System.IntPtr instance); } - internal Class(Class.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Class __CreateInstance(global::System.IntPtr native) { + return new Class((Class.Internal*) native); } - private static global::System.IntPtr __CopyValue(Class.Internal native) + private static Class.Internal* __CopyValue(Class.Internal native) { var ret = Marshal.AllocHGlobal(280); CppSharp.Parser.AST.Class.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Class.Internal*) ret; } internal Class(Class.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Class(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Class(Class.Internal* native, bool isInternalImpl = false) + : base((DeclarationContext.Internal*) native) { } public Class() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(280); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5727,7 +6016,7 @@ namespace CppSharp { var __ret = Internal.getBases_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.BaseClassSpecifier(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.BaseClassSpecifier.__CreateInstance(__ret); } public void addBases(CppSharp.Parser.AST.BaseClassSpecifier s) @@ -5745,7 +6034,7 @@ namespace CppSharp { var __ret = Internal.getFields_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Field(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Field.__CreateInstance(__ret); } public void addFields(CppSharp.Parser.AST.Field s) @@ -5763,7 +6052,7 @@ namespace CppSharp { var __ret = Internal.getMethods_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Method(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Method.__CreateInstance(__ret); } public void addMethods(CppSharp.Parser.AST.Method s) @@ -5781,7 +6070,7 @@ namespace CppSharp { var __ret = Internal.getSpecifiers_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.AccessSpecifierDecl(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.AccessSpecifierDecl.__CreateInstance(__ret); } public void addSpecifiers(CppSharp.Parser.AST.AccessSpecifierDecl s) @@ -5971,7 +6260,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Layout == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ClassLayout(__ptr->Layout); + return (__ptr->Layout == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassLayout.__CreateInstance(__ptr->Layout); } set @@ -6015,7 +6304,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public global::System.IntPtr TemplatedDecl; @@ -6061,45 +6350,54 @@ namespace CppSharp internal static extern uint getParametersCount_0(global::System.IntPtr instance); } - internal Template(Template.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Template __CreateInstance(global::System.IntPtr native) { + return new Template((Template.Internal*) native); } - private static global::System.IntPtr __CopyValue(Template.Internal native) + private static Template.Internal* __CopyValue(Template.Internal native) { var ret = Marshal.AllocHGlobal(136); CppSharp.Parser.AST.Template.Internal.cctor_3(ret, new global::System.IntPtr(&native)); - return ret; + return (Template.Internal*) ret; } internal Template(Template.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Template(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Template(Template.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Template(CppSharp.Parser.AST.DeclarationKind kind) - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(136); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } public Template() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(136); + __ownsNativeInstance = true; Internal.ctor_1(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6135,7 +6433,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->TemplatedDecl); + return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->TemplatedDecl); } set @@ -6179,7 +6477,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public global::System.IntPtr TemplatedDecl; @@ -6220,37 +6518,45 @@ namespace CppSharp internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance); } - internal ClassTemplate(ClassTemplate.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassTemplate __CreateInstance(global::System.IntPtr native) { + return new ClassTemplate((ClassTemplate.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassTemplate.Internal native) + private static ClassTemplate.Internal* __CopyValue(ClassTemplate.Internal native) { var ret = Marshal.AllocHGlobal(148); CppSharp.Parser.AST.ClassTemplate.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassTemplate.Internal*) ret; } internal ClassTemplate(ClassTemplate.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassTemplate(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ClassTemplate(ClassTemplate.Internal* native, bool isInternalImpl = false) + : base((Template.Internal*) native) { } public ClassTemplate() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(148); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6258,7 +6564,7 @@ namespace CppSharp { var __ret = Internal.getSpecializations_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ClassTemplateSpecialization(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret); } public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization s) @@ -6315,10 +6621,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; - - [FieldOffset(204)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(212)] public bool IsAnonymous; @@ -6395,37 +6698,45 @@ namespace CppSharp internal static extern uint getArgumentsCount_0(global::System.IntPtr instance); } - internal ClassTemplateSpecialization(ClassTemplateSpecialization.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassTemplateSpecialization __CreateInstance(global::System.IntPtr native) { + return new ClassTemplateSpecialization((ClassTemplateSpecialization.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassTemplateSpecialization.Internal native) + private static ClassTemplateSpecialization.Internal* __CopyValue(ClassTemplateSpecialization.Internal native) { var ret = Marshal.AllocHGlobal(300); CppSharp.Parser.AST.ClassTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassTemplateSpecialization.Internal*) ret; } internal ClassTemplateSpecialization(ClassTemplateSpecialization.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassTemplateSpecialization(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ClassTemplateSpecialization(ClassTemplateSpecialization.Internal* native, bool isInternalImpl = false) + : base((Class.Internal*) native) { } public ClassTemplateSpecialization() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(300); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6461,7 +6772,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ClassTemplate(__ptr->TemplatedDecl); + return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassTemplate.__CreateInstance(__ptr->TemplatedDecl); } set @@ -6520,10 +6831,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; - - [FieldOffset(204)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(212)] public bool IsAnonymous; @@ -6580,37 +6888,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal ClassTemplatePartialSpecialization(ClassTemplatePartialSpecialization.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassTemplatePartialSpecialization __CreateInstance(global::System.IntPtr native) { + return new ClassTemplatePartialSpecialization((ClassTemplatePartialSpecialization.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassTemplatePartialSpecialization.Internal native) + private static ClassTemplatePartialSpecialization.Internal* __CopyValue(ClassTemplatePartialSpecialization.Internal native) { var ret = Marshal.AllocHGlobal(300); CppSharp.Parser.AST.ClassTemplatePartialSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassTemplatePartialSpecialization.Internal*) ret; } internal ClassTemplatePartialSpecialization(ClassTemplatePartialSpecialization.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassTemplatePartialSpecialization(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ClassTemplatePartialSpecialization(ClassTemplatePartialSpecialization.Internal* native, bool isInternalImpl = false) + : base((ClassTemplateSpecialization.Internal*) native) { } public ClassTemplatePartialSpecialization() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(300); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -6648,7 +6964,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public global::System.IntPtr TemplatedDecl; @@ -6689,37 +7005,45 @@ namespace CppSharp internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance); } - internal FunctionTemplate(FunctionTemplate.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FunctionTemplate __CreateInstance(global::System.IntPtr native) { + return new FunctionTemplate((FunctionTemplate.Internal*) native); } - private static global::System.IntPtr __CopyValue(FunctionTemplate.Internal native) + private static FunctionTemplate.Internal* __CopyValue(FunctionTemplate.Internal native) { var ret = Marshal.AllocHGlobal(148); CppSharp.Parser.AST.FunctionTemplate.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (FunctionTemplate.Internal*) ret; } internal FunctionTemplate(FunctionTemplate.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FunctionTemplate(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected FunctionTemplate(FunctionTemplate.Internal* native, bool isInternalImpl = false) + : base((Template.Internal*) native) { } public FunctionTemplate() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(148); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6727,7 +7051,7 @@ namespace CppSharp { var __ret = Internal.getSpecializations_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FunctionTemplateSpecialization(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplateSpecialization.__CreateInstance(__ret); } public void addSpecializations(CppSharp.Parser.AST.FunctionTemplateSpecialization s) @@ -6803,31 +7127,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal FunctionTemplateSpecialization(FunctionTemplateSpecialization.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FunctionTemplateSpecialization __CreateInstance(global::System.IntPtr native) { + return new FunctionTemplateSpecialization((FunctionTemplateSpecialization.Internal*) native); } - private static global::System.IntPtr __CopyValue(FunctionTemplateSpecialization.Internal native) + private static FunctionTemplateSpecialization.Internal* __CopyValue(FunctionTemplateSpecialization.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (FunctionTemplateSpecialization.Internal*) ret; } internal FunctionTemplateSpecialization(FunctionTemplateSpecialization.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FunctionTemplateSpecialization(global::System.IntPtr native, bool isInternalImpl = false) + protected FunctionTemplateSpecialization(FunctionTemplateSpecialization.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public FunctionTemplateSpecialization() { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -6840,7 +7168,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TemplateArgument getArguments(uint i) @@ -6875,7 +7206,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Template == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FunctionTemplate(__ptr->Template); + return (__ptr->Template == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplate.__CreateInstance(__ptr->Template); } set @@ -6890,7 +7221,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->SpecializedFunction == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Function(__ptr->SpecializedFunction); + return (__ptr->SpecializedFunction == IntPtr.Zero) ? null : CppSharp.Parser.AST.Function.__CreateInstance(__ptr->SpecializedFunction); } set @@ -6949,10 +7280,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; - - [FieldOffset(204)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(212)] public bool IsAnonymous; @@ -6976,37 +7304,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Namespace(Namespace.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Namespace __CreateInstance(global::System.IntPtr native) { + return new Namespace((Namespace.Internal*) native); } - private static global::System.IntPtr __CopyValue(Namespace.Internal native) + private static Namespace.Internal* __CopyValue(Namespace.Internal native) { var ret = Marshal.AllocHGlobal(220); CppSharp.Parser.AST.Namespace.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Namespace.Internal*) ret; } internal Namespace(Namespace.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Namespace(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Namespace(Namespace.Internal* native, bool isInternalImpl = false) + : base((DeclarationContext.Internal*) native) { } public Namespace() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(220); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7059,7 +7395,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public CppSharp.Parser.AST.MacroLocation MacroLocation; @@ -7080,37 +7416,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal PreprocessedEntity(PreprocessedEntity.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new PreprocessedEntity __CreateInstance(global::System.IntPtr native) { + return new PreprocessedEntity((PreprocessedEntity.Internal*) native); } - private static global::System.IntPtr __CopyValue(PreprocessedEntity.Internal native) + private static PreprocessedEntity.Internal* __CopyValue(PreprocessedEntity.Internal native) { var ret = Marshal.AllocHGlobal(124); CppSharp.Parser.AST.PreprocessedEntity.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (PreprocessedEntity.Internal*) ret; } internal PreprocessedEntity(PreprocessedEntity.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public PreprocessedEntity(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected PreprocessedEntity(PreprocessedEntity.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public PreprocessedEntity() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(124); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7163,7 +7507,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public CppSharp.Parser.AST.MacroLocation MacroLocation; @@ -7194,37 +7538,45 @@ namespace CppSharp internal static extern void setExpression_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal MacroDefinition(MacroDefinition.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new MacroDefinition __CreateInstance(global::System.IntPtr native) { + return new MacroDefinition((MacroDefinition.Internal*) native); } - private static global::System.IntPtr __CopyValue(MacroDefinition.Internal native) + private static MacroDefinition.Internal* __CopyValue(MacroDefinition.Internal native) { var ret = Marshal.AllocHGlobal(148); CppSharp.Parser.AST.MacroDefinition.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (MacroDefinition.Internal*) ret; } internal MacroDefinition(MacroDefinition.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public MacroDefinition(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected MacroDefinition(MacroDefinition.Internal* native, bool isInternalImpl = false) + : base((PreprocessedEntity.Internal*) native) { } public MacroDefinition() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(148); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7279,7 +7631,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public CppSharp.Parser.AST.MacroLocation MacroLocation; @@ -7313,37 +7665,45 @@ namespace CppSharp internal static extern void setText_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal MacroExpansion(MacroExpansion.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new MacroExpansion __CreateInstance(global::System.IntPtr native) { + return new MacroExpansion((MacroExpansion.Internal*) native); } - private static global::System.IntPtr __CopyValue(MacroExpansion.Internal native) + private static MacroExpansion.Internal* __CopyValue(MacroExpansion.Internal native) { var ret = Marshal.AllocHGlobal(152); CppSharp.Parser.AST.MacroExpansion.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (MacroExpansion.Internal*) ret; } internal MacroExpansion(MacroExpansion.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public MacroExpansion(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected MacroExpansion(MacroExpansion.Internal* native, bool isInternalImpl = false) + : base((PreprocessedEntity.Internal*) native) { } public MacroExpansion() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(152); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7369,7 +7729,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Definition == IntPtr.Zero) ? null : new CppSharp.Parser.AST.MacroDefinition(__ptr->Definition); + return (__ptr->Definition == IntPtr.Zero) ? null : CppSharp.Parser.AST.MacroDefinition.__CreateInstance(__ptr->Definition); } set @@ -7413,10 +7773,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(92)] - public void* OriginalPtr; - - [FieldOffset(204)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(212)] public bool IsAnonymous; @@ -7473,37 +7830,45 @@ namespace CppSharp internal static extern uint getMacrosCount_0(global::System.IntPtr instance); } - internal TranslationUnit(TranslationUnit.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TranslationUnit __CreateInstance(global::System.IntPtr native) { + return new TranslationUnit((TranslationUnit.Internal*) native); } - private static global::System.IntPtr __CopyValue(TranslationUnit.Internal native) + private static TranslationUnit.Internal* __CopyValue(TranslationUnit.Internal native) { var ret = Marshal.AllocHGlobal(260); CppSharp.Parser.AST.TranslationUnit.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TranslationUnit.Internal*) ret; } internal TranslationUnit(TranslationUnit.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TranslationUnit(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TranslationUnit(TranslationUnit.Internal* native, bool isInternalImpl = false) + : base((Namespace.Internal*) native) { } public TranslationUnit() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(260); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7511,7 +7876,7 @@ namespace CppSharp { var __ret = Internal.getMacros_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.MacroDefinition(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.MacroDefinition.__CreateInstance(__ret); } public void addMacros(CppSharp.Parser.AST.MacroDefinition s) @@ -7643,31 +8008,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal NativeLibrary(NativeLibrary.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new NativeLibrary __CreateInstance(global::System.IntPtr native) { + return new NativeLibrary((NativeLibrary.Internal*) native); } - private static global::System.IntPtr __CopyValue(NativeLibrary.Internal native) + private static NativeLibrary.Internal* __CopyValue(NativeLibrary.Internal native) { var ret = Marshal.AllocHGlobal(52); CppSharp.Parser.AST.NativeLibrary.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (NativeLibrary.Internal*) ret; } internal NativeLibrary(NativeLibrary.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public NativeLibrary(global::System.IntPtr native, bool isInternalImpl = false) + protected NativeLibrary(NativeLibrary.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public NativeLibrary() { __Instance = Marshal.AllocHGlobal(52); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -7680,7 +8049,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string getSymbols(uint i) @@ -7815,31 +8187,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ASTContext(ASTContext.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ASTContext __CreateInstance(global::System.IntPtr native) { + return new ASTContext((ASTContext.Internal*) native); } - private static global::System.IntPtr __CopyValue(ASTContext.Internal native) + private static ASTContext.Internal* __CopyValue(ASTContext.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.ASTContext.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ASTContext.Internal*) ret; } internal ASTContext(ASTContext.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ASTContext(global::System.IntPtr native, bool isInternalImpl = false) + protected ASTContext(ASTContext.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ASTContext() { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -7852,14 +8228,17 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TranslationUnit getTranslationUnits(uint i) { var __ret = Internal.getTranslationUnits_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TranslationUnit(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TranslationUnit.__CreateInstance(__ret); } public void addTranslationUnits(CppSharp.Parser.AST.TranslationUnit s) @@ -7904,31 +8283,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Comment(Comment.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Comment __CreateInstance(global::System.IntPtr native) { + return new Comment((Comment.Internal*) native); } - private static global::System.IntPtr __CopyValue(Comment.Internal native) + private static Comment.Internal* __CopyValue(Comment.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(4); - *(Comment.Internal*) ret = native; + Comment.Internal* ret = (Comment.Internal*) Marshal.AllocHGlobal(4); + *ret = native; return ret; } internal Comment(Comment.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Comment(global::System.IntPtr native, bool isInternalImpl = false) + protected Comment(Comment.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public Comment(CppSharp.Parser.AST.CommentKind kind) { __Instance = Marshal.AllocHGlobal(4); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } @@ -7941,7 +8324,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.CommentKind Kind @@ -7979,37 +8365,45 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_1(global::System.IntPtr instance, global::System.IntPtr _0); } - internal FullComment(FullComment.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FullComment __CreateInstance(global::System.IntPtr native) { + return new FullComment((FullComment.Internal*) native); } - private static global::System.IntPtr __CopyValue(FullComment.Internal native) + private static FullComment.Internal* __CopyValue(FullComment.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(4); - *(FullComment.Internal*) ret = native; + FullComment.Internal* ret = (FullComment.Internal*) Marshal.AllocHGlobal(4); + *ret = native; return ret; } internal FullComment(FullComment.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FullComment(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected FullComment(FullComment.Internal* native, bool isInternalImpl = false) + : base((Comment.Internal*) native) { } public FullComment() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(4); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -8063,31 +8457,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal RawComment(RawComment.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new RawComment __CreateInstance(global::System.IntPtr native) { + return new RawComment((RawComment.Internal*) native); } - private static global::System.IntPtr __CopyValue(RawComment.Internal native) + private static RawComment.Internal* __CopyValue(RawComment.Internal native) { var ret = Marshal.AllocHGlobal(56); CppSharp.Parser.AST.RawComment.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (RawComment.Internal*) ret; } internal RawComment(RawComment.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public RawComment(global::System.IntPtr native, bool isInternalImpl = false) + protected RawComment(RawComment.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public RawComment() { __Instance = Marshal.AllocHGlobal(56); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -8100,7 +8498,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string Text @@ -8157,7 +8558,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->FullCommentBlock == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FullComment(__ptr->FullCommentBlock); + return (__ptr->FullCommentBlock == IntPtr.Zero) ? null : CppSharp.Parser.AST.FullComment.__CreateInstance(__ptr->FullCommentBlock); } set 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 47f58d25..ec5bd156 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs @@ -232,31 +232,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ParserOptions(ParserOptions.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ParserOptions __CreateInstance(global::System.IntPtr native) { + return new ParserOptions((ParserOptions.Internal*) native); } - private static global::System.IntPtr __CopyValue(ParserOptions.Internal native) + private static ParserOptions.Internal* __CopyValue(ParserOptions.Internal native) { var ret = Marshal.AllocHGlobal(140); CppSharp.Parser.ParserOptions.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ParserOptions.Internal*) ret; } internal ParserOptions(ParserOptions.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ParserOptions(global::System.IntPtr native, bool isInternalImpl = false) + protected ParserOptions(ParserOptions.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ParserOptions() { __Instance = Marshal.AllocHGlobal(140); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -269,7 +273,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string getArguments(uint i) @@ -479,7 +486,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->ASTContext == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ASTContext(__ptr->ASTContext); + return (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); } set @@ -595,7 +602,7 @@ namespace CppSharp } } - public unsafe partial class ParserDiagnostic : IDisposable + public unsafe partial struct ParserDiagnostic { [StructLayout(LayoutKind.Explicit, Size = 60)] public partial struct Internal @@ -645,53 +652,49 @@ namespace CppSharp internal static extern void setMessage_0(global::System.IntPtr instance, global::System.IntPtr s); } - public global::System.IntPtr __Instance { get; protected set; } - - internal ParserDiagnostic(ParserDiagnostic.Internal* native) - : this(new global::System.IntPtr(native)) - { - } - - private static global::System.IntPtr __CopyValue(ParserDiagnostic.Internal native) + public static new ParserDiagnostic __CreateInstance(global::System.IntPtr native) { - var ret = Marshal.AllocHGlobal(60); - CppSharp.Parser.ParserDiagnostic.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return new ParserDiagnostic((ParserDiagnostic.Internal*) native); } internal ParserDiagnostic(ParserDiagnostic.Internal native) - : this(__CopyValue(native)) - { - } - - public ParserDiagnostic(global::System.IntPtr native, bool isInternalImpl = false) + : this(&native) { - __Instance = native; } - public ParserDiagnostic() + private ParserDiagnostic(ParserDiagnostic.Internal* native, bool isInternalImpl = false) : this() { - __Instance = Marshal.AllocHGlobal(60); - Internal.ctor_0(__Instance); + var __ptr = native; + Level = __ptr->Level; + LineNumber = __ptr->LineNumber; + ColumnNumber = __ptr->ColumnNumber; } - public void Dispose() + internal Internal ToInternal() { - Dispose(disposing: true); - GC.SuppressFinalize(this); + var __native = new CppSharp.Parser.ParserDiagnostic.Internal(); + var __ptr = &__native; + __native.Level = Level; + __native.LineNumber = LineNumber; + __native.ColumnNumber = ColumnNumber; + return __native; } - protected virtual void Dispose(bool disposing) + internal void FromInternal(Internal* native) { - Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + var __ptr = native; + Level = __ptr->Level; + LineNumber = __ptr->LineNumber; + ColumnNumber = __ptr->ColumnNumber; } public string FileName { get { - var __ret = Internal.getFileName_0(__Instance); + var __fixedInstance = ToInternal(); + var __ret = Internal.getFileName_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -699,8 +702,10 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - Internal.setFileName_0(__Instance, arg0); + var __fixedInstance = ToInternal(); + Internal.setFileName_0(new global::System.IntPtr(&__fixedInstance), arg0); Marshal.FreeHGlobal(arg0); + FromInternal(&__fixedInstance); } } @@ -708,7 +713,9 @@ namespace CppSharp { get { - var __ret = Internal.getMessage_0(__Instance); + var __fixedInstance = ToInternal(); + var __ret = Internal.getMessage_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -716,58 +723,36 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - Internal.setMessage_0(__Instance, arg0); + var __fixedInstance = ToInternal(); + Internal.setMessage_0(new global::System.IntPtr(&__fixedInstance), arg0); Marshal.FreeHGlobal(arg0); + FromInternal(&__fixedInstance); } } public CppSharp.Parser.ParserDiagnosticLevel Level { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->Level; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->Level = value; - } + set; } public int LineNumber { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->LineNumber; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->LineNumber = value; - } + set; } public int ColumnNumber { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->ColumnNumber; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->ColumnNumber = value; - } + set; } } - public unsafe partial class ParserResult : IDisposable + public unsafe partial struct ParserResult { [StructLayout(LayoutKind.Explicit, Size = 28)] public partial struct Internal @@ -820,118 +805,103 @@ namespace CppSharp internal static extern uint getDiagnosticsCount_0(global::System.IntPtr instance); } - public global::System.IntPtr __Instance { get; protected set; } - - internal ParserResult(ParserResult.Internal* native) - : this(new global::System.IntPtr(native)) - { - } - - private static global::System.IntPtr __CopyValue(ParserResult.Internal native) + public static new ParserResult __CreateInstance(global::System.IntPtr native) { - var ret = Marshal.AllocHGlobal(28); - CppSharp.Parser.ParserResult.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return new ParserResult((ParserResult.Internal*) native); } internal ParserResult(ParserResult.Internal native) - : this(__CopyValue(native)) - { - } - - public ParserResult(global::System.IntPtr native, bool isInternalImpl = false) + : this(&native) { - __Instance = native; } - public ParserResult() + private ParserResult(ParserResult.Internal* native, bool isInternalImpl = false) : this() { - __Instance = Marshal.AllocHGlobal(28); - Internal.ctor_0(__Instance); + 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); } - public void Dispose() + internal Internal ToInternal() { - Dispose(disposing: true); - GC.SuppressFinalize(this); + 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; } - protected virtual void Dispose(bool disposing) + internal void FromInternal(Internal* native) { - Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + 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); } public CppSharp.Parser.ParserDiagnostic getDiagnostics(uint i) { var __ret = new CppSharp.Parser.ParserDiagnostic.Internal(); - Internal.getDiagnostics_0(__Instance, new IntPtr(&__ret), i); + var __fixedInstance = ToInternal(); + Internal.getDiagnostics_0(new global::System.IntPtr(&__fixedInstance), new IntPtr(&__ret), i); + FromInternal(&__fixedInstance); return new CppSharp.Parser.ParserDiagnostic(__ret); } public void addDiagnostics(CppSharp.Parser.ParserDiagnostic s) { - var arg0 = s == (CppSharp.Parser.ParserDiagnostic) null ? global::System.IntPtr.Zero : s.__Instance; - Internal.addDiagnostics_0(__Instance, arg0); + 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); } public void clearDiagnostics() { - Internal.clearDiagnostics_0(__Instance); + var __fixedInstance = ToInternal(); + Internal.clearDiagnostics_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); } public uint DiagnosticsCount { get { - var __ret = Internal.getDiagnosticsCount_0(__Instance); + var __fixedInstance = ToInternal(); + var __ret = Internal.getDiagnosticsCount_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); return __ret; } } public CppSharp.Parser.ParserResultKind Kind { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->Kind; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->Kind = value; - } + set; } public CppSharp.Parser.AST.ASTContext ASTContext { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->ASTContext == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ASTContext(__ptr->ASTContext); - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->ASTContext = value == (CppSharp.Parser.AST.ASTContext) null ? global::System.IntPtr.Zero : value.__Instance; - } + set; } public CppSharp.Parser.AST.NativeLibrary Library { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Library == IntPtr.Zero) ? null : new CppSharp.Parser.AST.NativeLibrary(__ptr->Library); - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->Library = value == (CppSharp.Parser.AST.NativeLibrary) null ? global::System.IntPtr.Zero : value.__Instance; - } + set; } } @@ -963,31 +933,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ClangParser(ClangParser.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClangParser __CreateInstance(global::System.IntPtr native) { + return new ClangParser((ClangParser.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClangParser.Internal native) + private static ClangParser.Internal* __CopyValue(ClangParser.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(1); - *(ClangParser.Internal*) ret = native; + ClangParser.Internal* ret = (ClangParser.Internal*) Marshal.AllocHGlobal(1); + *ret = native; return ret; } internal ClangParser(ClangParser.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClangParser(global::System.IntPtr native, bool isInternalImpl = false) + protected ClangParser(ClangParser.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ClangParser() { __Instance = Marshal.AllocHGlobal(1); + __ownsNativeInstance = true; } public void Dispose() @@ -998,23 +972,26 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public static CppSharp.Parser.ParserResult ParseHeader(CppSharp.Parser.ParserOptions Opts) { 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 null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.ParserResult(__ret); + if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); + return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : 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 null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.ParserResult(__ret); + if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); + return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } public static CppSharp.Parser.ParserTargetInfo GetTargetInfo(CppSharp.Parser.ParserOptions Opts) @@ -1022,7 +999,7 @@ namespace CppSharp var arg0 = Opts == (CppSharp.Parser.ParserOptions) null ? global::System.IntPtr.Zero : Opts.__Instance; var __ret = Internal.GetTargetInfo_0(arg0); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.ParserTargetInfo(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); } } } 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 82a4b9aa..c92c9973 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Sources.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Sources.cs @@ -34,9 +34,9 @@ namespace CppSharp internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal SourceLocation(SourceLocation.Internal* native) - : this(new global::System.IntPtr(native)) + public static new SourceLocation __CreateInstance(global::System.IntPtr native) { + return new SourceLocation((SourceLocation.Internal*) native); } internal SourceLocation(SourceLocation.Internal native) @@ -44,9 +44,9 @@ namespace CppSharp { } - public SourceLocation(global::System.IntPtr native, bool isInternalImpl = false) : this() + private SourceLocation(SourceLocation.Internal* native, bool isInternalImpl = false) : this() { - var __ptr = (Internal*)native.ToPointer(); + var __ptr = native; ID = __ptr->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 91be5521..cb6fc8f4 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs @@ -172,31 +172,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ParserTargetInfo(ParserTargetInfo.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ParserTargetInfo __CreateInstance(global::System.IntPtr native) { + return new ParserTargetInfo((ParserTargetInfo.Internal*) native); } - private static global::System.IntPtr __CopyValue(ParserTargetInfo.Internal native) + private static ParserTargetInfo.Internal* __CopyValue(ParserTargetInfo.Internal native) { var ret = Marshal.AllocHGlobal(176); CppSharp.Parser.ParserTargetInfo.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ParserTargetInfo.Internal*) ret; } internal ParserTargetInfo(ParserTargetInfo.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ParserTargetInfo(global::System.IntPtr native, bool isInternalImpl = false) + protected ParserTargetInfo(ParserTargetInfo.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ParserTargetInfo() { __Instance = Marshal.AllocHGlobal(176); + __ownsNativeInstance = true; Internal.ctor_1(__Instance); } @@ -209,7 +213,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string ABI diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs index 3a92c6c0..0ac50982 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs @@ -247,31 +247,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Type(Type.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Type __CreateInstance(global::System.IntPtr native) { + return new Type((Type.Internal*) native); } - private static global::System.IntPtr __CopyValue(Type.Internal native) + private static Type.Internal* __CopyValue(Type.Internal native) { var ret = Marshal.AllocHGlobal(8); CppSharp.Parser.AST.Type.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Type.Internal*) ret; } internal Type(Type.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Type(global::System.IntPtr native, bool isInternalImpl = false) + protected Type(Type.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public Type(CppSharp.Parser.AST.TypeKind kind) { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } @@ -284,7 +288,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TypeKind Kind @@ -340,31 +347,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal TypeQualifiers(TypeQualifiers.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TypeQualifiers __CreateInstance(global::System.IntPtr native) { + return new TypeQualifiers((TypeQualifiers.Internal*) native); } - private static global::System.IntPtr __CopyValue(TypeQualifiers.Internal native) + private static TypeQualifiers.Internal* __CopyValue(TypeQualifiers.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(3); - *(TypeQualifiers.Internal*) ret = native; + TypeQualifiers.Internal* ret = (TypeQualifiers.Internal*) Marshal.AllocHGlobal(3); + *ret = native; return ret; } internal TypeQualifiers(TypeQualifiers.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TypeQualifiers(global::System.IntPtr native, bool isInternalImpl = false) + protected TypeQualifiers(TypeQualifiers.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public TypeQualifiers() { __Instance = Marshal.AllocHGlobal(3); + __ownsNativeInstance = true; } public void Dispose() @@ -375,7 +386,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public bool IsConst @@ -448,31 +462,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal QualifiedType(QualifiedType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new QualifiedType __CreateInstance(global::System.IntPtr native) { + return new QualifiedType((QualifiedType.Internal*) native); } - private static global::System.IntPtr __CopyValue(QualifiedType.Internal native) + private static QualifiedType.Internal* __CopyValue(QualifiedType.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(16); - *(QualifiedType.Internal*) ret = native; + QualifiedType.Internal* ret = (QualifiedType.Internal*) Marshal.AllocHGlobal(16); + *ret = native; return ret; } internal QualifiedType(QualifiedType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public QualifiedType(global::System.IntPtr native, bool isInternalImpl = false) + protected QualifiedType(QualifiedType.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public QualifiedType() { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -484,7 +502,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.Type Type @@ -492,7 +513,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Type == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Type); + return (__ptr->Type == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Type); } set @@ -543,37 +564,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal TagType(TagType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TagType __CreateInstance(global::System.IntPtr native) { + return new TagType((TagType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TagType.Internal native) + private static TagType.Internal* __CopyValue(TagType.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.TagType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TagType.Internal*) ret; } internal TagType(TagType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TagType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TagType(TagType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TagType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -582,7 +611,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Declaration); } set @@ -632,37 +661,45 @@ namespace CppSharp Incomplete = 3 } - internal ArrayType(ArrayType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ArrayType __CreateInstance(global::System.IntPtr native) { + return new ArrayType((ArrayType.Internal*) native); } - private static global::System.IntPtr __CopyValue(ArrayType.Internal native) + private static ArrayType.Internal* __CopyValue(ArrayType.Internal native) { var ret = Marshal.AllocHGlobal(40); CppSharp.Parser.AST.ArrayType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ArrayType.Internal*) ret; } internal ArrayType(ArrayType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ArrayType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ArrayType(ArrayType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public ArrayType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -765,37 +802,45 @@ namespace CppSharp internal static extern uint getParametersCount_0(global::System.IntPtr instance); } - internal FunctionType(FunctionType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FunctionType __CreateInstance(global::System.IntPtr native) { + return new FunctionType((FunctionType.Internal*) native); } - private static global::System.IntPtr __CopyValue(FunctionType.Internal native) + private static FunctionType.Internal* __CopyValue(FunctionType.Internal native) { var ret = Marshal.AllocHGlobal(56); CppSharp.Parser.AST.FunctionType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (FunctionType.Internal*) ret; } internal FunctionType(FunctionType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FunctionType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected FunctionType(FunctionType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public FunctionType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(56); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -803,7 +848,7 @@ namespace CppSharp { var __ret = Internal.getParameters_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Parameter(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Parameter.__CreateInstance(__ret); } public void addParameters(CppSharp.Parser.AST.Parameter s) @@ -893,37 +938,45 @@ namespace CppSharp RVReference = 3 } - internal PointerType(PointerType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new PointerType __CreateInstance(global::System.IntPtr native) { + return new PointerType((PointerType.Internal*) native); } - private static global::System.IntPtr __CopyValue(PointerType.Internal native) + private static PointerType.Internal* __CopyValue(PointerType.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.PointerType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (PointerType.Internal*) ret; } internal PointerType(PointerType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public PointerType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected PointerType(PointerType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public PointerType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(32); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -983,37 +1036,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal MemberPointerType(MemberPointerType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new MemberPointerType __CreateInstance(global::System.IntPtr native) { + return new MemberPointerType((MemberPointerType.Internal*) native); } - private static global::System.IntPtr __CopyValue(MemberPointerType.Internal native) + private static MemberPointerType.Internal* __CopyValue(MemberPointerType.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.MemberPointerType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (MemberPointerType.Internal*) ret; } internal MemberPointerType(MemberPointerType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public MemberPointerType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected MemberPointerType(MemberPointerType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public MemberPointerType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1058,37 +1119,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal TypedefType(TypedefType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TypedefType __CreateInstance(global::System.IntPtr native) { + return new TypedefType((TypedefType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TypedefType.Internal native) + private static TypedefType.Internal* __CopyValue(TypedefType.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.TypedefType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TypedefType.Internal*) ret; } internal TypedefType(TypedefType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TypedefType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TypedefType(TypedefType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TypedefType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1097,7 +1166,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TypedefDecl(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.TypedefDecl.__CreateInstance(__ptr->Declaration); } set @@ -1136,37 +1205,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal AttributedType(AttributedType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new AttributedType __CreateInstance(global::System.IntPtr native) { + return new AttributedType((AttributedType.Internal*) native); } - private static global::System.IntPtr __CopyValue(AttributedType.Internal native) + private static AttributedType.Internal* __CopyValue(AttributedType.Internal native) { var ret = Marshal.AllocHGlobal(40); CppSharp.Parser.AST.AttributedType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (AttributedType.Internal*) ret; } internal AttributedType(AttributedType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public AttributedType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected AttributedType(AttributedType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public AttributedType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1232,37 +1309,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal DecayedType(DecayedType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new DecayedType __CreateInstance(global::System.IntPtr native) { + return new DecayedType((DecayedType.Internal*) native); } - private static global::System.IntPtr __CopyValue(DecayedType.Internal native) + private static DecayedType.Internal* __CopyValue(DecayedType.Internal native) { var ret = Marshal.AllocHGlobal(56); CppSharp.Parser.AST.DecayedType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (DecayedType.Internal*) ret; } internal DecayedType(DecayedType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public DecayedType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected DecayedType(DecayedType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public DecayedType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(56); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1354,31 +1439,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal TemplateArgument(TemplateArgument.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateArgument __CreateInstance(global::System.IntPtr native) { + return new TemplateArgument((TemplateArgument.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateArgument.Internal native) + private static TemplateArgument.Internal* __CopyValue(TemplateArgument.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(40); - *(TemplateArgument.Internal*) ret = native; + TemplateArgument.Internal* ret = (TemplateArgument.Internal*) Marshal.AllocHGlobal(40); + *ret = native; return ret; } internal TemplateArgument(TemplateArgument.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateArgument(global::System.IntPtr native, bool isInternalImpl = false) + protected TemplateArgument(TemplateArgument.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public TemplateArgument() { __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -1390,7 +1479,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TemplateArgument.ArgumentKind Kind @@ -1428,7 +1520,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Declaration); } set @@ -1507,37 +1599,45 @@ namespace CppSharp internal static extern uint getArgumentsCount_0(global::System.IntPtr instance); } - internal TemplateSpecializationType(TemplateSpecializationType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateSpecializationType __CreateInstance(global::System.IntPtr native) { + return new TemplateSpecializationType((TemplateSpecializationType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateSpecializationType.Internal native) + private static TemplateSpecializationType.Internal* __CopyValue(TemplateSpecializationType.Internal native) { var ret = Marshal.AllocHGlobal(48); CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateSpecializationType.Internal*) ret; } internal TemplateSpecializationType(TemplateSpecializationType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateSpecializationType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TemplateSpecializationType(TemplateSpecializationType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TemplateSpecializationType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(48); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1573,7 +1673,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Template == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Template(__ptr->Template); + return (__ptr->Template == IntPtr.Zero) ? null : CppSharp.Parser.AST.Template.__CreateInstance(__ptr->Template); } set @@ -1588,7 +1688,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Desugared == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Desugared); + return (__ptr->Desugared == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Desugared); } set @@ -1641,31 +1741,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal TemplateParameter(TemplateParameter.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateParameter __CreateInstance(global::System.IntPtr native) { + return new TemplateParameter((TemplateParameter.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateParameter.Internal native) + private static TemplateParameter.Internal* __CopyValue(TemplateParameter.Internal native) { var ret = Marshal.AllocHGlobal(16); CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateParameter.Internal*) ret; } internal TemplateParameter(TemplateParameter.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateParameter(global::System.IntPtr native, bool isInternalImpl = false) + protected TemplateParameter(TemplateParameter.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public TemplateParameter() { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -1678,7 +1782,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public static bool operator !=(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param) @@ -1766,37 +1873,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal TemplateParameterType(TemplateParameterType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateParameterType __CreateInstance(global::System.IntPtr native) { + return new TemplateParameterType((TemplateParameterType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateParameterType.Internal native) + private static TemplateParameterType.Internal* __CopyValue(TemplateParameterType.Internal native) { var ret = Marshal.AllocHGlobal(40); CppSharp.Parser.AST.TemplateParameterType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateParameterType.Internal*) ret; } internal TemplateParameterType(TemplateParameterType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateParameterType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TemplateParameterType(TemplateParameterType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TemplateParameterType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1886,37 +2001,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal TemplateParameterSubstitutionType(TemplateParameterSubstitutionType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TemplateParameterSubstitutionType __CreateInstance(global::System.IntPtr native) { + return new TemplateParameterSubstitutionType((TemplateParameterSubstitutionType.Internal*) native); } - private static global::System.IntPtr __CopyValue(TemplateParameterSubstitutionType.Internal native) + private static TemplateParameterSubstitutionType.Internal* __CopyValue(TemplateParameterSubstitutionType.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.TemplateParameterSubstitutionType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (TemplateParameterSubstitutionType.Internal*) ret; } internal TemplateParameterSubstitutionType(TemplateParameterSubstitutionType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TemplateParameterSubstitutionType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TemplateParameterSubstitutionType(TemplateParameterSubstitutionType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public TemplateParameterSubstitutionType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -1964,37 +2087,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal InjectedClassNameType(InjectedClassNameType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new InjectedClassNameType __CreateInstance(global::System.IntPtr native) { + return new InjectedClassNameType((InjectedClassNameType.Internal*) native); } - private static global::System.IntPtr __CopyValue(InjectedClassNameType.Internal native) + private static InjectedClassNameType.Internal* __CopyValue(InjectedClassNameType.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.InjectedClassNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (InjectedClassNameType.Internal*) ret; } internal InjectedClassNameType(InjectedClassNameType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public InjectedClassNameType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected InjectedClassNameType(InjectedClassNameType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public InjectedClassNameType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -2003,7 +2134,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->TemplateSpecialization == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TemplateSpecializationType(__ptr->TemplateSpecialization); + return (__ptr->TemplateSpecialization == IntPtr.Zero) ? null : CppSharp.Parser.AST.TemplateSpecializationType.__CreateInstance(__ptr->TemplateSpecialization); } set @@ -2018,7 +2149,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Class == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Class(__ptr->Class); + return (__ptr->Class == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ptr->Class); } set @@ -2051,37 +2182,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal DependentNameType(DependentNameType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new DependentNameType __CreateInstance(global::System.IntPtr native) { + return new DependentNameType((DependentNameType.Internal*) native); } - private static global::System.IntPtr __CopyValue(DependentNameType.Internal native) + private static DependentNameType.Internal* __CopyValue(DependentNameType.Internal native) { var ret = Marshal.AllocHGlobal(8); CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (DependentNameType.Internal*) ret; } internal DependentNameType(DependentNameType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public DependentNameType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected DependentNameType(DependentNameType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public DependentNameType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -2108,37 +2247,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal PackExpansionType(PackExpansionType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new PackExpansionType __CreateInstance(global::System.IntPtr native) { + return new PackExpansionType((PackExpansionType.Internal*) native); } - private static global::System.IntPtr __CopyValue(PackExpansionType.Internal native) + private static PackExpansionType.Internal* __CopyValue(PackExpansionType.Internal native) { var ret = Marshal.AllocHGlobal(8); CppSharp.Parser.AST.PackExpansionType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (PackExpansionType.Internal*) ret; } internal PackExpansionType(PackExpansionType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public PackExpansionType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected PackExpansionType(PackExpansionType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public PackExpansionType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(8); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -2168,37 +2315,45 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal BuiltinType(BuiltinType.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new BuiltinType __CreateInstance(global::System.IntPtr native) { + return new BuiltinType((BuiltinType.Internal*) native); } - private static global::System.IntPtr __CopyValue(BuiltinType.Internal native) + private static BuiltinType.Internal* __CopyValue(BuiltinType.Internal native) { var ret = Marshal.AllocHGlobal(12); CppSharp.Parser.AST.BuiltinType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (BuiltinType.Internal*) ret; } internal BuiltinType(BuiltinType.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public BuiltinType(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected BuiltinType(BuiltinType.Internal* native, bool isInternalImpl = false) + : base((Type.Internal*) native) { } public BuiltinType() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(12); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -2245,31 +2400,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal VTableComponent(VTableComponent.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new VTableComponent __CreateInstance(global::System.IntPtr native) { + return new VTableComponent((VTableComponent.Internal*) native); } - private static global::System.IntPtr __CopyValue(VTableComponent.Internal native) + private static VTableComponent.Internal* __CopyValue(VTableComponent.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(16); - *(VTableComponent.Internal*) ret = native; + VTableComponent.Internal* ret = (VTableComponent.Internal*) Marshal.AllocHGlobal(16); + *ret = native; return ret; } internal VTableComponent(VTableComponent.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public VTableComponent(global::System.IntPtr native, bool isInternalImpl = false) + protected VTableComponent(VTableComponent.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public VTableComponent() { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2281,7 +2440,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.VTableComponentKind Kind @@ -2319,7 +2481,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Declaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Declaration); + return (__ptr->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Declaration); } set @@ -2373,31 +2535,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal VTableLayout(VTableLayout.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new VTableLayout __CreateInstance(global::System.IntPtr native) { + return new VTableLayout((VTableLayout.Internal*) native); } - private static global::System.IntPtr __CopyValue(VTableLayout.Internal native) + private static VTableLayout.Internal* __CopyValue(VTableLayout.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.VTableLayout.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (VTableLayout.Internal*) ret; } internal VTableLayout(VTableLayout.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public VTableLayout(global::System.IntPtr native, bool isInternalImpl = false) + protected VTableLayout(VTableLayout.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public VTableLayout() { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2410,7 +2576,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.VTableComponent getComponents(uint i) @@ -2475,31 +2644,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal VFTableInfo(VFTableInfo.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new VFTableInfo __CreateInstance(global::System.IntPtr native) { + return new VFTableInfo((VFTableInfo.Internal*) native); } - private static global::System.IntPtr __CopyValue(VFTableInfo.Internal native) + private static VFTableInfo.Internal* __CopyValue(VFTableInfo.Internal native) { var ret = Marshal.AllocHGlobal(40); CppSharp.Parser.AST.VFTableInfo.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (VFTableInfo.Internal*) ret; } internal VFTableInfo(VFTableInfo.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public VFTableInfo(global::System.IntPtr native, bool isInternalImpl = false) + protected VFTableInfo(VFTableInfo.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public VFTableInfo() { __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2512,7 +2685,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public ulong VBTableIndex @@ -2640,31 +2816,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ClassLayout(ClassLayout.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassLayout __CreateInstance(global::System.IntPtr native) { + return new ClassLayout((ClassLayout.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassLayout.Internal native) + private static ClassLayout.Internal* __CopyValue(ClassLayout.Internal native) { var ret = Marshal.AllocHGlobal(88); CppSharp.Parser.AST.ClassLayout.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassLayout.Internal*) ret; } internal ClassLayout(ClassLayout.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassLayout(global::System.IntPtr native, bool isInternalImpl = false) + protected ClassLayout(ClassLayout.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ClassLayout() { __Instance = Marshal.AllocHGlobal(88); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -2677,7 +2857,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.VFTableInfo getVFTables(uint i) @@ -2846,7 +3029,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2906,31 +3089,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Declaration(Declaration.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Declaration __CreateInstance(global::System.IntPtr native) { + return new Declaration((Declaration.Internal*) native); } - private static global::System.IntPtr __CopyValue(Declaration.Internal native) + private static Declaration.Internal* __CopyValue(Declaration.Internal native) { var ret = Marshal.AllocHGlobal(112); CppSharp.Parser.AST.Declaration.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Declaration.Internal*) ret; } internal Declaration(Declaration.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Declaration(global::System.IntPtr native, bool isInternalImpl = false) + protected Declaration(Declaration.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public Declaration(CppSharp.Parser.AST.DeclarationKind kind) { __Instance = Marshal.AllocHGlobal(112); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } @@ -2944,14 +3131,17 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.PreprocessedEntity getPreprocessedEntities(uint i) { var __ret = Internal.getPreprocessedEntities_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.PreprocessedEntity(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.PreprocessedEntity.__CreateInstance(__ret); } public void addPreprocessedEntities(CppSharp.Parser.AST.PreprocessedEntity s) @@ -3043,7 +3233,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->_Namespace == IntPtr.Zero) ? null : new CppSharp.Parser.AST.DeclarationContext(__ptr->_Namespace); + return (__ptr->_Namespace == IntPtr.Zero) ? null : CppSharp.Parser.AST.DeclarationContext.__CreateInstance(__ptr->_Namespace); } set @@ -3073,7 +3263,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Comment == IntPtr.Zero) ? null : new CppSharp.Parser.AST.RawComment(__ptr->Comment); + return (__ptr->Comment == IntPtr.Zero) ? null : CppSharp.Parser.AST.RawComment.__CreateInstance(__ptr->Comment); } set @@ -3118,7 +3308,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->CompleteDeclaration == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->CompleteDeclaration); + return (__ptr->CompleteDeclaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->CompleteDeclaration); } set @@ -3143,7 +3333,7 @@ namespace CppSharp } } - public void* OriginalPtr + public global::System.IntPtr OriginalPtr { get { @@ -3192,10 +3382,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; - - [FieldOffset(280)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(328)] public bool IsAnonymous; @@ -3356,38 +3543,46 @@ namespace CppSharp internal static extern uint getVariablesCount_0(global::System.IntPtr instance); } - internal DeclarationContext(DeclarationContext.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new DeclarationContext __CreateInstance(global::System.IntPtr native) { + return new DeclarationContext((DeclarationContext.Internal*) native); } - private static global::System.IntPtr __CopyValue(DeclarationContext.Internal native) + private static DeclarationContext.Internal* __CopyValue(DeclarationContext.Internal native) { var ret = Marshal.AllocHGlobal(336); CppSharp.Parser.AST.DeclarationContext.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (DeclarationContext.Internal*) ret; } internal DeclarationContext(DeclarationContext.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public DeclarationContext(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected DeclarationContext(DeclarationContext.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public DeclarationContext(CppSharp.Parser.AST.DeclarationKind kind) - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(336); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -3395,7 +3590,7 @@ namespace CppSharp { var __ret = Internal.getNamespaces_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Namespace(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Namespace.__CreateInstance(__ret); } public void addNamespaces(CppSharp.Parser.AST.Namespace s) @@ -3413,7 +3608,7 @@ namespace CppSharp { var __ret = Internal.getEnums_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Enumeration(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Enumeration.__CreateInstance(__ret); } public void addEnums(CppSharp.Parser.AST.Enumeration s) @@ -3431,7 +3626,7 @@ namespace CppSharp { var __ret = Internal.getFunctions_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Function(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Function.__CreateInstance(__ret); } public void addFunctions(CppSharp.Parser.AST.Function s) @@ -3449,7 +3644,7 @@ namespace CppSharp { var __ret = Internal.getClasses_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Class(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ret); } public void addClasses(CppSharp.Parser.AST.Class s) @@ -3467,7 +3662,7 @@ namespace CppSharp { var __ret = Internal.getTemplates_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Template(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Template.__CreateInstance(__ret); } public void addTemplates(CppSharp.Parser.AST.Template s) @@ -3485,7 +3680,7 @@ namespace CppSharp { var __ret = Internal.getTypedefs_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TypedefDecl(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TypedefDecl.__CreateInstance(__ret); } public void addTypedefs(CppSharp.Parser.AST.TypedefDecl s) @@ -3503,7 +3698,7 @@ namespace CppSharp { var __ret = Internal.getVariables_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Variable(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Variable.__CreateInstance(__ret); } public void addVariables(CppSharp.Parser.AST.Variable s) @@ -3629,7 +3824,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -3650,37 +3845,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal TypedefDecl(TypedefDecl.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TypedefDecl __CreateInstance(global::System.IntPtr native) { + return new TypedefDecl((TypedefDecl.Internal*) native); } - private static global::System.IntPtr __CopyValue(TypedefDecl.Internal native) + private static TypedefDecl.Internal* __CopyValue(TypedefDecl.Internal native) { var ret = Marshal.AllocHGlobal(128); CppSharp.Parser.AST.TypedefDecl.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (TypedefDecl.Internal*) ret; } internal TypedefDecl(TypedefDecl.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TypedefDecl(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TypedefDecl(TypedefDecl.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public TypedefDecl() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(128); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -3734,26 +3937,29 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Statement(Statement.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Statement __CreateInstance(global::System.IntPtr native) { + return new Statement((Statement.Internal*) native); } - private static global::System.IntPtr __CopyValue(Statement.Internal native) + private static Statement.Internal* __CopyValue(Statement.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.Statement.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Statement.Internal*) ret; } internal Statement(Statement.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Statement(global::System.IntPtr native, bool isInternalImpl = false) + protected Statement(Statement.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public void Dispose() @@ -3765,7 +3971,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string String @@ -3805,7 +4014,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Decl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->Decl); + return (__ptr->Decl == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->Decl); } set @@ -3838,30 +4047,37 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Expression(Expression.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Expression __CreateInstance(global::System.IntPtr native) { + return new Expression((Expression.Internal*) native); } - private static global::System.IntPtr __CopyValue(Expression.Internal native) + private static Expression.Internal* __CopyValue(Expression.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.Expression.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Expression.Internal*) ret; } internal Expression(Expression.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Expression(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Expression(Expression.Internal* native, bool isInternalImpl = false) + : base((Statement.Internal*) native) { } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -3899,7 +4115,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -3932,37 +4148,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Parameter(Parameter.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Parameter __CreateInstance(global::System.IntPtr native) { + return new Parameter((Parameter.Internal*) native); } - private static global::System.IntPtr __CopyValue(Parameter.Internal native) + private static Parameter.Internal* __CopyValue(Parameter.Internal native) { var ret = Marshal.AllocHGlobal(144); CppSharp.Parser.AST.Parameter.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Parameter.Internal*) ret; } internal Parameter(Parameter.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Parameter(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Parameter(Parameter.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Parameter() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(144); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4031,7 +4255,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->DefaultArgument == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Expression(__ptr->DefaultArgument); + return (__ptr->DefaultArgument == IntPtr.Zero) ? null : CppSharp.Parser.AST.Expression.__CreateInstance(__ptr->DefaultArgument); } set @@ -4075,7 +4299,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public CppSharp.Parser.AST.QualifiedType.Internal ReturnType; @@ -4160,37 +4384,45 @@ namespace CppSharp internal static extern uint getParametersCount_0(global::System.IntPtr instance); } - internal Function(Function.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Function __CreateInstance(global::System.IntPtr native) { + return new Function((Function.Internal*) native); } - private static global::System.IntPtr __CopyValue(Function.Internal native) + private static Function.Internal* __CopyValue(Function.Internal native) { var ret = Marshal.AllocHGlobal(200); CppSharp.Parser.AST.Function.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Function.Internal*) ret; } internal Function(Function.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Function(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Function(Function.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Function() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(200); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4198,7 +4430,7 @@ namespace CppSharp { var __ret = Internal.getParameters_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Parameter(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Parameter.__CreateInstance(__ret); } public void addParameters(CppSharp.Parser.AST.Parameter s) @@ -4380,7 +4612,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->SpecializationInfo == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FunctionTemplateSpecialization(__ptr->SpecializationInfo); + return (__ptr->SpecializationInfo == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplateSpecialization.__CreateInstance(__ptr->SpecializationInfo); } set @@ -4424,7 +4656,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public CppSharp.Parser.AST.QualifiedType.Internal ReturnType; @@ -4505,37 +4737,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Method(Method.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Method __CreateInstance(global::System.IntPtr native) { + return new Method((Method.Internal*) native); } - private static global::System.IntPtr __CopyValue(Method.Internal native) + private static Method.Internal* __CopyValue(Method.Internal native) { var ret = Marshal.AllocHGlobal(240); CppSharp.Parser.AST.Method.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Method.Internal*) ret; } internal Method(Method.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Method(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Method(Method.Internal* native, bool isInternalImpl = false) + : base((Function.Internal*) native) { } public Method() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(240); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4544,7 +4784,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->AccessDecl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.AccessSpecifierDecl(__ptr->AccessDecl); + return (__ptr->AccessDecl == IntPtr.Zero) ? null : CppSharp.Parser.AST.AccessSpecifierDecl.__CreateInstance(__ptr->AccessDecl); } set @@ -4753,10 +4993,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; - - [FieldOffset(280)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(328)] public bool IsAnonymous; @@ -4847,7 +5084,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public ulong Value; @@ -4878,37 +5115,45 @@ namespace CppSharp internal static extern void setExpression_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal Item(Item.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Item __CreateInstance(global::System.IntPtr native) { + return new Item((Item.Internal*) native); } - private static global::System.IntPtr __CopyValue(Item.Internal native) + private static Item.Internal* __CopyValue(Item.Internal native) { var ret = Marshal.AllocHGlobal(128); CppSharp.Parser.AST.Enumeration.Item.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Item.Internal*) ret; } internal Item(Item.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Item(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Item(Item.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Item() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(128); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -4945,37 +5190,45 @@ namespace CppSharp } } - internal Enumeration(Enumeration.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Enumeration __CreateInstance(global::System.IntPtr native) { + return new Enumeration((Enumeration.Internal*) native); } - private static global::System.IntPtr __CopyValue(Enumeration.Internal native) + private static Enumeration.Internal* __CopyValue(Enumeration.Internal native) { var ret = Marshal.AllocHGlobal(376); CppSharp.Parser.AST.Enumeration.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Enumeration.Internal*) ret; } internal Enumeration(Enumeration.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Enumeration(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Enumeration(Enumeration.Internal* native, bool isInternalImpl = false) + : base((DeclarationContext.Internal*) native) { } public Enumeration() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(376); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5026,7 +5279,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Type == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Type); + return (__ptr->Type == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Type); } set @@ -5041,7 +5294,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->BuiltinType == IntPtr.Zero) ? null : new CppSharp.Parser.AST.BuiltinType(__ptr->BuiltinType); + return (__ptr->BuiltinType == IntPtr.Zero) ? null : CppSharp.Parser.AST.BuiltinType.__CreateInstance(__ptr->BuiltinType); } set @@ -5085,7 +5338,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(120)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -5116,37 +5369,45 @@ namespace CppSharp internal static extern void setMangled_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal Variable(Variable.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Variable __CreateInstance(global::System.IntPtr native) { + return new Variable((Variable.Internal*) native); } - private static global::System.IntPtr __CopyValue(Variable.Internal native) + private static Variable.Internal* __CopyValue(Variable.Internal native) { var ret = Marshal.AllocHGlobal(136); CppSharp.Parser.AST.Variable.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Variable.Internal*) ret; } internal Variable(Variable.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Variable(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Variable(Variable.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Variable() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(136); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5210,31 +5471,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal BaseClassSpecifier(BaseClassSpecifier.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new BaseClassSpecifier __CreateInstance(global::System.IntPtr native) { + return new BaseClassSpecifier((BaseClassSpecifier.Internal*) native); } - private static global::System.IntPtr __CopyValue(BaseClassSpecifier.Internal native) + private static BaseClassSpecifier.Internal* __CopyValue(BaseClassSpecifier.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(16); - *(BaseClassSpecifier.Internal*) ret = native; + BaseClassSpecifier.Internal* ret = (BaseClassSpecifier.Internal*) Marshal.AllocHGlobal(16); + *ret = native; return ret; } internal BaseClassSpecifier(BaseClassSpecifier.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public BaseClassSpecifier(global::System.IntPtr native, bool isInternalImpl = false) + protected BaseClassSpecifier(BaseClassSpecifier.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public BaseClassSpecifier() { __Instance = Marshal.AllocHGlobal(16); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -5246,7 +5511,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.AccessSpecifier Access @@ -5284,7 +5552,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Type == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Type(__ptr->Type); + return (__ptr->Type == IntPtr.Zero) ? null : CppSharp.Parser.AST.Type.__CreateInstance(__ptr->Type); } set @@ -5328,7 +5596,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; @@ -5355,37 +5623,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Field(Field.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Field __CreateInstance(global::System.IntPtr native) { + return new Field((Field.Internal*) native); } - private static global::System.IntPtr __CopyValue(Field.Internal native) + private static Field.Internal* __CopyValue(Field.Internal native) { var ret = Marshal.AllocHGlobal(144); CppSharp.Parser.AST.Field.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Field.Internal*) ret; } internal Field(Field.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Field(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Field(Field.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Field() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(144); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5424,7 +5700,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Class == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Class(__ptr->Class); + return (__ptr->Class == IntPtr.Zero) ? null : CppSharp.Parser.AST.Class.__CreateInstance(__ptr->Class); } set @@ -5468,7 +5744,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -5486,37 +5762,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal AccessSpecifierDecl(AccessSpecifierDecl.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new AccessSpecifierDecl __CreateInstance(global::System.IntPtr native) { + return new AccessSpecifierDecl((AccessSpecifierDecl.Internal*) native); } - private static global::System.IntPtr __CopyValue(AccessSpecifierDecl.Internal native) + private static AccessSpecifierDecl.Internal* __CopyValue(AccessSpecifierDecl.Internal native) { var ret = Marshal.AllocHGlobal(112); CppSharp.Parser.AST.AccessSpecifierDecl.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (AccessSpecifierDecl.Internal*) ret; } internal AccessSpecifierDecl(AccessSpecifierDecl.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public AccessSpecifierDecl(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected AccessSpecifierDecl(AccessSpecifierDecl.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public AccessSpecifierDecl() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(112); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -5554,10 +5838,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; - - [FieldOffset(280)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(328)] public bool IsAnonymous; @@ -5688,37 +5969,45 @@ namespace CppSharp internal static extern uint getSpecifiersCount_0(global::System.IntPtr instance); } - internal Class(Class.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Class __CreateInstance(global::System.IntPtr native) { + return new Class((Class.Internal*) native); } - private static global::System.IntPtr __CopyValue(Class.Internal native) + private static Class.Internal* __CopyValue(Class.Internal native) { var ret = Marshal.AllocHGlobal(456); CppSharp.Parser.AST.Class.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Class.Internal*) ret; } internal Class(Class.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Class(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Class(Class.Internal* native, bool isInternalImpl = false) + : base((DeclarationContext.Internal*) native) { } public Class() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(456); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -5726,7 +6015,7 @@ namespace CppSharp { var __ret = Internal.getBases_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.BaseClassSpecifier(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.BaseClassSpecifier.__CreateInstance(__ret); } public void addBases(CppSharp.Parser.AST.BaseClassSpecifier s) @@ -5744,7 +6033,7 @@ namespace CppSharp { var __ret = Internal.getFields_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Field(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Field.__CreateInstance(__ret); } public void addFields(CppSharp.Parser.AST.Field s) @@ -5762,7 +6051,7 @@ namespace CppSharp { var __ret = Internal.getMethods_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Method(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Method.__CreateInstance(__ret); } public void addMethods(CppSharp.Parser.AST.Method s) @@ -5780,7 +6069,7 @@ namespace CppSharp { var __ret = Internal.getSpecifiers_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.AccessSpecifierDecl(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.AccessSpecifierDecl.__CreateInstance(__ret); } public void addSpecifiers(CppSharp.Parser.AST.AccessSpecifierDecl s) @@ -5970,7 +6259,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Layout == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ClassLayout(__ptr->Layout); + return (__ptr->Layout == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassLayout.__CreateInstance(__ptr->Layout); } set @@ -6014,7 +6303,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public global::System.IntPtr TemplatedDecl; @@ -6060,45 +6349,54 @@ namespace CppSharp internal static extern uint getParametersCount_0(global::System.IntPtr instance); } - internal Template(Template.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Template __CreateInstance(global::System.IntPtr native) { + return new Template((Template.Internal*) native); } - private static global::System.IntPtr __CopyValue(Template.Internal native) + private static Template.Internal* __CopyValue(Template.Internal native) { var ret = Marshal.AllocHGlobal(144); CppSharp.Parser.AST.Template.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (Template.Internal*) ret; } internal Template(Template.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Template(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Template(Template.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public Template(CppSharp.Parser.AST.DeclarationKind kind) - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(144); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } public Template() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(144); + __ownsNativeInstance = true; Internal.ctor_1(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6134,7 +6432,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Declaration(__ptr->TemplatedDecl); + return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(__ptr->TemplatedDecl); } set @@ -6178,7 +6476,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public global::System.IntPtr TemplatedDecl; @@ -6219,37 +6517,45 @@ namespace CppSharp internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance); } - internal ClassTemplate(ClassTemplate.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassTemplate __CreateInstance(global::System.IntPtr native) { + return new ClassTemplate((ClassTemplate.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassTemplate.Internal native) + private static ClassTemplate.Internal* __CopyValue(ClassTemplate.Internal native) { var ret = Marshal.AllocHGlobal(168); CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassTemplate.Internal*) ret; } internal ClassTemplate(ClassTemplate.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassTemplate(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ClassTemplate(ClassTemplate.Internal* native, bool isInternalImpl = false) + : base((Template.Internal*) native) { } public ClassTemplate() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(168); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6257,7 +6563,7 @@ namespace CppSharp { var __ret = Internal.getSpecializations_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ClassTemplateSpecialization(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret); } public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization s) @@ -6314,10 +6620,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; - - [FieldOffset(280)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(328)] public bool IsAnonymous; @@ -6394,37 +6697,45 @@ namespace CppSharp internal static extern uint getArgumentsCount_0(global::System.IntPtr instance); } - internal ClassTemplateSpecialization(ClassTemplateSpecialization.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassTemplateSpecialization __CreateInstance(global::System.IntPtr native) { + return new ClassTemplateSpecialization((ClassTemplateSpecialization.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassTemplateSpecialization.Internal native) + private static ClassTemplateSpecialization.Internal* __CopyValue(ClassTemplateSpecialization.Internal native) { var ret = Marshal.AllocHGlobal(496); CppSharp.Parser.AST.ClassTemplateSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassTemplateSpecialization.Internal*) ret; } internal ClassTemplateSpecialization(ClassTemplateSpecialization.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassTemplateSpecialization(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ClassTemplateSpecialization(ClassTemplateSpecialization.Internal* native, bool isInternalImpl = false) + : base((Class.Internal*) native) { } public ClassTemplateSpecialization() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(496); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6460,7 +6771,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ClassTemplate(__ptr->TemplatedDecl); + return (__ptr->TemplatedDecl == IntPtr.Zero) ? null : CppSharp.Parser.AST.ClassTemplate.__CreateInstance(__ptr->TemplatedDecl); } set @@ -6519,10 +6830,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; - - [FieldOffset(280)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(328)] public bool IsAnonymous; @@ -6579,37 +6887,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal ClassTemplatePartialSpecialization(ClassTemplatePartialSpecialization.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClassTemplatePartialSpecialization __CreateInstance(global::System.IntPtr native) { + return new ClassTemplatePartialSpecialization((ClassTemplatePartialSpecialization.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClassTemplatePartialSpecialization.Internal native) + private static ClassTemplatePartialSpecialization.Internal* __CopyValue(ClassTemplatePartialSpecialization.Internal native) { var ret = Marshal.AllocHGlobal(496); CppSharp.Parser.AST.ClassTemplatePartialSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (ClassTemplatePartialSpecialization.Internal*) ret; } internal ClassTemplatePartialSpecialization(ClassTemplatePartialSpecialization.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClassTemplatePartialSpecialization(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected ClassTemplatePartialSpecialization(ClassTemplatePartialSpecialization.Internal* native, bool isInternalImpl = false) + : base((ClassTemplateSpecialization.Internal*) native) { } public ClassTemplatePartialSpecialization() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(496); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -6647,7 +6963,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public global::System.IntPtr TemplatedDecl; @@ -6688,37 +7004,45 @@ namespace CppSharp internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance); } - internal FunctionTemplate(FunctionTemplate.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FunctionTemplate __CreateInstance(global::System.IntPtr native) { + return new FunctionTemplate((FunctionTemplate.Internal*) native); } - private static global::System.IntPtr __CopyValue(FunctionTemplate.Internal native) + private static FunctionTemplate.Internal* __CopyValue(FunctionTemplate.Internal native) { var ret = Marshal.AllocHGlobal(168); CppSharp.Parser.AST.FunctionTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (FunctionTemplate.Internal*) ret; } internal FunctionTemplate(FunctionTemplate.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FunctionTemplate(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected FunctionTemplate(FunctionTemplate.Internal* native, bool isInternalImpl = false) + : base((Template.Internal*) native) { } public FunctionTemplate() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(168); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -6726,7 +7050,7 @@ namespace CppSharp { var __ret = Internal.getSpecializations_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FunctionTemplateSpecialization(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplateSpecialization.__CreateInstance(__ret); } public void addSpecializations(CppSharp.Parser.AST.FunctionTemplateSpecialization s) @@ -6802,31 +7126,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal FunctionTemplateSpecialization(FunctionTemplateSpecialization.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FunctionTemplateSpecialization __CreateInstance(global::System.IntPtr native) { + return new FunctionTemplateSpecialization((FunctionTemplateSpecialization.Internal*) native); } - private static global::System.IntPtr __CopyValue(FunctionTemplateSpecialization.Internal native) + private static FunctionTemplateSpecialization.Internal* __CopyValue(FunctionTemplateSpecialization.Internal native) { var ret = Marshal.AllocHGlobal(48); CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (FunctionTemplateSpecialization.Internal*) ret; } internal FunctionTemplateSpecialization(FunctionTemplateSpecialization.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FunctionTemplateSpecialization(global::System.IntPtr native, bool isInternalImpl = false) + protected FunctionTemplateSpecialization(FunctionTemplateSpecialization.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public FunctionTemplateSpecialization() { __Instance = Marshal.AllocHGlobal(48); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -6839,7 +7167,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TemplateArgument getArguments(uint i) @@ -6874,7 +7205,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Template == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FunctionTemplate(__ptr->Template); + return (__ptr->Template == IntPtr.Zero) ? null : CppSharp.Parser.AST.FunctionTemplate.__CreateInstance(__ptr->Template); } set @@ -6889,7 +7220,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->SpecializedFunction == IntPtr.Zero) ? null : new CppSharp.Parser.AST.Function(__ptr->SpecializedFunction); + return (__ptr->SpecializedFunction == IntPtr.Zero) ? null : CppSharp.Parser.AST.Function.__CreateInstance(__ptr->SpecializedFunction); } set @@ -6948,10 +7279,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; - - [FieldOffset(280)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(328)] public bool IsAnonymous; @@ -6975,37 +7303,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal Namespace(Namespace.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Namespace __CreateInstance(global::System.IntPtr native) { + return new Namespace((Namespace.Internal*) native); } - private static global::System.IntPtr __CopyValue(Namespace.Internal native) + private static Namespace.Internal* __CopyValue(Namespace.Internal native) { var ret = Marshal.AllocHGlobal(336); CppSharp.Parser.AST.Namespace.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (Namespace.Internal*) ret; } internal Namespace(Namespace.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Namespace(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected Namespace(Namespace.Internal* native, bool isInternalImpl = false) + : base((DeclarationContext.Internal*) native) { } public Namespace() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(336); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7058,7 +7394,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public CppSharp.Parser.AST.MacroLocation MacroLocation; @@ -7079,37 +7415,45 @@ namespace CppSharp internal static extern void dtor_0(global::System.IntPtr instance); } - internal PreprocessedEntity(PreprocessedEntity.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new PreprocessedEntity __CreateInstance(global::System.IntPtr native) { + return new PreprocessedEntity((PreprocessedEntity.Internal*) native); } - private static global::System.IntPtr __CopyValue(PreprocessedEntity.Internal native) + private static PreprocessedEntity.Internal* __CopyValue(PreprocessedEntity.Internal native) { var ret = Marshal.AllocHGlobal(120); CppSharp.Parser.AST.PreprocessedEntity.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (PreprocessedEntity.Internal*) ret; } internal PreprocessedEntity(PreprocessedEntity.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public PreprocessedEntity(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected PreprocessedEntity(PreprocessedEntity.Internal* native, bool isInternalImpl = false) + : base((Declaration.Internal*) native) { } public PreprocessedEntity() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(120); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7162,7 +7506,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public CppSharp.Parser.AST.MacroLocation MacroLocation; @@ -7193,37 +7537,45 @@ namespace CppSharp internal static extern void setExpression_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal MacroDefinition(MacroDefinition.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new MacroDefinition __CreateInstance(global::System.IntPtr native) { + return new MacroDefinition((MacroDefinition.Internal*) native); } - private static global::System.IntPtr __CopyValue(MacroDefinition.Internal native) + private static MacroDefinition.Internal* __CopyValue(MacroDefinition.Internal native) { var ret = Marshal.AllocHGlobal(128); CppSharp.Parser.AST.MacroDefinition.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (MacroDefinition.Internal*) ret; } internal MacroDefinition(MacroDefinition.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public MacroDefinition(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected MacroDefinition(MacroDefinition.Internal* native, bool isInternalImpl = false) + : base((PreprocessedEntity.Internal*) native) { } public MacroDefinition() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(128); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7278,7 +7630,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; + public global::System.IntPtr OriginalPtr; [FieldOffset(112)] public CppSharp.Parser.AST.MacroLocation MacroLocation; @@ -7312,37 +7664,45 @@ namespace CppSharp internal static extern void setText_0(global::System.IntPtr instance, global::System.IntPtr s); } - internal MacroExpansion(MacroExpansion.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new MacroExpansion __CreateInstance(global::System.IntPtr native) { + return new MacroExpansion((MacroExpansion.Internal*) native); } - private static global::System.IntPtr __CopyValue(MacroExpansion.Internal native) + private static MacroExpansion.Internal* __CopyValue(MacroExpansion.Internal native) { var ret = Marshal.AllocHGlobal(136); CppSharp.Parser.AST.MacroExpansion.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (MacroExpansion.Internal*) ret; } internal MacroExpansion(MacroExpansion.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public MacroExpansion(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected MacroExpansion(MacroExpansion.Internal* native, bool isInternalImpl = false) + : base((PreprocessedEntity.Internal*) native) { } public MacroExpansion() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(136); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7368,7 +7728,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Definition == IntPtr.Zero) ? null : new CppSharp.Parser.AST.MacroDefinition(__ptr->Definition); + return (__ptr->Definition == IntPtr.Zero) ? null : CppSharp.Parser.AST.MacroDefinition.__CreateInstance(__ptr->Definition); } set @@ -7412,10 +7772,7 @@ namespace CppSharp public uint DefinitionOrder; [FieldOffset(96)] - public void* OriginalPtr; - - [FieldOffset(280)] - public Std.Map Anonymous; + public global::System.IntPtr OriginalPtr; [FieldOffset(328)] public bool IsAnonymous; @@ -7472,37 +7829,45 @@ namespace CppSharp internal static extern uint getMacrosCount_0(global::System.IntPtr instance); } - internal TranslationUnit(TranslationUnit.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new TranslationUnit __CreateInstance(global::System.IntPtr native) { + return new TranslationUnit((TranslationUnit.Internal*) native); } - private static global::System.IntPtr __CopyValue(TranslationUnit.Internal native) + private static TranslationUnit.Internal* __CopyValue(TranslationUnit.Internal native) { var ret = Marshal.AllocHGlobal(376); CppSharp.Parser.AST.TranslationUnit.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (TranslationUnit.Internal*) ret; } internal TranslationUnit(TranslationUnit.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public TranslationUnit(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected TranslationUnit(TranslationUnit.Internal* native, bool isInternalImpl = false) + : base((Namespace.Internal*) native) { } public TranslationUnit() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(376); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } @@ -7510,7 +7875,7 @@ namespace CppSharp { var __ret = Internal.getMacros_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.MacroDefinition(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.MacroDefinition.__CreateInstance(__ret); } public void addMacros(CppSharp.Parser.AST.MacroDefinition s) @@ -7642,31 +8007,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal NativeLibrary(NativeLibrary.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new NativeLibrary __CreateInstance(global::System.IntPtr native) { + return new NativeLibrary((NativeLibrary.Internal*) native); } - private static global::System.IntPtr __CopyValue(NativeLibrary.Internal native) + private static NativeLibrary.Internal* __CopyValue(NativeLibrary.Internal native) { var ret = Marshal.AllocHGlobal(64); CppSharp.Parser.AST.NativeLibrary.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (NativeLibrary.Internal*) ret; } internal NativeLibrary(NativeLibrary.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public NativeLibrary(global::System.IntPtr native, bool isInternalImpl = false) + protected NativeLibrary(NativeLibrary.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public NativeLibrary() { __Instance = Marshal.AllocHGlobal(64); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -7679,7 +8048,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string getSymbols(uint i) @@ -7814,31 +8186,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ASTContext(ASTContext.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ASTContext __CreateInstance(global::System.IntPtr native) { + return new ASTContext((ASTContext.Internal*) native); } - private static global::System.IntPtr __CopyValue(ASTContext.Internal native) + private static ASTContext.Internal* __CopyValue(ASTContext.Internal native) { var ret = Marshal.AllocHGlobal(24); CppSharp.Parser.AST.ASTContext.Internal.cctor_2(ret, new global::System.IntPtr(&native)); - return ret; + return (ASTContext.Internal*) ret; } internal ASTContext(ASTContext.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ASTContext(global::System.IntPtr native, bool isInternalImpl = false) + protected ASTContext(ASTContext.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ASTContext() { __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -7851,14 +8227,17 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.TranslationUnit getTranslationUnits(uint i) { var __ret = Internal.getTranslationUnits_0(__Instance, i); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.AST.TranslationUnit(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.TranslationUnit.__CreateInstance(__ret); } public void addTranslationUnits(CppSharp.Parser.AST.TranslationUnit s) @@ -7903,31 +8282,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal Comment(Comment.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new Comment __CreateInstance(global::System.IntPtr native) { + return new Comment((Comment.Internal*) native); } - private static global::System.IntPtr __CopyValue(Comment.Internal native) + private static Comment.Internal* __CopyValue(Comment.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(4); - *(Comment.Internal*) ret = native; + Comment.Internal* ret = (Comment.Internal*) Marshal.AllocHGlobal(4); + *ret = native; return ret; } internal Comment(Comment.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public Comment(global::System.IntPtr native, bool isInternalImpl = false) + protected Comment(Comment.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public Comment(CppSharp.Parser.AST.CommentKind kind) { __Instance = Marshal.AllocHGlobal(4); + __ownsNativeInstance = true; var arg0 = kind; Internal.ctor_0(__Instance, arg0); } @@ -7940,7 +8323,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public CppSharp.Parser.AST.CommentKind Kind @@ -7978,37 +8364,45 @@ namespace CppSharp internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0); } - internal FullComment(FullComment.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new FullComment __CreateInstance(global::System.IntPtr native) { + return new FullComment((FullComment.Internal*) native); } - private static global::System.IntPtr __CopyValue(FullComment.Internal native) + private static FullComment.Internal* __CopyValue(FullComment.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(4); - *(FullComment.Internal*) ret = native; + FullComment.Internal* ret = (FullComment.Internal*) Marshal.AllocHGlobal(4); + *ret = native; return ret; } internal FullComment(FullComment.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public FullComment(global::System.IntPtr native, bool isInternalImpl = false) - : base(native) + protected FullComment(FullComment.Internal* native, bool isInternalImpl = false) + : base((Comment.Internal*) native) { } public FullComment() - : this(IntPtr.Zero) + : this((Internal*) null) { __Instance = Marshal.AllocHGlobal(4); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } protected override void Dispose(bool disposing) { + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } base.Dispose(disposing); } } @@ -8062,31 +8456,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal RawComment(RawComment.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new RawComment __CreateInstance(global::System.IntPtr native) { + return new RawComment((RawComment.Internal*) native); } - private static global::System.IntPtr __CopyValue(RawComment.Internal native) + private static RawComment.Internal* __CopyValue(RawComment.Internal native) { var ret = Marshal.AllocHGlobal(32); CppSharp.Parser.AST.RawComment.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (RawComment.Internal*) ret; } internal RawComment(RawComment.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public RawComment(global::System.IntPtr native, bool isInternalImpl = false) + protected RawComment(RawComment.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public RawComment() { __Instance = Marshal.AllocHGlobal(32); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -8099,7 +8497,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string Text @@ -8156,7 +8557,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->FullCommentBlock == IntPtr.Zero) ? null : new CppSharp.Parser.AST.FullComment(__ptr->FullCommentBlock); + return (__ptr->FullCommentBlock == IntPtr.Zero) ? null : CppSharp.Parser.AST.FullComment.__CreateInstance(__ptr->FullCommentBlock); } set 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 288cd83d..d698acec 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs @@ -232,31 +232,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ParserOptions(ParserOptions.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ParserOptions __CreateInstance(global::System.IntPtr native) { + return new ParserOptions((ParserOptions.Internal*) native); } - private static global::System.IntPtr __CopyValue(ParserOptions.Internal native) + private static ParserOptions.Internal* __CopyValue(ParserOptions.Internal native) { var ret = Marshal.AllocHGlobal(192); CppSharp.Parser.ParserOptions.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return (ParserOptions.Internal*) ret; } internal ParserOptions(ParserOptions.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ParserOptions(global::System.IntPtr native, bool isInternalImpl = false) + protected ParserOptions(ParserOptions.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ParserOptions() { __Instance = Marshal.AllocHGlobal(192); + __ownsNativeInstance = true; Internal.ctor_0(__Instance); } @@ -269,7 +273,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string getArguments(uint i) @@ -479,7 +486,7 @@ namespace CppSharp get { var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->ASTContext == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ASTContext(__ptr->ASTContext); + return (__ptr->ASTContext == IntPtr.Zero) ? null : CppSharp.Parser.AST.ASTContext.__CreateInstance(__ptr->ASTContext); } set @@ -595,7 +602,7 @@ namespace CppSharp } } - public unsafe partial class ParserDiagnostic : IDisposable + public unsafe partial struct ParserDiagnostic { [StructLayout(LayoutKind.Explicit, Size = 32)] public partial struct Internal @@ -645,53 +652,49 @@ namespace CppSharp internal static extern void setMessage_0(global::System.IntPtr instance, global::System.IntPtr s); } - public global::System.IntPtr __Instance { get; protected set; } - - internal ParserDiagnostic(ParserDiagnostic.Internal* native) - : this(new global::System.IntPtr(native)) - { - } - - private static global::System.IntPtr __CopyValue(ParserDiagnostic.Internal native) + public static new ParserDiagnostic __CreateInstance(global::System.IntPtr native) { - var ret = Marshal.AllocHGlobal(32); - CppSharp.Parser.ParserDiagnostic.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return new ParserDiagnostic((ParserDiagnostic.Internal*) native); } internal ParserDiagnostic(ParserDiagnostic.Internal native) - : this(__CopyValue(native)) - { - } - - public ParserDiagnostic(global::System.IntPtr native, bool isInternalImpl = false) + : this(&native) { - __Instance = native; } - public ParserDiagnostic() + private ParserDiagnostic(ParserDiagnostic.Internal* native, bool isInternalImpl = false) : this() { - __Instance = Marshal.AllocHGlobal(32); - Internal.ctor_0(__Instance); + var __ptr = native; + Level = __ptr->Level; + LineNumber = __ptr->LineNumber; + ColumnNumber = __ptr->ColumnNumber; } - public void Dispose() + internal Internal ToInternal() { - Dispose(disposing: true); - GC.SuppressFinalize(this); + var __native = new CppSharp.Parser.ParserDiagnostic.Internal(); + var __ptr = &__native; + __native.Level = Level; + __native.LineNumber = LineNumber; + __native.ColumnNumber = ColumnNumber; + return __native; } - protected virtual void Dispose(bool disposing) + internal void FromInternal(Internal* native) { - Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + var __ptr = native; + Level = __ptr->Level; + LineNumber = __ptr->LineNumber; + ColumnNumber = __ptr->ColumnNumber; } public string FileName { get { - var __ret = Internal.getFileName_0(__Instance); + var __fixedInstance = ToInternal(); + var __ret = Internal.getFileName_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -699,8 +702,10 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - Internal.setFileName_0(__Instance, arg0); + var __fixedInstance = ToInternal(); + Internal.setFileName_0(new global::System.IntPtr(&__fixedInstance), arg0); Marshal.FreeHGlobal(arg0); + FromInternal(&__fixedInstance); } } @@ -708,7 +713,9 @@ namespace CppSharp { get { - var __ret = Internal.getMessage_0(__Instance); + var __fixedInstance = ToInternal(); + var __ret = Internal.getMessage_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); if (__ret == global::System.IntPtr.Zero) return null; return Marshal.PtrToStringAnsi(__ret); } @@ -716,58 +723,36 @@ namespace CppSharp set { var arg0 = Marshal.StringToHGlobalAnsi(value); - Internal.setMessage_0(__Instance, arg0); + var __fixedInstance = ToInternal(); + Internal.setMessage_0(new global::System.IntPtr(&__fixedInstance), arg0); Marshal.FreeHGlobal(arg0); + FromInternal(&__fixedInstance); } } public CppSharp.Parser.ParserDiagnosticLevel Level { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->Level; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->Level = value; - } + set; } public int LineNumber { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->LineNumber; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->LineNumber = value; - } + set; } public int ColumnNumber { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->ColumnNumber; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->ColumnNumber = value; - } + set; } } - public unsafe partial class ParserResult : IDisposable + public unsafe partial struct ParserResult { [StructLayout(LayoutKind.Explicit, Size = 56)] public partial struct Internal @@ -820,118 +805,103 @@ namespace CppSharp internal static extern uint getDiagnosticsCount_0(global::System.IntPtr instance); } - public global::System.IntPtr __Instance { get; protected set; } - - internal ParserResult(ParserResult.Internal* native) - : this(new global::System.IntPtr(native)) - { - } - - private static global::System.IntPtr __CopyValue(ParserResult.Internal native) + public static new ParserResult __CreateInstance(global::System.IntPtr native) { - var ret = Marshal.AllocHGlobal(56); - CppSharp.Parser.ParserResult.Internal.cctor_1(ret, new global::System.IntPtr(&native)); - return ret; + return new ParserResult((ParserResult.Internal*) native); } internal ParserResult(ParserResult.Internal native) - : this(__CopyValue(native)) - { - } - - public ParserResult(global::System.IntPtr native, bool isInternalImpl = false) + : this(&native) { - __Instance = native; } - public ParserResult() + private ParserResult(ParserResult.Internal* native, bool isInternalImpl = false) : this() { - __Instance = Marshal.AllocHGlobal(56); - Internal.ctor_0(__Instance); + 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); } - public void Dispose() + internal Internal ToInternal() { - Dispose(disposing: true); - GC.SuppressFinalize(this); + 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; } - protected virtual void Dispose(bool disposing) + internal void FromInternal(Internal* native) { - Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + 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); } public CppSharp.Parser.ParserDiagnostic getDiagnostics(uint i) { var __ret = new CppSharp.Parser.ParserDiagnostic.Internal(); - Internal.getDiagnostics_0(new IntPtr(&__ret), __Instance, i); + var __fixedInstance = ToInternal(); + Internal.getDiagnostics_0(new IntPtr(&__ret), new global::System.IntPtr(&__fixedInstance), i); + FromInternal(&__fixedInstance); return new CppSharp.Parser.ParserDiagnostic(__ret); } public void addDiagnostics(CppSharp.Parser.ParserDiagnostic s) { - var arg0 = s == (CppSharp.Parser.ParserDiagnostic) null ? global::System.IntPtr.Zero : s.__Instance; - Internal.addDiagnostics_0(__Instance, arg0); + 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); } public void clearDiagnostics() { - Internal.clearDiagnostics_0(__Instance); + var __fixedInstance = ToInternal(); + Internal.clearDiagnostics_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); } public uint DiagnosticsCount { get { - var __ret = Internal.getDiagnosticsCount_0(__Instance); + var __fixedInstance = ToInternal(); + var __ret = Internal.getDiagnosticsCount_0(new global::System.IntPtr(&__fixedInstance)); + FromInternal(&__fixedInstance); return __ret; } } public CppSharp.Parser.ParserResultKind Kind { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return __ptr->Kind; - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->Kind = value; - } + set; } public CppSharp.Parser.AST.ASTContext ASTContext { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->ASTContext == IntPtr.Zero) ? null : new CppSharp.Parser.AST.ASTContext(__ptr->ASTContext); - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->ASTContext = value == (CppSharp.Parser.AST.ASTContext) null ? global::System.IntPtr.Zero : value.__Instance; - } + set; } public CppSharp.Parser.AST.NativeLibrary Library { - get - { - var __ptr = (Internal*)__Instance.ToPointer(); - return (__ptr->Library == IntPtr.Zero) ? null : new CppSharp.Parser.AST.NativeLibrary(__ptr->Library); - } + get; - set - { - var __ptr = (Internal*)__Instance.ToPointer(); - __ptr->Library = value == (CppSharp.Parser.AST.NativeLibrary) null ? global::System.IntPtr.Zero : value.__Instance; - } + set; } } @@ -963,31 +933,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ClangParser(ClangParser.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ClangParser __CreateInstance(global::System.IntPtr native) { + return new ClangParser((ClangParser.Internal*) native); } - private static global::System.IntPtr __CopyValue(ClangParser.Internal native) + private static ClangParser.Internal* __CopyValue(ClangParser.Internal native) { - global::System.IntPtr ret = Marshal.AllocHGlobal(1); - *(ClangParser.Internal*) ret = native; + ClangParser.Internal* ret = (ClangParser.Internal*) Marshal.AllocHGlobal(1); + *ret = native; return ret; } internal ClangParser(ClangParser.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ClangParser(global::System.IntPtr native, bool isInternalImpl = false) + protected ClangParser(ClangParser.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ClangParser() { __Instance = Marshal.AllocHGlobal(1); + __ownsNativeInstance = true; } public void Dispose() @@ -998,23 +972,26 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public static CppSharp.Parser.ParserResult ParseHeader(CppSharp.Parser.ParserOptions Opts) { 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 null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.ParserResult(__ret); + if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); + return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : 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 null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.ParserResult(__ret); + if (__ret == global::System.IntPtr.Zero) return new CppSharp.Parser.ParserResult(); + return (__ret == IntPtr.Zero) ? new CppSharp.Parser.ParserResult() : CppSharp.Parser.ParserResult.__CreateInstance(__ret); } public static CppSharp.Parser.ParserTargetInfo GetTargetInfo(CppSharp.Parser.ParserOptions Opts) @@ -1022,7 +999,7 @@ namespace CppSharp var arg0 = Opts == (CppSharp.Parser.ParserOptions) null ? global::System.IntPtr.Zero : Opts.__Instance; var __ret = Internal.GetTargetInfo_0(arg0); if (__ret == global::System.IntPtr.Zero) return null; - return (__ret == IntPtr.Zero) ? null : new CppSharp.Parser.ParserTargetInfo(__ret); + return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); } } } diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Sources.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Sources.cs index 1ddf423b..deae31fd 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Sources.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Sources.cs @@ -34,9 +34,9 @@ namespace CppSharp internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); } - internal SourceLocation(SourceLocation.Internal* native) - : this(new global::System.IntPtr(native)) + public static new SourceLocation __CreateInstance(global::System.IntPtr native) { + return new SourceLocation((SourceLocation.Internal*) native); } internal SourceLocation(SourceLocation.Internal native) @@ -44,9 +44,9 @@ namespace CppSharp { } - public SourceLocation(global::System.IntPtr native, bool isInternalImpl = false) : this() + private SourceLocation(SourceLocation.Internal* native, bool isInternalImpl = false) : this() { - var __ptr = (Internal*)native.ToPointer(); + var __ptr = native; ID = __ptr->ID; } diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Target.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Target.cs index 1464bdc6..62d6958a 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Target.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Target.cs @@ -172,31 +172,35 @@ namespace CppSharp public global::System.IntPtr __Instance { get; protected set; } - internal ParserTargetInfo(ParserTargetInfo.Internal* native) - : this(new global::System.IntPtr(native)) + private readonly bool __ownsNativeInstance; + + public static new ParserTargetInfo __CreateInstance(global::System.IntPtr native) { + return new ParserTargetInfo((ParserTargetInfo.Internal*) native); } - private static global::System.IntPtr __CopyValue(ParserTargetInfo.Internal native) + private static ParserTargetInfo.Internal* __CopyValue(ParserTargetInfo.Internal native) { var ret = Marshal.AllocHGlobal(160); CppSharp.Parser.ParserTargetInfo.Internal.cctor_0(ret, new global::System.IntPtr(&native)); - return ret; + return (ParserTargetInfo.Internal*) ret; } internal ParserTargetInfo(ParserTargetInfo.Internal native) : this(__CopyValue(native)) { + __ownsNativeInstance = true; } - public ParserTargetInfo(global::System.IntPtr native, bool isInternalImpl = false) + protected ParserTargetInfo(ParserTargetInfo.Internal* native, bool isInternalImpl = false) { - __Instance = native; + __Instance = new global::System.IntPtr(native); } public ParserTargetInfo() { __Instance = Marshal.AllocHGlobal(160); + __ownsNativeInstance = true; Internal.ctor_2(__Instance); } @@ -209,7 +213,10 @@ namespace CppSharp protected virtual void Dispose(bool disposing) { Internal.dtor_0(__Instance); - Marshal.FreeHGlobal(__Instance); + if (__ownsNativeInstance) + { + Marshal.FreeHGlobal(__Instance); + } } public string ABI diff --git a/src/CppParser/Bindings/ParserGen.cs b/src/CppParser/Bindings/ParserGen.cs index 83cae6f3..99630b12 100644 --- a/src/CppParser/Bindings/ParserGen.cs +++ b/src/CppParser/Bindings/ParserGen.cs @@ -125,7 +125,6 @@ namespace CppSharp public void Preprocess(Driver driver, ASTContext ctx) { - ctx.SetClassAsValueType("CppSharp::ParserOptions"); ctx.SetClassAsValueType("CppSharp::ParserDiagnostic"); ctx.SetClassAsValueType("CppSharp::ParserResult");