< prev index next >

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

Print this page

        

@@ -188,10 +188,14 @@
 
         ArrayType(JType type) {
             elementType = type;
         }
 
+        PointerType asPointer() {
+            return new PointerType(elementType);
+        }
+
         @Override
         public String getDescriptor() {
             return JType.of(java.foreign.memory.Array.class).getDescriptor();
         }
 

@@ -226,13 +230,26 @@
 
         Function(java.foreign.layout.Function layout, boolean isVarArgs, JType returnType, JType... args) {
             this.layout = layout;
             this.returnType = returnType;
             this.args = args;
+            for (int i = 0; i < args.length; i++) {
+                args[i] = arrayAsPointer(args[i]);
+            }
             this.isVarArgs = isVarArgs;
         }
 
+        private static JType arrayAsPointer(JType t) {
+            if (t instanceof JType2) {
+                t = ((JType2)t).getDelegate();
+            }
+            if (t instanceof TypeAlias) {
+                t = ((TypeAlias)t).canonicalType();
+            }
+            return t instanceof ArrayType? ((ArrayType)t).asPointer() : t;
+        }
+
         @Override
         public String getDescriptor() {
             StringBuilder sb = new StringBuilder();
             sb.append('(');
             // ensure sequence
< prev index next >