mie: add some convenience functions for func, block, and builder
This commit is contained in:
20
mie/func.c
20
mie/func.c
@@ -80,6 +80,26 @@ struct mie_value *mie_func_generate_value_name(
|
|||||||
return b_unbox(struct mie_value, name, v_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)
|
static struct mie_type *get_type(struct mie_value *v)
|
||||||
{
|
{
|
||||||
struct mie_func *f = MIE_FUNC(v);
|
struct mie_func *f = MIE_FUNC(v);
|
||||||
|
|||||||
@@ -22,4 +22,9 @@ MIE_API struct mie_block *mie_block_create(
|
|||||||
struct mie_func *parent, const char *name);
|
struct mie_func *parent, const char *name);
|
||||||
MIE_API bool mie_block_add_instr(struct mie_block *block, struct mie_instr *instr);
|
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
|
#endif
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ extern struct mie_builder *mie_builder_create(
|
|||||||
struct mie_ctx *ctx, struct mie_module *mod);
|
struct mie_ctx *ctx, struct mie_module *mod);
|
||||||
extern void mie_builder_destroy(struct mie_builder *builder);
|
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(
|
extern void mie_builder_put_record(
|
||||||
struct mie_builder *builder, struct mie_const *val, const char *name);
|
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);
|
extern void mie_builder_put_data(struct mie_builder *builder, struct mie_data *data);
|
||||||
|
|||||||
@@ -40,4 +40,7 @@ extern void mie_func_insert_block(
|
|||||||
extern struct mie_value *mie_func_generate_value_name(
|
extern struct mie_value *mie_func_generate_value_name(
|
||||||
struct mie_func *func, struct mie_value *val, const char *hint);
|
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
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user