1
0
mirror of https://github.com/twiglet/cs2j.git synced 2025-01-18 13:15:17 +01:00

handle method renaming in Template Extracter, add Clone -> clone

This commit is contained in:
Kevin Glynn 2011-09-02 14:21:55 +02:00
parent 3458e63900
commit eb6e71c6e8
2 changed files with 29 additions and 22 deletions

View File

@ -923,25 +923,9 @@ namespace Twiglet.CS2J.Translator.TypeRep
else {
methStr.Append("${this:16}.");
}
// special for ToString -> toString
// special for Equals -> equals
// special for GetHashCode -> hashCode
if (JavaName == "ToString" && Params.Count == 0)
{
methStr.Append("toString");
}
else if (JavaName == "Equals" && Params.Count == 1)
{
methStr.Append("equals");
}
else if (JavaName == "GetHashCode" && Params.Count == 0)
{
methStr.Append("hashCode");
}
else
{
methStr.Append(JavaName);
}
methStr.Append(JavaName);
return methStr.ToString() + mkJavaParams(Params, ParamArray);
}

View File

@ -165,6 +165,22 @@ scope NSContext {
return ty.ToString();
}
private Dictionary<string,string> methodRenames = null;
protected Dictionary<string,string> MethodRenames
{
get {
if (methodRenames == null) {
methodRenames = new Dictionary<string,string>();
methodRenames["ToString"] = "toString";
methodRenames["Equals"] = "equals";
methodRenames["GetHashCode"] = "getHashCode";
methodRenames["Clone"] = "clone";
}
return methodRenames;
}
}
}
/********************************************************************************************
@ -873,7 +889,10 @@ method_header [string returnType] returns [MethodRepTemplate meth]:
{
$meth = new MethodRepTemplate($returnType, $member_name.name, ($member_name.tyargs == null ? null : $member_name.tyargs.ToArray()), $fpl.paramlist);
$meth.ParamArray = $fpl.paramarr;
if ($member_name.name != "Main" && Cfg.TranslatorMakeJavaNamingConventions) {
if (MethodRenames.ContainsKey($member_name.name)) {
$meth.JavaName = MethodRenames[$member_name.name];
}
else if ($member_name.name != "Main" && Cfg.TranslatorMakeJavaNamingConventions) {
$meth.JavaName = toJavaConvention(CSharpEntity.METHOD, $member_name.name);
}
}
@ -1227,10 +1246,14 @@ interface_method_declaration [string returnType]:
'(' fpl=formal_parameter_list? ')'
{ MethodRepTemplate meth = new MethodRepTemplate($returnType, $identifier.text, (gal == null ? null : $gal.tyargs.ToArray()), $fpl.paramlist);
meth.ParamArray = $formal_parameter_list.paramarr;
if ($identifier.text != "Main" && Cfg.TranslatorMakeJavaNamingConventions) {
if (MethodRenames.ContainsKey($identifier.text)) {
meth.JavaName = MethodRenames[$identifier.text];
}
else if ($identifier.text != "Main" && Cfg.TranslatorMakeJavaNamingConventions) {
meth.JavaName = toJavaConvention(CSharpEntity.METHOD, $identifier.text);
}
((InterfaceRepTemplate)$NSContext::currentTypeRep).Methods.Add(meth); }
((InterfaceRepTemplate)$NSContext::currentTypeRep).Methods.Add(meth);
}
type_parameter_constraints_clauses? ';'
{ DebugDetail("Processing interface method declaration: " + $identifier.text); }
;