Browse Source

Pass the TypeMapDatabase explicitly to CLIMarshalManagedToNativePrinter.

pull/1/head
triton 13 years ago
parent
commit
c2c7941187
  1. 11
      src/Generator/Generators/CLI/CLIMarshal.cs

11
src/Generator/Generators/CLI/CLIMarshal.cs

@ -225,12 +225,13 @@ namespace Cxxi.Generators.CLI
public TextGenerator Return; public TextGenerator Return;
public TextGenerator ArgumentPrefix; public TextGenerator ArgumentPrefix;
Generator Generator { get; set; } ITypeMapDatabase TypeMapDatabase { get; set; }
MarshalContext Context { get; set; } MarshalContext Context { get; set; }
public CLIMarshalManagedToNativePrinter(Generator gen, MarshalContext ctx) public CLIMarshalManagedToNativePrinter(ITypeMapDatabase typeMap,
MarshalContext ctx)
{ {
Generator = gen; TypeMapDatabase = typeMap;
Context = ctx; Context = ctx;
SupportBefore = new TextGenerator(); SupportBefore = new TextGenerator();
@ -355,7 +356,7 @@ namespace Cxxi.Generators.CLI
var decl = typedef.Declaration; var decl = typedef.Declaration;
TypeMap typeMap = null; TypeMap typeMap = null;
if (Generator.TypeMapDatabase.FindTypeMap(decl, out typeMap)) if (TypeMapDatabase.FindTypeMap(decl, out typeMap))
{ {
Return.Write(typeMap.MarshalToNative(Context)); Return.Write(typeMap.MarshalToNative(Context));
return typeMap.IsValueType; return typeMap.IsValueType;
@ -418,7 +419,7 @@ namespace Cxxi.Generators.CLI
field.Name); field.Name);
var marshalCtx = new MarshalContext() { ArgName = fieldRef }; var marshalCtx = new MarshalContext() { ArgName = fieldRef };
var marshal = new CLIMarshalManagedToNativePrinter(Generator, var marshal = new CLIMarshalManagedToNativePrinter(TypeMapDatabase,
marshalCtx); marshalCtx);
field.Visit(marshal); field.Visit(marshal);

Loading…
Cancel
Save