mie: add some convenience functions for func, block, and builder

This commit is contained in:
2025-04-14 20:14:44 +01:00
parent d4e0df0bda
commit 5630132a69
4 changed files with 30 additions and 0 deletions

View File

@@ -80,6 +80,26 @@ struct mie_value *mie_func_generate_value_name(
return b_unbox(struct mie_value, name, v_name);
}
struct mie_block *mie_func_get_first_block(struct mie_func *func)
{
b_queue_entry *entry = b_queue_first(&func->f_blocks);
if (!entry) {
return NULL;
}
return (struct mie_block *)b_unbox(struct mie_value, entry, v_entry);
}
struct mie_block *mie_func_get_last_block(struct mie_func *func)
{
b_queue_entry *entry = b_queue_last(&func->f_blocks);
if (!entry) {
return NULL;
}
return (struct mie_block *)b_unbox(struct mie_value, entry, v_entry);
}
static struct mie_type *get_type(struct mie_value *v)
{
struct mie_func *f = MIE_FUNC(v);

View File

@@ -22,4 +22,9 @@ MIE_API struct mie_block *mie_block_create(
struct mie_func *parent, const char *name);
MIE_API bool mie_block_add_instr(struct mie_block *block, struct mie_instr *instr);
static inline bool mie_block_is_terminated(const struct mie_block *block)
{
return block->b_terminator != NULL;
}
#endif

View File

@@ -43,6 +43,8 @@ extern struct mie_builder *mie_builder_create(
struct mie_ctx *ctx, struct mie_module *mod);
extern void mie_builder_destroy(struct mie_builder *builder);
extern struct mie_func *mie_builder_get_current_func(struct mie_builder *builder);
extern void mie_builder_put_record(
struct mie_builder *builder, struct mie_const *val, const char *name);
extern void mie_builder_put_data(struct mie_builder *builder, struct mie_data *data);

View File

@@ -40,4 +40,7 @@ extern void mie_func_insert_block(
extern struct mie_value *mie_func_generate_value_name(
struct mie_func *func, struct mie_value *val, const char *hint);
extern struct mie_block *mie_func_get_first_block(struct mie_func *func);
extern struct mie_block *mie_func_get_last_block(struct mie_func *func);
#endif