#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;