< prev index next >

src/jdk.jextract/share/classes/com/sun/tools/jextract/JavaSourceBuilderExt.java

Print this page




 188         sb.append(' ');
 189         sb.append(fieldName);
 190         sb.append("$ptr() {\n");
 191         incrAlign();
 192         indent();
 193         sb.append("return ");
 194         sb.append(libraryField);
 195         sb.append('.');
 196         sb.append(fieldName);
 197         sb.append("$ptr();\n");
 198         decrAlign();
 199         indent();
 200         sb.append("}\n\n");
 201 
 202         decrAlign();
 203     }
 204 
 205     // emit static forwarder method of a function
 206     protected void emitStaticForwarder(FunctionTree funcTree, JType.Function fn, String libraryField) {
 207         check();







 208         incrAlign();
 209         indent();
 210         sb.append("public static ");
 211         sb.append(fn.returnType.getSourceSignature(false));
 212         sb.append(' ');
 213         sb.append(funcTree.name());
 214         sb.append('(');
 215         final int arg_cnt = funcTree.numParams();
 216         final List<String> argNames = new ArrayList<>();
 217         for (int i = 0; i < fn.args.length; i++) {
 218             sb.append(fn.args[i].getSourceSignature(false));
 219             sb.append(' ');
 220             String pname = funcTree.paramName(i);
 221             pname = pname == null || pname.isEmpty()? ("$arg" + i) : pname;
 222             argNames.add(pname);
 223             sb.append(pname);
 224             if (fn.isVarArgs || i != arg_cnt - 1) {
 225                 sb.append(", ");
 226             }
 227         }
 228         if (fn.isVarArgs) {
 229             sb.append("Object... ");
 230             String pname = funcTree.paramName(arg_cnt - 1);
 231             pname = pname == null || pname.isEmpty()? "$args" : pname;
 232             argNames.add(pname);
 233             sb.append(pname);
 234         }
 235 
 236         sb.append(") {\n");
 237         incrAlign();
 238         indent();
 239         if (fn.returnType != JType.Void) {
 240             sb.append("return ");
 241         }
 242         sb.append(libraryField);
 243         sb.append('.');
 244         sb.append(funcTree.name());
 245         sb.append('(');
 246         int size = argNames.size();
 247         int j = 0;
 248         for (String an : argNames) {
 249             sb.append(an);
 250             if (j != size - 1) sb.append(", ");
 251             j++;
 252         }
 253         sb.append(");\n");
 254         decrAlign();
 255         indent();
 256         sb.append("}\n\n");
 257         decrAlign();
 258     }
 259 }


 188         sb.append(' ');
 189         sb.append(fieldName);
 190         sb.append("$ptr() {\n");
 191         incrAlign();
 192         indent();
 193         sb.append("return ");
 194         sb.append(libraryField);
 195         sb.append('.');
 196         sb.append(fieldName);
 197         sb.append("$ptr();\n");
 198         decrAlign();
 199         indent();
 200         sb.append("}\n\n");
 201 
 202         decrAlign();
 203     }
 204 
 205     // emit static forwarder method of a function
 206     protected void emitStaticForwarder(FunctionTree funcTree, JType.Function fn, String libraryField) {
 207         check();
 208 
 209         final int numArgs = fn.isVarArgs? fn.args.length + 1 : fn.args.length;
 210         final String[] argTypes = new String[numArgs];
 211         final String[] argNames = new String[numArgs];
 212         fillArgTypes(fn, argTypes);
 213         fillArgNames(fn, funcTree, argNames);
 214 
 215         incrAlign();
 216         indent();
 217         sb.append("public static ");
 218         sb.append(fn.returnType.getSourceSignature(false));
 219         sb.append(' ');
 220         sb.append(funcTree.name());
 221         sb.append('(');
 222         for (int i = 0; i < numArgs; i++) {
 223             sb.append(argTypes[i]);


 224             sb.append(' ');
 225             sb.append(argNames[i]);
 226             if (i != numArgs - 1) {



 227                 sb.append(", ");
 228             }
 229         }








 230         sb.append(") {\n");
 231         incrAlign();
 232         indent();
 233         if (fn.returnType != JType.Void) {
 234             sb.append("return ");
 235         }
 236         sb.append(libraryField);
 237         sb.append('.');
 238         sb.append(funcTree.name());
 239         sb.append('(');
 240         for (int j = 0; j < numArgs; j++) {
 241             sb.append(argNames[j]);
 242             if (j != numArgs - 1) {
 243                 sb.append(", ");
 244             }

 245         }
 246         sb.append(");\n");
 247         decrAlign();
 248         indent();
 249         sb.append("}\n\n");
 250         decrAlign();
 251     }
 252 }
< prev index next >