This is Merger.m in view mode; [Download] [Up]
// // Merger // // Merger, like splitter, is a hybrid type of device. It behaves // just like a node, except that it must be clocked to update // its value before any devices which call upon its value use it. // See the documentation on Splitter for a description of using // this sort of device. // #import "Merger.h" @implementation Merger - initLowBits:(int)lbits // Number of bits of low-order input. low:lnode // Node containing low-order part. highBits:(int)hbits // Number of bits of higher-order input. high:hnode // Node containing high-order part. { if(lbits < 1) { fprintf(stderr, "Merger: Attempt to create a Merger with less than one low-order bit!\n"); exit(-1); } lowbits = lbits; if(hbits < 1) { fprintf(stderr, "Merger: Attempt to create a Merger with less than one high-order bit!\n"); exit(-1); } highbits = hbits; [super initNumBits:(lowbits + highbits)]; // Merger size is sum of merged components. INITDEVTYPE("Merger"); TESTNODE("LOW", lnode, lowbits); TESTNODE("HIGH", hnode, highbits); LOW = lnode; HIGH = hnode; return self; } - cycle { bit *lowarray = [LOW getBits]; bit *higharray = [HIGH getBits]; int i; for(i = 0; i < lowbits; i++) { data[i] = lowarray[i]; } for(i = 0; i < highbits; i++) { data[lowbits + i] = higharray[i]; } 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.