26 ctu_t *
self = ctu_new(scan, where, kind);
28 self->exported = exported;
CT_BROKER_API arena_t * ctx_get_ast_arena(const scan_t *scan)
CT_NODISCARD CT_SCAN_API node_t * node_new(const scan_t *scan, where_t where)
create a new node on the heap
#define ARENA_IDENTIFY(ptr, name, parent, arena)
rename and reparent a pointer in a custom allocator
#define ARENA_MALLOC(size, name, parent, arena)
allocate memory from a custom allocator
binary_t
all binary operators
unary_t
all unary operators
compare_t
all comparison operators
CT_STD_API const vector_t kEmptyVector
a global empty vector used to avoid allocating alot of empty vectors
ctu_t * ctu_stmt_return(scan_t *scan, where_t where, ctu_t *value)
ctu_t * ctu_expr_name(scan_t *scan, where_t where, const vector_t *path)
ctu_t * ctu_expr_init(scan_t *scan, where_t where, const vector_t *inits)
ctu_t * ctu_expr_char(scan_t *scan, where_t where, char *text, size_t length)
ctu_t * ctu_expr_field_indirect(scan_t *scan, where_t where, ctu_t *expr, char *field)
ctu_t * ctu_builtin_alignof(scan_t *scan, where_t where, ctu_t *type)
ctu_t * ctu_stmt_branch(scan_t *scan, where_t where, ctu_t *cond, ctu_t *then, ctu_t *other)
ctu_t * ctu_expr_deref(scan_t *scan, where_t where, ctu_t *expr)
ctu_t * ctu_variant_case(scan_t *scan, where_t where, char *name, bool is_default, ctu_t *expr)
ctu_t * ctu_stmt_break(scan_t *scan, where_t where, char *label)
ctu_t * ctu_expr_cast(scan_t *scan, where_t where, ctu_t *expr, ctu_t *type)
ctu_t * ctu_expr_ref(scan_t *scan, where_t where, ctu_t *expr)
ctu_t * ctu_import(scan_t *scan, where_t where, vector_t *path, char *name)
ctu_t * ctu_expr_binary(scan_t *scan, where_t where, binary_t binary, ctu_t *lhs, ctu_t *rhs)
ctu_t * ctu_decl_struct(scan_t *scan, where_t where, bool exported, char *name, vector_t *fields)
ctu_t * ctu_apply(ctu_t *decl, const vector_t *attribs)
ctu_t * ctu_expr_compare(scan_t *scan, where_t where, compare_t compare, ctu_t *lhs, ctu_t *rhs)
ctu_t * ctu_type_array(scan_t *scan, where_t where, ctu_t *array, ctu_t *length)
ctu_t * ctu_decl_global(scan_t *scan, where_t where, bool exported, bool mut, char *name, ctu_t *type, ctu_t *value)
ctu_t * ctu_expr_index(scan_t *scan, where_t where, ctu_t *expr, ctu_t *index)
ctu_t * ctu_decl_variant(scan_t *scan, where_t where, bool exported, char *name, ctu_t *underlying, const vector_t *cases)
ctu_t * ctu_type_name(scan_t *scan, where_t where, vector_t *path)
ctu_t * ctu_expr_string(scan_t *scan, where_t where, char *text, size_t length)
ctu_t * ctu_field_init(scan_t *scan, where_t where, char *name, ctu_t *value)
ctu_t * ctu_expr_int(scan_t *scan, where_t where, ctu_integer_t value)
ctu_t * ctu_type_const(scan_t *scan, where_t where, ctu_t *type)
ctu_t * ctu_type_pointer(scan_t *scan, where_t where, ctu_t *pointer, bool array)
ctu_t * ctu_module(scan_t *scan, where_t where, const vector_t *modspec, const vector_t *imports, const vector_t *decls)
ctu_t * ctu_param(scan_t *scan, where_t where, char *name, ctu_t *type)
ctu_t * ctu_builtin_sizeof(scan_t *scan, where_t where, ctu_t *type)
ctu_t * ctu_field(scan_t *scan, where_t where, char *name, ctu_t *type)
ctu_t * ctu_stmt_continue(scan_t *scan, where_t where, char *label)
ctu_t * ctu_stmt_assign(scan_t *scan, where_t where, ctu_t *dst, ctu_t *src)
ctu_t * ctu_stmt_local(scan_t *scan, where_t where, bool mutable, char *name, ctu_t *type, ctu_t *value)
ctu_t * ctu_stmt_list(scan_t *scan, where_t where, vector_t *stmts)
ctu_t * ctu_builtin_offsetof(scan_t *scan, where_t where, ctu_t *type, char *field)
ctu_t * ctu_expr_unary(scan_t *scan, where_t where, unary_t unary, ctu_t *expr)
ctu_t * ctu_expr_call(scan_t *scan, where_t where, ctu_t *callee, const vector_t *args)
ctu_t * ctu_expr_bool(scan_t *scan, where_t where, bool value)
ctu_t * ctu_decl_union(scan_t *scan, where_t where, bool exported, char *name, vector_t *fields)
ctu_t * ctu_type_function(scan_t *scan, where_t where, const vector_t *params, ctu_t *return_type)
ctu_t * ctu_decl_function(scan_t *scan, where_t where, bool exported, char *name, const vector_t *params, char *variadic, ctu_t *return_type, ctu_t *body)
ctu_t * ctu_attrib(scan_t *scan, where_t where, const vector_t *path, const vector_t *args)
ctu_params_t ctu_params_new(const vector_t *params, char *variadic)
ctu_t * ctu_decl_typealias(scan_t *scan, where_t where, bool exported, char *name, bool newtype, ctu_t *type)
ctu_t * ctu_expr_field(scan_t *scan, where_t where, ctu_t *expr, char *field)
ctu_t * ctu_stmt_while(scan_t *scan, where_t where, char *name, ctu_t *cond, ctu_t *then, ctu_t *other)
const vector_t * attrib_path
const vector_t * import_path
const vector_t * attrib_args
a generic vector of pointers
a location inside a scanner locations are inclusive and 0-based