Name: Anonymous 2012-09-26 10:57
http://jsoftware.com/source.htm
#if SY_64typedef long long A1;
typedef unsigned long long BT;
typedef long long I;
typedef long long SB;
typedef unsigned long long UI;
#else
typedef long A1;
typedef unsigned long BT;
typedef long I;
typedef long SB;
typedef unsigned long UI;
#endif
typedef char B;
typedef char C;
typedef char* Ptr;
typedef short S;
typedef short C2;
typedef unsigned char UC;
typedef unsigned short US;
typedef unsigned short U2;
typedef unsigned int UINT;
typedef int I4;
typedef double D;
typedef FILE* F;
typedef long double LD;
typedef struct {I k,flag,m,t,c,n,r,s[1];}* A;
typedef struct {A a,t;}TA;
typedef A (*AF)();
typedef UI (*UF)();
typedef void (*VF)();
typedef int (*CMP)(); /* comparison function in sort */
typedef A X;
typedef struct {X n,d;} Q;
typedef struct {D re,im;} Z;
typedef union {D d;UINT i[2];} DI;
#if (SYS & SYS_PC+SYS_MACINTOSH) /* for use by the session manager */
typedef S SI;
#else
typedef I SI;
#endif
/* Fields of type A */
#define AK(x) ((x)->k) /* offset of ravel wrt x */
#define AFLAG(x) ((x)->flag) /* flag */
#define AM(x) ((x)->m) /* Max # bytes in ravel */
#define AT(x) ((x)->t) /* Type; one of the #define below */
#define AC(x) ((x)->c) /* Reference count. */
#define AN(x) ((x)->n) /* # elements in ravel */
#define AR(x) ((x)->r) /* Rank */
#define AH 7L /* # non-shape header words in A */
#define AS(x) ((x)->s) /* Pointer to shape */
#if SY_64
#define AKX(x) (SZI*(AH+AR(x)))
#define WP(t,n,r) (AH+ r +(1&&t&LAST0)+((t&NAME?sizeof(NM):0)+(n)*bp(t)+SZI-1)/SZI)
#else
#define AKX(x) (SZI*(AH+AR(x)+!(1&AR(x))))
#define WP(t,n,r) (AH+(r+!(1&r))+(1&&t&LAST0)+((t&NAME?sizeof(NM):0)+(n)*bp(t)+SZI-1)/SZI)
#endif
/* make sure array values are double-word aligned */
#define AV(x) ( (I*)((C*)(x)+AK(x))) /* pointer to ravel */
#define BAV(x) ( (C*)(x)+AK(x) ) /* boolean */
#define CAV(x) ( (C*)(x)+AK(x) ) /* character */
#define USAV(x) ((US*)((C*)(x)+AK(x))) /* wchar */
#define UAV(x) ( (UC*)(x)+AK(x) ) /* unsigned character */
#define NAV(x) ((NM*)((C*)(x)+AK(x))) /* name */
#define IAV(x) AV(x) /* integer */
#define DAV(x) ( (D*)((C*)(x)+AK(x))) /* double */
#define ZAV(x) ( (Z*)((C*)(x)+AK(x))) /* complex */
#define XAV(x) ( (X*)((C*)(x)+AK(x))) /* extended */
#define QAV(x) ( (Q*)((C*)(x)+AK(x))) /* rational */
#define AAV(x) ( (A*)((C*)(x)+AK(x))) /* boxed */
#define A1AV(x) ((A1*)((C*)(x)+AK(x))) /* boxed relative address */
#define VAV(x) ( (V*)((C*)(x)+AK(x))) /* verb, adverb, conj */
#define PAV(x) ( (P*)((C*)(x)+AK(x))) /* sparse */
#define SBAV(x) ((SB*)((C*)(x)+AK(x))) /* symbol */