Browse Source

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.

pull/1/head
triton 13 years ago
parent
commit
06c4ec1697
  1. 26
      src/Generator/LibraryHelpers.cs

26
src/Generator/LibraryHelpers.cs

@ -179,43 +179,37 @@ namespace Cxxi
#region Class Helpers #region Class Helpers
public Class FindClass(string name) public IEnumerable<Class> FindClass(string name)
{ {
foreach (var module in Library.TranslationUnits) foreach (var module in Library.TranslationUnits)
{ {
var @class = module.FindClass(name); var @class = module.FindClass(name);
if (@class != null) if (@class != null)
return @class; yield return @class;
} }
return null;
} }
public void SetClassBindName(string className, string name) public void SetClassBindName(string className, string name)
{ {
Class @class = FindClass(className); foreach (var @class in FindClass(className))
if (@class != null)
@class.Name = name; @class.Name = name;
} }
public void SetClassAsValueType(string className) public void SetClassAsValueType(string className)
{ {
Class @class = FindClass(className); foreach (var @class in FindClass(className))
if (@class != null)
@class.Type = ClassType.ValueType; @class.Type = ClassType.ValueType;
} }
public void IgnoreClassWithName(string name) public void IgnoreClassWithName(string name)
{ {
Class @class = FindClass(name); foreach (var @class in FindClass(name))
if (@class != null)
@class.ExplicityIgnored = true; @class.ExplicityIgnored = true;
} }
public void SetClassAsOpaque(string name) public void SetClassAsOpaque(string name)
{ {
var @class = FindClass(name); foreach (var @class in FindClass(name))
if (@class != null)
@class.IsOpaque = true; @class.IsOpaque = true;
} }
@ -244,11 +238,8 @@ namespace Cxxi
public void IgnoreClassMethodWithName(string className, string name) public void IgnoreClassMethodWithName(string className, string name)
{ {
Class @class = FindClass(className); foreach (var @class in FindClass(name))
{
if (@class == null)
return;
var method = @class.Methods.Find(m => m.Name == name); var method = @class.Methods.Find(m => m.Name == name);
if (method == null) if (method == null)
@ -256,6 +247,7 @@ namespace Cxxi
method.ExplicityIgnored = true; method.ExplicityIgnored = true;
} }
}
#endregion #endregion

Loading…
Cancel
Save