12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /* $Header$ */
- /* TYPE DESCRIPTOR */
- #include "nobitfield.h"
- struct type {
- struct type *next; /* used only with ARRAY */
- short tp_fund; /* fundamental type */
- char tp_unsigned;
- int tp_align;
- arith tp_size; /* -1 if declared but not defined */
- struct idf *tp_idf; /* name of STRUCT, UNION or ENUM */
- struct sdef *tp_sdef; /* to first selector */
- struct type *tp_up; /* from FIELD, POINTER, ARRAY
- or FUNCTION to fund. */
- struct field *tp_field; /* field descriptor if fund == FIELD */
- struct type *tp_pointer;/* to POINTER */
- struct type *tp_array; /* to ARRAY */
- struct type *tp_function;/* to FUNCTION */
- };
- extern struct type
- *create_type(), *standard_type(), *construct_type(), *pointer_to(),
- *array_of(), *function_of();
- #ifndef NOBITFIELD
- extern struct type *field_of();
- #endif NOBITFIELD
- extern struct type
- *char_type, *uchar_type,
- *short_type, *ushort_type,
- *word_type, *uword_type,
- *int_type, *uint_type,
- *long_type, *ulong_type,
- *float_type, *double_type,
- *void_type, *label_type,
- *string_type, *funint_type, *error_type;
- extern struct type *pa_type; /* type.c */
- extern arith size_of_type(), align();
- /* allocation definitions of struct type */
- /* ALLOCDEF "type" */
- extern char *st_alloc();
- extern struct type *h_type;
- #define new_type() ((struct type *) \
- st_alloc((char **)&h_type, sizeof(struct type)))
- #define free_type(p) st_free(p, h_type, sizeof(struct type))
|