]> git.draconx.ca Git - upkg.git/blobdiff - src/upkg.c
libupkg: Kill upkg_export_class.
[upkg.git] / src / upkg.c
index 2b26aa460da470de9ee70124b6a5e8aebdcf9cee..55d13f8f37f71c1c0d7449ed3bb259f2edfbe9c2 100644 (file)
@@ -206,18 +206,39 @@ static void import_print_fullname(const struct upkg_import *import)
        }
 }
 
-void print_upkg_exports(struct upkg *pkg)
+static void
+export_print_class(GTypeModule *pkg, const struct upkg_export *export)
 {
-       for (unsigned i = 0; i < pkg->export_count; i++) {
-               const struct upkg_export *export = upkg_get_export(pkg, i);
-               const char *package, *class;
+       struct upkg *upkg = U_PKG(pkg)->pkg;
 
-               class = upkg_export_class(pkg, i, &package);
+       if (export->class < 0) {
+               const struct upkg_import *class;
 
-               if (!class)
-                       continue;
+               class = upkg_get_import(upkg, -(export->class+1));
+               import_print_fullname(class);
+       } else if (export->class > 0) {
+               const struct upkg_export *class;
+
+               class = upkg_get_export(upkg, export->class-1);
+               export_print_fullname(pkg, class);
+       } else {
+               printf("Core.Class");
+       }
+}
+
+void print_upkg_exports(GTypeModule *pkg)
+{
+       struct upkg *upkg = U_PKG(pkg)->pkg;
+
+       for (unsigned i = 0; i < upkg->export_count; i++) {
+               const struct upkg_export *export = upkg_get_export(upkg, i);
+
+               printf("%u - ", i+1);
+               export_print_fullname(pkg, export);
+               printf(" (");
+               export_print_class(pkg, export);
+               printf(")\n");
 
-               printf("%u - %s (%s.%s)\n", i+1, export->name, package, class);
                printf("  Flags: %lx\n", export->flags);
                if (verbose >= 2) {
                        print_upkg_object_flags("    ", export->flags);
@@ -258,7 +279,7 @@ int package_info(GTypeModule *pkg)
        }
 
        printf("Exports: %lu\n", upkg->export_count);
-       if (verbose >= 1) print_upkg_exports(upkg);
+       if (verbose >= 1) print_upkg_exports(pkg);
        printf("Imports: %lu\n", upkg->import_count);
        if (verbose >= 1) print_upkg_imports(upkg);
 
@@ -284,10 +305,9 @@ static int package_list(GTypeModule *pkg, long current)
                export_print_fullname(pkg, export);
 
                if (verbose >= 1) {
-                       const char *class, *package;
-
-                       class = upkg_export_class(upkg, i, &package);
-                       printf(" (%s.%s)", package, class);
+                       printf(" (");
+                       export_print_class(pkg, export);
+                       printf(")");
                }
 
                putchar('\n');
@@ -361,17 +381,14 @@ static int object_info(GTypeModule *pkg, unsigned long idx)
 {
        struct upkg *upkg = U_PKG(pkg)->pkg;
        const struct upkg_export *export;
-       const char *class, *package;
        int ret = 0;
 
        export = upkg_get_export(upkg, idx);
        export_print_fullname(pkg, export);
 
-       class = upkg_export_class(upkg, idx, &package);
-       if (class)
-               printf(" (%s.%s)\n", package, class);
-       else
-               printf(" (failed to get class)\n");
+       printf(" (");
+       export_print_class(pkg, export);
+       printf(")\n");
 
        if (verbose >= 1 && object_dump_properties(pkg, idx) != 0)
                ret = -1;