40 lines
663 B
C
40 lines
663 B
C
#pragma once
|
|
#include "hashtab.h"
|
|
|
|
enum {
|
|
AST_DATTR_COMPTIME=0x1,
|
|
AST_DATTR_CONST=0x2,
|
|
AST_DATTR_VOLATILE=0x4,
|
|
AST_DATTR_ATOMIC=0x8,
|
|
AST_DATTR_STATIC=0x10,
|
|
AST_DATTR_THREAD_LOCAL=0x20,
|
|
AST_DATTR_COMPLEX=0x40,
|
|
};
|
|
|
|
typedef struct {
|
|
|
|
uint32_t attrs;
|
|
|
|
enum {
|
|
AST_DTYPE_VOID,
|
|
AST_DTYPE_SIGNED,
|
|
AST_DTYPE_UNSIGNED,
|
|
AST_DTYPE_FLOAT,
|
|
AST_DTYPE_STRUCT,
|
|
AST_DTYPE_UNION,
|
|
AST_DTYPE_FUNC,
|
|
AST_DTYPE_STR,
|
|
} fmt;
|
|
|
|
size_t nptrs;
|
|
size_t nbytes;
|
|
|
|
} ast_dtype_t;
|
|
|
|
typedef struct ast_s {
|
|
|
|
size_t ndtypes;
|
|
ast_dtype_t * dtypes;
|
|
hashtab_t dtypes_ht;
|
|
|
|
} ast_t;
|