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

use rewriteXXX methods from base, set up combine and remove for __MultiXXX classes

This commit is contained in:
Kevin Glynn 2011-10-13 16:02:29 +02:00
parent 7f0cc54156
commit b5f2f3126b

View File

@ -892,8 +892,8 @@ method_header [string returnType] returns [MethodRepTemplate meth]:
if (MethodRenames.ContainsKey($member_name.name)) { if (MethodRenames.ContainsKey($member_name.name)) {
$meth.JavaName = MethodRenames[$member_name.name]; $meth.JavaName = MethodRenames[$member_name.name];
} }
else if ($member_name.name != "Main" && Cfg.TranslatorMakeJavaNamingConventions) { else {
$meth.JavaName = toJavaConvention(CSharpEntity.METHOD, $member_name.name); $meth.JavaName = rewriteMethodName($member_name.name);
} }
} }
; ;
@ -1041,29 +1041,21 @@ scope NSContext;
multiDelegateClass.TypeParams = $variant_generic_parameter_list.tyargs.ToArray(); multiDelegateClass.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
} }
MethodRepTemplate invokeMethodRep = new MethodRepTemplate($return_type.thetext, "Invoke", null, $formal_parameter_list.paramlist); MethodRepTemplate invokeMethodRep = new MethodRepTemplate($return_type.thetext, "Invoke", null, $formal_parameter_list.paramlist);
invokeMethodRep.JavaName = rewriteMethodName(invokeMethodRep.Name);
invokeMethodRep.ParamArray = $formal_parameter_list.paramarr; invokeMethodRep.ParamArray = $formal_parameter_list.paramarr;
multiDelegateClass.Methods.Add(invokeMethodRep); multiDelegateClass.Methods.Add(invokeMethodRep);
multiDelegateClass.Methods.Add(new MethodRepTemplate("System.Collections.Generic.List*[" + delIfaceName + "]*", "GetInvocationList", null, null)); MethodRepTemplate getInvListMethodRep = new MethodRepTemplate("System.Collections.Generic.List*[" + delIfaceName + "]*", "GetInvocationList", null, null);
getInvListMethodRep.JavaName = rewriteMethodName(getInvListMethodRep.Name);
multiDelegateClass.Methods.Add(getInvListMethodRep);
AppEnv[genericNameSpace] = multiDelegateClass; AppEnv[genericNameSpace] = multiDelegateClass;
multiDelegateClass.Uses = this.CollectUses; multiDelegateClass.Uses = this.CollectUses;
multiDelegateClass.Aliases = this.CollectAliases; multiDelegateClass.Aliases = this.CollectAliases;
multiDelegateClass.Imports = new string[] {multiDelegateClass.TypeName}; multiDelegateClass.Imports = new string[] {multiDelegateClass.TypeName};
genericNameSpace = NSPrefix(ParentNameSpace) + mkGenericTypeAlias($identifier.text, $variant_generic_parameter_list.tyargs);
dlegate.TypeName = NSPrefix(ParentNameSpace) + $identifier.text;
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
dlegate.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
}
dlegate.Invoke = new InvokeRepTemplate($return_type.thetext, "Invoke", null, $formal_parameter_list.paramlist);
dlegate.Invoke.ParamArray = $formal_parameter_list.paramarr;
AppEnv[genericNameSpace] = dlegate;
dlegate.Uses = this.CollectUses;
dlegate.Aliases = this.CollectAliases;
dlegate.Imports = new string[] {dlegate.TypeName};
// Add Combine and Remove translations // Add Combine and Remove translations
MethodRepTemplate adder = new MethodRepTemplate(); MethodRepTemplate adder = new MethodRepTemplate();
adder.Name = "Combine"; adder.Name = "Combine";
adder.JavaName = rewriteMethodName(adder.Name);
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) { if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
adder.TypeParams = $variant_generic_parameter_list.tyargs.ToArray(); adder.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
} }
@ -1078,12 +1070,12 @@ scope NSContext;
adder.Return = new TypeRepRef(delIfaceName); adder.Return = new TypeRepRef(delIfaceName);
adder.IsStatic = true; adder.IsStatic = true;
adder.Java = "__Multi"+$identifier.text + ".Combine(${a},${b})"; adder.SurroundingType = multiDelegateClass;
adder.Imports = new string[] {multiDelegateClass.TypeName}; multiDelegateClass.Methods.Add(adder);
dlegate.Methods.Add(adder);
MethodRepTemplate remover = new MethodRepTemplate(); MethodRepTemplate remover = new MethodRepTemplate();
remover.Name = "Remove"; remover.Name = "Remove";
remover.JavaName = rewriteMethodName(remover.Name);
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) { if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
remover.TypeParams = $variant_generic_parameter_list.tyargs.ToArray(); remover.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
} }
@ -1098,8 +1090,61 @@ scope NSContext;
remover.Return = new TypeRepRef(delIfaceName); remover.Return = new TypeRepRef(delIfaceName);
remover.IsStatic = true; remover.IsStatic = true;
remover.Java = "__Multi"+$identifier.text + ".Remove(${a},${b})"; remover.SurroundingType = multiDelegateClass;
remover.Imports = new string[] {multiDelegateClass.TypeName}; multiDelegateClass.Methods.Add(remover);
// Set up delegate
genericNameSpace = NSPrefix(ParentNameSpace) + mkGenericTypeAlias($identifier.text, $variant_generic_parameter_list.tyargs);
dlegate.TypeName = NSPrefix(ParentNameSpace) + $identifier.text;
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
dlegate.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
}
dlegate.Invoke = new InvokeRepTemplate($return_type.thetext, "Invoke", null, $formal_parameter_list.paramlist);
dlegate.Invoke.ParamArray = $formal_parameter_list.paramarr;
dlegate.Invoke.JavaName = rewriteMethodName(dlegate.Invoke.Name);
AppEnv[genericNameSpace] = dlegate;
dlegate.Uses = this.CollectUses;
dlegate.Aliases = this.CollectAliases;
dlegate.Imports = new string[] {dlegate.TypeName};
// Add Combine and Remove translations
adder = new MethodRepTemplate();
adder.Name = "Combine";
adder.JavaName = rewriteMethodName(adder.Name);
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
adder.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
}
param = new ParamRepTemplate();
param.Name = "a";
param.Type = new TypeRepRef(delIfaceName);
adder.Params.Add(param);
param = new ParamRepTemplate();
param.Name = "b";
param.Type = new TypeRepRef(delIfaceName);
adder.Params.Add(param);
adder.Return = new TypeRepRef(delIfaceName);
adder.IsStatic = true;
adder.SurroundingType = multiDelegateClass;
dlegate.Methods.Add(adder);
remover = new MethodRepTemplate();
remover.Name = "Remove";
remover.JavaName = rewriteMethodName(remover.Name);
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
remover.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
}
param = new ParamRepTemplate();
param.Name = "a";
param.Type = new TypeRepRef(delIfaceName);
remover.Params.Add(param);
param = new ParamRepTemplate();
param.Name = "b";
param.Type = new TypeRepRef(delIfaceName);
remover.Params.Add(param);
remover.Return = new TypeRepRef(delIfaceName);
remover.IsStatic = true;
remover.SurroundingType = multiDelegateClass;
dlegate.Methods.Add(remover); dlegate.Methods.Add(remover);
} }
; ;
@ -1249,8 +1294,8 @@ interface_method_declaration [string returnType]:
if (MethodRenames.ContainsKey($identifier.text)) { if (MethodRenames.ContainsKey($identifier.text)) {
meth.JavaName = MethodRenames[$identifier.text]; meth.JavaName = MethodRenames[$identifier.text];
} }
else if ($identifier.text != "Main" && Cfg.TranslatorMakeJavaNamingConventions) { else {
meth.JavaName = toJavaConvention(CSharpEntity.METHOD, $identifier.text); meth.JavaName = rewriteMethodName($identifier.text);
} }
((InterfaceRepTemplate)$NSContext::currentTypeRep).Methods.Add(meth); ((InterfaceRepTemplate)$NSContext::currentTypeRep).Methods.Add(meth);
} }