This is bundle.m in view mode; [Download] [Up]
/* bundle - Test out dynamic linking */ #include <sys/param.h> #include "appkit/NXBundle.h" #include "LoadMe.bproj/LoadMe.h" #include "LoadMe.bproj/SecondClass.h" #include "LoadMe.bproj/MyCategory.h" /* Realize externals that objcX should have */ #define NXArgv NSArgv /* latest definition? */ char **NXArgv; int main(int ac, char *av[]) { id main; id bundle; id object; BOOL ok; char path[MAXPATHLEN+1]; NXArgv = av; main = [NXBundle mainBundle]; printf("Looking for main bundle...\n"); if (!main) { printf("* ERROR: Can't get main bundle\n"); exit(1); } printf(" Main bundle directory is %s\n", [main directory]); printf("Looking for LoadMe bundle...\n"); ok = [main getPath:path forResource:"LoadMe" ofType:"bundle"]; if (!ok) { printf("* ERROR: Can't find LoadMe bundle in main bundle\n"); exit(1); } printf(" Found LoadMe in: %s\n\n", path); printf("Initializing LoadMe bundle...\n"); bundle = [[NXBundle alloc] initForDirectory:path]; if (!bundle) { printf("* ERROR: Can't init LoadMe bundle\n"); exit(1); } ok = [bundle getPath:path forResource:"readme" ofType:"txt"]; if (!ok) { printf("* ERROR: Can't find readme in LoadMe bundle\n"); exit(1); } printf(" Found readme file: %s\n\n", path); printf("Retreiving principal class...\n"); object = [bundle principalClass]; if (!object) { printf("* ERROR: Can't find principal class\n"); printf(" Either there is a problem with dynamic loading, or there is\n"); printf(" no dynamic loader on your system\n"); exit(1); } printf(" Principal class is: %s\n", [object name]); printf("Testing LoadMe bundle classes...\n"); printf(" This is LoadMe:\n"); object = [[[bundle classNamed:"LoadMe"] alloc] init]; [object afterLoad]; [object free]; printf("\n This is SecondClass:\n"); object = [[[bundle classNamed:"SecondClass"] alloc] init]; [object printName]; [object printMyName]; return 0; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.