35 private const string specialCharactersString =
"\\+,[]*&\u0000";
36 internal const string ProxiesContainer =
"__<Proxies>";
38 internal static string ReplaceIllegalCharacters(
string name)
42 return name.Replace(
'\u0000',
' ');
45 internal static string Unescape(
string name)
47 int pos = name.IndexOf(
'\\');
51 var sb =
new ValueStringBuilder(name.Length);
52 sb.Append(name.AsSpan(0, pos));
54 for (
int i = pos; i < name.Length; i++)
66 internal static string MangleNestedTypeName(
string name)
68 var sb =
new ValueStringBuilder();
70 foreach (
char c
in name)
72 var index = specialCharactersString.IndexOf(c);
90 sb.Append(
string.Format(
"{0:X1}", index));
97 internal static string UnmangleNestedTypeName(
string name)
99 var sb =
new ValueStringBuilder(name.Length);
100 for (
int i = 0; i < name.Length; i++)
103 var index = specialCharactersString.IndexOf(c);
116 sb.Append(specialCharactersString[c -
'0']);
124 return sb.ToString();
127 internal static string GetProxyNestedName(RuntimeJavaType[] interfaces)
129 var sb =
new ValueStringBuilder();
131 foreach (var tw
in interfaces)
133 sb.Append(tw.Name.Length.ToString());
138 return TypeNameUtil.MangleNestedTypeName(sb.ToString());
141 internal static string GetProxyName(RuntimeJavaType[] interfaces)
143 return ProxiesContainer +
"+" + GetProxyNestedName(interfaces);