Browse Source

Added to a method a list of its overridden methods.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/904/head
Dimitar Dobrev 8 years ago
parent
commit
e2e4109631
  1. 15
      src/AST/Method.cs
  2. 3
      src/CppParser/AST.cpp
  3. 2
      src/CppParser/AST.h
  4. 58
      src/CppParser/Bindings/CLI/AST.cpp
  5. 23
      src/CppParser/Bindings/CLI/AST.h
  6. 84
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  7. 84
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  8. 80
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  9. 80
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  10. 80
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  11. 80
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  12. 6
      src/CppParser/Parser.cpp
  13. 7
      src/Parser/ASTConverter.cs

15
src/AST/Method.cs

@ -1,3 +1,5 @@ @@ -1,3 +1,5 @@
using System.Collections.Generic;
using System.Linq;
using CppSharp.AST.Extensions;
namespace CppSharp.AST
@ -103,6 +105,7 @@ namespace CppSharp.AST @@ -103,6 +105,7 @@ namespace CppSharp.AST
Conversion = method.Conversion;
SynthKind = method.SynthKind;
AdjustedOffset = method.AdjustedOffset;
OverriddenMethods.AddRange(method.OverriddenMethods);
}
public Method(Function function)
@ -115,9 +118,13 @@ namespace CppSharp.AST @@ -115,9 +118,13 @@ namespace CppSharp.AST
public bool IsStatic { get; set; }
public bool IsConst { get; set; }
public bool IsExplicit { get; set; }
public bool IsOverride { get; set; }
public bool IsOverride
{
get { return isOverride ?? OverriddenMethods.Any(); }
set { isOverride = value; }
}
// True if the method is final / sealed.
// True if the method is final / sealed.
public bool IsFinal { get; set; }
public bool IsProxy { get; set; }
@ -161,9 +168,13 @@ namespace CppSharp.AST @@ -161,9 +168,13 @@ namespace CppSharp.AST
public int AdjustedOffset { get; set; }
public List<Method> OverriddenMethods { get; } = new List<Method>();
public override T Visit<T>(IDeclVisitor<T> visitor)
{
return visitor.VisitMethodDecl(this);
}
private bool? isOverride;
}
}

3
src/CppParser/AST.cpp

@ -650,7 +650,6 @@ Method::Method() @@ -650,7 +650,6 @@ Method::Method()
, isStatic(false)
, isConst(false)
, isExplicit(false)
, isOverride(false)
, isDefaultConstructor(false)
, isCopyConstructor(false)
, isMoveConstructor(false)
@ -661,6 +660,8 @@ Method::Method() @@ -661,6 +660,8 @@ Method::Method()
Method::~Method() {}
DEF_VECTOR(Method, Method*, OverriddenMethods)
// Enumeration
Enumeration::Enumeration() : DeclarationContext(DeclarationKind::Enumeration),

2
src/CppParser/AST.h

@ -762,7 +762,6 @@ public: @@ -762,7 +762,6 @@ public:
bool isStatic;
bool isConst;
bool isExplicit;
bool isOverride;
CXXMethodKind methodKind;
@ -772,6 +771,7 @@ public: @@ -772,6 +771,7 @@ public:
QualifiedType conversionType;
RefQualifierKind refQualifier;
VECTOR(Method*, OverriddenMethods)
};
class CS_API Enumeration : public DeclarationContext

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

@ -3739,6 +3739,26 @@ CppSharp::Parser::AST::Method::Method() @@ -3739,6 +3739,26 @@ CppSharp::Parser::AST::Method::Method()
NativePtr = new ::CppSharp::CppParser::AST::Method();
}
CppSharp::Parser::AST::Method^ CppSharp::Parser::AST::Method::GetOverriddenMethods(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::AST::Method*)NativePtr)->getOverriddenMethods(i);
if (__ret == nullptr) return nullptr;
return (__ret == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Method((::CppSharp::CppParser::AST::Method*)__ret);
}
void CppSharp::Parser::AST::Method::AddOverriddenMethods(CppSharp::Parser::AST::Method^ s)
{
if (ReferenceEquals(s, nullptr))
throw gcnew ::System::ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
auto __arg0 = (::CppSharp::CppParser::AST::Method*)s->NativePtr;
((::CppSharp::CppParser::AST::Method*)NativePtr)->addOverriddenMethods(__arg0);
}
void CppSharp::Parser::AST::Method::ClearOverriddenMethods()
{
((::CppSharp::CppParser::AST::Method*)NativePtr)->clearOverriddenMethods();
}
CppSharp::Parser::AST::Method::Method(CppSharp::Parser::AST::Method^ _0)
: CppSharp::Parser::AST::Function((::CppSharp::CppParser::AST::Function*)nullptr)
{
@ -3789,16 +3809,6 @@ void CppSharp::Parser::AST::Method::IsExplicit::set(bool value) @@ -3789,16 +3809,6 @@ void CppSharp::Parser::AST::Method::IsExplicit::set(bool value)
((::CppSharp::CppParser::AST::Method*)NativePtr)->isExplicit = value;
}
bool CppSharp::Parser::AST::Method::IsOverride::get()
{
return ((::CppSharp::CppParser::AST::Method*)NativePtr)->isOverride;
}
void CppSharp::Parser::AST::Method::IsOverride::set(bool value)
{
((::CppSharp::CppParser::AST::Method*)NativePtr)->isOverride = value;
}
CppSharp::Parser::AST::CXXMethodKind CppSharp::Parser::AST::Method::MethodKind::get()
{
return (CppSharp::Parser::AST::CXXMethodKind)((::CppSharp::CppParser::AST::Method*)NativePtr)->methodKind;
@ -3859,6 +3869,34 @@ void CppSharp::Parser::AST::Method::RefQualifier::set(CppSharp::Parser::AST::Ref @@ -3859,6 +3869,34 @@ void CppSharp::Parser::AST::Method::RefQualifier::set(CppSharp::Parser::AST::Ref
((::CppSharp::CppParser::AST::Method*)NativePtr)->refQualifier = (::CppSharp::CppParser::AST::RefQualifierKind)value;
}
System::Collections::Generic::List<CppSharp::Parser::AST::Method^>^ CppSharp::Parser::AST::Method::OverriddenMethods::get()
{
auto _tmp__OverriddenMethods = gcnew System::Collections::Generic::List<CppSharp::Parser::AST::Method^>();
for(auto _element : ((::CppSharp::CppParser::AST::Method*)NativePtr)->OverriddenMethods)
{
auto _marshalElement = (_element == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Method((::CppSharp::CppParser::AST::Method*)_element);
_tmp__OverriddenMethods->Add(_marshalElement);
}
return _tmp__OverriddenMethods;
}
void CppSharp::Parser::AST::Method::OverriddenMethods::set(System::Collections::Generic::List<CppSharp::Parser::AST::Method^>^ value)
{
auto _tmpvalue = std::vector<::CppSharp::CppParser::AST::Method*>();
for each(CppSharp::Parser::AST::Method^ _element in value)
{
auto _marshalElement = (::CppSharp::CppParser::AST::Method*)_element->NativePtr;
_tmpvalue.push_back(_marshalElement);
}
((::CppSharp::CppParser::AST::Method*)NativePtr)->OverriddenMethods = _tmpvalue;
}
unsigned int CppSharp::Parser::AST::Method::OverriddenMethodsCount::get()
{
auto __ret = ((::CppSharp::CppParser::AST::Method*)NativePtr)->getOverriddenMethodsCount();
return __ret;
}
CppSharp::Parser::AST::Enumeration::Item::Item(::CppSharp::CppParser::AST::Enumeration::Item* native)
: CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)native)
{

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

@ -2180,12 +2180,6 @@ namespace CppSharp @@ -2180,12 +2180,6 @@ namespace CppSharp
void set(bool);
}
property bool IsOverride
{
bool get();
void set(bool);
}
property CppSharp::Parser::AST::CXXMethodKind MethodKind
{
CppSharp::Parser::AST::CXXMethodKind get();
@ -2221,6 +2215,23 @@ namespace CppSharp @@ -2221,6 +2215,23 @@ namespace CppSharp
CppSharp::Parser::AST::RefQualifierKind get();
void set(CppSharp::Parser::AST::RefQualifierKind);
}
property System::Collections::Generic::List<CppSharp::Parser::AST::Method^>^ OverriddenMethods
{
System::Collections::Generic::List<CppSharp::Parser::AST::Method^>^ get();
void set(System::Collections::Generic::List<CppSharp::Parser::AST::Method^>^);
}
property unsigned int OverriddenMethodsCount
{
unsigned int get();
}
CppSharp::Parser::AST::Method^ GetOverriddenMethods(unsigned int i);
void AddOverriddenMethods(CppSharp::Parser::AST::Method^ s);
void ClearOverriddenMethods();
};
public ref class Enumeration : CppSharp::Parser::AST::DeclarationContext

84
src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -7583,7 +7583,7 @@ namespace CppSharp @@ -7583,7 +7583,7 @@ namespace CppSharp
public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 352)]
[StructLayout(LayoutKind.Explicit, Size = 360)]
public new partial struct __Internal
{
[FieldOffset(0)]
@ -7743,26 +7743,26 @@ namespace CppSharp @@ -7743,26 +7743,26 @@ namespace CppSharp
internal byte isExplicit;
[FieldOffset(328)]
internal byte isOverride;
[FieldOffset(332)]
internal global::CppSharp.Parser.AST.CXXMethodKind methodKind;
[FieldOffset(336)]
[FieldOffset(332)]
internal byte isDefaultConstructor;
[FieldOffset(337)]
[FieldOffset(333)]
internal byte isCopyConstructor;
[FieldOffset(338)]
[FieldOffset(334)]
internal byte isMoveConstructor;
[FieldOffset(340)]
[FieldOffset(336)]
internal global::CppSharp.Parser.AST.QualifiedType.__Internal conversionType;
[FieldOffset(348)]
[FieldOffset(344)]
internal global::CppSharp.Parser.AST.RefQualifierKind refQualifier;
[FieldOffset(348)]
internal global::Std.__1.Vector.__Internal OverriddenMethods;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6MethodC2Ev")]
@ -7777,6 +7777,26 @@ namespace CppSharp @@ -7777,6 +7777,26 @@ namespace CppSharp
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6MethodD2Ev")]
internal static extern void dtor(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method20getOverriddenMethodsEj")]
internal static extern global::System.IntPtr GetOverriddenMethods(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method20addOverriddenMethodsERPS2_")]
internal static extern void AddOverriddenMethods(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method22clearOverriddenMethodsEv")]
internal static extern void ClearOverriddenMethods(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method25getOverriddenMethodsCountEv")]
internal static extern uint GetOverriddenMethodsCount(global::System.IntPtr instance);
}
internal static new global::CppSharp.Parser.AST.Method __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
@ -7846,6 +7866,30 @@ namespace CppSharp @@ -7846,6 +7866,30 @@ namespace CppSharp
__Instance = IntPtr.Zero;
}
public global::CppSharp.Parser.AST.Method GetOverriddenMethods(uint i)
{
var __ret = __Internal.GetOverriddenMethods((__Instance + __PointerAdjustment), i);
global::CppSharp.Parser.AST.Method __result0;
if (__ret == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Method.NativeToManagedMap.ContainsKey(__ret))
__result0 = (global::CppSharp.Parser.AST.Method) global::CppSharp.Parser.AST.Method.NativeToManagedMap[__ret];
else __result0 = global::CppSharp.Parser.AST.Method.__CreateInstance(__ret);
return __result0;
}
public void AddOverriddenMethods(global::CppSharp.Parser.AST.Method s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
__Internal.AddOverriddenMethods((__Instance + __PointerAdjustment), __arg0);
}
public void ClearOverriddenMethods()
{
__Internal.ClearOverriddenMethods((__Instance + __PointerAdjustment));
}
public bool IsVirtual
{
get
@ -7898,19 +7942,6 @@ namespace CppSharp @@ -7898,19 +7942,6 @@ namespace CppSharp
}
}
public bool IsOverride
{
get
{
return ((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride != 0;
}
set
{
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride = (byte) (value ? 1 : 0);
}
}
public global::CppSharp.Parser.AST.CXXMethodKind MethodKind
{
get
@ -7988,6 +8019,15 @@ namespace CppSharp @@ -7988,6 +8019,15 @@ namespace CppSharp
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->refQualifier = value;
}
}
public uint OverriddenMethodsCount
{
get
{
var __ret = __Internal.GetOverriddenMethodsCount((__Instance + __PointerAdjustment));
return __ret;
}
}
}
public unsafe partial class Enumeration : global::CppSharp.Parser.AST.DeclarationContext, IDisposable

84
src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs

@ -7583,7 +7583,7 @@ namespace CppSharp @@ -7583,7 +7583,7 @@ namespace CppSharp
public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 420)]
[StructLayout(LayoutKind.Explicit, Size = 428)]
public new partial struct __Internal
{
[FieldOffset(0)]
@ -7743,26 +7743,26 @@ namespace CppSharp @@ -7743,26 +7743,26 @@ namespace CppSharp
internal byte isExplicit;
[FieldOffset(396)]
internal byte isOverride;
[FieldOffset(400)]
internal global::CppSharp.Parser.AST.CXXMethodKind methodKind;
[FieldOffset(404)]
[FieldOffset(400)]
internal byte isDefaultConstructor;
[FieldOffset(405)]
[FieldOffset(401)]
internal byte isCopyConstructor;
[FieldOffset(406)]
[FieldOffset(402)]
internal byte isMoveConstructor;
[FieldOffset(408)]
[FieldOffset(404)]
internal global::CppSharp.Parser.AST.QualifiedType.__Internal conversionType;
[FieldOffset(416)]
[FieldOffset(412)]
internal global::CppSharp.Parser.AST.RefQualifierKind refQualifier;
[FieldOffset(416)]
internal global::Std.Vector.__Internal OverriddenMethods;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??0Method@AST@CppParser@CppSharp@@QAE@XZ")]
@ -7777,6 +7777,26 @@ namespace CppSharp @@ -7777,6 +7777,26 @@ namespace CppSharp
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??1Method@AST@CppParser@CppSharp@@QAE@XZ")]
internal static extern void dtor(global::System.IntPtr instance, int delete);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?getOverriddenMethods@Method@AST@CppParser@CppSharp@@QAEPAV1234@I@Z")]
internal static extern global::System.IntPtr GetOverriddenMethods(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?addOverriddenMethods@Method@AST@CppParser@CppSharp@@QAEXAAPAV1234@@Z")]
internal static extern void AddOverriddenMethods(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?clearOverriddenMethods@Method@AST@CppParser@CppSharp@@QAEXXZ")]
internal static extern void ClearOverriddenMethods(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?getOverriddenMethodsCount@Method@AST@CppParser@CppSharp@@QAEIXZ")]
internal static extern uint GetOverriddenMethodsCount(global::System.IntPtr instance);
}
internal static new global::CppSharp.Parser.AST.Method __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
@ -7846,6 +7866,30 @@ namespace CppSharp @@ -7846,6 +7866,30 @@ namespace CppSharp
__Instance = IntPtr.Zero;
}
public global::CppSharp.Parser.AST.Method GetOverriddenMethods(uint i)
{
var __ret = __Internal.GetOverriddenMethods((__Instance + __PointerAdjustment), i);
global::CppSharp.Parser.AST.Method __result0;
if (__ret == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Method.NativeToManagedMap.ContainsKey(__ret))
__result0 = (global::CppSharp.Parser.AST.Method) global::CppSharp.Parser.AST.Method.NativeToManagedMap[__ret];
else __result0 = global::CppSharp.Parser.AST.Method.__CreateInstance(__ret);
return __result0;
}
public void AddOverriddenMethods(global::CppSharp.Parser.AST.Method s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
__Internal.AddOverriddenMethods((__Instance + __PointerAdjustment), __arg0);
}
public void ClearOverriddenMethods()
{
__Internal.ClearOverriddenMethods((__Instance + __PointerAdjustment));
}
public bool IsVirtual
{
get
@ -7898,19 +7942,6 @@ namespace CppSharp @@ -7898,19 +7942,6 @@ namespace CppSharp
}
}
public bool IsOverride
{
get
{
return ((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride != 0;
}
set
{
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride = (byte) (value ? 1 : 0);
}
}
public global::CppSharp.Parser.AST.CXXMethodKind MethodKind
{
get
@ -7988,6 +8019,15 @@ namespace CppSharp @@ -7988,6 +8019,15 @@ namespace CppSharp
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->refQualifier = value;
}
}
public uint OverriddenMethodsCount
{
get
{
var __ret = __Internal.GetOverriddenMethodsCount((__Instance + __PointerAdjustment));
return __ret;
}
}
}
public unsafe partial class Enumeration : global::CppSharp.Parser.AST.DeclarationContext, IDisposable

80
src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -7582,7 +7582,7 @@ namespace CppSharp @@ -7582,7 +7582,7 @@ namespace CppSharp
public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 656)]
[StructLayout(LayoutKind.Explicit, Size = 680)]
public new partial struct __Internal
{
[FieldOffset(0)]
@ -7742,18 +7742,15 @@ namespace CppSharp @@ -7742,18 +7742,15 @@ namespace CppSharp
internal byte isExplicit;
[FieldOffset(620)]
internal byte isOverride;
[FieldOffset(624)]
internal global::CppSharp.Parser.AST.CXXMethodKind methodKind;
[FieldOffset(628)]
[FieldOffset(624)]
internal byte isDefaultConstructor;
[FieldOffset(629)]
[FieldOffset(625)]
internal byte isCopyConstructor;
[FieldOffset(630)]
[FieldOffset(626)]
internal byte isMoveConstructor;
[FieldOffset(632)]
@ -7762,6 +7759,9 @@ namespace CppSharp @@ -7762,6 +7759,9 @@ namespace CppSharp
[FieldOffset(648)]
internal global::CppSharp.Parser.AST.RefQualifierKind refQualifier;
[FieldOffset(656)]
internal global::Std.__1.Vector.__Internal OverriddenMethods;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6MethodC2Ev")]
@ -7776,6 +7776,26 @@ namespace CppSharp @@ -7776,6 +7776,26 @@ namespace CppSharp
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6MethodD2Ev")]
internal static extern void dtor(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method20getOverriddenMethodsEj")]
internal static extern global::System.IntPtr GetOverriddenMethods(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method20addOverriddenMethodsERPS2_")]
internal static extern void AddOverriddenMethods(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method22clearOverriddenMethodsEv")]
internal static extern void ClearOverriddenMethods(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method25getOverriddenMethodsCountEv")]
internal static extern uint GetOverriddenMethodsCount(global::System.IntPtr instance);
}
internal static new global::CppSharp.Parser.AST.Method __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
@ -7845,6 +7865,30 @@ namespace CppSharp @@ -7845,6 +7865,30 @@ namespace CppSharp
__Instance = IntPtr.Zero;
}
public global::CppSharp.Parser.AST.Method GetOverriddenMethods(uint i)
{
var __ret = __Internal.GetOverriddenMethods((__Instance + __PointerAdjustment), i);
global::CppSharp.Parser.AST.Method __result0;
if (__ret == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Method.NativeToManagedMap.ContainsKey(__ret))
__result0 = (global::CppSharp.Parser.AST.Method) global::CppSharp.Parser.AST.Method.NativeToManagedMap[__ret];
else __result0 = global::CppSharp.Parser.AST.Method.__CreateInstance(__ret);
return __result0;
}
public void AddOverriddenMethods(global::CppSharp.Parser.AST.Method s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
__Internal.AddOverriddenMethods((__Instance + __PointerAdjustment), __arg0);
}
public void ClearOverriddenMethods()
{
__Internal.ClearOverriddenMethods((__Instance + __PointerAdjustment));
}
public bool IsVirtual
{
get
@ -7897,19 +7941,6 @@ namespace CppSharp @@ -7897,19 +7941,6 @@ namespace CppSharp
}
}
public bool IsOverride
{
get
{
return ((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride != 0;
}
set
{
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride = (byte) (value ? 1 : 0);
}
}
public global::CppSharp.Parser.AST.CXXMethodKind MethodKind
{
get
@ -7987,6 +8018,15 @@ namespace CppSharp @@ -7987,6 +8018,15 @@ namespace CppSharp
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->refQualifier = value;
}
}
public uint OverriddenMethodsCount
{
get
{
var __ret = __Internal.GetOverriddenMethodsCount((__Instance + __PointerAdjustment));
return __ret;
}
}
}
public unsafe partial class Enumeration : global::CppSharp.Parser.AST.DeclarationContext, IDisposable

80
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs

@ -7582,7 +7582,7 @@ namespace CppSharp @@ -7582,7 +7582,7 @@ namespace CppSharp
public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 728)]
[StructLayout(LayoutKind.Explicit, Size = 752)]
public new partial struct __Internal
{
[FieldOffset(0)]
@ -7742,18 +7742,15 @@ namespace CppSharp @@ -7742,18 +7742,15 @@ namespace CppSharp
internal byte isExplicit;
[FieldOffset(692)]
internal byte isOverride;
[FieldOffset(696)]
internal global::CppSharp.Parser.AST.CXXMethodKind methodKind;
[FieldOffset(700)]
[FieldOffset(696)]
internal byte isDefaultConstructor;
[FieldOffset(701)]
[FieldOffset(697)]
internal byte isCopyConstructor;
[FieldOffset(702)]
[FieldOffset(698)]
internal byte isMoveConstructor;
[FieldOffset(704)]
@ -7762,6 +7759,9 @@ namespace CppSharp @@ -7762,6 +7759,9 @@ namespace CppSharp
[FieldOffset(720)]
internal global::CppSharp.Parser.AST.RefQualifierKind refQualifier;
[FieldOffset(728)]
internal global::Std.Vector.__Internal OverriddenMethods;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6MethodC2Ev")]
@ -7776,6 +7776,26 @@ namespace CppSharp @@ -7776,6 +7776,26 @@ namespace CppSharp
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6MethodD2Ev")]
internal static extern void dtor(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method20getOverriddenMethodsEj")]
internal static extern global::System.IntPtr GetOverriddenMethods(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method20addOverriddenMethodsERPS2_")]
internal static extern void AddOverriddenMethods(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method22clearOverriddenMethodsEv")]
internal static extern void ClearOverriddenMethods(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method25getOverriddenMethodsCountEv")]
internal static extern uint GetOverriddenMethodsCount(global::System.IntPtr instance);
}
internal static new global::CppSharp.Parser.AST.Method __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
@ -7845,6 +7865,30 @@ namespace CppSharp @@ -7845,6 +7865,30 @@ namespace CppSharp
__Instance = IntPtr.Zero;
}
public global::CppSharp.Parser.AST.Method GetOverriddenMethods(uint i)
{
var __ret = __Internal.GetOverriddenMethods((__Instance + __PointerAdjustment), i);
global::CppSharp.Parser.AST.Method __result0;
if (__ret == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Method.NativeToManagedMap.ContainsKey(__ret))
__result0 = (global::CppSharp.Parser.AST.Method) global::CppSharp.Parser.AST.Method.NativeToManagedMap[__ret];
else __result0 = global::CppSharp.Parser.AST.Method.__CreateInstance(__ret);
return __result0;
}
public void AddOverriddenMethods(global::CppSharp.Parser.AST.Method s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
__Internal.AddOverriddenMethods((__Instance + __PointerAdjustment), __arg0);
}
public void ClearOverriddenMethods()
{
__Internal.ClearOverriddenMethods((__Instance + __PointerAdjustment));
}
public bool IsVirtual
{
get
@ -7897,19 +7941,6 @@ namespace CppSharp @@ -7897,19 +7941,6 @@ namespace CppSharp
}
}
public bool IsOverride
{
get
{
return ((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride != 0;
}
set
{
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride = (byte) (value ? 1 : 0);
}
}
public global::CppSharp.Parser.AST.CXXMethodKind MethodKind
{
get
@ -7987,6 +8018,15 @@ namespace CppSharp @@ -7987,6 +8018,15 @@ namespace CppSharp
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->refQualifier = value;
}
}
public uint OverriddenMethodsCount
{
get
{
var __ret = __Internal.GetOverriddenMethodsCount((__Instance + __PointerAdjustment));
return __ret;
}
}
}
public unsafe partial class Enumeration : global::CppSharp.Parser.AST.DeclarationContext, IDisposable

80
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs

@ -7582,7 +7582,7 @@ namespace CppSharp @@ -7582,7 +7582,7 @@ namespace CppSharp
public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 584)]
[StructLayout(LayoutKind.Explicit, Size = 608)]
public new partial struct __Internal
{
[FieldOffset(0)]
@ -7742,18 +7742,15 @@ namespace CppSharp @@ -7742,18 +7742,15 @@ namespace CppSharp
internal byte isExplicit;
[FieldOffset(548)]
internal byte isOverride;
[FieldOffset(552)]
internal global::CppSharp.Parser.AST.CXXMethodKind methodKind;
[FieldOffset(556)]
[FieldOffset(552)]
internal byte isDefaultConstructor;
[FieldOffset(557)]
[FieldOffset(553)]
internal byte isCopyConstructor;
[FieldOffset(558)]
[FieldOffset(554)]
internal byte isMoveConstructor;
[FieldOffset(560)]
@ -7762,6 +7759,9 @@ namespace CppSharp @@ -7762,6 +7759,9 @@ namespace CppSharp
[FieldOffset(576)]
internal global::CppSharp.Parser.AST.RefQualifierKind refQualifier;
[FieldOffset(584)]
internal global::Std.Vector.__Internal OverriddenMethods;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6MethodC2Ev")]
@ -7776,6 +7776,26 @@ namespace CppSharp @@ -7776,6 +7776,26 @@ namespace CppSharp
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6MethodD2Ev")]
internal static extern void dtor(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method20getOverriddenMethodsEj")]
internal static extern global::System.IntPtr GetOverriddenMethods(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method20addOverriddenMethodsERPS2_")]
internal static extern void AddOverriddenMethods(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method22clearOverriddenMethodsEv")]
internal static extern void ClearOverriddenMethods(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6Method25getOverriddenMethodsCountEv")]
internal static extern uint GetOverriddenMethodsCount(global::System.IntPtr instance);
}
internal static new global::CppSharp.Parser.AST.Method __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
@ -7845,6 +7865,30 @@ namespace CppSharp @@ -7845,6 +7865,30 @@ namespace CppSharp
__Instance = IntPtr.Zero;
}
public global::CppSharp.Parser.AST.Method GetOverriddenMethods(uint i)
{
var __ret = __Internal.GetOverriddenMethods((__Instance + __PointerAdjustment), i);
global::CppSharp.Parser.AST.Method __result0;
if (__ret == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Method.NativeToManagedMap.ContainsKey(__ret))
__result0 = (global::CppSharp.Parser.AST.Method) global::CppSharp.Parser.AST.Method.NativeToManagedMap[__ret];
else __result0 = global::CppSharp.Parser.AST.Method.__CreateInstance(__ret);
return __result0;
}
public void AddOverriddenMethods(global::CppSharp.Parser.AST.Method s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
__Internal.AddOverriddenMethods((__Instance + __PointerAdjustment), __arg0);
}
public void ClearOverriddenMethods()
{
__Internal.ClearOverriddenMethods((__Instance + __PointerAdjustment));
}
public bool IsVirtual
{
get
@ -7897,19 +7941,6 @@ namespace CppSharp @@ -7897,19 +7941,6 @@ namespace CppSharp
}
}
public bool IsOverride
{
get
{
return ((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride != 0;
}
set
{
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride = (byte) (value ? 1 : 0);
}
}
public global::CppSharp.Parser.AST.CXXMethodKind MethodKind
{
get
@ -7987,6 +8018,15 @@ namespace CppSharp @@ -7987,6 +8018,15 @@ namespace CppSharp
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->refQualifier = value;
}
}
public uint OverriddenMethodsCount
{
get
{
var __ret = __Internal.GetOverriddenMethodsCount((__Instance + __PointerAdjustment));
return __ret;
}
}
}
public unsafe partial class Enumeration : global::CppSharp.Parser.AST.DeclarationContext, IDisposable

80
src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs

@ -7583,7 +7583,7 @@ namespace CppSharp @@ -7583,7 +7583,7 @@ namespace CppSharp
public unsafe partial class Method : global::CppSharp.Parser.AST.Function, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 696)]
[StructLayout(LayoutKind.Explicit, Size = 720)]
public new partial struct __Internal
{
[FieldOffset(0)]
@ -7743,18 +7743,15 @@ namespace CppSharp @@ -7743,18 +7743,15 @@ namespace CppSharp
internal byte isExplicit;
[FieldOffset(660)]
internal byte isOverride;
[FieldOffset(664)]
internal global::CppSharp.Parser.AST.CXXMethodKind methodKind;
[FieldOffset(668)]
[FieldOffset(664)]
internal byte isDefaultConstructor;
[FieldOffset(669)]
[FieldOffset(665)]
internal byte isCopyConstructor;
[FieldOffset(670)]
[FieldOffset(666)]
internal byte isMoveConstructor;
[FieldOffset(672)]
@ -7763,6 +7760,9 @@ namespace CppSharp @@ -7763,6 +7760,9 @@ namespace CppSharp
[FieldOffset(688)]
internal global::CppSharp.Parser.AST.RefQualifierKind refQualifier;
[FieldOffset(696)]
internal global::Std.Vector.__Internal OverriddenMethods;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="??0Method@AST@CppParser@CppSharp@@QEAA@XZ")]
@ -7777,6 +7777,26 @@ namespace CppSharp @@ -7777,6 +7777,26 @@ namespace CppSharp
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="??1Method@AST@CppParser@CppSharp@@QEAA@XZ")]
internal static extern void dtor(global::System.IntPtr instance, int delete);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="?getOverriddenMethods@Method@AST@CppParser@CppSharp@@QEAAPEAV1234@I@Z")]
internal static extern global::System.IntPtr GetOverriddenMethods(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="?addOverriddenMethods@Method@AST@CppParser@CppSharp@@QEAAXAEAPEAV1234@@Z")]
internal static extern void AddOverriddenMethods(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="?clearOverriddenMethods@Method@AST@CppParser@CppSharp@@QEAAXXZ")]
internal static extern void ClearOverriddenMethods(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="?getOverriddenMethodsCount@Method@AST@CppParser@CppSharp@@QEAAIXZ")]
internal static extern uint GetOverriddenMethodsCount(global::System.IntPtr instance);
}
internal static new global::CppSharp.Parser.AST.Method __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
@ -7846,6 +7866,30 @@ namespace CppSharp @@ -7846,6 +7866,30 @@ namespace CppSharp
__Instance = IntPtr.Zero;
}
public global::CppSharp.Parser.AST.Method GetOverriddenMethods(uint i)
{
var __ret = __Internal.GetOverriddenMethods((__Instance + __PointerAdjustment), i);
global::CppSharp.Parser.AST.Method __result0;
if (__ret == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Method.NativeToManagedMap.ContainsKey(__ret))
__result0 = (global::CppSharp.Parser.AST.Method) global::CppSharp.Parser.AST.Method.NativeToManagedMap[__ret];
else __result0 = global::CppSharp.Parser.AST.Method.__CreateInstance(__ret);
return __result0;
}
public void AddOverriddenMethods(global::CppSharp.Parser.AST.Method s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
__Internal.AddOverriddenMethods((__Instance + __PointerAdjustment), __arg0);
}
public void ClearOverriddenMethods()
{
__Internal.ClearOverriddenMethods((__Instance + __PointerAdjustment));
}
public bool IsVirtual
{
get
@ -7898,19 +7942,6 @@ namespace CppSharp @@ -7898,19 +7942,6 @@ namespace CppSharp
}
}
public bool IsOverride
{
get
{
return ((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride != 0;
}
set
{
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->isOverride = (byte) (value ? 1 : 0);
}
}
public global::CppSharp.Parser.AST.CXXMethodKind MethodKind
{
get
@ -7988,6 +8019,15 @@ namespace CppSharp @@ -7988,6 +8019,15 @@ namespace CppSharp
((global::CppSharp.Parser.AST.Method.__Internal*) __Instance)->refQualifier = value;
}
}
public uint OverriddenMethodsCount
{
get
{
var __ret = __Internal.GetOverriddenMethodsCount((__Instance + __PointerAdjustment));
return __ret;
}
}
}
public unsafe partial class Enumeration : global::CppSharp.Parser.AST.DeclarationContext, IDisposable

6
src/CppParser/Parser.cpp

@ -1603,7 +1603,11 @@ Method* Parser::WalkMethodCXX(const clang::CXXMethodDecl* MD) @@ -1603,7 +1603,11 @@ Method* Parser::WalkMethodCXX(const clang::CXXMethodDecl* MD)
Method->isStatic = MD->isStatic();
Method->isVirtual = MD->isVirtual();
Method->isConst = MD->isConst();
Method->isOverride = MD->size_overridden_methods() > 0;
for (auto OverriddenMethod : MD->overridden_methods())
{
auto OM = WalkMethodCXX(OverriddenMethod);
Method->OverriddenMethods.push_back(OM);
}
switch (MD->getRefQualifier())
{
case clang::RefQualifierKind::RQ_None:

7
src/Parser/ASTConverter.cs

@ -1209,7 +1209,6 @@ namespace CppSharp @@ -1209,7 +1209,6 @@ namespace CppSharp
_method.IsConst = decl.IsConst;
_method.IsImplicit = decl.IsImplicit;
_method.IsExplicit = decl.IsExplicit;
_method.IsOverride = decl.IsOverride;
switch (decl.RefQualifier)
{
@ -1232,6 +1231,12 @@ namespace CppSharp @@ -1232,6 +1231,12 @@ namespace CppSharp
_method.ConversionType = typeConverter.VisitQualified(decl.ConversionType);
for (uint i = 0; i < decl.OverriddenMethodsCount; i++)
{
var @override = decl.GetOverriddenMethods(i);
_method.OverriddenMethods.Add((AST.Method) Visit(@override));
}
return _method;
}

Loading…
Cancel
Save