|
|
1.1 root 1: /* type modifiers */
2:
3: # define PTR 020
4: # define FTN 040
5: # define ARY 060
6:
7: /* type packing constants */
8:
9: # define TMASK 060
10: # define TMASK1 0300
11: # define TMASK2 0360
12: # define BTMASK 017
13: # define BTSHIFT 4
14: # define TSHIFT 2
15:
16: /* macros */
17:
18: # define BTYPE(x) (x&BTMASK) /* basic type of x */
19: # define ISUNSIGNED(x) ((x)<=ULONG&&(x)>=UCHAR)
20: # define UNSIGNABLE(x) ((x)<=LONG&&(x)>=CHAR)
21: # define ENUNSIGN(x) ((x)+(UNSIGNED-INT))
22: # define DEUNSIGN(x) ((x)+(INT-UNSIGNED))
23: # define ISPTR(x) ((x&TMASK)==PTR)
24: # define ISFTN(x) ((x&TMASK)==FTN) /* is x a function type */
25: # define ISARY(x) ((x&TMASK)==ARY) /* is x an array type */
26: # define INCREF(x) (((x&~BTMASK)<<TSHIFT)|PTR|(x&BTMASK))
27: # define DECREF(x) (((x>>TSHIFT)&~BTMASK&0x3fff)|(x&BTMASK))
28: /* pack and unpack field descriptors (size and offset) */
29: # define PKFIELD(s,o) ((o<<6)|s)
30: # define UPKFSZ(v) (v&077)
31: # define UPKFOFF(v) (v>>6)
32:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.