Browse Source

Ignored abstract operators because they cannot be wrapped in Mono/.NET.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/658/head
Dimitar Dobrev 9 years ago
parent
commit
27c612ecd0
  1. 1
      src/Generator/Driver.cs
  2. 18
      src/Generator/Passes/IgnoreAbstractOperatorsPass.cs
  3. 6
      tests/Common/Common.h

1
src/Generator/Driver.cs

@ -308,6 +308,7 @@ namespace CppSharp @@ -308,6 +308,7 @@ namespace CppSharp
TranslationUnitPasses.AddPass(new FindSymbolsPass());
TranslationUnitPasses.AddPass(new CheckStaticClass());
TranslationUnitPasses.AddPass(new IgnoreAbstractOperatorsPass());
TranslationUnitPasses.AddPass(new MoveOperatorToClassPass());
TranslationUnitPasses.AddPass(new MoveFunctionToClassPass());
TranslationUnitPasses.AddPass(new GenerateAnonymousDelegatesPass());

18
src/Generator/Passes/IgnoreAbstractOperatorsPass.cs

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
using CppSharp.AST;
namespace CppSharp.Passes
{
public class IgnoreAbstractOperatorsPass : TranslationUnitPass
{
public override bool VisitMethodDecl(Method method)
{
if (!base.VisitMethodDecl(method) || method.TranslationUnit.IsSystemHeader)
return false;
if (method.IsPure && method.IsOperator)
method.ExplicitlyIgnore();
return true;
}
}
}

6
tests/Common/Common.h

@ -1117,3 +1117,9 @@ private: @@ -1117,3 +1117,9 @@ private:
SpecialisesVoid<void>* s;
SpecialisesVoidInUnion<void>* h;
};
class DLL_API HasAbstractOperator
{
public:
virtual bool operator==(const HasAbstractOperator& other) = 0;
};

Loading…
Cancel
Save