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 13 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
return Type.Equals(type.Type) && Qualifiers.Equals(type.Qualifiers); 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() public override int GetHashCode()
{ {
return base.GetHashCode(); return base.GetHashCode();

2
src/Generator/Passes/GenerateAbstractImplementationsPass.cs

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

2
src/Generator/Utils/ParameterTypeComparer.cs

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

Loading…
Cancel
Save