Browse Source

Class helper methods now return proper lazy IEnumerable<> instead of converting right away to lists.

pull/1/head
triton 13 years ago
parent
commit
46d9978401
  1. 19
      src/Bridge/Class.cs
  2. 2
      src/Generator/AST/Utils.cs
  3. 4
      src/Generator/Passes/CheckOperatorsOverloads.cs

19
src/Bridge/Class.cs

@ -180,22 +180,25 @@ namespace CppSharp
} }
} }
public IList<Method> FindOperator(CXXOperatorKind kind) public IEnumerable<Method> FindOperator(CXXOperatorKind kind)
{ {
return Operators.Where(method => method.OperatorKind == kind) return Operators.Where(method => method.OperatorKind == kind);
.ToList();
} }
public IList<Method> FindMethodByOriginalName(string name) public IEnumerable<Method> FindMethodByOriginalName(string name)
{ {
return Methods.Where(method => method.OriginalName == name) return Methods.Where(method => method.OriginalName == name);
.ToList();
} }
public IList<Function> GetFunctionOverloads(Function function) public IEnumerable<Variable> FindVariableByOriginalName(string originalName)
{
return Variables.Where(v => v.OriginalName == originalName);
}
public IEnumerable<Function> GetFunctionOverloads(Function function)
{ {
return Methods.Where(method => method.Name == function.Name) return Methods.Where(method => method.Name == function.Name)
.ToList<Function>(); .Cast<Function>();
} }
public override T Visit<T>(IDeclVisitor<T> visitor) public override T Visit<T>(IDeclVisitor<T> visitor)

2
src/Generator/AST/Utils.cs

@ -4,7 +4,7 @@ namespace CppSharp.AST
{ {
public static class Utils public static class Utils
{ {
public static IList<Function> GetFunctionOverloads(Function function, public static IEnumerable<Function> GetFunctionOverloads(Function function,
Class @class = null) Class @class = null)
{ {
var overloads = new List<Function>(); var overloads = new List<Function>();

4
src/Generator/Passes/CheckOperatorsOverloads.cs

@ -84,8 +84,8 @@ namespace CppSharp.Passes
static CXXOperatorKind CheckMissingOperatorOverloadPair(Class @class, static CXXOperatorKind CheckMissingOperatorOverloadPair(Class @class,
out int index, CXXOperatorKind op1, CXXOperatorKind op2) out int index, CXXOperatorKind op1, CXXOperatorKind op2)
{ {
var first = @class.FindOperator(op1); var first = @class.FindOperator(op1).ToList();
var second = @class.FindOperator(op2); var second = @class.FindOperator(op2).ToList();
var hasFirst = first.Count > 0; var hasFirst = first.Count > 0;
var hasSecond = second.Count > 0; var hasSecond = second.Count > 0;

Loading…
Cancel
Save