From c853db5d34b22f93280cdf716432533576d838f7 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Mon, 30 Dec 2013 19:34:47 +0200 Subject: [PATCH] Ignored operators which cannot be moved to a class because C# requires operators to be in their containing type. Signed-off-by: Dimitar Dobrev --- src/Generator/Passes/MoveFunctionToClassPass.cs | 7 +++++-- tests/Basic/Basic.cpp | 5 +++++ tests/Basic/Basic.h | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Generator/Passes/MoveFunctionToClassPass.cs b/src/Generator/Passes/MoveFunctionToClassPass.cs index 54ec0f9d..d5e6e205 100644 --- a/src/Generator/Passes/MoveFunctionToClassPass.cs +++ b/src/Generator/Passes/MoveFunctionToClassPass.cs @@ -20,6 +20,9 @@ namespace CppSharp.Passes if (@class != null) MoveFunction(function, @class); + if (function.IsOperator) + function.ExplicityIgnored = true; + return true; } @@ -43,6 +46,8 @@ namespace CppSharp.Passes IsStatic = true }; + function.ExplicityIgnored = true; + if (method.OperatorKind != CXXOperatorKind.None) { var param = function.Parameters[0]; @@ -54,8 +59,6 @@ namespace CppSharp.Passes method.OriginalFunction = null; } - function.ExplicityIgnored = true; - @class.Methods.Add(method); } } diff --git a/tests/Basic/Basic.cpp b/tests/Basic/Basic.cpp index c1677463..7cd88cbe 100644 --- a/tests/Basic/Basic.cpp +++ b/tests/Basic/Basic.cpp @@ -207,3 +207,8 @@ int test(basic& s) { return 5; } + +Bar::Item operator |(Bar::Item left, Bar::Item right) +{ + return left | right; +} diff --git a/tests/Basic/Basic.h b/tests/Basic/Basic.h index 7eecc2ef..ffb4b2f7 100644 --- a/tests/Basic/Basic.h +++ b/tests/Basic/Basic.h @@ -233,3 +233,5 @@ struct DLL_API TestDelegates DelegateInClass A; DelegateInGlobalNamespace B; }; + +DLL_API Bar::Item operator |(Bar::Item left, Bar::Item right);