From 06c4ec1697c0c6bff977bfd8e314633013c6d31d Mon Sep 17 00:00:00 2001 From: triton Date: Tue, 22 Jan 2013 18:40:59 +0000 Subject: [PATCH] Fixed the transformation helpers to pass through every type that matches. This fixes wrong behavior in the case of same class being referenced in multiple translation units. --- src/Generator/LibraryHelpers.cs | 34 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/src/Generator/LibraryHelpers.cs b/src/Generator/LibraryHelpers.cs index b409aa7c..310b453b 100644 --- a/src/Generator/LibraryHelpers.cs +++ b/src/Generator/LibraryHelpers.cs @@ -179,43 +179,37 @@ namespace Cxxi #region Class Helpers - public Class FindClass(string name) + public IEnumerable FindClass(string name) { foreach (var module in Library.TranslationUnits) { var @class = module.FindClass(name); if (@class != null) - return @class; + yield return @class; } - - return null; } public void SetClassBindName(string className, string name) { - Class @class = FindClass(className); - if (@class != null) + foreach (var @class in FindClass(className)) @class.Name = name; } public void SetClassAsValueType(string className) { - Class @class = FindClass(className); - if (@class != null) + foreach (var @class in FindClass(className)) @class.Type = ClassType.ValueType; } public void IgnoreClassWithName(string name) { - Class @class = FindClass(name); - if (@class != null) + foreach (var @class in FindClass(name)) @class.ExplicityIgnored = true; } public void SetClassAsOpaque(string name) { - var @class = FindClass(name); - if (@class != null) + foreach (var @class in FindClass(name)) @class.IsOpaque = true; } @@ -244,17 +238,15 @@ namespace Cxxi public void IgnoreClassMethodWithName(string className, string name) { - Class @class = FindClass(className); - - if (@class == null) - return; - - var method = @class.Methods.Find(m => m.Name == name); + foreach (var @class in FindClass(name)) + { + var method = @class.Methods.Find(m => m.Name == name); - if (method == null) - return; + if (method == null) + return; - method.ExplicityIgnored = true; + method.ExplicityIgnored = true; + } } #endregion