From 9d5007e61f076f19df49cdfdaa7df949f95bcdec Mon Sep 17 00:00:00 2001 From: Bruno da Silva Belo Date: Thu, 24 Oct 2019 18:50:48 -0300 Subject: [PATCH] csharp: Returning only method name iwrapper. Summary: GetUserMethods returning only strings, not the whole method informations. Reviewers: lauromoura, felipealmeida Reviewed By: lauromoura Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10503 --- .../eolian/mono/function_registration.hh | 2 +- src/bindings/mono/eo_mono/iwrapper.cs | 30 +++++++++++++--------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/bin/eolian_mono/eolian/mono/function_registration.hh b/src/bin/eolian_mono/eolian/mono/function_registration.hh index 55e76db..bef9e21 100644 --- a/src/bin/eolian_mono/eolian/mono/function_registration.hh +++ b/src/bin/eolian_mono/eolian/mono/function_registration.hh @@ -64,7 +64,7 @@ struct function_registration_generator return false; if(!as_generator( - indent << "if (methods.FirstOrDefault(m => m.Name == \"" << string << "\") != null)\n" + indent << "if (methods.Contains(\"" << string << "\"))\n" << indent << "{\n" << indent << scope_tab << "descs.Add(new EflOpDescription() {" #ifdef _WIN32 diff --git a/src/bindings/mono/eo_mono/iwrapper.cs b/src/bindings/mono/eo_mono/iwrapper.cs index 5154c4b..d9ae4e5 100644 --- a/src/bindings/mono/eo_mono/iwrapper.cs +++ b/src/bindings/mono/eo_mono/iwrapper.cs @@ -22,6 +22,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Threading; +using System.Linq; using static Eina.NativeCustomExportFunctions; using EoG = Efl.Eo.Globals; @@ -368,26 +369,31 @@ public static class Globals return null; } - public static System.Collections.Generic.List + public static System.Collections.Generic.List GetUserMethods(System.Type type) { - var r = new System.Collections.Generic.List(); - var flags = System.Reflection.BindingFlags.Instance - | System.Reflection.BindingFlags.DeclaredOnly - | System.Reflection.BindingFlags.Public - | System.Reflection.BindingFlags.NonPublic; - r.AddRange(type.GetMethods(flags)); - var base_type = type.BaseType; + var r = new System.Collections.Generic.List(); + var flags = + System.Reflection.BindingFlags.Instance + | System.Reflection.BindingFlags.DeclaredOnly + | System.Reflection.BindingFlags.Public + | System.Reflection.BindingFlags.NonPublic; - for (;base_type != null; base_type = base_type.BaseType) + for (var base_type = type;;base_type = base_type.BaseType) { - if (IsGeneratedClass(base_type)) + r.AddRange(base_type.GetMethods(flags) + .AsParallel().Select(info=>info.Name).ToList()); + if (IsGeneratedClass(base_type.BaseType)) { - return r; + break; } - r.AddRange(base_type.GetMethods(flags)); + if (base_type.BaseType == null) + { + break; + } } + return r; } -- 2.7.4