ref: bc40f94fdda9ad39a8cc71a9b5a4c80eebe210a8
dir: /types.h/
#ifndef TYPES_H_
#define TYPES_H_
#ifndef __bool_true_false_are_defined
# include <stdbool.h>
#endif
struct ctype;
struct type {
unsigned op : 5;
struct type *base;
struct type *ary; /* array */
struct type *ptr; /* pointer */
struct type *ftn; /* function */
struct type *cnst; /* const */
struct type *vltl; /* volatile */
struct type *rstr; /* restricted */
union {
struct {
unsigned btype : 4;
};
size_t nelem; /* size of array */
};
};
extern struct type tchar, tshort, tint, tulong, tllong, tvoid, tkeyword;
extern struct type tfloat, tdouble, tldouble, tlong;
#define T_CHAR (&tschar)
#define T_SHORT (&tshort)
#define T_INT (&tint)
#define T_FLOAT (&tfloat)
#define T_DOUBLE (&tdouble)
#define T_LDOUBLE (&tdouble)
#define T_LONG (&tlong)
#define T_LLONG (&tllong)
#define T_VOID (&tvoid)
#define T_BOOL (&tbool)
#define ARY 1
#define PTR 2
#define FTN 3
struct type *mktype(register struct type *base, unsigned char op);
extern struct type *decl_type(struct type *t);
void pushtype(unsigned char mod);
#ifndef NDEBUG
extern void ptype(register struct type *t);
#else
# define ptype(t)
#endif
extern struct type *btype(struct type *tp, unsigned char tok);
#endif