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
return property.Type.Visit(this); 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) public virtual bool VisitFunctionDecl(Function function)
{ {
if (!VisitDeclaration(function)) if (!VisitDeclaration(function))

1
src/AST/Declaration.cs

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

21
src/AST/Friend.cs

@ -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
public abstract TRet VisitEnumeration(Enumeration decl); public abstract TRet VisitEnumeration(Enumeration decl);
public abstract TRet VisitEnumerationItem(Enumeration.Item decl); public abstract TRet VisitEnumerationItem(Enumeration.Item decl);
public abstract TRet VisitVariable(Variable decl); public abstract TRet VisitVariable(Variable decl);
public abstract TRet VisitFriend(Friend decl);
public abstract TRet VisitField(Field decl); public abstract TRet VisitField(Field decl);
public abstract TRet VisitAccessSpecifier(AccessSpecifierDecl decl); public abstract TRet VisitAccessSpecifier(AccessSpecifierDecl decl);
public abstract TRet VisitClass(Class decl); public abstract TRet VisitClass(Class decl);
@ -190,6 +191,11 @@ namespace CppSharp
var _decl = Variable.__CreateInstance(decl.__Instance); var _decl = Variable.__CreateInstance(decl.__Instance);
return VisitVariable(_decl); return VisitVariable(_decl);
} }
case DeclarationKind.Friend:
{
var _decl = Friend.__CreateInstance(decl.__Instance);
return VisitFriend(_decl);
}
case DeclarationKind.Field: case DeclarationKind.Field:
{ {
var _decl = Field.__CreateInstance(decl.__Instance); var _decl = Field.__CreateInstance(decl.__Instance);
@ -788,6 +794,13 @@ namespace CppSharp
_ctx.Variables.Add(_decl); _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 // Anonymous types
} }
@ -1139,6 +1152,15 @@ namespace CppSharp
return _variable; 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) public override AST.Declaration VisitField(Field decl)
{ {
var _field = new AST.Field(); var _field = new AST.Field();

14
src/CppParser/AST.cpp

@ -189,6 +189,7 @@ DEF_VECTOR(DeclarationContext, Class*, Classes)
DEF_VECTOR(DeclarationContext, Template*, Templates) DEF_VECTOR(DeclarationContext, Template*, Templates)
DEF_VECTOR(DeclarationContext, TypedefDecl*, Typedefs) DEF_VECTOR(DeclarationContext, TypedefDecl*, Typedefs)
DEF_VECTOR(DeclarationContext, Variable*, Variables) DEF_VECTOR(DeclarationContext, Variable*, Variables)
DEF_VECTOR(DeclarationContext, Friend*, Friends)
Declaration* DeclarationContext::FindAnonymous(const std::string& key) Declaration* DeclarationContext::FindAnonymous(const std::string& key)
{ {
@ -451,8 +452,21 @@ Variable* DeclarationContext::FindVariable(const std::string& USR)
return nullptr; 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) {} TypedefDecl::TypedefDecl() : Declaration(DeclarationKind::Typedef) {}
Friend::Friend() : CppSharp::CppParser::AST::Declaration(DeclarationKind::Friend), Declaration(0) {}
DEF_STRING(Statement, String) DEF_STRING(Statement, String)
Statement::Statement(const std::string& str, StatementClass stmtClass, Declaration* decl) : String(str), Class(stmtClass), Decl(decl) {} 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
PreprocessedEntity, PreprocessedEntity,
MacroDefinition, MacroDefinition,
MacroExpansion, MacroExpansion,
TranslationUnit TranslationUnit,
Friend,
}; };
#define DECLARE_DECL_KIND(klass, kind) \ #define DECLARE_DECL_KIND(klass, kind) \
@ -410,6 +411,7 @@ class Template;
class ClassTemplate; class ClassTemplate;
class FunctionTemplate; class FunctionTemplate;
class Variable; class Variable;
class Friend;
class CS_API DeclarationContext : public Declaration class CS_API DeclarationContext : public Declaration
{ {
@ -440,6 +442,8 @@ public:
CS_IGNORE Variable* FindVariable(const std::string& USR); CS_IGNORE Variable* FindVariable(const std::string& USR);
CS_IGNORE Friend* FindFriend(const std::string& USR);
VECTOR(Namespace*, Namespaces) VECTOR(Namespace*, Namespaces)
VECTOR(Enumeration*, Enums) VECTOR(Enumeration*, Enums)
VECTOR(Function*, Functions) VECTOR(Function*, Functions)
@ -447,6 +451,8 @@ public:
VECTOR(Template*, Templates) VECTOR(Template*, Templates)
VECTOR(TypedefDecl*, Typedefs) VECTOR(TypedefDecl*, Typedefs)
VECTOR(Variable*, Variables) VECTOR(Variable*, Variables)
VECTOR(Friend*, Friends)
std::map<std::string, Declaration*> Anonymous; std::map<std::string, Declaration*> Anonymous;
bool IsAnonymous; bool IsAnonymous;
@ -459,6 +465,13 @@ public:
CppSharp::CppParser::AST::QualifiedType QualifiedType; 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 enum class StatementClass
{ {
Any, Any,

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

@ -1425,6 +1425,24 @@ void CppSharp::Parser::AST::DeclarationContext::clearVariables()
((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->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() unsigned int CppSharp::Parser::AST::DeclarationContext::NamespacesCount::get()
{ {
auto __ret = ((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->getNamespacesCount(); auto __ret = ((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->getNamespacesCount();
@ -1467,6 +1485,12 @@ unsigned int CppSharp::Parser::AST::DeclarationContext::VariablesCount::get()
return __ret; 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() bool CppSharp::Parser::AST::DeclarationContext::IsAnonymous::get()
{ {
return ((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->IsAnonymous; return ((::CppSharp::CppParser::AST::DeclarationContext*)NativePtr)->IsAnonymous;
@ -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::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) CppSharp::Parser::AST::Statement::Statement(::CppSharp::CppParser::AST::Statement* native)
{ {
NativePtr = native; NativePtr = native;

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

@ -44,6 +44,7 @@ namespace CppSharp
ref class Enumeration; ref class Enumeration;
ref class Expression; ref class Expression;
ref class Field; ref class Field;
ref class Friend;
ref class FullComment; ref class FullComment;
ref class Function; ref class Function;
ref class FunctionTemplate; ref class FunctionTemplate;
@ -130,7 +131,8 @@ namespace CppSharp
PreprocessedEntity = 17, PreprocessedEntity = 17,
MacroDefinition = 18, MacroDefinition = 18,
MacroExpansion = 19, MacroExpansion = 19,
TranslationUnit = 20 TranslationUnit = 20,
Friend = 21
}; };
public enum struct AccessSpecifier public enum struct AccessSpecifier
@ -1113,6 +1115,11 @@ namespace CppSharp
unsigned int get(); unsigned int get();
} }
property unsigned int FriendsCount
{
unsigned int get();
}
property bool IsAnonymous property bool IsAnonymous
{ {
bool get(); bool get();
@ -1160,6 +1167,12 @@ namespace CppSharp
void addVariables(CppSharp::Parser::AST::Variable^ s); void addVariables(CppSharp::Parser::AST::Variable^ s);
void clearVariables(); 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 public ref class TypedefDecl : CppSharp::Parser::AST::Declaration
@ -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 ref class Statement : ICppInstance
{ {
public: public:

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

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

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

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

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

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

32
src/CppParser/Parser.cpp

@ -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) bool Parser::GetDeclText(clang::SourceRange SR, std::string& Text)
{ {
using namespace clang; using namespace clang;
@ -2906,9 +2934,7 @@ Declaration* Parser::WalkDeclaration(clang::Decl* D,
case Decl::Friend: case Decl::Friend:
{ {
auto FD = cast<FriendDecl>(D); auto FD = cast<FriendDecl>(D);
if (auto Friend = FD->getFriendDecl()) Decl = WalkFriend(FD);
return WalkDeclaration(Friend, IgnoreSystemDecls, CanBeDefinition);
break; break;
} }
// Ignore these declarations since they must have been declared in // Ignore these declarations since they must have been declared in

1
src/CppParser/Parser.h

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

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

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

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

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

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

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

5
src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs

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

5
src/Generator/Types/CppTypePrinter.cs

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

Loading…
Cancel
Save