|
|
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.