This is test.m in view mode; [Download] [Up]
#import <objc/Object.h> #import <objc/NXString.h> #import <streams/streams.h> #import <stdio.h> #import <mach/mach.h> #import <objc/objc-load.h> int staticA = 5; @interface Foo : Object { int a; char *b; int staticA; } -(int)a; -(void)setA: (int)theA; @end @implementation Foo -(int)a { return a; } -(void)setA: (int)theA { a = theA; } @end void loadIt(char *file) { char *objs[] = {file, 0}; char *debugFile = alloca(strlen(file) + 5); struct mach_header address; NXStream *stream = NXOpenFile(fileno(stdout), NX_WRITEONLY); strcpy(debugFile, file); strcat(debugFile, ".deb"); objc_loadModules(objs, stream, NULL, &address, debugFile); printf("%s loaded at %p.\n", file, address); NXClose(stream); } int main(int argc, char **argv) { id foo = [Foo new]; int a; char *test = malloc(6); id theDyn; Class dynClass; char *fooString = "abcdef"; int keepGoing = ((argc > 1) && (strcmp(argv[1], "stop") == 0)); NXString *aString = @"Foo"; while (keepGoing); [foo setA: 4]; a = [foo a]; loadIt("Dyn.o"); loadIt("Dyn1.o"); dynClass = objc_getClass("Dyn"); theDyn = [dynClass new]; [theDyn setC: 5]; objc_unloadModules(NULL, NULL); return 1; } /* void foofoo() { int i = 1; printf("i is %d\n", i); } */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.