mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-26 10:11:03 +00:00
90 lines
2.5 KiB
Mathematica
90 lines
2.5 KiB
Mathematica
|
/* nsbundle - Program to test out dynamic linking via NSBundle.
|
||
|
Copyright (C) 1993,1994,1995 Free Software Foundation, Inc.
|
||
|
|
||
|
Written by: Adam Fedor <fedor@boulder.colorado.edu>
|
||
|
Date: Jul 1995
|
||
|
|
||
|
This file is part of the GNU Objective C Class Library.
|
||
|
|
||
|
*/
|
||
|
#include <sys/param.h>
|
||
|
#include "Foundation/NSBundle.h"
|
||
|
#include "Foundation/NSException.h"
|
||
|
#include "Foundation/NSString.h"
|
||
|
#include "LoadMe.h"
|
||
|
#include "SecondClass.h"
|
||
|
#include "MyCategory.h"
|
||
|
|
||
|
/* Realize externals needed by objc-load */
|
||
|
char **NSArgv;
|
||
|
|
||
|
int
|
||
|
main(int ac, char *av[])
|
||
|
{
|
||
|
NSBundle *main;
|
||
|
NSBundle *bundle;
|
||
|
NSString *path;
|
||
|
id object;
|
||
|
|
||
|
NSArgv = av;
|
||
|
|
||
|
main = [NSBundle mainBundle];
|
||
|
printf("Looking for main bundle...\n");
|
||
|
if (!main) {
|
||
|
fprintf(stderr, "* ERROR: Can't get main bundle\n");
|
||
|
exit(1);
|
||
|
}
|
||
|
printf(" Main bundle directory is %s\n", [[main bundlePath] cString]);
|
||
|
|
||
|
printf("Looking for LoadMe bundle...\n");
|
||
|
path = [main pathForResource:@"LoadMe" ofType:@"bundle"];
|
||
|
if (!path) {
|
||
|
fprintf(stderr, "* ERROR: Can't find LoadMe bundle in main bundle\n");
|
||
|
exit(1);
|
||
|
}
|
||
|
printf(" Found LoadMe in: %s\n\n", [path cString]);
|
||
|
|
||
|
printf("Initializing LoadMe bundle...\n");
|
||
|
bundle = [[NSBundle alloc] initWithPath:path];
|
||
|
if (!bundle) {
|
||
|
fprintf(stderr, "* ERROR: Can't init LoadMe bundle\n");
|
||
|
exit(1);
|
||
|
}
|
||
|
path = [bundle pathForResource:@"NXStringTable" ofType:@"example"];
|
||
|
if (!path) {
|
||
|
fprintf(stderr, "* ERROR: Can't find example in LoadMe bundle\n");
|
||
|
exit(1);
|
||
|
}
|
||
|
printf(" Found example file: %s\n\n", [path cString]);
|
||
|
|
||
|
printf("Retreiving principal class...\n");
|
||
|
NS_DURING
|
||
|
object = [bundle principalClass];
|
||
|
NS_HANDLER
|
||
|
object = nil;
|
||
|
fprintf(stderr, " ERROR: %s\n", [[exception reason] cString]);
|
||
|
fprintf(stderr, " Either there is a problem with dynamic loading,\n");
|
||
|
fprintf(stderr, " or there is no dynamic loader on your system\n");
|
||
|
exit(1);
|
||
|
NS_ENDHANDLER
|
||
|
if (!object) {
|
||
|
fprintf(stderr, "* ERROR: Can't find principal class\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 release];
|
||
|
|
||
|
printf("\n This is SecondClass:\n");
|
||
|
object = [[[bundle classNamed:@"SecondClass"] alloc] init];
|
||
|
[object printName];
|
||
|
[object printMyName];
|
||
|
[object release];
|
||
|
|
||
|
return 0;
|
||
|
}
|