|
|
|
|
@@ -7,7 +7,7 @@
|
|
|
|
|
#include <mie/type.h>
|
|
|
|
|
#include <mie/value.h>
|
|
|
|
|
|
|
|
|
|
struct b_dict;
|
|
|
|
|
struct b_hashmap;
|
|
|
|
|
|
|
|
|
|
struct mie_block;
|
|
|
|
|
struct mie_module;
|
|
|
|
|
@@ -19,6 +19,7 @@ struct mie_ctx {
|
|
|
|
|
struct mie_const *ctx_true, *ctx_false;
|
|
|
|
|
struct mie_type *ctx_types[__MIE_TYPE_COUNT];
|
|
|
|
|
b_btree ctx_int_cache;
|
|
|
|
|
struct b_hashmap *ctx_sel_cache;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct mie_builder {
|
|
|
|
|
@@ -28,6 +29,10 @@ struct mie_builder {
|
|
|
|
|
struct mie_instr *b_prev_instr;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum mie_builder_flags {
|
|
|
|
|
MIE_BUILDER_IGNORE_RESULT = 0x01u,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern struct mie_ctx *mie_ctx_create(void);
|
|
|
|
|
extern void mie_ctx_destroy(struct mie_ctx *ctx);
|
|
|
|
|
|
|
|
|
|
@@ -38,6 +43,7 @@ extern struct mie_type *mie_ctx_get_int_type(
|
|
|
|
|
extern struct mie_value *mie_ctx_get_bool(struct mie_ctx *ctx, bool val);
|
|
|
|
|
extern struct mie_value *mie_ctx_get_int(
|
|
|
|
|
struct mie_ctx *ctx, long long val, unsigned int nr_bits);
|
|
|
|
|
extern struct mie_value *mie_ctx_get_selector(struct mie_ctx *ctx, const char *sel);
|
|
|
|
|
|
|
|
|
|
extern struct mie_builder *mie_builder_create(
|
|
|
|
|
struct mie_ctx *ctx, struct mie_module *mod);
|
|
|
|
|
@@ -57,6 +63,9 @@ extern void mie_builder_put_type(struct mie_builder *builder, struct mie_type *t
|
|
|
|
|
extern void mie_builder_set_insert_point(
|
|
|
|
|
struct mie_builder *builder, struct mie_block *block);
|
|
|
|
|
|
|
|
|
|
extern struct mie_value *mie_builder_get_data_ptr(
|
|
|
|
|
struct mie_builder *builder, const char *data_ident);
|
|
|
|
|
|
|
|
|
|
extern struct mie_value *mie_builder_ret(
|
|
|
|
|
struct mie_builder *builder, struct mie_value *val);
|
|
|
|
|
extern struct mie_value *mie_builder_add(
|
|
|
|
|
@@ -88,8 +97,10 @@ extern struct mie_value *mie_builder_br_if(
|
|
|
|
|
struct mie_builder *builder, struct mie_value *cond,
|
|
|
|
|
struct mie_block *if_true, struct mie_block *if_false);
|
|
|
|
|
extern struct mie_value *mie_builder_msg(
|
|
|
|
|
struct mie_builder *builder, struct mie_value *ret_type,
|
|
|
|
|
struct mie_value *dest, struct mie_value *src, const char *name);
|
|
|
|
|
struct mie_builder *builder, struct mie_type *ret_type,
|
|
|
|
|
struct mie_value *recipient, struct mie_value *selector,
|
|
|
|
|
struct mie_value **args, size_t nr_args, enum mie_builder_flags flags,
|
|
|
|
|
const char *name);
|
|
|
|
|
extern struct mie_value *mie_builder_cmp_eq(
|
|
|
|
|
struct mie_builder *builder, struct mie_value *left,
|
|
|
|
|
struct mie_value *right, const char *name);
|
|
|
|
|
|