diff --git a/src/app/app.meta.c b/src/app/app.meta.c index 0bcca68..8859e2d 100644 --- a/src/app/app.meta.c +++ b/src/app/app.meta.c @@ -80,10 +80,10 @@ void meta_app(ma_arena_t *arena) { // Javascript { - int name_idx = row_findi(keys->first, "name"); - int js1_idx = row_findi(keys->first, "js1"); - int js2_idx = row_findi(keys->first, "js2"); - int filter_out_idx = row_findi(keys->first, "jf"); + i32 name_idx = row_findi(keys->first, "name"); + i32 js1_idx = row_findi(keys->first, "js1"); + i32 js2_idx = row_findi(keys->first, "js2"); + i32 filter_out_idx = row_findi(keys->first, "jf"); sb8_stmtf(c, "\n#if PLATFORM_WASM"); @@ -99,7 +99,7 @@ void meta_app(ma_arena_t *arena) { s8_t js[] = {row_geti(row, js1_idx)->string, row_geti(row, js2_idx)->string}; for (i32 i = 0; i < lengthof(js); i += 1) { if (s8_equal(js[i], s8_lit("XXX"))) continue; - sb8_stmtf(c, "else if (s8_equal_ex(key, s8_lit(\"%S\"), s8_ignore_case)) return (wasm_key_map_t){app_key_%S, %d};", js[i], name, (int)filter_out); + sb8_stmtf(c, "else if (s8_equal_ex(key, s8_lit(\"%S\"), s8_ignore_case)) return (wasm_key_map_t){app_key_%S, %d};", js[i], name, (i32)filter_out); } } sb8_stmtf(c, "return (wasm_key_map_t){0};"); @@ -110,9 +110,9 @@ void meta_app(ma_arena_t *arena) { // Windows { - int name_idx = row_findi(keys->first, "name"); - int w1i = row_findi(keys->first, "windows1"); - int w2i = row_findi(keys->first, "windows2"); + i32 name_idx = row_findi(keys->first, "name"); + i32 w1i = row_findi(keys->first, "windows1"); + i32 w2i = row_findi(keys->first, "windows2"); sb8_stmtf(c, "\n#if PLATFORM_WINDOWS"); sb8_stmtf(c, "void w32_key_dispatch(WPARAM wparam, void (*handle_key)(app_key_t)) {"); diff --git a/src/app/app_wasm.c b/src/app/app_wasm.c index ac31f5a..17e7e34 100644 --- a/src/app/app_wasm.c +++ b/src/app/app_wasm.c @@ -8,8 +8,7 @@ f64 wasm_measure_text(isize str, i32 len, isize font_str, i32 font_len, i32 fon f64 wasm_get_font_height(isize font_str, i32 font_len, i32 font_size); void wasm_set_clip(f64 x, f64 y, f64 w, f64 h); -void on_update(); -void app_update(app_event_t *events); +void app_update(ma_arena_t *perm_arena, app_event_t *events, i32 event_count); extern char __heap_base; ma_arena_t wasm_perm_arena; @@ -30,7 +29,7 @@ b32 wasm_event_failed_to_queue; f64 wasm_last_time = 0; void write_to_console(char *string) { - int len = str_len(string); + i32 len = str_len(string); wasm_write_to_console((isize)string, len); } @@ -47,7 +46,7 @@ f64 get_font_height(void) { return wasm_get_font_height((isize) font_face, font_face_len, 20*wasm_dpr) / wasm_dpr; } -f64 measure_text_ex(char *str, int len) { +f64 measure_text_ex(char *str, i32 len) { return wasm_measure_text((isize)str, len, (isize) font_face, font_face_len, 20*wasm_dpr) / wasm_dpr; } @@ -55,15 +54,15 @@ f64 measure_text(char *str) { return measure_text_ex(str, str_len(str)); } -void draw_text(v2f64_t pos, v4f32_t color, char *str, int len) { - wasm_draw_text((isize)str, len, wasm_dpr * pos.x, wasm_dpr * pos.y, (isize) font_face, font_face_len, 20*wasm_dpr, color.r * 255.f, color.g * 255.f, color.b * 255.f, color.a); +void draw_text(v2f64_t pos, v4f32_t color, s8_t string) { + wasm_draw_text((isize)string.str, string.len, wasm_dpr * pos.x, wasm_dpr * pos.y, (isize) font_face, font_face_len, 20*wasm_dpr, color.r * 255.f, color.g * 255.f, color.b * 255.f, color.a); } void draw_textf(v2f64_t pos, char *str, ...) { char buff[1024]; va_list args; va_start(args, str); - int len = stbsp_vsnprintf(buff, sizeof(buff), str, args); + i32 len = stbsp_vsnprintf(buff, sizeof(buff), str, args); va_end(args); wasm_draw_text((isize)buff, len, wasm_dpr * pos.x, wasm_dpr * pos.y, (isize) font_face, font_face_len, 20*wasm_dpr, 0, 0, 0, 1); @@ -173,7 +172,7 @@ WASM_EXPORT void wasm_key_up(char *key, b32 ctrl, b32 shift, b32 alt, b32 meta) wasm_key_map_t map = wasm_map_key_string_to_app_key(key8); if (map.key != app_key_invalid) { wasm_add_event((app_event_t){ - .kind = app_event_kind_key_down, + .kind = app_event_kind_key_up, .key = map.key, .ctrl = ctrl, .shift = shift, @@ -193,7 +192,7 @@ WASM_EXPORT void wasm_update(f64 time, f64 width, f64 height, f64 dpr) { } wasm_dpr = dpr; - on_update(); + app_update(&wasm_perm_arena, wasm_events.data, wasm_events.len); wasm_events.len = 0; wasm_last_time = time; diff --git a/src/app/app_win32.c b/src/app/app_win32.c index c1ba73c..0bdc438 100644 --- a/src/app/app_win32.c +++ b/src/app/app_win32.c @@ -117,8 +117,8 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int n continue; } - for (int y = 0; y < 720; y++) { - for (int x = 0; x < 1280; x++) { + for (i32 y = 0; y < 720; y++) { + for (i32 x = 0; x < 1280; x++) { mem[x + y * 1280] = 0xFFFF0000; } } diff --git a/src/core/intrinsics.c b/src/core/intrinsics.c index b40fae6..f562272 100644 --- a/src/core/intrinsics.c +++ b/src/core/intrinsics.c @@ -1,4 +1,4 @@ -void memory_copy(void *dst, void *src, size_t n) { +void memory_copy(void *dst, void *src, usize n) { #if PLATFORM_CLANG __builtin_memcpy(dst, src, n); #else @@ -6,7 +6,7 @@ void memory_copy(void *dst, void *src, size_t n) { #endif } -void memory_move(void *dest, const void *src, size_t n) { +void memory_move(void *dest, const void *src, usize n) { #if PLATFORM_CLANG __builtin_memmove(dest, src, n); #else @@ -14,7 +14,7 @@ void memory_move(void *dest, const void *src, size_t n) { #endif } -void memory_set(void *dst, int c, size_t size) { +void memory_set(void *dst, i32 c, usize size) { #if PLATFORM_CLANG __builtin_memset(dst, c, size); #else @@ -53,11 +53,11 @@ f32 f32_mod(f32 a, f32 b) { return fmodf(a, b); } #endif #if PLATFORM_WINDOWS -void *vmem_reserve(size_t size) { +void *vmem_reserve(usize size) { void *result = (uint8_t *)VirtualAlloc(0, size, MEM_RESERVE, PAGE_READWRITE); return result; } -b32 vmem_commit(void *p, size_t size) { +b32 vmem_commit(void *p, usize size) { void *result = VirtualAlloc(p, size, MEM_COMMIT, PAGE_READWRITE); return result ? true : false; } @@ -65,15 +65,15 @@ b32 vmem_release(void *p) { BOOL result = VirtualFree(p, 0, MEM_RELEASE); return result ? true : false; } -b32 vmem_decommit(void *p, size_t size) { +b32 vmem_decommit(void *p, usize size) { BOOL result = VirtualFree(p, size, MEM_DECOMMIT); return result ? true : false; } #else -void *vmem_reserve(size_t size) { return NULL; } -b32 vmem_commit(void *p, size_t size) { return false; } +void *vmem_reserve(usize size) { return NULL; } +b32 vmem_commit(void *p, usize size) { return false; } b32 vmem_release(void *p) { return true; } -b32 vmem_decommit(void *p, size_t size) { return true; } +b32 vmem_decommit(void *p, usize size) { return true; } #endif #if PLATFORM_WASM diff --git a/src/core/lexer.c b/src/core/lexer.c index c4a0de5..8f85ba6 100644 --- a/src/core/lexer.c +++ b/src/core/lexer.c @@ -2,7 +2,7 @@ typedef enum lex_kind_t lex_kind_t; enum lex_kind_t { #define LEX_KIND_XLIST\ X(eof, "end of file", "---")\ - X(int, "integer", "---")\ + X(integer, "integer", "---")\ X(real, "real", "---")\ X(ident, "identifier", "---")\ X(string, "string", "---")\ @@ -84,8 +84,8 @@ struct lex_t { s8_t s8; }; - int line; - int column; + i32 line; + i32 column; char *file_name; union { @@ -99,14 +99,14 @@ typedef struct lexer_t lexer_t; struct lexer_t { char *at; char *file_name; - int line; - int column; + i32 line; + i32 column; }; typedef struct lex_array_t lex_array_t; struct lex_array_t { lex_t *data; - int len; + i32 len; }; void lex_panicf(lex_t *token, const char *str, ...) { @@ -184,7 +184,7 @@ u64 lex_deserial_u64(char *string, i64 len, u64 base) { } void lex_eat_number(lexer_t *lex, lex_t *token) { - token->kind = lex_kind_int; + token->kind = lex_kind_integer; for (;;) { if (char_is_digit(lex->at[0])) { lex_advance(lex); @@ -208,16 +208,16 @@ void lex_eat_number(lexer_t *lex, lex_t *token) { } else if (lex_match(lex, 'd')) { token->kind = lex_kind_real; token->suffix = lex_suffix_d; - } else if (token->kind == lex_kind_int && ((lex->at[0] == 'u' && lex->at[1] == 'l' && lex->at[2] == 'l') || (lex->at[0] == 'U' && lex->at[1] == 'L' && lex->at[2] == 'L'))) { + } else if (token->kind == lex_kind_integer && ((lex->at[0] == 'u' && lex->at[1] == 'l' && lex->at[2] == 'l') || (lex->at[0] == 'U' && lex->at[1] == 'L' && lex->at[2] == 'L'))) { token->suffix = lex_suffix_ull; lex_advance(lex); lex_advance(lex); lex_advance(lex); - } else if (token->kind == lex_kind_int && ((lex->at[0] == 'u' && lex->at[1] == 'l') || (lex->at[0] == 'U' && lex->at[1] == 'L'))) { + } else if (token->kind == lex_kind_integer && ((lex->at[0] == 'u' && lex->at[1] == 'l') || (lex->at[0] == 'U' && lex->at[1] == 'L'))) { token->suffix = lex_suffix_ul; lex_advance(lex); lex_advance(lex); - } else if (token->kind == lex_kind_int && (lex->at[0] == 'l' || lex->at[0] == 'L')) { + } else if (token->kind == lex_kind_integer && (lex->at[0] == 'l' || lex->at[0] == 'L')) { token->suffix = lex_suffix_l; lex_advance(lex); - } else if (token->kind == lex_kind_int && ((lex->at[0] == 'l' && lex->at[1] == 'l') || (lex->at[0] == 'L' && lex->at[1] == 'L'))) { + } else if (token->kind == lex_kind_integer && ((lex->at[0] == 'l' && lex->at[1] == 'l') || (lex->at[0] == 'L' && lex->at[1] == 'L'))) { token->suffix = lex_suffix_ll; lex_advance(lex); lex_advance(lex); } @@ -366,9 +366,9 @@ void lex_token_ex(lexer_t *lex, lex_t *token) { } } - token->len = (int)(lex->at - token->str); + token->len = (i32)(lex->at - token->str); - if (token->kind == lex_kind_int) { + if (token->kind == lex_kind_integer) { token->integer = lex_deserial_u64(token->str, token->len, 10); } else if (token->kind == lex_kind_real) { token->real = s8_deserial_f64(token->s8); diff --git a/src/core/string.c b/src/core/string.c index 53b1fb9..f58969b 100644 --- a/src/core/string.c +++ b/src/core/string.c @@ -1,11 +1,11 @@ #define STR_FMT(buff, str) \ va_list args1; \ va_start(args1, str); \ - int len = stbsp_vsnprintf(buff, sizeof(buff), str, args1); \ + i32 len = stbsp_vsnprintf(buff, sizeof(buff), str, args1); \ va_end(args1) -int str_len(char *str) { - int i = 0; +i32 str_len(char *str) { + i32 i = 0; while (str[i]) i += 1; return i; } diff --git a/src/core/string8.c b/src/core/string8.c index 11ef337..b4e4ce4 100644 --- a/src/core/string8.c +++ b/src/core/string8.c @@ -160,7 +160,7 @@ s8_t s8_trim_end(s8_t string) { return result; } -typedef int s8_seek_t; +typedef i32 s8_seek_t; enum { s8_seek_none = 0, s8_seek_ignore_case = 1, @@ -296,7 +296,7 @@ s8_t s8_vfmt(ma_arena_t *ma, const char *str, va_list args1) { va_end(args2); char *result = (char *)ma_push_size(ma, sizeof(char) * (len + 1)); - s8_vsnprintf(result, (int)(len + 1), str, args1); + s8_vsnprintf(result, (i32)(len + 1), str, args1); s8_t res = s8(result, len); return res; } @@ -358,7 +358,7 @@ s8_t sb8_merge(sb8_t *sb) { return result; } -typedef int s8_split_t; +typedef i32 s8_split_t; enum { s8_split_none = 0, s8_split_ignore_case = 1, diff --git a/src/core/type_info.c b/src/core/type_info.c index 7c4c56a..812ea09 100644 --- a/src/core/type_info.c +++ b/src/core/type_info.c @@ -206,7 +206,7 @@ i64 parser__match_i64(parser_t *par) { if (parser_match(par, lex_kind_minus)) { minus = -1; } - lex_t *token = parser_expect(par, lex_kind_int); + lex_t *token = parser_expect(par, lex_kind_integer); i64 result = (i64)token->integer * minus; return result; } @@ -254,25 +254,25 @@ void s8_deserial_data_ex(ma_arena_t *arena, parser_t *par, void *p, type_t *type return; } break; case type_kind_u8: { - lex_t *token = parser_expect(par, lex_kind_int); + lex_t *token = parser_expect(par, lex_kind_integer); u8 *n = (u8 *)p; n[0] = (u8)token->integer; return; } break; case type_kind_u16: { - lex_t *token = parser_expect(par, lex_kind_int); + lex_t *token = parser_expect(par, lex_kind_integer); u16 *n = (u16 *)p; n[0] = (u16)token->integer; return; } break; case type_kind_u32: { - lex_t *token = parser_expect(par, lex_kind_int); + lex_t *token = parser_expect(par, lex_kind_integer); u32 *n = (u32 *)p; n[0] = (u32)token->integer; return; } break; case type_kind_u64: { - lex_t *token = parser_expect(par, lex_kind_int); + lex_t *token = parser_expect(par, lex_kind_integer); u64 *n = (u64 *)p; n[0] = (u64)token->integer; return; @@ -295,7 +295,7 @@ void s8_deserial_data_ex(ma_arena_t *arena, parser_t *par, void *p, type_t *type return; } break; case type_kind_usize: { - lex_t *token = parser_expect(par, lex_kind_int); + lex_t *token = parser_expect(par, lex_kind_integer); usize *n = (usize *)p; n[0] = (usize)token->integer; return; diff --git a/src/core/types.h b/src/core/types.h index 28d7515..7162bd5 100644 --- a/src/core/types.h +++ b/src/core/types.h @@ -42,7 +42,7 @@ typedef double f64; #define mib(x) (1024ULL * kib(x)) #define gib(x) (1024ULL * mib(x)) -#define DEFER_LOOP(begin, end) for (int PASTE(_i_, __LINE__) = (begin, 0); !PASTE(_i_, __LINE__); PASTE(_i_, __LINE__) += (end, 1)) +#define DEFER_LOOP(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__) #define STACK_POP(stack) (assert((stack).len > 0), (stack).data[--(stack).len]) @@ -297,11 +297,11 @@ struct sb8_t { sb8_node_t *first; sb8_node_t *last; - int indent; + i32 indent; }; i64 wstr_len(wchar_t *string); -int str_len(char *str); +i32 str_len(char *str); char char_to_lower_case(char a); char char_to_upper_case(char a); diff --git a/src/meta/parser.c b/src/meta/parser.c index 8d51ee0..5c5321a 100644 --- a/src/meta/parser.c +++ b/src/meta/parser.c @@ -69,7 +69,7 @@ ast_t *create_ast_binary(parser_t *par, lex_t *pos, ast_t *left, lex_kind_t op, ast_t *parse_expr(parser_t *par); ast_t *parse_lit_expr(parser_t *par) { lex_t *token = parser_next(par); - if (token->kind == lex_kind_int) { + if (token->kind == lex_kind_integer) { ast_t *result = create_ast(par, token, set_bit(ast_flag_integer) | set_bit(ast_flag_string)); result->integer = token->integer; result->string = token->s8; @@ -203,7 +203,7 @@ ast_t *parse_struct_mem(parser_t *par, s8_t *name) { while (parser_match(par, lex_kind_open_bracket)) { ast_t *array = create_ast(par, par->at, set_bit(ast_flag_type_array) | set_bit(ast_flag_string)); ast_append(array, type); - lex_t *num = parser_match(par, lex_kind_int); + lex_t *num = parser_match(par, lex_kind_integer); if (num) { array->flags |= set_bit(ast_flag_integer); array->integer = (int)num->integer; @@ -286,7 +286,7 @@ ast_t *parse_table(ma_arena_t *arena, char *file, char *code) { ast_t *col = create_ast(par, par->at, set_bit(ast_flag_string)); ast_append(row, col); col->string = token->s8; - } else if (parser_match(par, lex_kind_int)) { + } else if (parser_match(par, lex_kind_integer)) { ast_t *col = create_ast(par, par->at, set_bit(ast_flag_string) | set_bit(ast_flag_integer)); ast_append(row, col); col->string = token->s8; diff --git a/src/wasm_app/main.c b/src/wasm_app/main.c index d6d9909..20fcbd2 100644 --- a/src/wasm_app/main.c +++ b/src/wasm_app/main.c @@ -5,15 +5,16 @@ // #include "debug.c" // #include "ui2.c" -void on_update() { - // r2f64_t rect = {0, 0, 200, 200}; - // draw_rect(rect, (v4f32_t){0, 0, 0, 1}); - // draw_textf((v2f64_t){10 + i, 100}, "time = %f, dt = %f", time_g / 1000, dt_g); +ma_arena_t *frame_arena; - // f64_mod(4, 2); +void app_update(ma_arena_t *perm_arena, app_event_t *events, i32 event_count) { + if (frame_arena == NULL) { + frame_arena = ma_push_arena(perm_arena, kib(32)); + } + for (i32 i = 0; i < event_count; i += 1) { + s8_t string = s8_serial_data(frame_arena, events + i, &type__app_event_t); + draw_text((v2f64_t){0, (f64)i*20.0}, white_color_global, string); + } - // i += 1; - // if (i > 200) i = 0; - - // ui_demo(); + ma_set0(frame_arena); }