ffi: improve support for functions returning arrays
[m6w6/ext-psi] / src / data.c
index 193f49c94fbf68f1b67650dd7e04323b9126f1e2..d5c9765a454471e29caea516c0d8d68de8d6cc19 100644 (file)
@@ -160,16 +160,14 @@ void psi_data_dtor(struct psi_data *data)
 
 void psi_data_dump(int fd, struct psi_data *D)
 {
-       if (D->file.filename) {
-               size_t i = 0;
-               char *libname;
+       size_t i = 0;
+       char *libname;
 
+       if (D->file.filename) {
                dprintf(fd, "// filename=%s (%u errors)\n", D->file.filename, D->errors);
-               while (psi_plist_get(D->file.libnames, i++, &libname)) {
-                       dprintf(fd, "lib \"%s\";\n", libname);
-               }
-       } else {
-               dprintf(fd, "// builtin predef\n");
+       }
+       while (psi_plist_get(D->file.libnames, i++, &libname)) {
+               dprintf(fd, "lib \"%s\";\n", libname);
        }
        if (psi_plist_count(D->types)) {
                size_t i = 0;
@@ -233,8 +231,14 @@ void psi_data_dump(int fd, struct psi_data *D)
                struct psi_decl *decl;
 
                while (psi_plist_get(D->decls, i++, &decl)) {
+                       if (decl->extvar) {
+                               dprintf(fd, "/* extvar accessor\n");
+                       }
                        psi_decl_dump(fd, decl);
                        dprintf(fd, "\n");
+                       if (decl->extvar) {
+                               dprintf(fd, "   extvar accessor */\n");
+                       }
                }
                dprintf(fd, "\n");
        }