From e5ecdd40e837d97a7cab94daa95c69f9ac1639b8 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sat, 17 Jan 2026 10:29:47 +0000 Subject: [PATCH] mie: cf: implement op printer callbacks --- mie/dialect/cf/op/br-cond.c | 21 +++++++++++++++++++++ mie/dialect/cf/op/br.c | 8 ++++++++ 2 files changed, 29 insertions(+) diff --git a/mie/dialect/cf/op/br-cond.c b/mie/dialect/cf/op/br-cond.c index 5188ca2..aa73417 100644 --- a/mie/dialect/cf/op/br-cond.c +++ b/mie/dialect/cf/op/br-cond.c @@ -1,9 +1,30 @@ #include #include +#include #include +#include static enum mie_status print(struct mie_printer *printer, const struct mie_op *op) { + if (MIE_VECTOR_COUNT(op->op_args) != 1) { + return MIE_SUCCESS; + } + + if (MIE_VECTOR_COUNT(op->op_successors) != 2) { + return MIE_SUCCESS; + } + + const struct mie_op_arg *cond = &op->op_args.items[0]; + const struct mie_op_successor *if_true = &op->op_successors.items[0]; + const struct mie_op_successor *if_false = &op->op_successors.items[1]; + + b_stream_write_char(printer->p_stream, ' '); + mie_printer_print_op_arg(printer, cond, false); + b_stream_write_string(printer->p_stream, ", ", NULL); + mie_printer_print_op_successor(printer, if_true, true); + b_stream_write_string(printer->p_stream, ", ", NULL); + mie_printer_print_op_successor(printer, if_false, true); + return MIE_SUCCESS; } diff --git a/mie/dialect/cf/op/br.c b/mie/dialect/cf/op/br.c index 4478be7..4912d22 100644 --- a/mie/dialect/cf/op/br.c +++ b/mie/dialect/cf/op/br.c @@ -1,9 +1,17 @@ #include +#include #include +#include #include +#include static enum mie_status print(struct mie_printer *printer, const struct mie_op *op) { + b_stream_write_char(printer->p_stream, ' '); + const struct mie_op_successor *successor = &op->op_successors.items[0]; + + mie_printer_print_op_successor(printer, successor, true); + return MIE_SUCCESS; }