Add p prefix to types

This commit is contained in:
de4dot 2011-12-01 22:30:43 +01:00
parent ec896da8ab
commit d6ba1fa2d5

View File

@ -41,18 +41,19 @@ namespace de4dot.renamer {
if (elementType is GenericParameter) if (elementType is GenericParameter)
return genericParamNameCreator.create(); return genericParamNameCreator.create();
var name = elementType.FullName;
NameCreator nc; NameCreator nc;
if (typeNames.TryGetValue(name, out nc)) var typeFullName = typeRef.FullName;
if (typeNames.TryGetValue(typeFullName, out nc))
return nc.create(); return nc.create();
var name = elementType.FullName;
var parts = name.Replace('/', '.').Split(new char[] { '.' }); var parts = name.Replace('/', '.').Split(new char[] { '.' });
var newName = parts[parts.Length - 1]; var newName = parts[parts.Length - 1];
int tickIndex = newName.LastIndexOf('`'); int tickIndex = newName.LastIndexOf('`');
if (tickIndex > 0) if (tickIndex > 0)
newName = newName.Substring(0, tickIndex); newName = newName.Substring(0, tickIndex);
return addTypeName(name, newName, prefix).create(); return addTypeName(typeFullName, newName, prefix).create();
} }
string getPrefix(TypeReference typeRef) { string getPrefix(TypeReference typeRef) {
@ -64,7 +65,7 @@ namespace de4dot.renamer {
return prefix; return prefix;
} }
protected INameCreator addTypeName(string fullName, string newName, string prefix = "") { protected INameCreator addTypeName(string fullName, string newName, string prefix) {
newName = fixName(prefix, newName); newName = fixName(prefix, newName);
var name2 = " " + newName; var name2 = " " + newName;
@ -96,22 +97,39 @@ namespace de4dot.renamer {
class VariableNameCreator : TypeNames { class VariableNameCreator : TypeNames {
public VariableNameCreator() { public VariableNameCreator() {
addTypeName("System.Boolean", "bool"); initTypeName("System.Boolean", "bool");
addTypeName("System.Byte", "byte"); initTypeName("System.Byte", "byte");
addTypeName("System.Char", "char"); initTypeName("System.Char", "char");
addTypeName("System.Double", "double"); initTypeName("System.Double", "double");
addTypeName("System.Int16", "short"); initTypeName("System.Int16", "short");
addTypeName("System.Int32", "int"); initTypeName("System.Int32", "int");
addTypeName("System.Int64", "long"); initTypeName("System.Int64", "long");
addTypeName("System.IntPtr", "intptr"); initTypeName("System.IntPtr", "intptr", "IntPtr");
addTypeName("System.SByte", "sbyte"); initTypeName("System.SByte", "sbyte", "SByte");
addTypeName("System.Single", "float"); initTypeName("System.Single", "float");
addTypeName("System.String", "string"); initTypeName("System.String", "string");
addTypeName("System.UInt16", "ushort"); initTypeName("System.UInt16", "ushort", "UShort");
addTypeName("System.UInt32", "uint"); initTypeName("System.UInt32", "uint", "UInt");
addTypeName("System.UInt64", "ulong"); initTypeName("System.UInt64", "ulong", "ULong");
addTypeName("System.UIntPtr", "uintptr"); initTypeName("System.UIntPtr", "uintptr", "UIntPtr");
addTypeName("System.Decimal", "decimal"); initTypeName("System.Decimal", "decimal");
}
void initTypeName(string fullName, string newName, string ptrName = null) {
if (ptrName == null)
ptrName = upperFirst(newName);
initTypeName2(fullName, "", newName);
initTypeName2(fullName + "[]", "", newName);
initTypeName2(fullName + "[][]", "", newName);
initTypeName2(fullName + "[][][]", "", newName);
initTypeName2(fullName + "[0...,0...]", "", newName);
initTypeName2(fullName + "*", "p", ptrName);
initTypeName2(fullName + "**", "pp", ptrName);
}
void initTypeName2(string fullName, string prefix, string newName) {
addTypeName(fullName, newName, prefix);
addTypeName(fullName + "&", newName, prefix);
} }
static string lowerLeadingChars(string name) { static string lowerLeadingChars(string name) {