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 @@ -191,8 +191,9 @@ namespace CppSharp.AST
public override IEnumerable<Function> GetFunctionOverloads(Function function)
{
return Methods.Where(method => method.Name == function.Name)
.Cast<Function>();
if (function.OperatorKind == CXXOperatorKind.Conversion)
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)

5
src/AST/Namespace.cs

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

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

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

Loading…
Cancel
Save