Commit | Line | Data |
---|---|---|
5c0bb1e5 TL |
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)|(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 |