From 8536fc9ba78a18e80996660db345b25528cc5599 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Sat, 15 Sep 2018 14:49:54 +0300 Subject: [PATCH] Clarified the renaming of members. Signed-off-by: Dimitar Dobrev --- src/Generator/Passes/RenamePass.cs | 33 +++++++++++++++++------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/Generator/Passes/RenamePass.cs b/src/Generator/Passes/RenamePass.cs index 0a81fa7f..d15b27f5 100644 --- a/src/Generator/Passes/RenamePass.cs +++ b/src/Generator/Passes/RenamePass.cs @@ -362,20 +362,7 @@ namespace CppSharp.Passes if (sb[0] == '@') sb.Remove(0, 1); - for (int i = sb.Length - 1; i >= 0; i--) - { - if (sb[i] != '_' || - // lower case intentional if the first character is already upper case - (i + 1 < sb.Length && char.IsLower(sb[i + 1]) && char.IsUpper(sb[0])) || - // don't end up with more capitals or digits in a row than before - (i > 0 && (char.IsUpper(sb[i - 1]) || - (i < sb.Length - 1 && char.IsDigit(sb[i + 1]) && char.IsDigit(sb[i - 1]))))) - continue; - - if (i < sb.Length - 1) - sb[i + 1] = char.ToUpperInvariant(sb[i + 1]); - sb.Remove(i, 1); - } + RemoveUnderscores(sb); var @class = decl as Class; switch (pattern) @@ -396,6 +383,24 @@ namespace CppSharp.Passes return sb.ToString(); } + + private static void RemoveUnderscores(StringBuilder sb) + { + for (int i = sb.Length - 1; i >= 0; i--) + { + if (sb[i] != '_' || + // lower case intentional if the first character is already upper case + (i + 1 < sb.Length && char.IsLower(sb[i + 1]) && char.IsUpper(sb[0])) || + // don't end up with more capitals or digits in a row than before + (i > 0 && (char.IsUpper(sb[i - 1]) || + (i < sb.Length - 1 && char.IsDigit(sb[i + 1]) && char.IsDigit(sb[i - 1]))))) + continue; + + if (i < sb.Length - 1) + sb[i + 1] = char.ToUpperInvariant(sb[i + 1]); + sb.Remove(i, 1); + } + } } public static class RenamePassExtensions