Browse Source

Added parsing and AST support for C++ friend declarations.

pull/404/head
triton 11 years ago
parent
commit
ac7176f1b7
  1. 8
      src/AST/ASTVisitor.cs
  2. 1
      src/AST/Declaration.cs
  3. 21
      src/AST/Friend.cs
  4. 22
      src/Core/Parser/ASTConverter.cs
  5. 14
      src/CppParser/AST.cpp
  6. 15
      src/CppParser/AST.h
  7. 50
      src/CppParser/Bindings/CLI/AST.cpp
  8. 30
      src/CppParser/Bindings/CLI/AST.h
  9. 301
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs
  10. 301
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs
  11. 301
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs
  12. 32
      src/CppParser/Parser.cpp
  13. 1
      src/CppParser/Parser.h
  14. 5
      src/Generator.Tests/AST/TestAST.cs
  15. 5
      src/Generator/Generators/CLI/CLITypePrinter.cs
  16. 5
      src/Generator/Generators/CSharp/CSharpTypePrinter.cs
  17. 5
      src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs
  18. 5
      src/Generator/Types/CppTypePrinter.cs

8
src/AST/ASTVisitor.cs

@ -293,6 +293,14 @@ namespace CppSharp.AST @@ -293,6 +293,14 @@ namespace CppSharp.AST
return property.Type.Visit(this);
}
public bool VisitFriend(Friend friend)
{
if (!VisitDeclaration(friend))
return false;
return friend.Declaration.Visit(this);
}
public virtual bool VisitFunctionDecl(Function function)
{
if (!VisitDeclaration(function))

1
src/AST/Declaration.cs

@ -381,5 +381,6 @@ namespace CppSharp.AST @@ -381,5 +381,6 @@ namespace CppSharp.AST
T VisitNamespace(Namespace @namespace);
T VisitEvent(Event @event);
T VisitProperty(Property @property);
T VisitFriend(Friend friend);
}
}

21
src/AST/Friend.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
namespace CppSharp.AST
{
public class Friend : Declaration
{
public Declaration Declaration { get; set; }
public Friend()
{
}
public Friend(Declaration declaration)
{
Declaration = declaration;
}
public override T Visit<T>(IDeclVisitor<T> visitor)
{
return visitor.VisitFriend(this);
}
}
}

22
src/Core/Parser/ASTConverter.cs

@ -129,6 +129,7 @@ namespace CppSharp @@ -129,6 +129,7 @@ namespace CppSharp
public abstract TRet VisitEnumeration(Enumeration decl);
public abstract TRet VisitEnumerationItem(Enumeration.Item decl);
public abstract TRet VisitVariable(Variable decl);
public abstract TRet VisitFriend(Friend decl);
public abstract TRet VisitField(Field decl);
public abstract TRet VisitAccessSpecifier(AccessSpecifierDecl decl);
public abstract TRet VisitClass(Class decl);
@ -190,6 +191,11 @@ namespace CppSharp @@ -190,6 +191,11 @@ namespace CppSharp
var _decl = Variable.__CreateInstance(decl.__Instance);
return VisitVariable(_decl);
}
case DeclarationKind.Friend:
{
var _decl = Friend.__CreateInstance(decl.__Instance);
return VisitFriend(_decl);
}
case DeclarationKind.Field:
{
var _decl = Field.__CreateInstance(decl.__Instance);
@ -788,6 +794,13 @@ namespace CppSharp @@ -788,6 +794,13 @@ namespace CppSharp
_ctx.Variables.Add(_decl);
}
for (uint i = 0; i < ctx.FriendsCount; ++i)
{
var decl = ctx.getFriends(i);
var _decl = Visit(decl) as AST.Friend;
_ctx.Declarations.Add(_decl);
}
// Anonymous types
}
@ -1139,6 +1152,15 @@ namespace CppSharp @@ -1139,6 +1152,15 @@ namespace CppSharp
return _variable;
}
public override AST.Declaration VisitFriend(Friend decl)
{
var _friend = new AST.Friend();
VisitDeclaration(decl, _friend);
_friend.Declaration = Visit(decl.Declaration);
return _friend;
}
public override AST.Declaration VisitField(Field decl)
{
var _field = new AST.Field();

14
src/CppParser/AST.cpp

@ -189,6 +189,7 @@ DEF_VECTOR(DeclarationContext, Class*, Classes) @@ -189,6 +189,7 @@ DEF_VECTOR(DeclarationContext, Class*, Classes)
DEF_VECTOR(DeclarationContext, Template*, Templates)
DEF_VECTOR(DeclarationContext, TypedefDecl*, Typedefs)
DEF_VECTOR(DeclarationContext, Variable*, Variables)
DEF_VECTOR(DeclarationContext, Friend*, Friends)
Declaration* DeclarationContext::FindAnonymous(const std::string& key)
{
@ -451,8 +452,21 @@ Variable* DeclarationContext::FindVariable(const std::string& USR) @@ -451,8 +452,21 @@ Variable* DeclarationContext::FindVariable(const std::string& USR)
return nullptr;
}
Friend* DeclarationContext::FindFriend(const std::string& USR)
{
auto found = std::find_if(Friends.begin(), Friends.end(),
[&](Friend* var) { return var->USR == USR; });
if (found != Friends.end())
return *found;
return nullptr;
}
TypedefDecl::TypedefDecl() : Declaration(DeclarationKind::Typedef) {}
Friend::Friend() : CppSharp::CppParser::AST::Declaration(DeclarationKind::Friend), Declaration(0) {}
DEF_STRING(Statement, String)
Statement::Statement(const std::string& str, StatementClass stmtClass, Declaration* decl) : String(str), Class(stmtClass), Decl(decl) {}

15
src/CppParser/AST.h

@ -362,7 +362,8 @@ enum class DeclarationKind @@ -362,7 +362,8 @@ enum class DeclarationKind
PreprocessedEntity,
MacroDefinition,
MacroExpansion,
TranslationUnit
TranslationUnit,
Friend,
};
#define DECLARE_DECL_KIND(klass, kind) \
@ -410,6 +411,7 @@ class Template; @@ -410,6 +411,7 @@ class Template;
class ClassTemplate;
class FunctionTemplate;
class Variable;
class Friend;
class CS_API DeclarationContext : public Declaration
{
@ -440,6 +442,8 @@ public: @@ -440,6 +442,8 @@ public:
CS_IGNORE Variable* FindVariable(const std::string& USR);
CS_IGNORE Friend* FindFriend(const std::string& USR);
VECTOR(Namespace*, Namespaces)
VECTOR(Enumeration*, Enums)
VECTOR(Function*, Functions)
@ -447,6 +451,8 @@ public: @@ -447,6 +451,8 @@ public:
VECTOR(Template*, Templates)
VECTOR(TypedefDecl*, Typedefs)
VECTOR(Variable*, Variables)
VECTOR(Friend*, Friends)
std::map<std::string, Declaration*> Anonymous;
bool IsAnonymous;
@ -459,6 +465,13 @@ public: @@ -459,6 +465,13 @@ public:
CppSharp::CppParser::AST::QualifiedType QualifiedType;
};
class CS_API Friend : public Declaration
{
public:
DECLARE_DECL_KIND(Friend, Friend)
CppSharp::CppParser::AST::Declaration* Declaration;
};
enum class StatementClass
{
Any,

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

@ -1425,6 +1425,24 @@ void CppSharp::Parser::AST::DeclarationContext::clearVariables() @@ -1425,6 +1425,24 @@ void CppSharp::Parser::AST::DeclarationContext::clearVariables()
((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->clearVariables();
}
CppSharp::Parser::AST::Friend^ CppSharp::Parser::AST::DeclarationContext::getFriends(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->getFriends(i);
if (__ret == nullptr) return nullptr;
return (__ret == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Friend((::CppSharp::CppParser::AST::Friend*)__ret);
}
void CppSharp::Parser::AST::DeclarationContext::addFriends(CppSharp::Parser::AST::Friend^ s)
{
auto arg0 = (::CppSharp::CppParser::AST::Friend*)s->NativePtr;
((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->addFriends(arg0);
}
void CppSharp::Parser::AST::DeclarationContext::clearFriends()
{
((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->clearFriends();
}
unsigned int CppSharp::Parser::AST::DeclarationContext::NamespacesCount::get()
{
auto __ret = ((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->getNamespacesCount();
@ -1467,6 +1485,12 @@ unsigned int CppSharp::Parser::AST::DeclarationContext::VariablesCount::get() @@ -1467,6 +1485,12 @@ unsigned int CppSharp::Parser::AST::DeclarationContext::VariablesCount::get()
return __ret;
}
unsigned int CppSharp::Parser::AST::DeclarationContext::FriendsCount::get()
{
auto __ret = ((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->getFriendsCount();
return __ret;
}
bool CppSharp::Parser::AST::DeclarationContext::IsAnonymous::get()
{
return ((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->IsAnonymous;
@ -1503,6 +1527,32 @@ void CppSharp::Parser::AST::TypedefDecl::QualifiedType::set(CppSharp::Parser::AS @@ -1503,6 +1527,32 @@ void CppSharp::Parser::AST::TypedefDecl::QualifiedType::set(CppSharp::Parser::AS
((::CppSharp::CppParser::AST::TypedefDecl*)NativePtr)->QualifiedType = *(::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr;
}
CppSharp::Parser::AST::Friend::Friend(::CppSharp::CppParser::AST::Friend* native)
: CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)native)
{
}
CppSharp::Parser::AST::Friend^ CppSharp::Parser::AST::Friend::__CreateInstance(::System::IntPtr native)
{
return gcnew CppSharp::Parser::AST::Friend((::CppSharp::CppParser::AST::Friend*) native.ToPointer());
}
CppSharp::Parser::AST::Friend::Friend()
: CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)nullptr)
{
NativePtr = new ::CppSharp::CppParser::AST::Friend();
}
CppSharp::Parser::AST::Declaration^ CppSharp::Parser::AST::Friend::Declaration::get()
{
return (((::CppSharp::CppParser::AST::Friend*)NativePtr)->Declaration == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)((::CppSharp::CppParser::AST::Friend*)NativePtr)->Declaration);
}
void CppSharp::Parser::AST::Friend::Declaration::set(CppSharp::Parser::AST::Declaration^ value)
{
((::CppSharp::CppParser::AST::Friend*)NativePtr)->Declaration = (::CppSharp::CppParser::AST::Declaration*)value->NativePtr;
}
CppSharp::Parser::AST::Statement::Statement(::CppSharp::CppParser::AST::Statement* native)
{
NativePtr = native;

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

@ -44,6 +44,7 @@ namespace CppSharp @@ -44,6 +44,7 @@ namespace CppSharp
ref class Enumeration;
ref class Expression;
ref class Field;
ref class Friend;
ref class FullComment;
ref class Function;
ref class FunctionTemplate;
@ -130,7 +131,8 @@ namespace CppSharp @@ -130,7 +131,8 @@ namespace CppSharp
PreprocessedEntity = 17,
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20
TranslationUnit = 20,
Friend = 21
};
public enum struct AccessSpecifier
@ -1113,6 +1115,11 @@ namespace CppSharp @@ -1113,6 +1115,11 @@ namespace CppSharp
unsigned int get();
}
property unsigned int FriendsCount
{
unsigned int get();
}
property bool IsAnonymous
{
bool get();
@ -1160,6 +1167,12 @@ namespace CppSharp @@ -1160,6 +1167,12 @@ namespace CppSharp
void addVariables(CppSharp::Parser::AST::Variable^ s);
void clearVariables();
CppSharp::Parser::AST::Friend^ getFriends(unsigned int i);
void addFriends(CppSharp::Parser::AST::Friend^ s);
void clearFriends();
};
public ref class TypedefDecl : CppSharp::Parser::AST::Declaration
@ -1177,6 +1190,21 @@ namespace CppSharp @@ -1177,6 +1190,21 @@ namespace CppSharp
}
};
public ref class Friend : CppSharp::Parser::AST::Declaration
{
public:
Friend(::CppSharp::CppParser::AST::Friend* native);
static Friend^ __CreateInstance(::System::IntPtr native);
Friend();
property CppSharp::Parser::AST::Declaration^ Declaration
{
CppSharp::Parser::AST::Declaration^ get();
void set(CppSharp::Parser::AST::Declaration^);
}
};
public ref class Statement : ICppInstance
{
public:

301
src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs

@ -53,7 +53,8 @@ namespace CppSharp @@ -53,7 +53,8 @@ namespace CppSharp
PreprocessedEntity = 17,
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20
TranslationUnit = 20,
Friend = 21
}
public enum AccessSpecifier
@ -3368,7 +3369,7 @@ namespace CppSharp @@ -3368,7 +3369,7 @@ namespace CppSharp
public unsafe partial class DeclarationContext : CppSharp.Parser.AST.Declaration, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 184)]
[StructLayout(LayoutKind.Explicit, Size = 196)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -3401,7 +3402,7 @@ namespace CppSharp @@ -3401,7 +3402,7 @@ namespace CppSharp
[FieldOffset(68)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(180)]
[FieldOffset(192)]
public bool IsAnonymous;
[SuppressUnmanagedCodeSecurity]
@ -3524,6 +3525,21 @@ namespace CppSharp @@ -3524,6 +3525,21 @@ namespace CppSharp
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext14clearVariablesEv")]
internal static extern void clearVariables_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext10getFriendsEj")]
internal static extern global::System.IntPtr getFriends_0(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext10addFriendsERPNS1_6FriendE")]
internal static extern void addFriends_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext12clearFriendsEv")]
internal static extern void clearFriends_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext18getNamespacesCountEv")]
@ -3558,6 +3574,11 @@ namespace CppSharp @@ -3558,6 +3574,11 @@ namespace CppSharp
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext17getVariablesCountEv")]
internal static extern uint getVariablesCount_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext15getFriendsCountEv")]
internal static extern uint getFriendsCount_0(global::System.IntPtr instance);
}
private readonly bool __ownsNativeInstance;
@ -3574,7 +3595,7 @@ namespace CppSharp @@ -3574,7 +3595,7 @@ namespace CppSharp
private static DeclarationContext.Internal* __CopyValue(DeclarationContext.Internal native)
{
var ret = Marshal.AllocHGlobal(184);
var ret = Marshal.AllocHGlobal(196);
CppSharp.Parser.AST.DeclarationContext.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (DeclarationContext.Internal*) ret;
}
@ -3593,7 +3614,7 @@ namespace CppSharp @@ -3593,7 +3614,7 @@ namespace CppSharp
public DeclarationContext(CppSharp.Parser.AST.DeclarationKind kind)
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(184);
__Instance = Marshal.AllocHGlobal(196);
__ownsNativeInstance = true;
var arg0 = kind;
Internal.ctor_0(__Instance, arg0);
@ -3734,6 +3755,24 @@ namespace CppSharp @@ -3734,6 +3755,24 @@ namespace CppSharp
Internal.clearVariables_0(__Instance);
}
public CppSharp.Parser.AST.Friend getFriends(uint i)
{
var __ret = Internal.getFriends_0(__Instance, i);
if (__ret == global::System.IntPtr.Zero) return null;
return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Friend.__CreateInstance(__ret);
}
public void addFriends(CppSharp.Parser.AST.Friend s)
{
var arg0 = ReferenceEquals(s, null) ? global::System.IntPtr.Zero : s.__Instance;
Internal.addFriends_0(__Instance, arg0);
}
public void clearFriends()
{
Internal.clearFriends_0(__Instance);
}
public uint NamespacesCount
{
get
@ -3797,6 +3836,15 @@ namespace CppSharp @@ -3797,6 +3836,15 @@ namespace CppSharp
}
}
public uint FriendsCount
{
get
{
var __ret = Internal.getFriendsCount_0(__Instance);
return __ret;
}
}
public bool IsAnonymous
{
get
@ -3926,6 +3974,121 @@ namespace CppSharp @@ -3926,6 +3974,121 @@ namespace CppSharp
}
}
public unsafe partial class Friend : CppSharp.Parser.AST.Declaration, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 88)]
public new partial struct Internal
{
[FieldOffset(0)]
public CppSharp.Parser.AST.DeclarationKind Kind;
[FieldOffset(4)]
public CppSharp.Parser.AST.AccessSpecifier Access;
[FieldOffset(8)]
public global::System.IntPtr _Namespace;
[FieldOffset(12)]
public CppSharp.Parser.SourceLocation.Internal Location;
[FieldOffset(28)]
public global::System.IntPtr Comment;
[FieldOffset(44)]
public bool IsIncomplete;
[FieldOffset(45)]
public bool IsDependent;
[FieldOffset(48)]
public global::System.IntPtr CompleteDeclaration;
[FieldOffset(52)]
public uint DefinitionOrder;
[FieldOffset(68)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(84)]
public global::System.IntPtr Declaration;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6FriendC2Ev")]
internal static extern void ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6FriendC2ERKS2_")]
internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6FriendD2Ev")]
internal static extern void dtor_0(global::System.IntPtr instance);
}
private readonly bool __ownsNativeInstance;
public static new Friend __CreateInstance(global::System.IntPtr native)
{
return new Friend((Friend.Internal*) native);
}
public static Friend __CreateInstance(Friend.Internal native)
{
return new Friend(native);
}
private static Friend.Internal* __CopyValue(Friend.Internal native)
{
var ret = Marshal.AllocHGlobal(88);
CppSharp.Parser.AST.Friend.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (Friend.Internal*) ret;
}
private Friend(Friend.Internal native)
: this(__CopyValue(native))
{
__ownsNativeInstance = true;
}
protected Friend(Friend.Internal* native, bool isInternalImpl = false)
: base((Declaration.Internal*) native)
{
}
public Friend()
: 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);
}
public CppSharp.Parser.AST.Declaration Declaration
{
get
{
return (((Internal*) __Instance)->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(((Internal*) __Instance)->Declaration);
}
set
{
((Internal*) __Instance)->Declaration = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
}
public unsafe partial class Statement : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 20)]
@ -4989,7 +5152,7 @@ namespace CppSharp @@ -4989,7 +5152,7 @@ namespace CppSharp
public unsafe partial class Enumeration : CppSharp.Parser.AST.DeclarationContext, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 208)]
[StructLayout(LayoutKind.Explicit, Size = 220)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -5022,16 +5185,16 @@ namespace CppSharp @@ -5022,16 +5185,16 @@ namespace CppSharp
[FieldOffset(68)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(180)]
[FieldOffset(192)]
public bool IsAnonymous;
[FieldOffset(184)]
[FieldOffset(196)]
public CppSharp.Parser.AST.Enumeration.EnumModifiers Modifiers;
[FieldOffset(188)]
[FieldOffset(200)]
public global::System.IntPtr Type;
[FieldOffset(192)]
[FieldOffset(204)]
public global::System.IntPtr BuiltinType;
[SuppressUnmanagedCodeSecurity]
@ -5234,7 +5397,7 @@ namespace CppSharp @@ -5234,7 +5397,7 @@ namespace CppSharp
private static Enumeration.Internal* __CopyValue(Enumeration.Internal native)
{
var ret = Marshal.AllocHGlobal(208);
var ret = Marshal.AllocHGlobal(220);
CppSharp.Parser.AST.Enumeration.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (Enumeration.Internal*) ret;
}
@ -5253,7 +5416,7 @@ namespace CppSharp @@ -5253,7 +5416,7 @@ namespace CppSharp
public Enumeration()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(208);
__Instance = Marshal.AllocHGlobal(220);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -5874,7 +6037,7 @@ namespace CppSharp @@ -5874,7 +6037,7 @@ namespace CppSharp
public unsafe partial class Class : CppSharp.Parser.AST.DeclarationContext, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 248)]
[StructLayout(LayoutKind.Explicit, Size = 260)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -5907,37 +6070,37 @@ namespace CppSharp @@ -5907,37 +6070,37 @@ namespace CppSharp
[FieldOffset(68)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(180)]
[FieldOffset(192)]
public bool IsAnonymous;
[FieldOffset(232)]
[FieldOffset(244)]
public bool IsPOD;
[FieldOffset(233)]
[FieldOffset(245)]
public bool IsAbstract;
[FieldOffset(234)]
[FieldOffset(246)]
public bool IsUnion;
[FieldOffset(235)]
[FieldOffset(247)]
public bool IsDynamic;
[FieldOffset(236)]
[FieldOffset(248)]
public bool IsPolymorphic;
[FieldOffset(237)]
[FieldOffset(249)]
public bool HasNonTrivialDefaultConstructor;
[FieldOffset(238)]
[FieldOffset(250)]
public bool HasNonTrivialCopyConstructor;
[FieldOffset(239)]
[FieldOffset(251)]
public bool HasNonTrivialDestructor;
[FieldOffset(240)]
[FieldOffset(252)]
public bool IsExternCContext;
[FieldOffset(244)]
[FieldOffset(256)]
public global::System.IntPtr Layout;
[SuppressUnmanagedCodeSecurity]
@ -6050,7 +6213,7 @@ namespace CppSharp @@ -6050,7 +6213,7 @@ namespace CppSharp
private static Class.Internal* __CopyValue(Class.Internal native)
{
var ret = Marshal.AllocHGlobal(248);
var ret = Marshal.AllocHGlobal(260);
CppSharp.Parser.AST.Class.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (Class.Internal*) ret;
}
@ -6069,7 +6232,7 @@ namespace CppSharp @@ -6069,7 +6232,7 @@ namespace CppSharp
public Class()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(248);
__Instance = Marshal.AllocHGlobal(260);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -6649,7 +6812,7 @@ namespace CppSharp @@ -6649,7 +6812,7 @@ namespace CppSharp
public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Class, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 268)]
[StructLayout(LayoutKind.Explicit, Size = 280)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -6682,43 +6845,43 @@ namespace CppSharp @@ -6682,43 +6845,43 @@ namespace CppSharp
[FieldOffset(68)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(180)]
[FieldOffset(192)]
public bool IsAnonymous;
[FieldOffset(232)]
[FieldOffset(244)]
public bool IsPOD;
[FieldOffset(233)]
[FieldOffset(245)]
public bool IsAbstract;
[FieldOffset(234)]
[FieldOffset(246)]
public bool IsUnion;
[FieldOffset(235)]
[FieldOffset(247)]
public bool IsDynamic;
[FieldOffset(236)]
[FieldOffset(248)]
public bool IsPolymorphic;
[FieldOffset(237)]
[FieldOffset(249)]
public bool HasNonTrivialDefaultConstructor;
[FieldOffset(238)]
[FieldOffset(250)]
public bool HasNonTrivialCopyConstructor;
[FieldOffset(239)]
[FieldOffset(251)]
public bool HasNonTrivialDestructor;
[FieldOffset(240)]
[FieldOffset(252)]
public bool IsExternCContext;
[FieldOffset(244)]
[FieldOffset(256)]
public global::System.IntPtr Layout;
[FieldOffset(248)]
[FieldOffset(260)]
public global::System.IntPtr TemplatedDecl;
[FieldOffset(264)]
[FieldOffset(276)]
public CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind;
[SuppressUnmanagedCodeSecurity]
@ -6771,7 +6934,7 @@ namespace CppSharp @@ -6771,7 +6934,7 @@ namespace CppSharp
private static ClassTemplateSpecialization.Internal* __CopyValue(ClassTemplateSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(268);
var ret = Marshal.AllocHGlobal(280);
CppSharp.Parser.AST.ClassTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (ClassTemplateSpecialization.Internal*) ret;
}
@ -6790,7 +6953,7 @@ namespace CppSharp @@ -6790,7 +6953,7 @@ namespace CppSharp
public ClassTemplateSpecialization()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(268);
__Instance = Marshal.AllocHGlobal(280);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -6860,7 +7023,7 @@ namespace CppSharp @@ -6860,7 +7023,7 @@ namespace CppSharp
public unsafe partial class ClassTemplatePartialSpecialization : CppSharp.Parser.AST.ClassTemplateSpecialization, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 268)]
[StructLayout(LayoutKind.Explicit, Size = 280)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -6893,43 +7056,43 @@ namespace CppSharp @@ -6893,43 +7056,43 @@ namespace CppSharp
[FieldOffset(68)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(180)]
[FieldOffset(192)]
public bool IsAnonymous;
[FieldOffset(232)]
[FieldOffset(244)]
public bool IsPOD;
[FieldOffset(233)]
[FieldOffset(245)]
public bool IsAbstract;
[FieldOffset(234)]
[FieldOffset(246)]
public bool IsUnion;
[FieldOffset(235)]
[FieldOffset(247)]
public bool IsDynamic;
[FieldOffset(236)]
[FieldOffset(248)]
public bool IsPolymorphic;
[FieldOffset(237)]
[FieldOffset(249)]
public bool HasNonTrivialDefaultConstructor;
[FieldOffset(238)]
[FieldOffset(250)]
public bool HasNonTrivialCopyConstructor;
[FieldOffset(239)]
[FieldOffset(251)]
public bool HasNonTrivialDestructor;
[FieldOffset(240)]
[FieldOffset(252)]
public bool IsExternCContext;
[FieldOffset(244)]
[FieldOffset(256)]
public global::System.IntPtr Layout;
[FieldOffset(248)]
[FieldOffset(260)]
public global::System.IntPtr TemplatedDecl;
[FieldOffset(264)]
[FieldOffset(276)]
public CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind;
[SuppressUnmanagedCodeSecurity]
@ -6962,7 +7125,7 @@ namespace CppSharp @@ -6962,7 +7125,7 @@ namespace CppSharp
private static ClassTemplatePartialSpecialization.Internal* __CopyValue(ClassTemplatePartialSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(268);
var ret = Marshal.AllocHGlobal(280);
CppSharp.Parser.AST.ClassTemplatePartialSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (ClassTemplatePartialSpecialization.Internal*) ret;
}
@ -6981,7 +7144,7 @@ namespace CppSharp @@ -6981,7 +7144,7 @@ namespace CppSharp
public ClassTemplatePartialSpecialization()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(268);
__Instance = Marshal.AllocHGlobal(280);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -7318,7 +7481,7 @@ namespace CppSharp @@ -7318,7 +7481,7 @@ namespace CppSharp
public unsafe partial class Namespace : CppSharp.Parser.AST.DeclarationContext, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 184)]
[StructLayout(LayoutKind.Explicit, Size = 196)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -7351,10 +7514,10 @@ namespace CppSharp @@ -7351,10 +7514,10 @@ namespace CppSharp
[FieldOffset(68)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(180)]
[FieldOffset(192)]
public bool IsAnonymous;
[FieldOffset(181)]
[FieldOffset(193)]
public bool IsInline;
[SuppressUnmanagedCodeSecurity]
@ -7387,7 +7550,7 @@ namespace CppSharp @@ -7387,7 +7550,7 @@ namespace CppSharp
private static Namespace.Internal* __CopyValue(Namespace.Internal native)
{
var ret = Marshal.AllocHGlobal(184);
var ret = Marshal.AllocHGlobal(196);
CppSharp.Parser.AST.Namespace.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (Namespace.Internal*) ret;
}
@ -7406,7 +7569,7 @@ namespace CppSharp @@ -7406,7 +7569,7 @@ namespace CppSharp
public Namespace()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(184);
__Instance = Marshal.AllocHGlobal(196);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -7825,7 +7988,7 @@ namespace CppSharp @@ -7825,7 +7988,7 @@ namespace CppSharp
public unsafe partial class TranslationUnit : CppSharp.Parser.AST.Namespace, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 212)]
[StructLayout(LayoutKind.Explicit, Size = 224)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -7858,13 +8021,13 @@ namespace CppSharp @@ -7858,13 +8021,13 @@ namespace CppSharp
[FieldOffset(68)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(180)]
[FieldOffset(192)]
public bool IsAnonymous;
[FieldOffset(181)]
[FieldOffset(193)]
public bool IsInline;
[FieldOffset(196)]
[FieldOffset(208)]
public bool IsSystemHeader;
[SuppressUnmanagedCodeSecurity]
@ -7927,7 +8090,7 @@ namespace CppSharp @@ -7927,7 +8090,7 @@ namespace CppSharp
private static TranslationUnit.Internal* __CopyValue(TranslationUnit.Internal native)
{
var ret = Marshal.AllocHGlobal(212);
var ret = Marshal.AllocHGlobal(224);
CppSharp.Parser.AST.TranslationUnit.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (TranslationUnit.Internal*) ret;
}
@ -7946,7 +8109,7 @@ namespace CppSharp @@ -7946,7 +8109,7 @@ namespace CppSharp
public TranslationUnit()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(212);
__Instance = Marshal.AllocHGlobal(224);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}

301
src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs

@ -53,7 +53,8 @@ namespace CppSharp @@ -53,7 +53,8 @@ namespace CppSharp
PreprocessedEntity = 17,
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20
TranslationUnit = 20,
Friend = 21
}
public enum AccessSpecifier
@ -3368,7 +3369,7 @@ namespace CppSharp @@ -3368,7 +3369,7 @@ namespace CppSharp
public unsafe partial class DeclarationContext : CppSharp.Parser.AST.Declaration, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 216)]
[StructLayout(LayoutKind.Explicit, Size = 228)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -3401,7 +3402,7 @@ namespace CppSharp @@ -3401,7 +3402,7 @@ namespace CppSharp
[FieldOffset(92)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(212)]
[FieldOffset(224)]
public bool IsAnonymous;
[SuppressUnmanagedCodeSecurity]
@ -3524,6 +3525,21 @@ namespace CppSharp @@ -3524,6 +3525,21 @@ namespace CppSharp
EntryPoint="?clearVariables@DeclarationContext@AST@CppParser@CppSharp@@QAEXXZ")]
internal static extern void clearVariables_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?getFriends@DeclarationContext@AST@CppParser@CppSharp@@QAEPAVFriend@234@I@Z")]
internal static extern global::System.IntPtr getFriends_0(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?addFriends@DeclarationContext@AST@CppParser@CppSharp@@QAEXAAPAVFriend@234@@Z")]
internal static extern void addFriends_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?clearFriends@DeclarationContext@AST@CppParser@CppSharp@@QAEXXZ")]
internal static extern void clearFriends_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?getNamespacesCount@DeclarationContext@AST@CppParser@CppSharp@@QAEIXZ")]
@ -3558,6 +3574,11 @@ namespace CppSharp @@ -3558,6 +3574,11 @@ namespace CppSharp
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?getVariablesCount@DeclarationContext@AST@CppParser@CppSharp@@QAEIXZ")]
internal static extern uint getVariablesCount_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?getFriendsCount@DeclarationContext@AST@CppParser@CppSharp@@QAEIXZ")]
internal static extern uint getFriendsCount_0(global::System.IntPtr instance);
}
private readonly bool __ownsNativeInstance;
@ -3574,7 +3595,7 @@ namespace CppSharp @@ -3574,7 +3595,7 @@ namespace CppSharp
private static DeclarationContext.Internal* __CopyValue(DeclarationContext.Internal native)
{
var ret = Marshal.AllocHGlobal(216);
var ret = Marshal.AllocHGlobal(228);
CppSharp.Parser.AST.DeclarationContext.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (DeclarationContext.Internal*) ret;
}
@ -3593,7 +3614,7 @@ namespace CppSharp @@ -3593,7 +3614,7 @@ namespace CppSharp
public DeclarationContext(CppSharp.Parser.AST.DeclarationKind kind)
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(216);
__Instance = Marshal.AllocHGlobal(228);
__ownsNativeInstance = true;
var arg0 = kind;
Internal.ctor_0(__Instance, arg0);
@ -3734,6 +3755,24 @@ namespace CppSharp @@ -3734,6 +3755,24 @@ namespace CppSharp
Internal.clearVariables_0(__Instance);
}
public CppSharp.Parser.AST.Friend getFriends(uint i)
{
var __ret = Internal.getFriends_0(__Instance, i);
if (__ret == global::System.IntPtr.Zero) return null;
return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Friend.__CreateInstance(__ret);
}
public void addFriends(CppSharp.Parser.AST.Friend s)
{
var arg0 = ReferenceEquals(s, null) ? global::System.IntPtr.Zero : s.__Instance;
Internal.addFriends_0(__Instance, arg0);
}
public void clearFriends()
{
Internal.clearFriends_0(__Instance);
}
public uint NamespacesCount
{
get
@ -3797,6 +3836,15 @@ namespace CppSharp @@ -3797,6 +3836,15 @@ namespace CppSharp
}
}
public uint FriendsCount
{
get
{
var __ret = Internal.getFriendsCount_0(__Instance);
return __ret;
}
}
public bool IsAnonymous
{
get
@ -3926,6 +3974,121 @@ namespace CppSharp @@ -3926,6 +3974,121 @@ namespace CppSharp
}
}
public unsafe partial class Friend : CppSharp.Parser.AST.Declaration, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 124)]
public new partial struct Internal
{
[FieldOffset(0)]
public CppSharp.Parser.AST.DeclarationKind Kind;
[FieldOffset(4)]
public CppSharp.Parser.AST.AccessSpecifier Access;
[FieldOffset(8)]
public global::System.IntPtr _Namespace;
[FieldOffset(12)]
public CppSharp.Parser.SourceLocation.Internal Location;
[FieldOffset(40)]
public global::System.IntPtr Comment;
[FieldOffset(68)]
public bool IsIncomplete;
[FieldOffset(69)]
public bool IsDependent;
[FieldOffset(72)]
public global::System.IntPtr CompleteDeclaration;
[FieldOffset(76)]
public uint DefinitionOrder;
[FieldOffset(92)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(120)]
public global::System.IntPtr Declaration;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??0Friend@AST@CppParser@CppSharp@@QAE@XZ")]
internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??0Friend@AST@CppParser@CppSharp@@QAE@ABV0123@@Z")]
internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??1Friend@AST@CppParser@CppSharp@@QAE@XZ")]
internal static extern void dtor_0(global::System.IntPtr instance);
}
private readonly bool __ownsNativeInstance;
public static new Friend __CreateInstance(global::System.IntPtr native)
{
return new Friend((Friend.Internal*) native);
}
public static Friend __CreateInstance(Friend.Internal native)
{
return new Friend(native);
}
private static Friend.Internal* __CopyValue(Friend.Internal native)
{
var ret = Marshal.AllocHGlobal(124);
CppSharp.Parser.AST.Friend.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (Friend.Internal*) ret;
}
private Friend(Friend.Internal native)
: this(__CopyValue(native))
{
__ownsNativeInstance = true;
}
protected Friend(Friend.Internal* native, bool isInternalImpl = false)
: base((Declaration.Internal*) native)
{
}
public Friend()
: 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);
}
public CppSharp.Parser.AST.Declaration Declaration
{
get
{
return (((Internal*) __Instance)->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(((Internal*) __Instance)->Declaration);
}
set
{
((Internal*) __Instance)->Declaration = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
}
public unsafe partial class Statement : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 32)]
@ -4989,7 +5152,7 @@ namespace CppSharp @@ -4989,7 +5152,7 @@ namespace CppSharp
public unsafe partial class Enumeration : CppSharp.Parser.AST.DeclarationContext, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 240)]
[StructLayout(LayoutKind.Explicit, Size = 252)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -5022,16 +5185,16 @@ namespace CppSharp @@ -5022,16 +5185,16 @@ namespace CppSharp
[FieldOffset(92)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(212)]
[FieldOffset(224)]
public bool IsAnonymous;
[FieldOffset(216)]
[FieldOffset(228)]
public CppSharp.Parser.AST.Enumeration.EnumModifiers Modifiers;
[FieldOffset(220)]
[FieldOffset(232)]
public global::System.IntPtr Type;
[FieldOffset(224)]
[FieldOffset(236)]
public global::System.IntPtr BuiltinType;
[SuppressUnmanagedCodeSecurity]
@ -5234,7 +5397,7 @@ namespace CppSharp @@ -5234,7 +5397,7 @@ namespace CppSharp
private static Enumeration.Internal* __CopyValue(Enumeration.Internal native)
{
var ret = Marshal.AllocHGlobal(240);
var ret = Marshal.AllocHGlobal(252);
CppSharp.Parser.AST.Enumeration.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (Enumeration.Internal*) ret;
}
@ -5253,7 +5416,7 @@ namespace CppSharp @@ -5253,7 +5416,7 @@ namespace CppSharp
public Enumeration()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(240);
__Instance = Marshal.AllocHGlobal(252);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -5874,7 +6037,7 @@ namespace CppSharp @@ -5874,7 +6037,7 @@ namespace CppSharp
public unsafe partial class Class : CppSharp.Parser.AST.DeclarationContext, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 280)]
[StructLayout(LayoutKind.Explicit, Size = 292)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -5907,37 +6070,37 @@ namespace CppSharp @@ -5907,37 +6070,37 @@ namespace CppSharp
[FieldOffset(92)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(212)]
[FieldOffset(224)]
public bool IsAnonymous;
[FieldOffset(264)]
[FieldOffset(276)]
public bool IsPOD;
[FieldOffset(265)]
[FieldOffset(277)]
public bool IsAbstract;
[FieldOffset(266)]
[FieldOffset(278)]
public bool IsUnion;
[FieldOffset(267)]
[FieldOffset(279)]
public bool IsDynamic;
[FieldOffset(268)]
[FieldOffset(280)]
public bool IsPolymorphic;
[FieldOffset(269)]
[FieldOffset(281)]
public bool HasNonTrivialDefaultConstructor;
[FieldOffset(270)]
[FieldOffset(282)]
public bool HasNonTrivialCopyConstructor;
[FieldOffset(271)]
[FieldOffset(283)]
public bool HasNonTrivialDestructor;
[FieldOffset(272)]
[FieldOffset(284)]
public bool IsExternCContext;
[FieldOffset(276)]
[FieldOffset(288)]
public global::System.IntPtr Layout;
[SuppressUnmanagedCodeSecurity]
@ -6050,7 +6213,7 @@ namespace CppSharp @@ -6050,7 +6213,7 @@ namespace CppSharp
private static Class.Internal* __CopyValue(Class.Internal native)
{
var ret = Marshal.AllocHGlobal(280);
var ret = Marshal.AllocHGlobal(292);
CppSharp.Parser.AST.Class.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (Class.Internal*) ret;
}
@ -6069,7 +6232,7 @@ namespace CppSharp @@ -6069,7 +6232,7 @@ namespace CppSharp
public Class()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(280);
__Instance = Marshal.AllocHGlobal(292);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -6649,7 +6812,7 @@ namespace CppSharp @@ -6649,7 +6812,7 @@ namespace CppSharp
public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Class, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 300)]
[StructLayout(LayoutKind.Explicit, Size = 312)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -6682,43 +6845,43 @@ namespace CppSharp @@ -6682,43 +6845,43 @@ namespace CppSharp
[FieldOffset(92)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(212)]
[FieldOffset(224)]
public bool IsAnonymous;
[FieldOffset(264)]
[FieldOffset(276)]
public bool IsPOD;
[FieldOffset(265)]
[FieldOffset(277)]
public bool IsAbstract;
[FieldOffset(266)]
[FieldOffset(278)]
public bool IsUnion;
[FieldOffset(267)]
[FieldOffset(279)]
public bool IsDynamic;
[FieldOffset(268)]
[FieldOffset(280)]
public bool IsPolymorphic;
[FieldOffset(269)]
[FieldOffset(281)]
public bool HasNonTrivialDefaultConstructor;
[FieldOffset(270)]
[FieldOffset(282)]
public bool HasNonTrivialCopyConstructor;
[FieldOffset(271)]
[FieldOffset(283)]
public bool HasNonTrivialDestructor;
[FieldOffset(272)]
[FieldOffset(284)]
public bool IsExternCContext;
[FieldOffset(276)]
[FieldOffset(288)]
public global::System.IntPtr Layout;
[FieldOffset(280)]
[FieldOffset(292)]
public global::System.IntPtr TemplatedDecl;
[FieldOffset(296)]
[FieldOffset(308)]
public CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind;
[SuppressUnmanagedCodeSecurity]
@ -6771,7 +6934,7 @@ namespace CppSharp @@ -6771,7 +6934,7 @@ namespace CppSharp
private static ClassTemplateSpecialization.Internal* __CopyValue(ClassTemplateSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(300);
var ret = Marshal.AllocHGlobal(312);
CppSharp.Parser.AST.ClassTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (ClassTemplateSpecialization.Internal*) ret;
}
@ -6790,7 +6953,7 @@ namespace CppSharp @@ -6790,7 +6953,7 @@ namespace CppSharp
public ClassTemplateSpecialization()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(300);
__Instance = Marshal.AllocHGlobal(312);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -6860,7 +7023,7 @@ namespace CppSharp @@ -6860,7 +7023,7 @@ namespace CppSharp
public unsafe partial class ClassTemplatePartialSpecialization : CppSharp.Parser.AST.ClassTemplateSpecialization, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 300)]
[StructLayout(LayoutKind.Explicit, Size = 312)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -6893,43 +7056,43 @@ namespace CppSharp @@ -6893,43 +7056,43 @@ namespace CppSharp
[FieldOffset(92)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(212)]
[FieldOffset(224)]
public bool IsAnonymous;
[FieldOffset(264)]
[FieldOffset(276)]
public bool IsPOD;
[FieldOffset(265)]
[FieldOffset(277)]
public bool IsAbstract;
[FieldOffset(266)]
[FieldOffset(278)]
public bool IsUnion;
[FieldOffset(267)]
[FieldOffset(279)]
public bool IsDynamic;
[FieldOffset(268)]
[FieldOffset(280)]
public bool IsPolymorphic;
[FieldOffset(269)]
[FieldOffset(281)]
public bool HasNonTrivialDefaultConstructor;
[FieldOffset(270)]
[FieldOffset(282)]
public bool HasNonTrivialCopyConstructor;
[FieldOffset(271)]
[FieldOffset(283)]
public bool HasNonTrivialDestructor;
[FieldOffset(272)]
[FieldOffset(284)]
public bool IsExternCContext;
[FieldOffset(276)]
[FieldOffset(288)]
public global::System.IntPtr Layout;
[FieldOffset(280)]
[FieldOffset(292)]
public global::System.IntPtr TemplatedDecl;
[FieldOffset(296)]
[FieldOffset(308)]
public CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind;
[SuppressUnmanagedCodeSecurity]
@ -6962,7 +7125,7 @@ namespace CppSharp @@ -6962,7 +7125,7 @@ namespace CppSharp
private static ClassTemplatePartialSpecialization.Internal* __CopyValue(ClassTemplatePartialSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(300);
var ret = Marshal.AllocHGlobal(312);
CppSharp.Parser.AST.ClassTemplatePartialSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (ClassTemplatePartialSpecialization.Internal*) ret;
}
@ -6981,7 +7144,7 @@ namespace CppSharp @@ -6981,7 +7144,7 @@ namespace CppSharp
public ClassTemplatePartialSpecialization()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(300);
__Instance = Marshal.AllocHGlobal(312);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -7318,7 +7481,7 @@ namespace CppSharp @@ -7318,7 +7481,7 @@ namespace CppSharp
public unsafe partial class Namespace : CppSharp.Parser.AST.DeclarationContext, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 220)]
[StructLayout(LayoutKind.Explicit, Size = 232)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -7351,10 +7514,10 @@ namespace CppSharp @@ -7351,10 +7514,10 @@ namespace CppSharp
[FieldOffset(92)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(212)]
[FieldOffset(224)]
public bool IsAnonymous;
[FieldOffset(216)]
[FieldOffset(228)]
public bool IsInline;
[SuppressUnmanagedCodeSecurity]
@ -7387,7 +7550,7 @@ namespace CppSharp @@ -7387,7 +7550,7 @@ namespace CppSharp
private static Namespace.Internal* __CopyValue(Namespace.Internal native)
{
var ret = Marshal.AllocHGlobal(220);
var ret = Marshal.AllocHGlobal(232);
CppSharp.Parser.AST.Namespace.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (Namespace.Internal*) ret;
}
@ -7406,7 +7569,7 @@ namespace CppSharp @@ -7406,7 +7569,7 @@ namespace CppSharp
public Namespace()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(220);
__Instance = Marshal.AllocHGlobal(232);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -7825,7 +7988,7 @@ namespace CppSharp @@ -7825,7 +7988,7 @@ namespace CppSharp
public unsafe partial class TranslationUnit : CppSharp.Parser.AST.Namespace, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 260)]
[StructLayout(LayoutKind.Explicit, Size = 272)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -7858,13 +8021,13 @@ namespace CppSharp @@ -7858,13 +8021,13 @@ namespace CppSharp
[FieldOffset(92)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(212)]
[FieldOffset(224)]
public bool IsAnonymous;
[FieldOffset(216)]
[FieldOffset(228)]
public bool IsInline;
[FieldOffset(244)]
[FieldOffset(256)]
public bool IsSystemHeader;
[SuppressUnmanagedCodeSecurity]
@ -7927,7 +8090,7 @@ namespace CppSharp @@ -7927,7 +8090,7 @@ namespace CppSharp
private static TranslationUnit.Internal* __CopyValue(TranslationUnit.Internal native)
{
var ret = Marshal.AllocHGlobal(260);
var ret = Marshal.AllocHGlobal(272);
CppSharp.Parser.AST.TranslationUnit.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return (TranslationUnit.Internal*) ret;
}
@ -7946,7 +8109,7 @@ namespace CppSharp @@ -7946,7 +8109,7 @@ namespace CppSharp
public TranslationUnit()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(260);
__Instance = Marshal.AllocHGlobal(272);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}

301
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs

@ -53,7 +53,8 @@ namespace CppSharp @@ -53,7 +53,8 @@ namespace CppSharp
PreprocessedEntity = 17,
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20
TranslationUnit = 20,
Friend = 21
}
public enum AccessSpecifier
@ -3367,7 +3368,7 @@ namespace CppSharp @@ -3367,7 +3368,7 @@ namespace CppSharp
public unsafe partial class DeclarationContext : CppSharp.Parser.AST.Declaration, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 336)]
[StructLayout(LayoutKind.Explicit, Size = 360)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -3400,7 +3401,7 @@ namespace CppSharp @@ -3400,7 +3401,7 @@ namespace CppSharp
[FieldOffset(96)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(328)]
[FieldOffset(352)]
public bool IsAnonymous;
[SuppressUnmanagedCodeSecurity]
@ -3523,6 +3524,21 @@ namespace CppSharp @@ -3523,6 +3524,21 @@ namespace CppSharp
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext14clearVariablesEv")]
internal static extern void clearVariables_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext10getFriendsEj")]
internal static extern global::System.IntPtr getFriends_0(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext10addFriendsERPNS1_6FriendE")]
internal static extern void addFriends_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext12clearFriendsEv")]
internal static extern void clearFriends_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext18getNamespacesCountEv")]
@ -3557,6 +3573,11 @@ namespace CppSharp @@ -3557,6 +3573,11 @@ namespace CppSharp
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext17getVariablesCountEv")]
internal static extern uint getVariablesCount_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST18DeclarationContext15getFriendsCountEv")]
internal static extern uint getFriendsCount_0(global::System.IntPtr instance);
}
private readonly bool __ownsNativeInstance;
@ -3573,7 +3594,7 @@ namespace CppSharp @@ -3573,7 +3594,7 @@ namespace CppSharp
private static DeclarationContext.Internal* __CopyValue(DeclarationContext.Internal native)
{
var ret = Marshal.AllocHGlobal(336);
var ret = Marshal.AllocHGlobal(360);
CppSharp.Parser.AST.DeclarationContext.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (DeclarationContext.Internal*) ret;
}
@ -3592,7 +3613,7 @@ namespace CppSharp @@ -3592,7 +3613,7 @@ namespace CppSharp
public DeclarationContext(CppSharp.Parser.AST.DeclarationKind kind)
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(336);
__Instance = Marshal.AllocHGlobal(360);
__ownsNativeInstance = true;
var arg0 = kind;
Internal.ctor_0(__Instance, arg0);
@ -3733,6 +3754,24 @@ namespace CppSharp @@ -3733,6 +3754,24 @@ namespace CppSharp
Internal.clearVariables_0(__Instance);
}
public CppSharp.Parser.AST.Friend getFriends(uint i)
{
var __ret = Internal.getFriends_0(__Instance, i);
if (__ret == global::System.IntPtr.Zero) return null;
return (__ret == IntPtr.Zero) ? null : CppSharp.Parser.AST.Friend.__CreateInstance(__ret);
}
public void addFriends(CppSharp.Parser.AST.Friend s)
{
var arg0 = ReferenceEquals(s, null) ? global::System.IntPtr.Zero : s.__Instance;
Internal.addFriends_0(__Instance, arg0);
}
public void clearFriends()
{
Internal.clearFriends_0(__Instance);
}
public uint NamespacesCount
{
get
@ -3796,6 +3835,15 @@ namespace CppSharp @@ -3796,6 +3835,15 @@ namespace CppSharp
}
}
public uint FriendsCount
{
get
{
var __ret = Internal.getFriendsCount_0(__Instance);
return __ret;
}
}
public bool IsAnonymous
{
get
@ -3925,6 +3973,121 @@ namespace CppSharp @@ -3925,6 +3973,121 @@ namespace CppSharp
}
}
public unsafe partial class Friend : CppSharp.Parser.AST.Declaration, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 120)]
public new partial struct Internal
{
[FieldOffset(0)]
public CppSharp.Parser.AST.DeclarationKind Kind;
[FieldOffset(4)]
public CppSharp.Parser.AST.AccessSpecifier Access;
[FieldOffset(8)]
public global::System.IntPtr _Namespace;
[FieldOffset(16)]
public CppSharp.Parser.SourceLocation.Internal Location;
[FieldOffset(32)]
public global::System.IntPtr Comment;
[FieldOffset(48)]
public bool IsIncomplete;
[FieldOffset(49)]
public bool IsDependent;
[FieldOffset(56)]
public global::System.IntPtr CompleteDeclaration;
[FieldOffset(64)]
public uint DefinitionOrder;
[FieldOffset(96)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(112)]
public global::System.IntPtr Declaration;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6FriendC2Ev")]
internal static extern void ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6FriendC2ERKS2_")]
internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST6FriendD2Ev")]
internal static extern void dtor_0(global::System.IntPtr instance);
}
private readonly bool __ownsNativeInstance;
public static new Friend __CreateInstance(global::System.IntPtr native)
{
return new Friend((Friend.Internal*) native);
}
public static Friend __CreateInstance(Friend.Internal native)
{
return new Friend(native);
}
private static Friend.Internal* __CopyValue(Friend.Internal native)
{
var ret = Marshal.AllocHGlobal(120);
CppSharp.Parser.AST.Friend.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (Friend.Internal*) ret;
}
private Friend(Friend.Internal native)
: this(__CopyValue(native))
{
__ownsNativeInstance = true;
}
protected Friend(Friend.Internal* native, bool isInternalImpl = false)
: base((Declaration.Internal*) native)
{
}
public Friend()
: 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);
}
public CppSharp.Parser.AST.Declaration Declaration
{
get
{
return (((Internal*) __Instance)->Declaration == IntPtr.Zero) ? null : CppSharp.Parser.AST.Declaration.__CreateInstance(((Internal*) __Instance)->Declaration);
}
set
{
((Internal*) __Instance)->Declaration = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
}
public unsafe partial class Statement : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 24)]
@ -4988,7 +5151,7 @@ namespace CppSharp @@ -4988,7 +5151,7 @@ namespace CppSharp
public unsafe partial class Enumeration : CppSharp.Parser.AST.DeclarationContext, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 376)]
[StructLayout(LayoutKind.Explicit, Size = 400)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -5021,16 +5184,16 @@ namespace CppSharp @@ -5021,16 +5184,16 @@ namespace CppSharp
[FieldOffset(96)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(328)]
[FieldOffset(352)]
public bool IsAnonymous;
[FieldOffset(332)]
[FieldOffset(356)]
public CppSharp.Parser.AST.Enumeration.EnumModifiers Modifiers;
[FieldOffset(336)]
[FieldOffset(360)]
public global::System.IntPtr Type;
[FieldOffset(344)]
[FieldOffset(368)]
public global::System.IntPtr BuiltinType;
[SuppressUnmanagedCodeSecurity]
@ -5233,7 +5396,7 @@ namespace CppSharp @@ -5233,7 +5396,7 @@ namespace CppSharp
private static Enumeration.Internal* __CopyValue(Enumeration.Internal native)
{
var ret = Marshal.AllocHGlobal(376);
var ret = Marshal.AllocHGlobal(400);
CppSharp.Parser.AST.Enumeration.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (Enumeration.Internal*) ret;
}
@ -5252,7 +5415,7 @@ namespace CppSharp @@ -5252,7 +5415,7 @@ namespace CppSharp
public Enumeration()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(376);
__Instance = Marshal.AllocHGlobal(400);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -5873,7 +6036,7 @@ namespace CppSharp @@ -5873,7 +6036,7 @@ namespace CppSharp
public unsafe partial class Class : CppSharp.Parser.AST.DeclarationContext, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 456)]
[StructLayout(LayoutKind.Explicit, Size = 480)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -5906,37 +6069,37 @@ namespace CppSharp @@ -5906,37 +6069,37 @@ namespace CppSharp
[FieldOffset(96)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(328)]
[FieldOffset(352)]
public bool IsAnonymous;
[FieldOffset(432)]
[FieldOffset(456)]
public bool IsPOD;
[FieldOffset(433)]
[FieldOffset(457)]
public bool IsAbstract;
[FieldOffset(434)]
[FieldOffset(458)]
public bool IsUnion;
[FieldOffset(435)]
[FieldOffset(459)]
public bool IsDynamic;
[FieldOffset(436)]
[FieldOffset(460)]
public bool IsPolymorphic;
[FieldOffset(437)]
[FieldOffset(461)]
public bool HasNonTrivialDefaultConstructor;
[FieldOffset(438)]
[FieldOffset(462)]
public bool HasNonTrivialCopyConstructor;
[FieldOffset(439)]
[FieldOffset(463)]
public bool HasNonTrivialDestructor;
[FieldOffset(440)]
[FieldOffset(464)]
public bool IsExternCContext;
[FieldOffset(448)]
[FieldOffset(472)]
public global::System.IntPtr Layout;
[SuppressUnmanagedCodeSecurity]
@ -6049,7 +6212,7 @@ namespace CppSharp @@ -6049,7 +6212,7 @@ namespace CppSharp
private static Class.Internal* __CopyValue(Class.Internal native)
{
var ret = Marshal.AllocHGlobal(456);
var ret = Marshal.AllocHGlobal(480);
CppSharp.Parser.AST.Class.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (Class.Internal*) ret;
}
@ -6068,7 +6231,7 @@ namespace CppSharp @@ -6068,7 +6231,7 @@ namespace CppSharp
public Class()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(456);
__Instance = Marshal.AllocHGlobal(480);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -6648,7 +6811,7 @@ namespace CppSharp @@ -6648,7 +6811,7 @@ namespace CppSharp
public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Class, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 496)]
[StructLayout(LayoutKind.Explicit, Size = 520)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -6681,43 +6844,43 @@ namespace CppSharp @@ -6681,43 +6844,43 @@ namespace CppSharp
[FieldOffset(96)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(328)]
[FieldOffset(352)]
public bool IsAnonymous;
[FieldOffset(432)]
[FieldOffset(456)]
public bool IsPOD;
[FieldOffset(433)]
[FieldOffset(457)]
public bool IsAbstract;
[FieldOffset(434)]
[FieldOffset(458)]
public bool IsUnion;
[FieldOffset(435)]
[FieldOffset(459)]
public bool IsDynamic;
[FieldOffset(436)]
[FieldOffset(460)]
public bool IsPolymorphic;
[FieldOffset(437)]
[FieldOffset(461)]
public bool HasNonTrivialDefaultConstructor;
[FieldOffset(438)]
[FieldOffset(462)]
public bool HasNonTrivialCopyConstructor;
[FieldOffset(439)]
[FieldOffset(463)]
public bool HasNonTrivialDestructor;
[FieldOffset(440)]
[FieldOffset(464)]
public bool IsExternCContext;
[FieldOffset(448)]
[FieldOffset(472)]
public global::System.IntPtr Layout;
[FieldOffset(456)]
[FieldOffset(480)]
public global::System.IntPtr TemplatedDecl;
[FieldOffset(488)]
[FieldOffset(512)]
public CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind;
[SuppressUnmanagedCodeSecurity]
@ -6770,7 +6933,7 @@ namespace CppSharp @@ -6770,7 +6933,7 @@ namespace CppSharp
private static ClassTemplateSpecialization.Internal* __CopyValue(ClassTemplateSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(496);
var ret = Marshal.AllocHGlobal(520);
CppSharp.Parser.AST.ClassTemplateSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (ClassTemplateSpecialization.Internal*) ret;
}
@ -6789,7 +6952,7 @@ namespace CppSharp @@ -6789,7 +6952,7 @@ namespace CppSharp
public ClassTemplateSpecialization()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(496);
__Instance = Marshal.AllocHGlobal(520);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -6859,7 +7022,7 @@ namespace CppSharp @@ -6859,7 +7022,7 @@ namespace CppSharp
public unsafe partial class ClassTemplatePartialSpecialization : CppSharp.Parser.AST.ClassTemplateSpecialization, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 496)]
[StructLayout(LayoutKind.Explicit, Size = 520)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -6892,43 +7055,43 @@ namespace CppSharp @@ -6892,43 +7055,43 @@ namespace CppSharp
[FieldOffset(96)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(328)]
[FieldOffset(352)]
public bool IsAnonymous;
[FieldOffset(432)]
[FieldOffset(456)]
public bool IsPOD;
[FieldOffset(433)]
[FieldOffset(457)]
public bool IsAbstract;
[FieldOffset(434)]
[FieldOffset(458)]
public bool IsUnion;
[FieldOffset(435)]
[FieldOffset(459)]
public bool IsDynamic;
[FieldOffset(436)]
[FieldOffset(460)]
public bool IsPolymorphic;
[FieldOffset(437)]
[FieldOffset(461)]
public bool HasNonTrivialDefaultConstructor;
[FieldOffset(438)]
[FieldOffset(462)]
public bool HasNonTrivialCopyConstructor;
[FieldOffset(439)]
[FieldOffset(463)]
public bool HasNonTrivialDestructor;
[FieldOffset(440)]
[FieldOffset(464)]
public bool IsExternCContext;
[FieldOffset(448)]
[FieldOffset(472)]
public global::System.IntPtr Layout;
[FieldOffset(456)]
[FieldOffset(480)]
public global::System.IntPtr TemplatedDecl;
[FieldOffset(488)]
[FieldOffset(512)]
public CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind;
[SuppressUnmanagedCodeSecurity]
@ -6961,7 +7124,7 @@ namespace CppSharp @@ -6961,7 +7124,7 @@ namespace CppSharp
private static ClassTemplatePartialSpecialization.Internal* __CopyValue(ClassTemplatePartialSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(496);
var ret = Marshal.AllocHGlobal(520);
CppSharp.Parser.AST.ClassTemplatePartialSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (ClassTemplatePartialSpecialization.Internal*) ret;
}
@ -6980,7 +7143,7 @@ namespace CppSharp @@ -6980,7 +7143,7 @@ namespace CppSharp
public ClassTemplatePartialSpecialization()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(496);
__Instance = Marshal.AllocHGlobal(520);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -7317,7 +7480,7 @@ namespace CppSharp @@ -7317,7 +7480,7 @@ namespace CppSharp
public unsafe partial class Namespace : CppSharp.Parser.AST.DeclarationContext, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 336)]
[StructLayout(LayoutKind.Explicit, Size = 360)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -7350,10 +7513,10 @@ namespace CppSharp @@ -7350,10 +7513,10 @@ namespace CppSharp
[FieldOffset(96)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(328)]
[FieldOffset(352)]
public bool IsAnonymous;
[FieldOffset(329)]
[FieldOffset(353)]
public bool IsInline;
[SuppressUnmanagedCodeSecurity]
@ -7386,7 +7549,7 @@ namespace CppSharp @@ -7386,7 +7549,7 @@ namespace CppSharp
private static Namespace.Internal* __CopyValue(Namespace.Internal native)
{
var ret = Marshal.AllocHGlobal(336);
var ret = Marshal.AllocHGlobal(360);
CppSharp.Parser.AST.Namespace.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (Namespace.Internal*) ret;
}
@ -7405,7 +7568,7 @@ namespace CppSharp @@ -7405,7 +7568,7 @@ namespace CppSharp
public Namespace()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(336);
__Instance = Marshal.AllocHGlobal(360);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}
@ -7824,7 +7987,7 @@ namespace CppSharp @@ -7824,7 +7987,7 @@ namespace CppSharp
public unsafe partial class TranslationUnit : CppSharp.Parser.AST.Namespace, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 376)]
[StructLayout(LayoutKind.Explicit, Size = 400)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -7857,13 +8020,13 @@ namespace CppSharp @@ -7857,13 +8020,13 @@ namespace CppSharp
[FieldOffset(96)]
public global::System.IntPtr OriginalPtr;
[FieldOffset(328)]
[FieldOffset(352)]
public bool IsAnonymous;
[FieldOffset(329)]
[FieldOffset(353)]
public bool IsInline;
[FieldOffset(344)]
[FieldOffset(368)]
public bool IsSystemHeader;
[SuppressUnmanagedCodeSecurity]
@ -7926,7 +8089,7 @@ namespace CppSharp @@ -7926,7 +8089,7 @@ namespace CppSharp
private static TranslationUnit.Internal* __CopyValue(TranslationUnit.Internal native)
{
var ret = Marshal.AllocHGlobal(376);
var ret = Marshal.AllocHGlobal(400);
CppSharp.Parser.AST.TranslationUnit.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return (TranslationUnit.Internal*) ret;
}
@ -7945,7 +8108,7 @@ namespace CppSharp @@ -7945,7 +8108,7 @@ namespace CppSharp
public TranslationUnit()
: this((Internal*) null)
{
__Instance = Marshal.AllocHGlobal(376);
__Instance = Marshal.AllocHGlobal(400);
__ownsNativeInstance = true;
Internal.ctor_0(__Instance);
}

32
src/CppParser/Parser.cpp

@ -2373,6 +2373,34 @@ Variable* Parser::WalkVariable(clang::VarDecl *VD) @@ -2373,6 +2373,34 @@ Variable* Parser::WalkVariable(clang::VarDecl *VD)
//-----------------------------------//
Friend* Parser::WalkFriend(clang::FriendDecl *FD)
{
using namespace clang;
auto NS = GetNamespace(FD);
assert(NS && "Expected a valid namespace");
auto USR = GetDeclUSR(FD);
if (auto F = NS->FindFriend(USR))
return F;
auto F = new Friend();
HandleDeclaration(FD, F);
F->_Namespace = NS;
if (auto D = FD->getFriendDecl())
F->Declaration = WalkDeclarationDef(D);
//auto TL = FD->getFriendType()->getTypeLoc();
//F->QualifiedType = GetQualifiedType(VD->getType(), WalkType(FD->getFriendType(), &TL));
NS->Friends.push_back(F);
return F;
}
//-----------------------------------//
bool Parser::GetDeclText(clang::SourceRange SR, std::string& Text)
{
using namespace clang;
@ -2906,9 +2934,7 @@ Declaration* Parser::WalkDeclaration(clang::Decl* D, @@ -2906,9 +2934,7 @@ Declaration* Parser::WalkDeclaration(clang::Decl* D,
case Decl::Friend:
{
auto FD = cast<FriendDecl>(D);
if (auto Friend = FD->getFriendDecl())
return WalkDeclaration(Friend, IgnoreSystemDecls, CanBeDefinition);
Decl = WalkFriend(FD);
break;
}
// Ignore these declarations since they must have been declared in

1
src/CppParser/Parser.h

@ -86,6 +86,7 @@ protected: @@ -86,6 +86,7 @@ protected:
FunctionTemplate* WalkFunctionTemplate(clang::FunctionTemplateDecl* TD);
FunctionTemplateSpecialization* WalkFunctionTemplateSpec(clang::FunctionTemplateSpecializationInfo* FTS, Function* Function);
Variable* WalkVariable(clang::VarDecl* VD);
Friend* WalkFriend(clang::FriendDecl* FD);
RawComment* WalkRawComment(const clang::RawComment* RC);
Type* WalkType(clang::QualType QualType, clang::TypeLoc* TL = 0,
bool DesugarType = false);

5
src/Generator.Tests/AST/TestAST.cs

@ -146,6 +146,11 @@ namespace CppSharp.Generator.Tests.AST @@ -146,6 +146,11 @@ namespace CppSharp.Generator.Tests.AST
{
throw new System.NotImplementedException();
}
public bool VisitFriend(Friend friend)
{
throw new System.NotImplementedException();
}
}
#endregion

5
src/Generator/Generators/CLI/CLITypePrinter.cs

@ -404,6 +404,11 @@ namespace CppSharp.Generators.CLI @@ -404,6 +404,11 @@ namespace CppSharp.Generators.CLI
throw new NotImplementedException();
}
public string VisitFriend(Friend friend)
{
throw new NotImplementedException();
}
public string ToString(Type type)
{
return type.Visit(this);

5
src/Generator/Generators/CSharp/CSharpTypePrinter.cs

@ -599,6 +599,11 @@ namespace CppSharp.Generators.CSharp @@ -599,6 +599,11 @@ namespace CppSharp.Generators.CSharp
throw new NotImplementedException();
}
public CSharpTypePrinterResult VisitFriend(Friend friend)
{
throw new NotImplementedException();
}
public CSharpTypePrinterResult VisitParameters(IEnumerable<Parameter> @params,
bool hasNames)
{

5
src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs

@ -237,6 +237,11 @@ namespace CppSharp.Passes @@ -237,6 +237,11 @@ namespace CppSharp.Passes
return false;
}
public bool VisitFriend(Friend friend)
{
return false;
}
#endregion
}

5
src/Generator/Types/CppTypePrinter.cs

@ -324,6 +324,11 @@ namespace CppSharp.Types @@ -324,6 +324,11 @@ namespace CppSharp.Types
return VisitDeclaration(property);
}
public string VisitFriend(Friend friend)
{
throw new NotImplementedException();
}
public string ToString(Type type)
{
return type.Visit(this);

Loading…
Cancel
Save