|
|
@ -587,25 +587,34 @@ namespace CppSharp.Generators.CSharp |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string arg = Generator.GeneratedIdentifier(Context.ArgName); |
|
|
|
|
|
|
|
|
|
|
|
if (pointee.TryGetClass(out Class @class) && @class.IsValueType) |
|
|
|
if (pointee.TryGetClass(out Class @class) && @class.IsValueType) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (Context.Parameter.Usage == ParameterUsage.Out) |
|
|
|
if (Context.Parameter.Usage == ParameterUsage.Out) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var qualifiedIdentifier = (@class.OriginalClass ?? @class).Visit(typePrinter); |
|
|
|
var qualifiedIdentifier = (@class.OriginalClass ?? @class).Visit(typePrinter); |
|
|
|
Context.Before.WriteLine("var {0} = new {1}.{2}();", |
|
|
|
Context.Before.WriteLine("var {0} = new {1}.{2}();", |
|
|
|
Generator.GeneratedIdentifier(Context.ArgName), qualifiedIdentifier, |
|
|
|
arg, qualifiedIdentifier, Helpers.InternalStruct); |
|
|
|
Helpers.InternalStruct); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
Context.Before.WriteLine("var {0} = {1}.{2};", |
|
|
|
Context.Before.WriteLine("var {0} = {1}.{2};", |
|
|
|
Generator.GeneratedIdentifier(Context.ArgName), |
|
|
|
arg, Context.Parameter.Name, Helpers.InstanceIdentifier); |
|
|
|
Context.Parameter.Name, |
|
|
|
|
|
|
|
Helpers.InstanceIdentifier); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Context.Return.Write("new global::System.IntPtr(&{0})", |
|
|
|
Context.Return.Write($"new global::System.IntPtr(&{arg})"); |
|
|
|
Generator.GeneratedIdentifier(Context.ArgName)); |
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (pointee.IsPointerTo(out Type type) && |
|
|
|
|
|
|
|
type.Desugar().TryGetClass(out Class c)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
pointer.QualifiedPointee.Visit(this); |
|
|
|
|
|
|
|
Context.Before.WriteLine($"var {arg} = {Context.Return};"); |
|
|
|
|
|
|
|
Context.Return.StringBuilder.Clear(); |
|
|
|
|
|
|
|
Context.Return.Write($"new global::System.IntPtr(&{arg})"); |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|