From 46d997840185444825bfd8ebda7cd81280c8988e Mon Sep 17 00:00:00 2001 From: triton Date: Tue, 14 May 2013 18:36:09 +0100 Subject: [PATCH] Class helper methods now return proper lazy IEnumerable<> instead of converting right away to lists. --- src/Bridge/Class.cs | 19 +++++++++++-------- src/Generator/AST/Utils.cs | 2 +- .../Passes/CheckOperatorsOverloads.cs | 4 ++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/Bridge/Class.cs b/src/Bridge/Class.cs index 3e59c80b..59e5b717 100644 --- a/src/Bridge/Class.cs +++ b/src/Bridge/Class.cs @@ -180,22 +180,25 @@ namespace CppSharp } } - public IList FindOperator(CXXOperatorKind kind) + public IEnumerable FindOperator(CXXOperatorKind kind) { - return Operators.Where(method => method.OperatorKind == kind) - .ToList(); + return Operators.Where(method => method.OperatorKind == kind); } - public IList FindMethodByOriginalName(string name) + public IEnumerable FindMethodByOriginalName(string name) { - return Methods.Where(method => method.OriginalName == name) - .ToList(); + return Methods.Where(method => method.OriginalName == name); } - public IList GetFunctionOverloads(Function function) + public IEnumerable FindVariableByOriginalName(string originalName) + { + return Variables.Where(v => v.OriginalName == originalName); + } + + public IEnumerable GetFunctionOverloads(Function function) { return Methods.Where(method => method.Name == function.Name) - .ToList(); + .Cast(); } public override T Visit(IDeclVisitor visitor) diff --git a/src/Generator/AST/Utils.cs b/src/Generator/AST/Utils.cs index 5f67a5ea..681f369c 100644 --- a/src/Generator/AST/Utils.cs +++ b/src/Generator/AST/Utils.cs @@ -4,7 +4,7 @@ namespace CppSharp.AST { public static class Utils { - public static IList GetFunctionOverloads(Function function, + public static IEnumerable GetFunctionOverloads(Function function, Class @class = null) { var overloads = new List(); diff --git a/src/Generator/Passes/CheckOperatorsOverloads.cs b/src/Generator/Passes/CheckOperatorsOverloads.cs index b48d0338..610ad212 100644 --- a/src/Generator/Passes/CheckOperatorsOverloads.cs +++ b/src/Generator/Passes/CheckOperatorsOverloads.cs @@ -84,8 +84,8 @@ namespace CppSharp.Passes static CXXOperatorKind CheckMissingOperatorOverloadPair(Class @class, out int index, CXXOperatorKind op1, CXXOperatorKind op2) { - var first = @class.FindOperator(op1); - var second = @class.FindOperator(op2); + var first = @class.FindOperator(op1).ToList(); + var second = @class.FindOperator(op2).ToList(); var hasFirst = first.Count > 0; var hasSecond = second.Count > 0;