From 6553084e956bcc19038bf9a466e784f2d669ea50 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Thu, 21 Dec 2017 04:05:59 +0200 Subject: [PATCH] Simplified the generation of default zeroes. Signed-off-by: Dimitar Dobrev --- .../Passes/HandleDefaultParamValuesPass.cs | 26 +++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/src/Generator/Passes/HandleDefaultParamValuesPass.cs b/src/Generator/Passes/HandleDefaultParamValuesPass.cs index 465663e4..fcd0dbb8 100644 --- a/src/Generator/Passes/HandleDefaultParamValuesPass.cs +++ b/src/Generator/Passes/HandleDefaultParamValuesPass.cs @@ -66,6 +66,13 @@ namespace CppSharp.Passes { var desugared = type.Desugar(); + if (!desugared.IsPrimitiveTypeConvertibleToRef() && + expression.String == "0") + { + result = $"default({desugared})"; + return true; + } + // constants are obtained through dynamic calls at present so they are not compile-time values in target languages if (expression.Declaration is Variable || (!Options.MarshalCharAsManagedChar && @@ -263,25 +270,6 @@ namespace CppSharp.Passes private string TranslateEnumExpression(Function function, Type desugared, string @params) { - TypeMap typeMap; - if ((function.Parameters.Count == 0 || - HasSingleZeroArgExpression(function)) && - TypeMaps.FindTypeMap(desugared, out typeMap)) - { - var typePrinterContext = new TypePrinterContext - { - MarshalKind = MarshalKind.DefaultExpression, - Type = desugared - }; - - var typeInSignature = typeMap.CSharpSignatureType(typePrinterContext) - .SkipPointerRefs().Desugar(); - - Enumeration @enum; - if (typeInSignature.TryGetEnum(out @enum)) - return "0"; - } - if (@params.Contains("::")) return regexDoubleColon.Replace(@params, desugared + ".");