Browse Source

Prevented postfix and dereference operators from being wrapped as such because C# does not support them.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/97/head
Dimitar Dobrev 12 years ago
parent
commit
c0ed93cd5e
  1. 13
      src/Generator/Passes/CheckOperatorsOverloads.cs

13
src/Generator/Passes/CheckOperatorsOverloads.cs

@ -169,11 +169,8 @@ namespace CppSharp.Passes @@ -169,11 +169,8 @@ namespace CppSharp.Passes
case CXXOperatorKind.Minus:
case CXXOperatorKind.Exclaim:
case CXXOperatorKind.Tilde:
case CXXOperatorKind.PlusPlus:
case CXXOperatorKind.MinusMinus:
// These binary operators can be overloaded
case CXXOperatorKind.Star:
case CXXOperatorKind.Slash:
case CXXOperatorKind.Percent:
case CXXOperatorKind.Amp:
@ -193,12 +190,22 @@ namespace CppSharp.Passes @@ -193,12 +190,22 @@ namespace CppSharp.Passes
case CXXOperatorKind.Conversion:
return true;
// Only prefix operators can be overloaded
case CXXOperatorKind.PlusPlus:
case CXXOperatorKind.MinusMinus:
return @operator.Parameters.Count == 0;
// Bitwise shift operators can only be overloaded if the second parameter is int
case CXXOperatorKind.LessLess:
case CXXOperatorKind.GreaterGreater:
PrimitiveType primitiveType;
return @operator.Parameters.Last().Type.IsPrimitiveType(out primitiveType) &&
primitiveType == PrimitiveType.Int32;
// No parameters means the dereference operator - cannot be overloaded
case CXXOperatorKind.Star:
return @operator.Parameters.Count > 0;
// Assignment operators cannot be overloaded
case CXXOperatorKind.PlusEqual:
case CXXOperatorKind.MinusEqual:

Loading…
Cancel
Save