|
|
|
|
@ -19,45 +19,13 @@ namespace Cxxi.Passes
@@ -19,45 +19,13 @@ namespace Cxxi.Passes
|
|
|
|
|
{ |
|
|
|
|
Targets = targets; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[Flags] |
|
|
|
|
public enum RenameTargets |
|
|
|
|
{ |
|
|
|
|
Record, |
|
|
|
|
Field, |
|
|
|
|
Method, |
|
|
|
|
Function, |
|
|
|
|
Enum, |
|
|
|
|
EnumItem, |
|
|
|
|
Any = Function | Method | Record | Field | Enum | EnumItem, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Renames a declaration based on a regular expression pattern.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class RegexRenamePass : RenamePass |
|
|
|
|
{ |
|
|
|
|
public string Pattern; |
|
|
|
|
public string Replacement; |
|
|
|
|
|
|
|
|
|
public RegexRenamePass(string pattern, string replacement) |
|
|
|
|
{ |
|
|
|
|
Pattern = pattern; |
|
|
|
|
Replacement = replacement; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public RegexRenamePass(string pattern, string replacement, |
|
|
|
|
RenameTargets targets) |
|
|
|
|
: this(pattern, replacement) |
|
|
|
|
{ |
|
|
|
|
Targets = targets; |
|
|
|
|
} |
|
|
|
|
public abstract bool Rename(string name, out string newName); |
|
|
|
|
|
|
|
|
|
public override bool ProcessDeclaration(Declaration decl) |
|
|
|
|
public override bool VisitDeclaration(Declaration decl) |
|
|
|
|
{ |
|
|
|
|
if (!Targets.HasFlag(RenameTargets.Any)) |
|
|
|
|
return false; |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
string newName; |
|
|
|
|
if (Rename(decl.Name, out newName)) |
|
|
|
|
@ -66,10 +34,10 @@ namespace Cxxi.Passes
@@ -66,10 +34,10 @@ namespace Cxxi.Passes
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override bool ProcessEnumItem(Enumeration.Item item) |
|
|
|
|
public override bool VisitEnumItem(Enumeration.Item item) |
|
|
|
|
{ |
|
|
|
|
if (!Targets.HasFlag(RenameTargets.EnumItem)) |
|
|
|
|
return false; |
|
|
|
|
@ -81,25 +49,63 @@ namespace Cxxi.Passes
@@ -81,25 +49,63 @@ namespace Cxxi.Passes
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override bool ProcessField(Field field) |
|
|
|
|
public override bool VisitFieldDecl(Field field) |
|
|
|
|
{ |
|
|
|
|
if (!Targets.HasFlag(RenameTargets.Field)) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
string newName; |
|
|
|
|
if (Rename(field.Name, out newName)) |
|
|
|
|
{ |
|
|
|
|
field.Name = newName; |
|
|
|
|
return true; |
|
|
|
|
return base.VisitFieldDecl(field); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override bool VisitMethodDecl(Method method) |
|
|
|
|
{ |
|
|
|
|
if (!Targets.HasFlag(RenameTargets.Method)) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
if (method.Kind != CXXMethodKind.Normal) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
return base.VisitMethodDecl(method); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool Rename(string name, out string newName) |
|
|
|
|
[Flags] |
|
|
|
|
public enum RenameTargets |
|
|
|
|
{ |
|
|
|
|
Record, |
|
|
|
|
Field, |
|
|
|
|
Method, |
|
|
|
|
Function, |
|
|
|
|
Enum, |
|
|
|
|
EnumItem, |
|
|
|
|
Any = Function | Method | Record | Field | Enum | EnumItem, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Renames a declaration based on a regular expression pattern.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class RegexRenamePass : RenamePass |
|
|
|
|
{ |
|
|
|
|
public string Pattern; |
|
|
|
|
public string Replacement; |
|
|
|
|
|
|
|
|
|
public RegexRenamePass(string pattern, string replacement) |
|
|
|
|
{ |
|
|
|
|
Pattern = pattern; |
|
|
|
|
Replacement = replacement; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public RegexRenamePass(string pattern, string replacement, |
|
|
|
|
RenameTargets targets) |
|
|
|
|
: this(pattern, replacement) |
|
|
|
|
{ |
|
|
|
|
Targets = targets; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override bool Rename(string name, out string newName) |
|
|
|
|
{ |
|
|
|
|
var replace = Regex.Replace(name, Pattern, Replacement); |
|
|
|
|
|
|
|
|
|
@ -133,57 +139,21 @@ namespace Cxxi.Passes
@@ -133,57 +139,21 @@ namespace Cxxi.Passes
|
|
|
|
|
Pattern = pattern; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void Rename<T>(ref T decl) where T : Declaration |
|
|
|
|
public override bool Rename(string name, out string newName) |
|
|
|
|
{ |
|
|
|
|
newName = null; |
|
|
|
|
|
|
|
|
|
switch (Pattern) |
|
|
|
|
{ |
|
|
|
|
case RenameCasePattern.LowerCamelCase: |
|
|
|
|
decl.Name = ConvertCaseString(decl.Name, RenameCasePattern.LowerCamelCase); |
|
|
|
|
break; |
|
|
|
|
case RenameCasePattern.UpperCamelCase: |
|
|
|
|
decl.Name = ConvertCaseString(decl.Name, RenameCasePattern.UpperCamelCase); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override bool ProcessDeclaration(Declaration decl) |
|
|
|
|
{ |
|
|
|
|
if (!Targets.HasFlag(RenameTargets.Any)) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
Rename(ref decl); |
|
|
|
|
newName = ConvertCaseString(name, RenameCasePattern.LowerCamelCase); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override bool ProcessFunction(Function function) |
|
|
|
|
{ |
|
|
|
|
if (!Targets.HasFlag(RenameTargets.Function)) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
Rename(ref function); |
|
|
|
|
case RenameCasePattern.UpperCamelCase: |
|
|
|
|
newName = ConvertCaseString(name, RenameCasePattern.UpperCamelCase); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override bool ProcessField(Field field) |
|
|
|
|
{ |
|
|
|
|
if (!Targets.HasFlag(RenameTargets.Field)) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
Rename(ref field); |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override bool ProcessMethod(Method method) |
|
|
|
|
{ |
|
|
|
|
if (!Targets.HasFlag(RenameTargets.Method)) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
if (method.Kind != CXXMethodKind.Normal) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
Rename(ref method); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|