From 18de42af548b8d5fb9e6a29629a1080fd3ab84af Mon Sep 17 00:00:00 2001 From: josetr <37419832+josetr@users.noreply.github.com> Date: Wed, 16 Mar 2022 03:36:42 +0000 Subject: [PATCH] Add missing calling convention --- src/Generator/Generators/C/CppTypePrinter.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Generator/Generators/C/CppTypePrinter.cs b/src/Generator/Generators/C/CppTypePrinter.cs index 28b9334e..c48f4d11 100644 --- a/src/Generator/Generators/C/CppTypePrinter.cs +++ b/src/Generator/Generators/C/CppTypePrinter.cs @@ -137,6 +137,8 @@ namespace CppSharp.Generators.C return pointeeType; var mod = PrintTypeModifiers ? ConvertModifierToString(pointer.Modifier) : string.Empty; + if (pointer.QualifiedPointee.Type.Desugar() is FunctionType f) + pointeeType.NamePrefix.Append($"__{f.CallingConvention.ToString().ToLowerInvariant()}"); pointeeType.NamePrefix.Append(mod); var qual = GetStringQuals(quals, false); @@ -620,6 +622,13 @@ namespace CppSharp.Generators.C $"operator {function.OriginalReturnType.Visit(this)}" : function.OriginalName; + string conventionString = string.Empty; + if (function.CallingConvention != CallingConvention.Default && + function.CallingConvention != CallingConvention.C) + { + conventionString = " __" + function.CallingConvention.ToString().ToLower(); + } + FunctionType functionType; CppSharp.AST.Type desugared = function.FunctionType.Type.Desugar(); if (!desugared.IsPointerTo(out functionType)) @@ -628,6 +637,7 @@ namespace CppSharp.Generators.C var @return = function.OriginalReturnType.Visit(this); @return.Name = @class + name; + @return.NamePrefix.Append(conventionString); @return.NameSuffix.Append('(').Append(@params) .Append(function.IsVariadic ? ", ..." : string.Empty).Append(')') .Append(@const).Append(exceptionType);