X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/85f60be2c79f922fc9547abdcf7cf544041a2faa..b5a18d3dd9ca4315f9d7f75e90363410db405935:/src/upkg.c diff --git a/src/upkg.c b/src/upkg.c index 2b26aa4..55d13f8 100644 --- a/src/upkg.c +++ b/src/upkg.c @@ -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;