Browse Source

Fixed the resolution of overloads for conversion operators.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/72/head
Dimitar Dobrev 12 years ago
parent
commit
813084948f
  1. 5
      src/AST/Class.cs
  2. 5
      src/AST/Namespace.cs
  3. 4
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

5
src/AST/Class.cs

@ -191,8 +191,9 @@ namespace CppSharp.AST
public override IEnumerable<Function> GetFunctionOverloads(Function function) public override IEnumerable<Function> GetFunctionOverloads(Function function)
{ {
return Methods.Where(method => method.Name == function.Name) if (function.OperatorKind == CXXOperatorKind.Conversion)
.Cast<Function>(); return Methods.Where(fn => fn.OperatorKind == CXXOperatorKind.Conversion);
return Methods.Where(method => method.Name == function.Name);
} }
public IEnumerable<T> FindHierarchy<T>(Func<Class, IEnumerable<T>> func) public IEnumerable<T> FindHierarchy<T>(Func<Class, IEnumerable<T>> func)

5
src/AST/Namespace.cs

@ -242,8 +242,9 @@ namespace CppSharp.AST
public virtual IEnumerable<Function> GetFunctionOverloads(Function function) public virtual IEnumerable<Function> GetFunctionOverloads(Function function)
{ {
return Functions.Where(fn => fn.Name == function.Name) if (function.OperatorKind == CXXOperatorKind.Conversion)
.ToList(); return Functions.Where(fn => fn.OperatorKind == CXXOperatorKind.Conversion);
return Functions.Where(fn => fn.Name == function.Name);
} }
public bool HasDeclarations public bool HasDeclarations

4
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -2152,10 +2152,10 @@ namespace CppSharp.Generators.CSharp
public static string GetFunctionNativeIdentifier(Function function) public static string GetFunctionNativeIdentifier(Function function)
{ {
var identifier = SafeIdentifier(function.Name);; var identifier = SafeIdentifier(function.Name);
if (function.IsOperator) if (function.IsOperator)
identifier = "Operator" + function.OperatorKind.ToString(); identifier = "Operator" + function.OperatorKind;
var overloads = function.Namespace.GetFunctionOverloads(function) var overloads = function.Namespace.GetFunctionOverloads(function)
.ToList(); .ToList();

Loading…
Cancel
Save