From 6b0cb59f8a82369d01560632d17318c3720d227f Mon Sep 17 00:00:00 2001 From: triton Date: Sun, 18 Aug 2013 21:19:11 +0100 Subject: [PATCH] Added RunPasses to PassBuilder and change existing code to use it. --- src/Generator.Tests/Passes/TestPasses.cs | 15 +++++---------- src/Generator/Driver.cs | 7 +------ src/Generator/Passes/PassBuilder.cs | 12 +++++++++++- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/Generator.Tests/Passes/TestPasses.cs b/src/Generator.Tests/Passes/TestPasses.cs index 4bb1bc9e..f06aa4f9 100644 --- a/src/Generator.Tests/Passes/TestPasses.cs +++ b/src/Generator.Tests/Passes/TestPasses.cs @@ -31,8 +31,7 @@ namespace Generator.Tests.Passes Assert.IsFalse(@enum2.IsFlags); passBuilder.AddPass(new CheckFlagEnumsPass()); - foreach (var pass in passBuilder.Passes) - pass.VisitLibrary(Library); + passBuilder.RunPasses(pass => pass.VisitLibrary(Library)); Assert.IsTrue(@enum.IsFlags); Assert.IsFalse(@enum2.IsFlags); @@ -46,8 +45,7 @@ namespace Generator.Tests.Passes Assert.IsNull(c.Method("Start")); passBuilder.AddPass( new FunctionToInstanceMethodPass()); - foreach (var pass in passBuilder.Passes) - pass.VisitLibrary(Library); + passBuilder.RunPasses(pass => pass.VisitLibrary(Library)); Assert.IsNotNull(c.Method("Start")); } @@ -61,8 +59,7 @@ namespace Generator.Tests.Passes Assert.IsNull(c.Method("Start")); passBuilder.AddPass(new FunctionToStaticMethodPass()); - foreach (var pass in passBuilder.Passes) - pass.VisitLibrary(Library); + passBuilder.RunPasses(pass => pass.VisitLibrary(Library)); Assert.IsTrue(Library.Function("FooStart").ExplicityIgnored); Assert.IsNotNull(c.Method("Start")); @@ -77,8 +74,7 @@ namespace Generator.Tests.Passes var field = c.Field("lowerCaseField"); passBuilder.RenameDeclsUpperCase(RenameTargets.Any); - foreach (var pass in passBuilder.Passes) - pass.VisitLibrary(Library); + passBuilder.RunPasses(pass => pass.VisitLibrary(Library)); Assert.That(method.Name, Is.EqualTo("LowerCaseMethod")); Assert.That(field.Name, Is.EqualTo("LowerCaseField")); @@ -94,8 +90,7 @@ namespace Generator.Tests.Passes passBuilder.RemovePrefix("TEST_ENUM_ITEM_NAME_", RenameTargets.EnumItem); passBuilder.AddPass(new CleanInvalidDeclNamesPass()); - foreach (var pass in passBuilder.Passes) - pass.VisitLibrary(Library); + passBuilder.RunPasses(pass => pass.VisitLibrary(Library)); Assert.That(@enum.Items[0].Name, Is.EqualTo("_0")); } diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index e00463ca..2b7061c5 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -147,12 +147,7 @@ namespace CppSharp public void ProcessCode() { - foreach (var pass in TranslationUnitPasses.Passes) - { - pass.Driver = this; - pass.VisitLibrary(Library); - } - + TranslationUnitPasses.RunPasses(pass => pass.VisitLibrary(Library)); Generator.Process(); } diff --git a/src/Generator/Passes/PassBuilder.cs b/src/Generator/Passes/PassBuilder.cs index 8169d827..9458b1b4 100644 --- a/src/Generator/Passes/PassBuilder.cs +++ b/src/Generator/Passes/PassBuilder.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using CppSharp.Passes; @@ -34,5 +35,14 @@ namespace CppSharp { return Passes.OfType().Select(pass => pass as U).FirstOrDefault(); } + + /// + /// Adds a new pass to the builder. + /// + public void RunPasses(Action action) + { + foreach (var pass in Passes) + action(pass); + } } }