mie: ctx is now used to query the type of a value

this allows value get_type callbacks to use mie_ctx to obtain mie_type pointers,
rather than having to define their own static versions of the type structs.
This commit is contained in:
2025-04-28 15:38:25 +01:00
parent cbec21b90f
commit 1431cb7b47
14 changed files with 34 additions and 64 deletions

View File

@@ -8,6 +8,7 @@
#include <stdio.h>
struct mie_value;
struct mie_ctx;
enum mie_ir_format {
MIE_IR_NONE = 0,
@@ -27,6 +28,7 @@ enum mie_ir_converter_medium {
};
struct mie_ir_converter {
struct mie_ctx *c_ctx;
enum mie_ir_format c_src_format, c_dest_format;
enum mie_ir_converter_medium c_src_medium, c_dest_medium;
@@ -50,7 +52,7 @@ struct mie_ir_converter {
};
MIE_API struct mie_ir_converter *mie_ir_converter_create(
enum mie_ir_format src, enum mie_ir_format dest);
struct mie_ctx *ctx, enum mie_ir_format src, enum mie_ir_format dest);
MIE_API void mie_ir_converter_destroy(struct mie_ir_converter *converter);
MIE_API b_status mie_ir_converter_set_src_value(

View File

@@ -7,6 +7,7 @@
#define MIE_VALUE(p) ((struct mie_value *)(p))
struct mie_ctx;
struct mie_value;
enum mie_value_type_id {
@@ -29,7 +30,7 @@ enum mie_value_flags {
struct mie_value_type {
enum mie_value_type_id t_id;
struct mie_type *(*t_get_type)(struct mie_value *);
struct mie_type *(*t_get_type)(struct mie_value *, struct mie_ctx *);
void (*t_cleanup)(struct mie_value *);
};
@@ -43,7 +44,8 @@ struct mie_value {
MIE_API void mie_value_init(struct mie_value *val, enum mie_value_type_id type);
MIE_API void mie_value_destroy(struct mie_value *val);
MIE_API struct mie_type *mie_value_get_type(struct mie_value *val);
MIE_API struct mie_type *mie_value_get_type(
struct mie_value *val, struct mie_ctx *ctx);
static inline bool mie_value_is(
const struct mie_value *val, enum mie_value_type_id type_id)