app_update, print events
This commit is contained in:
@@ -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)) {");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user