#ifndef INTERNALS_GEN_H #define INTERNALS_GEN_H #include #include #include #include #include #include #include #include #include #include #include typedef struct { bool error; fzl_type_t type; char *classname; } gen_res_t; extern gen_res_t gen_error; extern gen_res_t gen_ok_null; extern char *null_name; extern fzl_extern_type_t type_buf; bool gen_resolve_name(fzl_gen_t *gen, char *name, fzl_sym_t *sym); bool gen_resolve_type(fzl_gen_t *gen, fzl_token_t *tok, fzl_type_t *t, char *c); ssize_t gen_resolve_extern_type(fzl_gen_t *gen, char *name); bool gen_is_types_compatible(fzl_type_t t1, fzl_type_t t2, char *c1, char *c2); size_t gen_add_const(fzl_gen_t *gen, fzl_const_t c); void gen_op(fzl_gen_t *gen, fzl_opcode_t opcode); void gen_word(fzl_gen_t *gen, size_t word); fzl_gen_ctx_t *gen_ctx(fzl_gen_t *gen, fzl_gen_ctx_type_t type, fzl_node_t *node); fzl_gen_ctx_t *gen_fin_ctx(fzl_gen_t *gen); gen_res_t gen_common(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_extern(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_externfn(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_reference(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_struct(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_alias(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_handle(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_typedef(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_fmtstr(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_break(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_loop(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_class(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_construct(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_field(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_fn(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_return(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_unary_logical(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_compare(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_logical(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_condition(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_unary_math(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_declaration(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_identifier(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_block(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_call(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_literal(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_math(fzl_gen_t *gen, fzl_node_t *node); gen_res_t gen_assign(fzl_gen_t *gen, fzl_node_t *node); #endif // FZL_INTERNALS_GEN_H