|
|
|
@ -580,21 +580,7 @@ namespace Cxxi.Generators.CSharp |
|
|
|
public void GenerateClassConstructors(Class @class) |
|
|
|
public void GenerateClassConstructors(Class @class) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Output a default constructor that takes the native pointer.
|
|
|
|
// Output a default constructor that takes the native pointer.
|
|
|
|
WriteLine("{0}(System.IntPtr native)", SafeIdentifier(@class.Name)); |
|
|
|
GenerateNativeConstructor(@class); |
|
|
|
WriteStartBraceIndent(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (@class.IsRefType) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (ShouldGenerateClassNativeField(@class)) |
|
|
|
|
|
|
|
WriteLine("Instance = native;"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
GenerateStructMarshaling(@class); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WriteCloseBraceIndent(); |
|
|
|
|
|
|
|
NewLine(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var ctor in @class.Constructors) |
|
|
|
foreach (var ctor in @class.Constructors) |
|
|
|
{ |
|
|
|
{ |
|
|
|
@ -622,6 +608,24 @@ namespace Cxxi.Generators.CSharp |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void GenerateNativeConstructor(Class @class) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
WriteLine("internal {0}(System.IntPtr native)", SafeIdentifier(@class.Name)); |
|
|
|
|
|
|
|
WriteStartBraceIndent(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (@class.IsRefType) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (ShouldGenerateClassNativeField(@class)) |
|
|
|
|
|
|
|
WriteLine("Instance = native;"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
GenerateStructMarshaling(@class); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WriteCloseBraceIndent(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private bool GenerateClassConstructorBase(Class @class, Method method) |
|
|
|
private bool GenerateClassConstructorBase(Class @class, Method method) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var hasBase = @class.HasBase && !@class.Bases[0].Class.Ignore; |
|
|
|
var hasBase = @class.HasBase && !@class.Bases[0].Class.Ignore; |
|
|
|
|