< prev index next >
src/jdk.jextract/share/classes/com/sun/tools/jextract/JavaSourceBuilderExt.java
Print this page
@@ -203,54 +203,47 @@
}
// emit static forwarder method of a function
protected void emitStaticForwarder(FunctionTree funcTree, JType.Function fn, String libraryField) {
check();
+
+ final int numArgs = fn.isVarArgs? fn.args.length + 1 : fn.args.length;
+ final String[] argTypes = new String[numArgs];
+ final String[] argNames = new String[numArgs];
+ fillArgTypes(fn, argTypes);
+ fillArgNames(fn, funcTree, argNames);
+
incrAlign();
indent();
sb.append("public static ");
sb.append(fn.returnType.getSourceSignature(false));
sb.append(' ');
sb.append(funcTree.name());
sb.append('(');
- final int arg_cnt = funcTree.numParams();
- final List<String> argNames = new ArrayList<>();
- for (int i = 0; i < fn.args.length; i++) {
- sb.append(fn.args[i].getSourceSignature(false));
+ for (int i = 0; i < numArgs; i++) {
+ sb.append(argTypes[i]);
sb.append(' ');
- String pname = funcTree.paramName(i);
- pname = pname == null || pname.isEmpty()? ("$arg" + i) : pname;
- argNames.add(pname);
- sb.append(pname);
- if (fn.isVarArgs || i != arg_cnt - 1) {
+ sb.append(argNames[i]);
+ if (i != numArgs - 1) {
sb.append(", ");
}
}
- if (fn.isVarArgs) {
- sb.append("Object... ");
- String pname = funcTree.paramName(arg_cnt - 1);
- pname = pname == null || pname.isEmpty()? "$args" : pname;
- argNames.add(pname);
- sb.append(pname);
- }
-
sb.append(") {\n");
incrAlign();
indent();
if (fn.returnType != JType.Void) {
sb.append("return ");
}
sb.append(libraryField);
sb.append('.');
sb.append(funcTree.name());
sb.append('(');
- int size = argNames.size();
- int j = 0;
- for (String an : argNames) {
- sb.append(an);
- if (j != size - 1) sb.append(", ");
- j++;
+ for (int j = 0; j < numArgs; j++) {
+ sb.append(argNames[j]);
+ if (j != numArgs - 1) {
+ sb.append(", ");
+ }
}
sb.append(");\n");
decrAlign();
indent();
sb.append("}\n\n");
< prev index next >