< prev index next >

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

Print this page




 173             return outerName;
 174         }
 175 
 176         public String getName() {
 177             return name;
 178         }
 179 
 180         @Override
 181         public String getDescriptor() {
 182             return "L" + outerName + "$" + name + ";";
 183         }
 184     }
 185 
 186     final class ArrayType implements JType {
 187         final JType elementType;
 188 
 189         ArrayType(JType type) {
 190             elementType = type;
 191         }
 192 




 193         @Override
 194         public String getDescriptor() {
 195             return JType.of(java.foreign.memory.Array.class).getDescriptor();
 196         }
 197 
 198         @Override
 199         public String getSignature() {
 200             StringBuilder sb = new StringBuilder();
 201             sb.append("L");
 202             sb.append(java.foreign.memory.Array.class.getName().replace('.', '/'));
 203             sb.append("<");
 204             JType pt = elementType;
 205             if (pt instanceof JType2) {
 206                 pt = ((JType2) pt).getDelegate();
 207             }
 208             if (pt instanceof TypeAlias) {
 209                 pt = ((TypeAlias) pt).canonicalType();
 210             }
 211             sb.append(JType.boxing(pt));
 212             sb.append(">;");
 213             return sb.toString();
 214         }
 215 
 216         public JType getElementType() {
 217             return elementType;
 218         }
 219     }
 220 
 221     final static class Function implements JType {
 222         final JType returnType;
 223         final JType[] args;
 224         final boolean isVarArgs;
 225         final java.foreign.layout.Function layout;
 226 
 227         Function(java.foreign.layout.Function layout, boolean isVarArgs, JType returnType, JType... args) {
 228             this.layout = layout;
 229             this.returnType = returnType;
 230             this.args = args;



 231             this.isVarArgs = isVarArgs;
 232         }
 233 










 234         @Override
 235         public String getDescriptor() {
 236             StringBuilder sb = new StringBuilder();
 237             sb.append('(');
 238             // ensure sequence
 239             for (int i = 0; i < args.length; i++) {
 240                 sb.append(args[i].getDescriptor());
 241             }
 242             if (isVarArgs) {
 243                 sb.append("[Ljava/lang/Object;");
 244             }
 245             sb.append(')');
 246             sb.append(returnType.getDescriptor());
 247             return sb.toString();
 248         }
 249 
 250         @Override
 251         public String getSignature() {
 252             StringBuilder sb = new StringBuilder();
 253             sb.append('(');




 173             return outerName;
 174         }
 175 
 176         public String getName() {
 177             return name;
 178         }
 179 
 180         @Override
 181         public String getDescriptor() {
 182             return "L" + outerName + "$" + name + ";";
 183         }
 184     }
 185 
 186     final class ArrayType implements JType {
 187         final JType elementType;
 188 
 189         ArrayType(JType type) {
 190             elementType = type;
 191         }
 192 
 193         PointerType asPointer() {
 194             return new PointerType(elementType);
 195         }
 196 
 197         @Override
 198         public String getDescriptor() {
 199             return JType.of(java.foreign.memory.Array.class).getDescriptor();
 200         }
 201 
 202         @Override
 203         public String getSignature() {
 204             StringBuilder sb = new StringBuilder();
 205             sb.append("L");
 206             sb.append(java.foreign.memory.Array.class.getName().replace('.', '/'));
 207             sb.append("<");
 208             JType pt = elementType;
 209             if (pt instanceof JType2) {
 210                 pt = ((JType2) pt).getDelegate();
 211             }
 212             if (pt instanceof TypeAlias) {
 213                 pt = ((TypeAlias) pt).canonicalType();
 214             }
 215             sb.append(JType.boxing(pt));
 216             sb.append(">;");
 217             return sb.toString();
 218         }
 219 
 220         public JType getElementType() {
 221             return elementType;
 222         }
 223     }
 224 
 225     final static class Function implements JType {
 226         final JType returnType;
 227         final JType[] args;
 228         final boolean isVarArgs;
 229         final java.foreign.layout.Function layout;
 230 
 231         Function(java.foreign.layout.Function layout, boolean isVarArgs, JType returnType, JType... args) {
 232             this.layout = layout;
 233             this.returnType = returnType;
 234             this.args = args;
 235             for (int i = 0; i < args.length; i++) {
 236                 args[i] = arrayAsPointer(args[i]);
 237             }
 238             this.isVarArgs = isVarArgs;
 239         }
 240 
 241         private static JType arrayAsPointer(JType t) {
 242             if (t instanceof JType2) {
 243                 t = ((JType2)t).getDelegate();
 244             }
 245             if (t instanceof TypeAlias) {
 246                 t = ((TypeAlias)t).canonicalType();
 247             }
 248             return t instanceof ArrayType? ((ArrayType)t).asPointer() : t;
 249         }
 250 
 251         @Override
 252         public String getDescriptor() {
 253             StringBuilder sb = new StringBuilder();
 254             sb.append('(');
 255             // ensure sequence
 256             for (int i = 0; i < args.length; i++) {
 257                 sb.append(args[i].getDescriptor());
 258             }
 259             if (isVarArgs) {
 260                 sb.append("[Ljava/lang/Object;");
 261             }
 262             sb.append(')');
 263             sb.append(returnType.getDescriptor());
 264             return sb.toString();
 265         }
 266 
 267         @Override
 268         public String getSignature() {
 269             StringBuilder sb = new StringBuilder();
 270             sb.append('(');


< prev index next >