| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #ifndef _PLY_TYPE_H
- #define _PLY_TYPE_H
- typedef unsigned int tid_t;
- typedef struct alias {
- tid_t type;
- char *name;
- } alias_t;
- typedef struct scalar {
- char *name;
- } scalar_t;
- typedef struct pointer {
- tid_t type;
- } pointer_t;
- typedef struct array {
- tid_t type;
- size_t len;
- } array_t;
- typedef struct map {
- tid_t type;
- tid_t ktype;
- size_t len;
- } map_t;
- typedef struct field {
- struct field *next;
- tid_t type;
- size_t offset;
- char *name;
- } field_t;
- typedef struct sou {
- field_t *fields;
- } sou_t;
- typedef enum ttype {
- T_INVALID,
- T_NONE,
- T_ALIAS,
- T_SCALAR,
- T_POINTER,
- T_ARRAY,
- T_MAP,
- T_SOU,
- } ttype_t;
- typedef struct type {
- tid_t tid;
- size_t size;
- ttype_t type;
- union {
- alias_t alias;
- scalar_t scalar;
- pointer_t pointer;
- array_t array;
- map_t map;
- sou_t sou;
- } t;
- } type_t;
- typedef struct types {
- type_t *types;
- tid_t next;
- } types_t;
- #define BUILTIN_TYPES \
- SCALAR(1, tid_v, void) \
- POINTER(2, tid_vp, 1) \
- \
- SCALAR(3, tid_c, char) \
- POINTER(4, tid_cp, 3) \
- SCALAR(5, tid_uc, unsigned char) \
- POINTER(6, tid_ucp, 5) \
- \
- SCALAR(7, tid_s, short) \
- POINTER(8, tid_sp, 7) \
- SCALAR(9, tid_us, unsigned short) \
- POINTER(10, tid_usp, 9) \
- \
- SCALAR(11, tid_i, int) \
- POINTER(12, tid_ip, 11) \
- SCALAR(13, tid_ui, unsigned int) \
- POINTER(14, tid_uip, 13) \
- \
- SCALAR(15, tid_l, long) \
- POINTER(16, tid_lp, 15) \
- SCALAR(17, tid_ul, unsigned long) \
- POINTER(18, tid_ulp, 17) \
- \
- SCALAR(19, tid_ll, long long) \
- POINTER(20, tid_llp, 19) \
- SCALAR(21, tid_ull, unsigned long long) \
- POINTER(22, tid_ullp, 21)
- typedef enum builtin_type {
- tid_none = 0,
- #define SCALAR(_tid, _name, _) _name = _tid,
- #define POINTER(_tid, _name, _) _name = _tid,
- BUILTIN_TYPES
- #undef SCALAR
- #undef POINTER
- } builtin_type_t;
- #endif /* _PLY_TYPE_H */
|