From 901c0a68323907ba7fca0e0104ce4e1bd541425a Mon Sep 17 00:00:00 2001 From: triton Date: Tue, 26 Feb 2013 23:49:58 +0000 Subject: [PATCH] Extract the function parameter marshal logic into its own method. --- .../Generators/CLI/CLISourcesTemplate.cs | 63 ++++++++++--------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/src/Generator/Generators/CLI/CLISourcesTemplate.cs b/src/Generator/Generators/CLI/CLISourcesTemplate.cs index 1386bb85..d6f51e30 100644 --- a/src/Generator/Generators/CLI/CLISourcesTemplate.cs +++ b/src/Generator/Generators/CLI/CLISourcesTemplate.cs @@ -348,45 +348,48 @@ namespace Cxxi.Generators.CLI for (var i = 0; i < function.Parameters.Count; ++i) { var param = function.Parameters[i]; - - if (param.Type is BuiltinType) - { - @params.Add(new ParamMarshal {Name = param.Name, Param = param}); - } - else - { - var argName = "arg" + i.ToString(CultureInfo.InvariantCulture); + GenerateFunctionParamMarshal(function, param, @params, i); + } - var ctx = new MarshalContext() - { - Parameter = param, - ParameterIndex = i, - ArgName = argName, - Function = function - }; + return @params; + } - var marshal = new CLIMarshalManagedToNativePrinter(Driver.TypeDatabase, - ctx); + private void GenerateFunctionParamMarshal(Function function, Parameter param, List @params, int i) + { + if (param.Type is BuiltinType) + { + @params.Add(new ParamMarshal {Name = param.Name, Param = param}); + return; + } - param.Visit(marshal); + var argName = "arg" + i.ToString(CultureInfo.InvariantCulture); - if (string.IsNullOrEmpty(marshal.Return)) - throw new Exception("Cannot marshal argument of function"); + var ctx = new MarshalContext() + { + Parameter = param, + ParameterIndex = i, + ArgName = argName, + Function = function + }; - if (!string.IsNullOrWhiteSpace(marshal.SupportBefore)) - WriteLine(marshal.SupportBefore); + var marshal = new CLIMarshalManagedToNativePrinter(Driver.TypeDatabase, + ctx); - WriteLine("auto {0} = {1};", argName, marshal.Return); + param.Visit(marshal); - if (!string.IsNullOrWhiteSpace(marshal.SupportAfter)) - WriteLine(marshal.SupportAfter); + if (string.IsNullOrEmpty(marshal.Return)) + throw new Exception("Cannot marshal argument of function"); - var argText = marshal.ArgumentPrefix + argName; - @params.Add(new ParamMarshal { Name = argText, Param = param }); - } - } + if (!string.IsNullOrWhiteSpace(marshal.SupportBefore)) + WriteLine(marshal.SupportBefore); - return @params; + WriteLine("auto {0} = {1};", argName, marshal.Return); + + if (!string.IsNullOrWhiteSpace(marshal.SupportAfter)) + WriteLine(marshal.SupportAfter); + + var argText = marshal.ArgumentPrefix + argName; + @params.Add(new ParamMarshal {Name = argText, Param = param}); } public void GenerateFunctionParams(Function function, List @params)