This is ug.out.c in view mode; [Download] [Up]
/* OUTbox unit generator */ #include "mm.head.h" #include "ug.head.h" out UGHEAD{ UGINIT; register float *Out = Outblock; switch (narg) { case 1: switch ( INC(0) ) { case 0: UGLOOP{ register float val = VAL(0) ; *Out++ += val ; } return ; case 1: UGLOOP{ *Out++ += VAL(0)++ ; } return ; } case 2: switch ( (INC(0)<<1)+INC(1) ) { case 0: UGLOOP{ register float val0 = VAL(0), val1 = VAL(1) ; *Out++ += val0 ; *Out++ += val1 ; } return ; case 1: UGLOOP{ register float val0 = VAL(0) ; *Out++ += val0 ; *Out++ += VAL(1)++ ; } return ; case 2: UGLOOP{ register float val1 = VAL(1) ; *Out++ += VAL(0)++ ; *Out++ += val1 ; } return ; case 3: UGLOOP{ *Out++ += VAL(0)++ ; *Out++ += VAL(1)++ ; } return ; } case 4: switch ( (INC(0)<<3)+(INC(1)<<2)+(INC(2)<<1)+INC(3) ) { case 0: UGLOOP{ register float val0 = VAL(0), val1 = VAL(1), val2 = VAL(2), val3 = VAL(3) ; *Out++ += val0 ; *Out++ += val1 ; *Out++ += val2 ; *Out++ += val3 ; } return ; case 1: UGLOOP{ register float val0 = VAL(0), val1 = VAL(1), val2 = VAL(2) ; *Out++ += val0 ; *Out++ += val1 ; *Out++ += val2 ; *Out++ += VAL(3)++ ; } return ; case 2: UGLOOP{ register float val0 = VAL(0), val1 = VAL(1), val3 = VAL(3) ; *Out++ += val0 ; *Out++ += val1 ; *Out++ += VAL(2)++ ; *Out++ += val3 ; } return ; case 3: UGLOOP{ register float val0 = VAL(0), val1 = VAL(1) ; *Out++ += val0 ; *Out++ += val1 ; *Out++ += VAL(2)++ ; *Out++ += VAL(3)++ ; } return ; case 4: UGLOOP{ register float val0 = VAL(0), val2 = VAL(2), val3 = VAL(3) ; *Out++ += val0 ; *Out++ += VAL(1)++ ; *Out++ += val2 ; *Out++ += val3 ; } return ; case 5: UGLOOP{ register float val0 = VAL(0), val2 = VAL(2) ; *Out++ += val0 ; *Out++ += VAL(1)++ ; *Out++ += val2 ; *Out++ += VAL(3)++ ; } return ; case 6: UGLOOP{ register float val0 = VAL(0), val3 = VAL(3) ; *Out++ += val0 ; *Out++ += VAL(1)++ ; *Out++ += VAL(2)++ ; *Out++ += val3 ; } return ; case 7: UGLOOP{ register float val0 = VAL(0) ; *Out++ += val0 ; *Out++ += VAL(1)++ ; *Out++ += VAL(2)++ ; *Out++ += VAL(3)++ ; } return ; case 8: UGLOOP{ register float val1 = VAL(1), val2 = VAL(2), val3 = VAL(3) ; *Out++ += VAL(0)++ ; *Out++ += val1 ; *Out++ += val2 ; *Out++ += val3 ; } return ; case 9: UGLOOP{ register float val1 = VAL(1), val2 = VAL(2) ; *Out++ += VAL(0)++ ; *Out++ += val1 ; *Out++ += val2 ; *Out++ += VAL(3)++ ; } return ; case 10: UGLOOP{ register float val1 = VAL(1), val3 = VAL(3) ; *Out++ += VAL(0)++ ; *Out++ += val1 ; *Out++ += VAL(2)++ ; *Out++ += val3 ; } return ; case 11: UGLOOP{ register float val1 = VAL(1) ; *Out++ += VAL(0)++ ; *Out++ += val1 ; *Out++ += VAL(2)++ ; *Out++ += VAL(3)++ ; } return ; case 12: UGLOOP{ register float val2 = VAL(2), val3 = VAL(3) ; *Out++ += VAL(0)++ ; *Out++ += VAL(1)++ ; *Out++ += val2 ; *Out++ += val3 ; } return ; case 13: UGLOOP{ register float val2 = VAL(2) ; *Out++ += VAL(0)++ ; *Out++ += VAL(1)++ ; *Out++ += val2 ; *Out++ += VAL(3)++ ; } return ; case 14: UGLOOP{ register float val3 = VAL(3) ; *Out++ += VAL(0)++ ; *Out++ += VAL(1)++ ; *Out++ += VAL(2)++ ; *Out++ += val3 ; } return ; case 15: UGLOOP{ *Out++ += VAL(0)++ ; *Out++ += VAL(1)++ ; *Out++ += VAL(2)++ ; *Out++ += VAL(3)++ ; } return ; } default: UGLOOP{ for ( arg = 0 ; arg < narg ; arg++ ) *Out++ += VAL(arg) ; UGEND(0) ; } } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.