ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/libobjects-0.1.19.tgz#/libobjects-0.1.19/checks/nsbundle.m

This is nsbundle.m in view mode; [Download] [Up]

/* 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;
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.