This is Node.m in view mode; [Download] [Up]
// // Node // // An Objective-C class for nodes for connecting signals in a computer simulation. // #import "Node.h" char NODE_TESTDEVTYPE[255]; // For node size testing. void TESTNODE(char *name, id nd, int num) { if(nd == nil) { fprintf(stderr, "%s: Node %s nil!\n", NODE_TESTDEVTYPE, name); exit(-2); } if([nd numbits] != num) { fprintf(stderr, "%s: Node %s wrong size (%d bits)! Should be %d bits!\n", NODE_TESTDEVTYPE, name, [nd numbits], num); exit(-3); } return; } @implementation Node - initNumBits:(int)nbits { int i; if(nbits < 1) { fprintf(stderr, "Node: Attempt to create a Node with less than one bit!\n"); exit(-1); } numbits = nbits; data = (bit *)malloc(numbits * sizeof(bit)); for(i = 0; i < numbits; i++) // Initialize the node to 0. data[i] = 0; return self; } - initNumBits:(int)nbits contents:(bit *)cont { int i; [self initNumBits:nbits]; for(i = 0; i < numbits; i++) data[i] = (cont[i] != 0); // Force to be Boolean. return self; } - initNumBits:(int)nbits fill:(bit)cont { int i; [self initNumBits:nbits]; for(i = 0; i < numbits; i++) data[i] = (cont != 0); // Force to be Boolean. return self; } - free { free(data); return self; } - (int)numbits { return numbits; } - setBits:(bit *)someData { int i; for(i = 0; i < numbits; i++) data[i] = someData[i]; return self; } - (bit *)getBits { return data; } - dumpBinaryToFile:(FILE *)aFile { int i; for(i = (numbits - 1); i >= 0; i--) { // Dump binary form. fprintf(aFile, "%d", data[i]); } return self; } - dumpHexToFile:(FILE *)aFile { int i; int sum; fprintf(aFile, "0x"); sum = 0; for(i = (numbits - 1); i >= 0; i--) { // Dump hex form. switch(i % 4) { case 0: sum += data[i]; fprintf(aFile, "%X", sum); sum = 0; break; case 1: sum += 2 * data[i]; break; case 2: sum += 4 * data[i]; break; case 3: sum += 8 * data[i]; break; } } return self; } - dumpWithName:(char *)aName toFile:(FILE *)aFile { fprintf(aFile, " %10s: ", aName); // Dump name. [self dumpBinaryToFile:aFile]; fprintf(aFile, " : "); // Dump spacer. [self dumpHexToFile:aFile]; fprintf(aFile, "\n"); // Dump end-of-line. return self; } @end // // End of file. //
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.