From 77972c78fac094f043ee29ce57c4b35ce304506f Mon Sep 17 00:00:00 2001 From: Joao Matos Date: Sat, 2 Jan 2021 15:44:42 +0000 Subject: [PATCH] Fix generation of operators in NAPI generator. --- src/Generator/Generators/C/CppSources.cs | 2 +- src/Generator/Generators/NAPI/NAPIHelpers.cs | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/Generator/Generators/C/CppSources.cs b/src/Generator/Generators/C/CppSources.cs index 11d46793..43a4cf46 100644 --- a/src/Generator/Generators/C/CppSources.cs +++ b/src/Generator/Generators/C/CppSources.cs @@ -181,7 +181,7 @@ namespace CppSharp.Generators.Cpp public virtual void GenerateClassMethods(Class @class) { - foreach (var method in @class.Methods.Where(m => !m.IsOperator)) + foreach (var method in @class.Methods) { if (ASTUtils.CheckIgnoreMethod(method) || CppHeaders.FunctionIgnored(method)) continue; diff --git a/src/Generator/Generators/NAPI/NAPIHelpers.cs b/src/Generator/Generators/NAPI/NAPIHelpers.cs index 7eb2cfde..c4f46018 100644 --- a/src/Generator/Generators/NAPI/NAPIHelpers.cs +++ b/src/Generator/Generators/NAPI/NAPIHelpers.cs @@ -22,6 +22,9 @@ namespace CppSharp.Generators.Cpp public override void VisitDeclContextFunctions(DeclarationContext context) { + if (!VisitOptions.VisitNamespaceFunctions) + return; + var functions = context.Functions.Where(f => !ASTUtils.CheckIgnoreFunction(f)).ToList(); var unique = functions.GroupBy(m => m.Name); foreach (var group in unique) @@ -46,6 +49,7 @@ namespace CppSharp.Generators.Cpp { var constructors = @class.Constructors.Where(c => c.IsGenerated && !c.IsCopyConstructor) .ToList(); + if (!constructors.Any()) return; @@ -57,15 +61,17 @@ namespace CppSharp.Generators.Cpp if (!function.IsGenerated) return false; - if (function is Method method) + if (!(function is Method method)) + return true; + + if (method.IsConstructor || method.IsDestructor) + return false; + + if (method.IsOperator) { - if (method.IsConstructor || method.IsDestructor) + if (method.OperatorKind == CXXOperatorKind.Conversion || + method.OperatorKind == CXXOperatorKind.Equal) return false; - - if (method.IsOperator) - if (method.OperatorKind == CXXOperatorKind.Conversion || - method.OperatorKind == CXXOperatorKind.Equal) - return false; } return true;