Browse Source

Added marshaling of native to managed when constructing structs from native objects.

pull/1/head
triton 13 years ago
parent
commit
7b4a544407
  1. 19
      src/Generator/Generators/CLI/CLISourcesTemplate.cs

19
src/Generator/Generators/CLI/CLISourcesTemplate.cs

@ -159,19 +159,32 @@ namespace Cxxi.Generators.CLI
} }
else else
{ {
WriteLine("// TODO: Struct marshaling"); GenerateStructMarshaling(@class, nativePtr);
} }
WriteCloseBraceIndent(); WriteCloseBraceIndent();
NewLine(); NewLine();
} }
private void GenerateStructMarshaling(Class @class) private void GenerateStructMarshaling(Class @class, string nativePointer)
{ {
foreach (var field in @class.Fields) foreach (var field in @class.Fields)
{ {
var nativeField = string.Format("{0}->{1}",
nativePointer, field.OriginalName);
WriteLine("{0} = {1}"); var ctx = new MarshalContext()
{
ReturnVarName = nativeField,
ReturnType = field.Type
};
var marshal = new CLIMarshalNativeToManagedPrinter(
Driver.TypeDatabase, Library, ctx);
field.Visit(marshal);
WriteLine("{0} = {1};", field.Name, marshal.Return);
} }
} }

Loading…
Cancel
Save