33 public static global::java.lang.invoke.MethodHandle
makePairwiseConvert(global::java.lang.invoke.MethodHandle target, global::java.lang.invoke.MethodType srcType,
bool strict,
bool monobox)
38 object[] convSpecs = global::java.lang.invoke.MethodHandleImpl.computeValueConversions(srcType, target.type(), strict, monobox);
39 List<global::java.lang.invoke.LambdaForm.Name> names =
new List<global::java.lang.invoke.LambdaForm.Name>();
40 names.Add(
new global::java.lang.invoke.LambdaForm.Name(0, global::java.lang.invoke.LambdaForm.BasicType.L_TYPE));
41 for (
int i = 0; i < srcType.parameterCount(); i++)
43 names.Add(
new global::java.lang.invoke.LambdaForm.Name(i + 1, global::java.lang.invoke.LambdaForm.BasicType.basicType(srcType.parameterType(i))));
45 global::java.lang.invoke.LambdaForm.Name[] invokeArgs =
new global::java.lang.invoke.LambdaForm.Name[srcType.parameterCount()];
46 for (
int i = 0; i < invokeArgs.Length; i++)
48 object convSpec = convSpecs[i];
51 invokeArgs[i] = names[i + 1];
55 global::java.lang.invoke.LambdaForm.Name temp =
new global::java.lang.invoke.LambdaForm.Name(convSpec as global::java.lang.invoke.MethodHandle ?? global::java.lang.invoke.MethodHandleImpl.Lazy.MH_castReference.bindTo(convSpec), names[i + 1]);
60 names.Add(
new global::java.lang.invoke.LambdaForm.Name(target, invokeArgs));
61 if (convSpecs[convSpecs.Length - 1] !=
null)
63 object convSpec = convSpecs[convSpecs.Length - 1];
64 if (convSpec != global::java.lang.Void.TYPE)
66 names.Add(
new global::java.lang.invoke.LambdaForm.Name(convSpec as global::java.lang.invoke.MethodHandle ?? global::java.lang.invoke.MethodHandleImpl.Lazy.MH_castReference.bindTo(convSpec), names[names.Count - 1]));
69 if (target.type().returnType() == global::java.lang.Void.TYPE && srcType.returnType() != global::java.lang.Void.TYPE)
71 names.Add(
new global::java.lang.invoke.LambdaForm.Name(global::java.lang.invoke.LambdaForm.constantZero(global::java.lang.invoke.LambdaForm.BasicType.basicType(srcType.returnType()))));
73 global::java.lang.invoke.LambdaForm form =
new global::java.lang.invoke.LambdaForm(
"PairwiseConvert", srcType.parameterCount() + 1, names.ToArray(), srcType.returnType() == global::java.lang.Void.TYPE ? global::java.lang.invoke.LambdaForm.VOID_RESULT : global::java.lang.invoke.LambdaForm.LAST_RESULT,
false,
null);
74 return new global::java.lang.invoke.LightWeightMethodHandle(srcType, form);