fix watch window snap to cursor; begin introducing string literals into eval

This commit is contained in:
Ryan Fleury
2024-08-06 10:19:10 -07:00
parent 615a05e423
commit e951d788ed
8 changed files with 135 additions and 77 deletions
+1 -1
View File
@@ -552,7 +552,7 @@ DF_SettingTable:
{ {
{HoverAnimations hover_animations "Hover Animations" 0 1 0 1 } {HoverAnimations hover_animations "Hover Animations" 0 1 0 1 }
{PressAnimations press_animations "Press Animations" 0 1 0 1 } {PressAnimations press_animations "Press Animations" 0 1 0 1 }
{FocusAnimations focus_animations "Focus Animations" 0 1 0 1 } {FocusAnimations focus_animations "Focus Animations" 0 0 0 1 }
{TooltipAnimations tooltip_animations "Tooltip Animations" 0 1 0 1 } {TooltipAnimations tooltip_animations "Tooltip Animations" 0 1 0 1 }
{MenuAnimations menu_animations "Menu Animations" 0 1 0 1 } {MenuAnimations menu_animations "Menu Animations" 0 1 0 1 }
{ScrollingAnimations scrolling_animations "Scrolling Animations" 0 1 0 1 } {ScrollingAnimations scrolling_animations "Scrolling Animations" 0 1 0 1 }
+6 -1
View File
@@ -1873,7 +1873,6 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
if(state_dirty) if(state_dirty)
{ {
state_dirty = 0; state_dirty = 0;
snap_to_cursor = 1;
} }
////////////////////////////// //////////////////////////////
@@ -2187,6 +2186,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
{ {
df_entity_equip_name(0, watch, new_string); df_entity_equip_name(0, watch, new_string);
state_dirty = 1; state_dirty = 1;
snap_to_cursor = 1;
} }
else if(editing_complete && new_string.size != 0 && df_expand_key_match(pt.key, empty_row_key)) else if(editing_complete && new_string.size != 0 && df_expand_key_match(pt.key, empty_row_key))
{ {
@@ -2196,6 +2196,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
DF_ExpandKey key = df_expand_key_from_entity(watch); DF_ExpandKey key = df_expand_key_from_entity(watch);
df_eval_view_set_key_rule(eval_view, key, str8_zero()); df_eval_view_set_key_rule(eval_view, key, str8_zero());
state_dirty = 1; state_dirty = 1;
snap_to_cursor = 1;
} }
}break; }break;
case DF_WatchViewColumnKind_Value: case DF_WatchViewColumnKind_Value:
@@ -2239,6 +2240,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
df_entity_equip_name(0, view_rule, new_string); df_entity_equip_name(0, view_rule, new_string);
} }
state_dirty = 1; state_dirty = 1;
snap_to_cursor = 1;
}break; }break;
} }
} }
@@ -2297,6 +2299,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
{ {
taken = 1; taken = 1;
state_dirty = 1; state_dirty = 1;
snap_to_cursor = 1;
for(S64 y = selection_tbl.min.y; y <= selection_tbl.max.y; y += 1) for(S64 y = selection_tbl.min.y; y <= selection_tbl.max.y; y += 1)
{ {
DF_WatchViewPoint pt = df_watch_view_point_from_tbl(&blocks, v2s64(0, y)); DF_WatchViewPoint pt = df_watch_view_point_from_tbl(&blocks, v2s64(0, y));
@@ -2454,11 +2457,13 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
if(evt->delta_2s32.y < 0 && !df_entity_is_nil(first_watch) && !df_entity_is_nil(reorder_group_prev)) if(evt->delta_2s32.y < 0 && !df_entity_is_nil(first_watch) && !df_entity_is_nil(reorder_group_prev))
{ {
state_dirty = 1; state_dirty = 1;
snap_to_cursor = 1;
df_entity_change_parent(0, reorder_group_prev, reorder_group_prev->parent, reorder_group_prev->parent, last_watch); df_entity_change_parent(0, reorder_group_prev, reorder_group_prev->parent, reorder_group_prev->parent, last_watch);
} }
if(evt->delta_2s32.y > 0 && !df_entity_is_nil(last_watch) && !df_entity_is_nil(reorder_group_next)) if(evt->delta_2s32.y > 0 && !df_entity_is_nil(last_watch) && !df_entity_is_nil(reorder_group_next))
{ {
state_dirty = 1; state_dirty = 1;
snap_to_cursor = 1;
df_entity_change_parent(0, reorder_group_next, reorder_group_next->parent, reorder_group_next->parent, reorder_group_prev); df_entity_change_parent(0, reorder_group_next, reorder_group_next->parent, reorder_group_next->parent, reorder_group_prev);
} }
} }
+1 -1
View File
@@ -1259,7 +1259,7 @@ DF_SettingVal df_g_setting_code_default_val_table[19] =
{ {
{1, 1}, {1, 1},
{1, 1}, {1, 1},
{1, 1}, {1, 0},
{1, 1}, {1, 1},
{1, 1}, {1, 1},
{1, 1}, {1, 1},
+77 -29
View File
@@ -2899,7 +2899,7 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
U32 match_idx = matches[matches_count-1]; U32 match_idx = matches[matches_count-1];
RDI_GlobalVariable *global_var = rdi_element_from_name_idx(rdi, GlobalVariables, match_idx); RDI_GlobalVariable *global_var = rdi_element_from_name_idx(rdi, GlobalVariables, match_idx);
E_OpList oplist = {0}; E_OpList oplist = {0};
e_oplist_push(arena, &oplist, RDI_EvalOp_ModuleOff, global_var->voff); e_oplist_push_op(arena, &oplist, RDI_EvalOp_ModuleOff, global_var->voff);
loc_kind = RDI_LocationKind_AddrBytecodeStream; loc_kind = RDI_LocationKind_AddrBytecodeStream;
loc_bytecode = e_bytecode_from_oplist(arena, &oplist); loc_bytecode = e_bytecode_from_oplist(arena, &oplist);
U32 type_idx = global_var->type_idx; U32 type_idx = global_var->type_idx;
@@ -2936,7 +2936,7 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
U32 match_idx = matches[0]; U32 match_idx = matches[0];
RDI_ThreadVariable *thread_var = rdi_element_from_name_idx(rdi, ThreadVariables, match_idx); RDI_ThreadVariable *thread_var = rdi_element_from_name_idx(rdi, ThreadVariables, match_idx);
E_OpList oplist = {0}; E_OpList oplist = {0};
e_oplist_push(arena, &oplist, RDI_EvalOp_TLSOff, thread_var->tls_off); e_oplist_push_op(arena, &oplist, RDI_EvalOp_TLSOff, thread_var->tls_off);
loc_kind = RDI_LocationKind_AddrBytecodeStream; loc_kind = RDI_LocationKind_AddrBytecodeStream;
loc_bytecode = e_bytecode_from_oplist(arena, &oplist); loc_bytecode = e_bytecode_from_oplist(arena, &oplist);
U32 type_idx = thread_var->type_idx; U32 type_idx = thread_var->type_idx;
@@ -2975,7 +2975,7 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
RDI_Scope *scope = rdi_element_from_name_idx(rdi, Scopes, procedure->root_scope_idx); RDI_Scope *scope = rdi_element_from_name_idx(rdi, Scopes, procedure->root_scope_idx);
U64 voff = *rdi_element_from_name_idx(rdi, ScopeVOffData, scope->voff_range_first); U64 voff = *rdi_element_from_name_idx(rdi, ScopeVOffData, scope->voff_range_first);
E_OpList oplist = {0}; E_OpList oplist = {0};
e_oplist_push(arena, &oplist, RDI_EvalOp_ModuleOff, voff); e_oplist_push_op(arena, &oplist, RDI_EvalOp_ModuleOff, voff);
loc_kind = RDI_LocationKind_ValBytecodeStream; loc_kind = RDI_LocationKind_ValBytecodeStream;
loc_bytecode = e_bytecode_from_oplist(arena, &oplist); loc_bytecode = e_bytecode_from_oplist(arena, &oplist);
U32 type_idx = procedure->type_idx; U32 type_idx = procedure->type_idx;
@@ -3062,9 +3062,9 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
E_OpList oplist = {0}; E_OpList oplist = {0};
U64 byte_size = bit_size_from_arch(e_state->ctx->arch)/8; U64 byte_size = bit_size_from_arch(e_state->ctx->arch)/8;
U64 regread_param = RDI_EncodeRegReadParam(loc_reg_u16.reg_code, byte_size, 0); U64 regread_param = RDI_EncodeRegReadParam(loc_reg_u16.reg_code, byte_size, 0);
e_oplist_push(arena, &oplist, RDI_EvalOp_RegRead, regread_param); e_oplist_push_op(arena, &oplist, RDI_EvalOp_RegRead, regread_param);
e_oplist_push(arena, &oplist, RDI_EvalOp_ConstU16, loc_reg_u16.offset); e_oplist_push_op(arena, &oplist, RDI_EvalOp_ConstU16, loc_reg_u16.offset);
e_oplist_push(arena, &oplist, RDI_EvalOp_Add, 0); e_oplist_push_op(arena, &oplist, RDI_EvalOp_Add, 0);
atom = e_push_expr(arena, E_ExprKind_LeafBytecode, token_string.str); atom = e_push_expr(arena, E_ExprKind_LeafBytecode, token_string.str);
atom->mode = E_Mode_Addr; atom->mode = E_Mode_Addr;
atom->type_key = type_key; atom->type_key = type_key;
@@ -3075,10 +3075,10 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
E_OpList oplist = {0}; E_OpList oplist = {0};
U64 byte_size = bit_size_from_arch(e_state->ctx->arch)/8; U64 byte_size = bit_size_from_arch(e_state->ctx->arch)/8;
U64 regread_param = RDI_EncodeRegReadParam(loc_reg_u16.reg_code, byte_size, 0); U64 regread_param = RDI_EncodeRegReadParam(loc_reg_u16.reg_code, byte_size, 0);
e_oplist_push(arena, &oplist, RDI_EvalOp_RegRead, regread_param); e_oplist_push_op(arena, &oplist, RDI_EvalOp_RegRead, regread_param);
e_oplist_push(arena, &oplist, RDI_EvalOp_ConstU16, loc_reg_u16.offset); e_oplist_push_op(arena, &oplist, RDI_EvalOp_ConstU16, loc_reg_u16.offset);
e_oplist_push(arena, &oplist, RDI_EvalOp_Add, 0); e_oplist_push_op(arena, &oplist, RDI_EvalOp_Add, 0);
e_oplist_push(arena, &oplist, RDI_EvalOp_MemRead, bit_size_from_arch(e_state->ctx->arch)/8); e_oplist_push_op(arena, &oplist, RDI_EvalOp_MemRead, bit_size_from_arch(e_state->ctx->arch)/8);
atom = e_push_expr(arena, E_ExprKind_LeafBytecode, token_string.str); atom = e_push_expr(arena, E_ExprKind_LeafBytecode, token_string.str);
atom->mode = E_Mode_Addr; atom->mode = E_Mode_Addr;
atom->type_key = type_key; atom->type_key = type_key;
@@ -3092,7 +3092,7 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
U64 byte_size = (U64)reg_rng.byte_size; U64 byte_size = (U64)reg_rng.byte_size;
U64 byte_pos = 0; U64 byte_pos = 0;
U64 regread_param = RDI_EncodeRegReadParam(loc_reg.reg_code, byte_size, byte_pos); U64 regread_param = RDI_EncodeRegReadParam(loc_reg.reg_code, byte_size, byte_pos);
e_oplist_push(arena, &oplist, RDI_EvalOp_RegRead, regread_param); e_oplist_push_op(arena, &oplist, RDI_EvalOp_RegRead, regread_param);
atom = e_push_expr(arena, E_ExprKind_LeafBytecode, token_string.str); atom = e_push_expr(arena, E_ExprKind_LeafBytecode, token_string.str);
atom->mode = E_Mode_Value; atom->mode = E_Mode_Value;
atom->type_key = type_key; atom->type_key = type_key;
@@ -3175,10 +3175,12 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
} }
}break; }break;
// rjf: string => invalid // rjf: string => leaf string literal
case E_TokenKind_StringLiteral: case E_TokenKind_StringLiteral:
{ {
e_msgf(arena, &result.msgs, E_MsgKind_MalformedInput, token_string.str, "String literals are not supported."); String8 string_value_escaped = str8_chop(str8_skip(token_string, 1), 1);
atom = e_push_expr(arena, E_ExprKind_LeafStringLiteral, token_string.str);
atom->string = string_value_escaped;
it += 1; it += 1;
}break; }break;
@@ -3457,7 +3459,7 @@ e_parse_expr_from_text_tokens(Arena *arena, String8 text, E_TokenArray *tokens)
//- rjf: op list functions //- rjf: op list functions
internal void internal void
e_oplist_push(Arena *arena, E_OpList *list, RDI_EvalOp opcode, U64 p) e_oplist_push_op(Arena *arena, E_OpList *list, RDI_EvalOp opcode, U64 p)
{ {
U8 ctrlbits = rdi_eval_op_ctrlbits_table[opcode]; U8 ctrlbits = rdi_eval_op_ctrlbits_table[opcode];
U32 p_size = RDI_DECODEN_FROM_CTRLBITS(ctrlbits); U32 p_size = RDI_DECODEN_FROM_CTRLBITS(ctrlbits);
@@ -3473,10 +3475,10 @@ internal void
e_oplist_push_uconst(Arena *arena, E_OpList *list, U64 x) e_oplist_push_uconst(Arena *arena, E_OpList *list, U64 x)
{ {
if(0){} if(0){}
else if(x <= 0xFF) { e_oplist_push(arena, list, RDI_EvalOp_ConstU8, x); } else if(x <= 0xFF) { e_oplist_push_op(arena, list, RDI_EvalOp_ConstU8, x); }
else if(x <= 0xFFFF) { e_oplist_push(arena, list, RDI_EvalOp_ConstU16, x); } else if(x <= 0xFFFF) { e_oplist_push_op(arena, list, RDI_EvalOp_ConstU16, x); }
else if(x <= 0xFFFFFFFF) { e_oplist_push(arena, list, RDI_EvalOp_ConstU32, x); } else if(x <= 0xFFFFFFFF) { e_oplist_push_op(arena, list, RDI_EvalOp_ConstU32, x); }
else { e_oplist_push(arena, list, RDI_EvalOp_ConstU64, x); } else { e_oplist_push_op(arena, list, RDI_EvalOp_ConstU64, x); }
} }
internal void internal void
@@ -3484,22 +3486,22 @@ e_oplist_push_sconst(Arena *arena, E_OpList *list, S64 x)
{ {
if(-0x80 <= x && x <= 0x7F) if(-0x80 <= x && x <= 0x7F)
{ {
e_oplist_push(arena, list, RDI_EvalOp_ConstU8, (U64)x); e_oplist_push_op(arena, list, RDI_EvalOp_ConstU8, (U64)x);
e_oplist_push(arena, list, RDI_EvalOp_TruncSigned, 8); e_oplist_push_op(arena, list, RDI_EvalOp_TruncSigned, 8);
} }
else if(-0x8000 <= x && x <= 0x7FFF) else if(-0x8000 <= x && x <= 0x7FFF)
{ {
e_oplist_push(arena, list, RDI_EvalOp_ConstU16, (U64)x); e_oplist_push_op(arena, list, RDI_EvalOp_ConstU16, (U64)x);
e_oplist_push(arena, list, RDI_EvalOp_TruncSigned, 16); e_oplist_push_op(arena, list, RDI_EvalOp_TruncSigned, 16);
} }
else if(-0x80000000ll <= x && x <= 0x7FFFFFFFll) else if(-0x80000000ll <= x && x <= 0x7FFFFFFFll)
{ {
e_oplist_push(arena, list, RDI_EvalOp_ConstU32, (U64)x); e_oplist_push_op(arena, list, RDI_EvalOp_ConstU32, (U64)x);
e_oplist_push(arena, list, RDI_EvalOp_TruncSigned, 32); e_oplist_push_op(arena, list, RDI_EvalOp_TruncSigned, 32);
} }
else else
{ {
e_oplist_push(arena, list, RDI_EvalOp_ConstU64, (U64)x); e_oplist_push_op(arena, list, RDI_EvalOp_ConstU64, (U64)x);
} }
} }
@@ -3609,6 +3611,41 @@ e_irtree_bytecode_no_copy(Arena *arena, String8 bytecode)
return n; return n;
} }
internal E_IRNode *
e_irtree_string_literal(Arena *arena, String8 string)
{
E_IRNode *root = &e_irnode_nil;
for(U64 idx = 0, advance = 0; idx < string.size; idx += advance)
{
U64 bytes_left = string.size-idx;
U64 bytes_to_encode = 0;
RDI_EvalOp opcode = 0;
switch(bytes_left%8)
{
default:
case 1:{opcode = RDI_EvalOp_ConstU8; bytes_to_encode = 1;}break;
case 2:{opcode = RDI_EvalOp_ConstU16; bytes_to_encode = 2;}break;
case 3:
case 4:{opcode = RDI_EvalOp_ConstU32; bytes_to_encode = 4;}break;
case 5:
case 6:
case 7:
case 8:{opcode = RDI_EvalOp_ConstU64; bytes_to_encode = 8;}break;
}
U64 value = 0;
MemoryCopy(&value, string.str+idx, bytes_to_encode);
E_IRNode *old_root = root;
root = e_push_irnode(arena, opcode);
root->u64 = value;
if(old_root != &e_irnode_nil)
{
e_irnode_push_child(root, old_root);
}
advance = bytes_to_encode;
}
return root;
}
internal E_IRNode * internal E_IRNode *
e_irtree_mem_read_type(Arena *arena, E_IRNode *c, E_TypeKey type_key) e_irtree_mem_read_type(Arena *arena, E_IRNode *c, E_TypeKey type_key)
{ {
@@ -3724,7 +3761,6 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *expr)
{ {
default: default:
{ {
e_msgf(arena, &result.msgs, E_MsgKind_MalformedInput, expr->location, "(internal) Undefined expression kind (%u).", kind);
}break; }break;
//- rjf: array indices //- rjf: array indices
@@ -4403,6 +4439,17 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *expr)
e_msgf(arena, &result.msgs, E_MsgKind_MalformedInput, expr->location, "(internal) Leaf member not expected here."); e_msgf(arena, &result.msgs, E_MsgKind_MalformedInput, expr->location, "(internal) Leaf member not expected here.");
}break; }break;
//- rjf: leaf string literal
case E_ExprKind_LeafStringLiteral:
{
String8 string = expr->string;
E_TypeKey type_key = e_type_key_cons(E_TypeKind_Array, e_type_key_basic(E_TypeKind_UChar8), string.size);
E_IRNode *new_tree = e_irtree_string_literal(arena, string);
result.root = new_tree;
result.type_key = type_key;
result.mode = E_Mode_Value;
}break;
//- rjf: leaf U64s //- rjf: leaf U64s
case E_ExprKind_LeafU64: case E_ExprKind_LeafU64:
{ {
@@ -4481,6 +4528,7 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *expr)
e_string2expr_map_dec_poison(e_state->ctx->macro_map, expr->string); e_string2expr_map_dec_poison(e_state->ctx->macro_map, expr->string);
} }
}break; }break;
} }
return result; return result;
@@ -4518,11 +4566,11 @@ e_append_oplist_from_irtree(Arena *arena, E_IRNode *root, E_OpList *out)
// 3. <ptr_left> // 3. <ptr_left>
// rjf: modify prt_right in place to create step 2 // rjf: modify prt_right in place to create step 2
e_oplist_push(arena, &prt_right, RDI_EvalOp_Skip, prt_left.encoded_size); e_oplist_push_op(arena, &prt_right, RDI_EvalOp_Skip, prt_left.encoded_size);
// rjf: merge 1 into out // rjf: merge 1 into out
e_oplist_concat_in_place(out, &prt_cond); e_oplist_concat_in_place(out, &prt_cond);
e_oplist_push(arena, out, RDI_EvalOp_Cond, prt_right.encoded_size); e_oplist_push_op(arena, out, RDI_EvalOp_Cond, prt_right.encoded_size);
// rjf: merge 2 into out // rjf: merge 2 into out
e_oplist_concat_in_place(out, &prt_right); e_oplist_concat_in_place(out, &prt_right);
@@ -4551,7 +4599,7 @@ e_append_oplist_from_irtree(Arena *arena, E_IRNode *root, E_OpList *out)
} }
// rjf: emit op to compute this node // rjf: emit op to compute this node
e_oplist_push(arena, out, (RDI_EvalOp)root->op, root->u64); e_oplist_push_op(arena, out, (RDI_EvalOp)root->op, root->u64);
} }
}break; }break;
} }
+2 -1
View File
@@ -613,7 +613,7 @@ internal E_Parse e_parse_expr_from_text_tokens(Arena *arena, String8 text, E_Tok
//~ rjf: IR-ization Functions //~ rjf: IR-ization Functions
//- rjf: op list functions //- rjf: op list functions
internal void e_oplist_push(Arena *arena, E_OpList *list, RDI_EvalOp opcode, U64 p); internal void e_oplist_push_op(Arena *arena, E_OpList *list, RDI_EvalOp opcode, U64 p);
internal void e_oplist_push_uconst(Arena *arena, E_OpList *list, U64 x); internal void e_oplist_push_uconst(Arena *arena, E_OpList *list, U64 x);
internal void e_oplist_push_sconst(Arena *arena, E_OpList *list, S64 x); internal void e_oplist_push_sconst(Arena *arena, E_OpList *list, S64 x);
internal void e_oplist_push_bytecode(Arena *arena, E_OpList *list, String8 bytecode); internal void e_oplist_push_bytecode(Arena *arena, E_OpList *list, String8 bytecode);
@@ -630,6 +630,7 @@ internal E_IRNode *e_irtree_binary_op(Arena *arena, RDI_EvalOp op, RDI_EvalTypeG
internal E_IRNode *e_irtree_binary_op_u(Arena *arena, RDI_EvalOp op, E_IRNode *l, E_IRNode *r); internal E_IRNode *e_irtree_binary_op_u(Arena *arena, RDI_EvalOp op, E_IRNode *l, E_IRNode *r);
internal E_IRNode *e_irtree_conditional(Arena *arena, E_IRNode *c, E_IRNode *l, E_IRNode *r); internal E_IRNode *e_irtree_conditional(Arena *arena, E_IRNode *c, E_IRNode *l, E_IRNode *r);
internal E_IRNode *e_irtree_bytecode_no_copy(Arena *arena, String8 bytecode); internal E_IRNode *e_irtree_bytecode_no_copy(Arena *arena, String8 bytecode);
internal E_IRNode *e_irtree_string_literal(Arena *arena, String8 string);
internal E_IRNode *e_irtree_mem_read_type(Arena *arena, E_IRNode *c, E_TypeKey type_key); internal E_IRNode *e_irtree_mem_read_type(Arena *arena, E_IRNode *c, E_TypeKey type_key);
internal E_IRNode *e_irtree_convert_lo(Arena *arena, E_IRNode *c, RDI_EvalTypeGroup out, RDI_EvalTypeGroup in); internal E_IRNode *e_irtree_convert_lo(Arena *arena, E_IRNode *c, RDI_EvalTypeGroup out, RDI_EvalTypeGroup in);
internal E_IRNode *e_irtree_trunc(Arena *arena, E_IRNode *c, E_TypeKey type_key); internal E_IRNode *e_irtree_trunc(Arena *arena, E_IRNode *c, E_TypeKey type_key);
+41 -40
View File
@@ -64,54 +64,55 @@ E_TypeKindTable:
@table(name op_string) @table(name op_string)
E_ExprKindTable: E_ExprKindTable:
{ {
{ Nil "" } { Nil "" }
{ ArrayIndex "[]" } { ArrayIndex "[]" }
{ MemberAccess "." } { MemberAccess "." }
{ Deref "*" } { Deref "*" }
{ Address "&" } { Address "&" }
{ Cast "cast" } { Cast "cast" }
{ Sizeof "sizeof" } { Sizeof "sizeof" }
{ Neg "-" } { Neg "-" }
{ LogNot "!" } { LogNot "!" }
{ BitNot "~" } { BitNot "~" }
{ Mul "*" } { Mul "*" }
{ Div "/" } { Div "/" }
{ Mod "%" } { Mod "%" }
{ Add "+" } { Add "+" }
{ Sub "-" } { Sub "-" }
{ LShift "<<" } { LShift "<<" }
{ RShift ">>" } { RShift ">>" }
{ Less "<" } { Less "<" }
{ LsEq "<=" } { LsEq "<=" }
{ Grtr ">" } { Grtr ">" }
{ GrEq ">=" } { GrEq ">=" }
{ EqEq "==" } { EqEq "==" }
{ NtEq "!=" } { NtEq "!=" }
{ BitAnd "&" } { BitAnd "&" }
{ BitXor "^" } { BitXor "^" }
{ BitOr "|" } { BitOr "|" }
{ LogAnd "&&" } { LogAnd "&&" }
{ LogOr "||" } { LogOr "||" }
{ Ternary "? " } { Ternary "? " }
{ LeafBytecode "bytecode" } { LeafBytecode "bytecode" }
{ LeafMember "member" } { LeafMember "member" }
{ LeafU64 "U64" } { LeafStringLiteral "string_literal" }
{ LeafF64 "F64" } { LeafU64 "U64" }
{ LeafF32 "F32" } { LeafF64 "F64" }
{ LeafF32 "F32" }
{ TypeIdent "type_ident" } { TypeIdent "type_ident" }
{ Ptr "ptr" } { Ptr "ptr" }
{ Array "array" } { Array "array" }
{ Func "function" } { Func "function" }
{ Define "=" } { Define "=" }
{ LeafIdent "leaf_ident" } { LeafIdent "leaf_ident" }
} }
@table(name display_string) @table(name display_string)
+4 -2
View File
@@ -4,7 +4,7 @@
//- GENERATED CODE //- GENERATED CODE
C_LINKAGE_BEGIN C_LINKAGE_BEGIN
String8 e_expr_kind_strings[40] = String8 e_expr_kind_strings[41] =
{ {
str8_lit_comp("Nil"), str8_lit_comp("Nil"),
str8_lit_comp("ArrayIndex"), str8_lit_comp("ArrayIndex"),
@@ -37,6 +37,7 @@ str8_lit_comp("LogOr"),
str8_lit_comp("Ternary"), str8_lit_comp("Ternary"),
str8_lit_comp("LeafBytecode"), str8_lit_comp("LeafBytecode"),
str8_lit_comp("LeafMember"), str8_lit_comp("LeafMember"),
str8_lit_comp("LeafStringLiteral"),
str8_lit_comp("LeafU64"), str8_lit_comp("LeafU64"),
str8_lit_comp("LeafF64"), str8_lit_comp("LeafF64"),
str8_lit_comp("LeafF32"), str8_lit_comp("LeafF32"),
@@ -63,7 +64,7 @@ str8_lit_comp("Insufficient evaluation machine stack space."),
str8_lit_comp("Malformed bytecode."), str8_lit_comp("Malformed bytecode."),
}; };
String8 e_expr_op_strings[40] = String8 e_expr_op_strings[41] =
{ {
str8_lit_comp(""), str8_lit_comp(""),
str8_lit_comp("[]"), str8_lit_comp("[]"),
@@ -96,6 +97,7 @@ str8_lit_comp("||"),
str8_lit_comp("? "), str8_lit_comp("? "),
str8_lit_comp("bytecode"), str8_lit_comp("bytecode"),
str8_lit_comp("member"), str8_lit_comp("member"),
str8_lit_comp("string_literal"),
str8_lit_comp("U64"), str8_lit_comp("U64"),
str8_lit_comp("F64"), str8_lit_comp("F64"),
str8_lit_comp("F32"), str8_lit_comp("F32"),
+3 -2
View File
@@ -109,6 +109,7 @@ E_ExprKind_LogOr,
E_ExprKind_Ternary, E_ExprKind_Ternary,
E_ExprKind_LeafBytecode, E_ExprKind_LeafBytecode,
E_ExprKind_LeafMember, E_ExprKind_LeafMember,
E_ExprKind_LeafStringLiteral,
E_ExprKind_LeafU64, E_ExprKind_LeafU64,
E_ExprKind_LeafF64, E_ExprKind_LeafF64,
E_ExprKind_LeafF32, E_ExprKind_LeafF32,
@@ -138,9 +139,9 @@ E_InterpretationCode_COUNT,
} E_InterpretationCode; } E_InterpretationCode;
C_LINKAGE_BEGIN C_LINKAGE_BEGIN
extern String8 e_expr_kind_strings[40]; extern String8 e_expr_kind_strings[41];
extern String8 e_interpretation_code_display_strings[11]; extern String8 e_interpretation_code_display_strings[11];
extern String8 e_expr_op_strings[40]; extern String8 e_expr_op_strings[41];
extern U8 e_kind_basic_byte_size_table[54]; extern U8 e_kind_basic_byte_size_table[54];
extern String8 e_kind_basic_string_table[54]; extern String8 e_kind_basic_string_table[54];