Bell 32V release
[unix-history] / usr / src / cmd / sdb / cdefs.h
CommitLineData
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