Skip to content

Commit 931ff7d

Browse files
committed
Abstract marshaler into overridable method in NAPI sources.
1 parent 2d608db commit 931ff7d

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/Generator/Generators/NAPI/NAPISources.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -736,7 +736,7 @@ public virtual void GenerateFunctionCall(Function function)
736736
ReturnType = param.QualifiedType
737737
};
738738

739-
var marshal = new NAPIMarshalNativeToManagedPrinter(ctx);
739+
var marshal = GetMarshalNativeToManagedPrinter(ctx);
740740
param.Visit(marshal);
741741

742742
if (!string.IsNullOrWhiteSpace(marshal.Context.Before))
@@ -761,7 +761,7 @@ public virtual void GenerateFunctionCallReturnMarshal(Function function)
761761
ReturnType = function.ReturnType
762762
};
763763

764-
var marshal = new NAPIMarshalNativeToManagedPrinter(ctx);
764+
var marshal = GetMarshalNativeToManagedPrinter(ctx);
765765
function.ReturnType.Visit(marshal);
766766

767767
if (!string.IsNullOrWhiteSpace(marshal.Context.Before))
@@ -811,6 +811,16 @@ public List<ParamMarshal> GenerateFunctionParamsMarshal(IEnumerable<Parameter> @
811811
return marshals;
812812
}
813813

814+
public virtual MarshalPrinter<MarshalContext> GetMarshalManagedToNativePrinter(MarshalContext ctx)
815+
{
816+
return new NAPIMarshalManagedToNativePrinter(ctx);
817+
}
818+
819+
public virtual MarshalPrinter<MarshalContext> GetMarshalNativeToManagedPrinter(MarshalContext ctx)
820+
{
821+
return new NAPIMarshalNativeToManagedPrinter(ctx);
822+
}
823+
814824
public virtual ParamMarshal GenerateFunctionParamMarshal(Parameter param, int paramIndex,
815825
Function function = null)
816826
{
@@ -830,7 +840,7 @@ public virtual ParamMarshal GenerateFunctionParamMarshal(Parameter param, int pa
830840
Function = function
831841
};
832842

833-
var marshal = new NAPIMarshalManagedToNativePrinter(ctx);
843+
var marshal = GetMarshalManagedToNativePrinter(ctx);
834844
effectiveParam.Visit(marshal);
835845

836846
if (string.IsNullOrEmpty(marshal.Context.Return))

0 commit comments

Comments
 (0)