Browse Source

Checked if operators are ignored when complementing them.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/658/head
Dimitar Dobrev 10 years ago
parent
commit
89bb19d349
  1. 8
      src/Generator/Passes/CheckOperatorsOverloads.cs

8
src/Generator/Passes/CheckOperatorsOverloads.cs

@ -157,21 +157,21 @@ namespace CppSharp.Passes
static CXXOperatorKind CheckMissingOperatorOverloadPair(Class @class, out int index, static CXXOperatorKind CheckMissingOperatorOverloadPair(Class @class, out int index,
CXXOperatorKind op1, CXXOperatorKind op2, Type typeLeft, Type typeRight) CXXOperatorKind op1, CXXOperatorKind op2, Type typeLeft, Type typeRight)
{ {
var first = @class.Operators.FirstOrDefault(o => o.OperatorKind == op1 && var first = @class.Operators.FirstOrDefault(o => o.IsGenerated && o.OperatorKind == op1 &&
o.Parameters.First().Type.Equals(typeLeft) && o.Parameters.Last().Type.Equals(typeRight)); o.Parameters.First().Type.Equals(typeLeft) && o.Parameters.Last().Type.Equals(typeRight));
var second = @class.Operators.FirstOrDefault(o => o.OperatorKind == op2 && var second = @class.Operators.FirstOrDefault(o => o.IsGenerated && o.OperatorKind == op2 &&
o.Parameters.First().Type.Equals(typeLeft) && o.Parameters.Last().Type.Equals(typeRight)); o.Parameters.First().Type.Equals(typeLeft) && o.Parameters.Last().Type.Equals(typeRight));
var hasFirst = first != null; var hasFirst = first != null;
var hasSecond = second != null; var hasSecond = second != null;
if (hasFirst && (!hasSecond || !second.IsGenerated)) if (hasFirst && !hasSecond)
{ {
index = @class.Methods.IndexOf(first); index = @class.Methods.IndexOf(first);
return op2; return op2;
} }
if (hasSecond && (!hasFirst || !first.IsGenerated)) if (hasSecond && !hasFirst)
{ {
index = @class.Methods.IndexOf(second); index = @class.Methods.IndexOf(second);
return op1; return op1;

Loading…
Cancel
Save