using cache in build_file, ui metaprogram and generating stacks

This commit is contained in:
Krzosa Karol
2025-01-19 21:35:01 +01:00
parent b90656508b
commit 887eb72fa0
14 changed files with 308 additions and 91 deletions

31
src/ui/ui.gen.c Normal file
View File

@@ -0,0 +1,31 @@
fn void ui_push_id(ui_id_t v) { ui_id_node_t *n = ma_push_type(tcx.temp, ui_id_node_t); n->value = v; SLLS_PUSH(ui->id_stack, n); }
fn void ui_pop_id(void) { SLLS_POP(ui->id_stack); }
#define ui_set_id(x) defer_block(ui_push_id(x), ui_pop_id())
fn void ui_push_lop(ui_lop_t v) { ui_lop_node_t *n = ma_push_type(tcx.temp, ui_lop_node_t); n->value = v; SLLS_PUSH(ui->lop_stack, n); }
fn void ui_pop_lop(void) { SLLS_POP(ui->lop_stack); }
#define ui_set_lop(x) defer_block(ui_push_lop(x), ui_pop_lop())
fn void ui_push_border_thickness(f32 v) { ui_f32_node_t *n = ma_push_type(tcx.temp, ui_f32_node_t); n->value = v; SLLS_PUSH(ui->border_thickness_stack, n); }
fn void ui_pop_border_thickness(void) { SLLS_POP(ui->border_thickness_stack); }
#define ui_set_border_thickness(x) defer_block(ui_push_border_thickness(x), ui_pop_border_thickness())
fn void ui_push_text_align(ui_text_align_t v) { ui_text_align_node_t *n = ma_push_type(tcx.temp, ui_text_align_node_t); n->value = v; SLLS_PUSH(ui->text_align_stack, n); }
fn void ui_pop_text_align(void) { SLLS_POP(ui->text_align_stack); }
#define ui_set_text_align(x) defer_block(ui_push_text_align(x), ui_pop_text_align())
fn void ui_push_required_width(f32 v) { ui_f32_node_t *n = ma_push_type(tcx.temp, ui_f32_node_t); n->value = v; SLLS_PUSH(ui->required_width_stack, n); }
fn void ui_pop_required_width(void) { SLLS_POP(ui->required_width_stack); }
#define ui_set_required_width(x) defer_block(ui_push_required_width(x), ui_pop_required_width())
fn void ui_push_required_height(f32 v) { ui_f32_node_t *n = ma_push_type(tcx.temp, ui_f32_node_t); n->value = v; SLLS_PUSH(ui->required_height_stack, n); }
fn void ui_pop_required_height(void) { SLLS_POP(ui->required_height_stack); }
#define ui_set_required_height(x) defer_block(ui_push_required_height(x), ui_pop_required_height())
fn void ui_push_padding(v2f32_t v) { ui_v2f32_node_t *n = ma_push_type(tcx.temp, ui_v2f32_node_t); n->value = v; SLLS_PUSH(ui->padding_stack, n); }
fn void ui_pop_padding(void) { SLLS_POP(ui->padding_stack); }
#define ui_set_padding(x) defer_block(ui_push_padding(x), ui_pop_padding())
fn void ui_assert_stacks_are_null(void) {
assert(ui->id_stack == NULL);
assert(ui->lop_stack == NULL);
assert(ui->border_thickness_stack == NULL);
assert(ui->text_align_stack == NULL);
assert(ui->required_width_stack == NULL);
assert(ui->required_height_stack == NULL);
assert(ui->padding_stack == NULL);
}