From 657bd32e7bff0c5640ec494133a7e19d97c90641 Mon Sep 17 00:00:00 2001 From: triton Date: Thu, 31 Jan 2013 18:23:14 +0000 Subject: [PATCH] Moved enumeration name clean up code out of Transform.cs and into the CleanInvalidDeclNames pass. --- .../Passes/CleanInvalidDeclNamesPass.cs | 28 ++++++++++++++++++- src/Generator/Transforms/Transform.cs | 20 ------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/Generator/Passes/CleanInvalidDeclNamesPass.cs b/src/Generator/Passes/CleanInvalidDeclNamesPass.cs index 96c99f58..f388811d 100644 --- a/src/Generator/Passes/CleanInvalidDeclNamesPass.cs +++ b/src/Generator/Passes/CleanInvalidDeclNamesPass.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using Cxxi.Types; @@ -120,6 +121,31 @@ namespace Cxxi.Passes typedef.ExplicityIgnored = true; } } + + private void CheckEnumName(Enumeration @enum) + { + // If we still do not have a valid name, then try to guess one + // based on the enum value names. + + if (!String.IsNullOrWhiteSpace(@enum.Name)) + return; + + var prefix = @enum.Items.Select(item => item.Name) + .ToArray().CommonPrefix(); + + // Try a simple heuristic to make sure we end up with a valid name. + if (prefix.Length < 3) + return; + + prefix = prefix.Trim().Trim(new char[] { '_' }); + @enum.Name = prefix; + } + + public override bool ProcessEnum(Enumeration @enum) + { + CheckEnumName(@enum); + return base.ProcessEnum(@enum); + } } public static class CleanInvalidDeclNamesExtensions diff --git a/src/Generator/Transforms/Transform.cs b/src/Generator/Transforms/Transform.cs index b8e3542b..34a83e93 100644 --- a/src/Generator/Transforms/Transform.cs +++ b/src/Generator/Transforms/Transform.cs @@ -115,26 +115,6 @@ namespace Cxxi.Passes foreach (var pass in Passes.Passes) pass.ProcessEnumItem(item); } - - // If we still do not have a valid name, then try to guess one - // based on the enum value names. - - if (!String.IsNullOrWhiteSpace(@enum.Name)) - return; - - var names = new List(); - - foreach (var item in @enum.Items) - names.Add(item.Name); - - var prefix = names.ToArray().CommonPrefix(); - - // Try a simple heuristic to make sure we end up with a valid name. - if (prefix.Length >= 3) - { - prefix = prefix.Trim().Trim(new char[] { '_' }); - @enum.Name = prefix; - } } } } \ No newline at end of file