defer_if
This commit is contained in:
@@ -60,9 +60,9 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
|
||||
if (win32_target) {
|
||||
os_delete_file(s8_lit("win32_app.pdb"));
|
||||
os_delete_file(s8_lit("app_win32.pdb"));
|
||||
ok = os_systemf(
|
||||
"cl ../src/wasm_app/main.c -Fe:win32_app.exe -Fd:win32_app.pdb"
|
||||
"cl ../src/wasm_app/main.c -Fe:app_win32.exe -Fd:app_win32.pdb"
|
||||
" -I ../src"
|
||||
" /Zi /FC /nologo /Oi"
|
||||
" /WX /W3 /wd4200 /diagnostics:column"
|
||||
|
||||
@@ -64,6 +64,8 @@ typedef double f64;
|
||||
|
||||
#define zero_struct(x) memory_zero((x), sizeof(*(x)))
|
||||
|
||||
|
||||
#define defer_if(begin, cond_end) for (b32 PASTE(_i_, __LINE__) = !!begin; PASTE(_i_, __LINE__); PASTE(_i_, __LINE__) = (cond_end, 0))
|
||||
#define defer_block(begin, end) for (i32 PASTE(_i_, __LINE__) = (begin, 0); !PASTE(_i_, __LINE__); PASTE(_i_, __LINE__) += (end, 1))
|
||||
#define STACK(type, size) struct { type data[size]; i32 len; }
|
||||
#define STACK_PUSH(stack, ...) (assert((stack).len < lengthof((stack).data)), (stack).data[(stack).len++] = __VA_ARGS__)
|
||||
|
||||
@@ -44,36 +44,30 @@ fn b32 app_update(app_frame_t *frame) {
|
||||
ui_begin_frame(frame);
|
||||
defer_block(ui_begin_build(), ui_end_build()) {
|
||||
defer_block(ui_push_list_container(), ui_pop_parent()) {
|
||||
if (ui_push_expander("app_event_t")) {
|
||||
|
||||
defer_if (ui_push_expander("app_event_t"), ui_pop_expander()) {
|
||||
if (r2f32_contains(r2f32(0, 0, 200, 200), frame->mouse_pos)) {
|
||||
if (ui_push_expander("mouse_wheel_delta: v3f64_t")) {
|
||||
defer_if (ui_push_expander("mouse_wheel_delta: v3f64_t"), ui_pop_expander()) {
|
||||
ui_label("x: f64 = value");
|
||||
ui_label("y: f64 = value");
|
||||
ui_label("z: f64 = value");
|
||||
ui_pop_expander();
|
||||
}
|
||||
}
|
||||
ui_label("kind: app_event_kind_t = value");
|
||||
ui_label("ctrl: b8 = value");
|
||||
ui_label("shift: b8 = value");
|
||||
if (ui_push_expander("pos: v2f64_t")) {
|
||||
if (ui_push_expander("inner_pos: v2f64_t")) {
|
||||
defer_if (ui_push_expander("pos: v2f64_t"), ui_pop_expander()) {
|
||||
defer_if (ui_push_expander("inner_pos: v2f64_t"), ui_pop_expander()) {
|
||||
ui_label("x_: f64 = value");
|
||||
ui_label("y_: f64 = value");
|
||||
ui_pop_expander();
|
||||
}
|
||||
ui_label("y__: f64 = value");
|
||||
if (ui_push_expander("_inner_pos: v2f64_t")) {
|
||||
defer_if (ui_push_expander("_inner_pos: v2f64_t"), ui_pop_expander()) {
|
||||
ui_label("x____: f64 = value");
|
||||
ui_label("y____: f64 = value");
|
||||
ui_pop_expander();
|
||||
}
|
||||
ui_pop_expander();
|
||||
}
|
||||
ui_label("alt: b8 = value");
|
||||
ui_label("meta: b8 = value");
|
||||
ui_pop_expander();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,6 +49,18 @@ struct ui_box_t {
|
||||
r2f32_t rect;
|
||||
};
|
||||
|
||||
// @todo:
|
||||
typedef struct ui_signal ui_signal;
|
||||
struct ui_signal {
|
||||
b8 clicked;
|
||||
b8 double_clicked;
|
||||
b8 right_clicked;
|
||||
b8 pressed;
|
||||
b8 released;
|
||||
b8 dragging;
|
||||
b8 hovering;
|
||||
};
|
||||
|
||||
typedef struct ui_t ui_t;
|
||||
struct ui_t {
|
||||
ma_arena_t *box_arena; // required to be only used for boxes
|
||||
@@ -303,8 +315,6 @@ void ui_draw(void) {
|
||||
sb8_printf(sb, "%S\n", it.box->string);
|
||||
}
|
||||
s8_t iter_string = sb8_serial_end(scratch.arena, sb);
|
||||
debugf("%S", recursive_string);
|
||||
debugf("ITER:\n%S", iter_string);
|
||||
|
||||
assert(s8_equal(recursive_string, iter_string));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user