Browse Source

Changed the parameter type comparer to work with qualified types because overriding cannot change the qualification of types.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/53/head
Dimitar Dobrev 12 years ago
parent
commit
b9f1ecb715
  1. 10
      src/AST/Type.cs
  2. 2
      src/Generator/Passes/GenerateAbstractImplementationsPass.cs
  3. 2
      src/Generator/Utils/ParameterTypeComparer.cs

10
src/AST/Type.cs

@ -181,6 +181,16 @@ namespace CppSharp.AST @@ -181,6 +181,16 @@ namespace CppSharp.AST
return Type.Equals(type.Type) && Qualifiers.Equals(type.Qualifiers);
}
public static bool operator ==(QualifiedType left, QualifiedType right)
{
return left.Equals(right);
}
public static bool operator !=(QualifiedType left, QualifiedType right)
{
return !(left == right);
}
public override int GetHashCode()
{
return base.GetHashCode();

2
src/Generator/Passes/GenerateAbstractImplementationsPass.cs

@ -87,7 +87,7 @@ namespace CppSharp.Passes @@ -87,7 +87,7 @@ namespace CppSharp.Passes
{
var @abstract = abstractMethods[i];
if (overriddenMethods.Find(m => m.Name == @abstract.Name &&
m.ReturnType.Type == @abstract.ReturnType.Type &&
m.ReturnType == @abstract.ReturnType &&
m.Parameters.Count == @abstract.Parameters.Count &&
m.Parameters.SequenceEqual(@abstract.Parameters, paramTypeCmp)) != null)
{

2
src/Generator/Utils/ParameterTypeComparer.cs

@ -7,7 +7,7 @@ namespace CppSharp.Utils @@ -7,7 +7,7 @@ namespace CppSharp.Utils
{
public bool Equals(Parameter x, Parameter y)
{
return x.Type == y.Type;
return x.QualifiedType == y.QualifiedType;
}
public int GetHashCode(Parameter obj)

Loading…
Cancel
Save