mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-02 20:18:12 +00:00
sketch out better usage of expansion info in text visualizer; notes; naming pass
This commit is contained in:
+39
-16
@@ -1001,8 +1001,7 @@ e_value_eval_from_eval(E_Eval eval)
|
||||
// rjf: mask&shift, for bitfields
|
||||
if(type_kind == E_TypeKind_Bitfield && type_byte_size <= sizeof(U64))
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
E_Type *type = e_type_from_key__cached(type_key);
|
||||
E_Type *type = e_type_from_key(type_key);
|
||||
U64 valid_bits_mask = 0;
|
||||
for(U64 idx = 0; idx < type->count; idx += 1)
|
||||
{
|
||||
@@ -1011,7 +1010,6 @@ e_value_eval_from_eval(E_Eval eval)
|
||||
eval.value.u64 = eval.value.u64 >> type->off;
|
||||
eval.value.u64 = eval.value.u64 & valid_bits_mask;
|
||||
eval.irtree.type_key = type->direct_type_key;
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
// rjf: manually sign-extend
|
||||
@@ -1222,19 +1220,44 @@ e_base_offset_from_eval(E_Eval eval)
|
||||
internal U64
|
||||
e_range_size_from_eval(E_Eval eval)
|
||||
{
|
||||
U64 result = 256;
|
||||
E_TypeKey type_unwrapped = e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_AllDecorative);
|
||||
E_TypeKind type_unwrapped_kind = e_type_kind_from_key(type_unwrapped);
|
||||
if(type_unwrapped_kind == E_TypeKind_Array ||
|
||||
type_unwrapped_kind == E_TypeKind_Struct ||
|
||||
type_unwrapped_kind == E_TypeKind_Union ||
|
||||
type_unwrapped_kind == E_TypeKind_Class)
|
||||
U64 result = KB(16);
|
||||
{
|
||||
result = e_type_byte_size_from_key(type_unwrapped);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = KB(16);
|
||||
E_TypeKey type_core = e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_AllDecorative);
|
||||
E_TypeKind type_core_kind = e_type_kind_from_key(type_core);
|
||||
B32 got_size = 0;
|
||||
|
||||
// rjf: try getting size from expansions
|
||||
if(!got_size)
|
||||
{
|
||||
E_TypeKey maybe_lens_type_key = e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_Meta);
|
||||
E_TypeKind maybe_lens_type_kind = e_type_kind_from_key(maybe_lens_type_key);
|
||||
if(maybe_lens_type_kind == E_TypeKind_Lens)
|
||||
{
|
||||
E_TypeExpandRule *expand_rule = e_expand_rule_from_type_key(maybe_lens_type_key);
|
||||
if(expand_rule->info != 0)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
U64 element_size = e_type_byte_size_from_key(e_type_key_unwrap(type_core, E_TypeUnwrapFlag_All));
|
||||
E_TypeExpandInfo expand_info = expand_rule->info(scratch.arena, eval, str8_zero());
|
||||
result = expand_info.expr_count * element_size;
|
||||
got_size = 1;
|
||||
scratch_end(scratch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: try getting size from intrinsic type (e.g. arrays/etc.)
|
||||
if(!got_size)
|
||||
{
|
||||
if(type_core_kind == E_TypeKind_Array ||
|
||||
type_core_kind == E_TypeKind_Struct ||
|
||||
type_core_kind == E_TypeKind_Union ||
|
||||
type_core_kind == E_TypeKind_Class)
|
||||
{
|
||||
result = e_type_byte_size_from_key(type_core);
|
||||
got_size = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -1314,7 +1337,7 @@ e_debug_log_from_expr_string(Arena *arena, String8 string)
|
||||
type_key = e_type_key_direct(type_key),
|
||||
indent += 1)
|
||||
{
|
||||
E_Type *type = e_type_from_key(scratch.arena, type_key);
|
||||
E_Type *type = e_push_type_from_key(scratch.arena, type_key);
|
||||
str8_list_pushf(scratch.arena, &strings, "%.*s%S\n", (int)indent*4, indent_spaces, e_type_kind_basic_string_table[type->kind]);
|
||||
}
|
||||
}
|
||||
|
||||
+11
-11
@@ -397,7 +397,7 @@ E_TYPE_ACCESS_FUNCTION_DEF(default)
|
||||
}
|
||||
if(match.kind == E_MemberKind_Null)
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(check_type_key);
|
||||
E_Type *type = e_type_from_key(check_type_key);
|
||||
if(type->enum_vals != 0)
|
||||
{
|
||||
String8 lookup_string = exprr->string;
|
||||
@@ -637,7 +637,7 @@ e_push_irtree_and_type_from_expr(Arena *arena, E_IRTreeAndType *root_parent, B32
|
||||
E_TypeKind kind = e_type_kind_from_key(k);
|
||||
for(;kind == E_TypeKind_Lens;)
|
||||
{
|
||||
E_Type *lens_type = e_type_from_key__cached(k);
|
||||
E_Type *lens_type = e_type_from_key(k);
|
||||
if((lens_type->flags & E_TypeFlag_InheritedByMembers && expr->kind == E_ExprKind_MemberAccess) ||
|
||||
(lens_type->flags & E_TypeFlag_InheritedByElements && expr->kind == E_ExprKind_ArrayIndex))
|
||||
{
|
||||
@@ -649,11 +649,11 @@ e_push_irtree_and_type_from_expr(Arena *arena, E_IRTreeAndType *root_parent, B32
|
||||
}
|
||||
|
||||
// rjf: pick access hook based on type
|
||||
E_Type *lhs_type = e_type_from_key__cached(lhs_irtree_try->type_key);
|
||||
E_Type *lhs_type = e_type_from_key(lhs_irtree_try->type_key);
|
||||
E_TypeAccessFunctionType *lhs_access = lhs_type->access;
|
||||
for(E_Type *lens_type = lhs_type;
|
||||
lens_type->kind == E_TypeKind_Lens || lens_type->kind == E_TypeKind_Set;
|
||||
lens_type = e_type_from_key__cached(lens_type->direct_type_key))
|
||||
lens_type = e_type_from_key(lens_type->direct_type_key))
|
||||
{
|
||||
if(lens_type->access != 0)
|
||||
{
|
||||
@@ -1292,7 +1292,7 @@ e_push_irtree_and_type_from_expr(Arena *arena, E_IRTreeAndType *root_parent, B32
|
||||
E_IRTreeAndType lhs_irtree = e_push_irtree_and_type_from_expr(arena, parent, disallow_autohooks, 1, lhs);
|
||||
e_msg_list_concat_in_place(&result.msgs, &lhs_irtree.msgs);
|
||||
E_TypeKey lhs_type_key = lhs_irtree.type_key;
|
||||
E_Type *lhs_type = e_type_from_key__cached(lhs_type_key);
|
||||
E_Type *lhs_type = e_type_from_key(lhs_type_key);
|
||||
|
||||
// rjf: calling a type? -> treat as a cast of that type
|
||||
if(lhs_irtree.mode == E_Mode_Null && lhs_type != &e_type_nil && lhs_type->kind != E_TypeKind_Lens && lhs_type->kind != E_TypeKind_LensSpec)
|
||||
@@ -2130,7 +2130,7 @@ e_push_irtree_and_type_from_expr(Arena *arena, E_IRTreeAndType *root_parent, B32
|
||||
{
|
||||
E_Expr *lens_spec_expr = e_string2expr_map_lookup(e_ir_ctx->macro_map, str8_lit("array"));
|
||||
E_TypeKey lens_spec_type_key = lens_spec_expr->type_key;
|
||||
E_Type *lens_spec_type = e_type_from_key__cached(lens_spec_type_key);
|
||||
E_Type *lens_spec_type = e_type_from_key(lens_spec_type_key);
|
||||
result.type_key = e_type_key_cons(.kind = E_TypeKind_Lens,
|
||||
.flags = lens_spec_type->flags,
|
||||
.count = 1,
|
||||
@@ -2147,10 +2147,10 @@ e_push_irtree_and_type_from_expr(Arena *arena, E_IRTreeAndType *root_parent, B32
|
||||
|
||||
//- rjf: if the evaluated type has a hook for an extra layer of ir extension,
|
||||
// call into it
|
||||
E_Type *type = e_type_from_key__cached(result.type_key);
|
||||
E_Type *type = e_type_from_key(result.type_key);
|
||||
{
|
||||
E_TypeIRExtFunctionType *irext = type->irext;
|
||||
for(E_Type *t = type; t->kind == E_TypeKind_Lens || t->kind == E_TypeKind_Set; t = e_type_from_key__cached(t->direct_type_key))
|
||||
for(E_Type *t = type; t->kind == E_TypeKind_Lens || t->kind == E_TypeKind_Set; t = e_type_from_key(t->direct_type_key))
|
||||
{
|
||||
if(t->irext != 0)
|
||||
{
|
||||
@@ -2182,7 +2182,7 @@ e_push_irtree_and_type_from_expr(Arena *arena, E_IRTreeAndType *root_parent, B32
|
||||
if(ptee_kind == E_TypeKind_Struct ||
|
||||
ptee_kind == E_TypeKind_Class)
|
||||
{
|
||||
E_Type *ptee_type = e_type_from_key__cached(ptee_key);
|
||||
E_Type *ptee_type = e_type_from_key(ptee_key);
|
||||
B32 has_vtable = 0;
|
||||
for(U64 idx = 0; idx < ptee_type->count; idx += 1)
|
||||
{
|
||||
@@ -2282,10 +2282,10 @@ e_push_irtree_and_type_from_expr(Arena *arena, E_IRTreeAndType *root_parent, B32
|
||||
//
|
||||
if(inherited_lenses.count != 0)
|
||||
{
|
||||
E_Type *result_type = e_type_from_key__cached(result.type_key);
|
||||
E_Type *result_type = e_type_from_key(result.type_key);
|
||||
for(E_TypeKeyNode *n = inherited_lenses.first; n != 0; n = n->next)
|
||||
{
|
||||
E_Type *src_type = e_type_from_key__cached(n->v);
|
||||
E_Type *src_type = e_type_from_key(n->v);
|
||||
E_TypeKey dst_type_key = e_type_key_cons(.kind = src_type->kind,
|
||||
.flags = src_type->flags,
|
||||
.name = src_type->name,
|
||||
|
||||
+34
-34
@@ -645,7 +645,7 @@ e_type_byte_size_from_key(E_TypeKey key)
|
||||
}
|
||||
|
||||
internal E_Type *
|
||||
e_type_from_key(Arena *arena, E_TypeKey key)
|
||||
e_push_type_from_key(Arena *arena, E_TypeKey key)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
E_Type *type = &e_type_nil;
|
||||
@@ -1251,7 +1251,7 @@ e_type_data_members_from_key(Arena *arena, E_TypeKey key)
|
||||
E_MemberList members_list = {0};
|
||||
B32 members_need_offset_sort = 0;
|
||||
{
|
||||
E_Type *root_type = e_type_from_key__cached(key);
|
||||
E_Type *root_type = e_type_from_key(key);
|
||||
typedef struct Task Task;
|
||||
struct Task
|
||||
{
|
||||
@@ -1290,7 +1290,7 @@ e_type_data_members_from_key(Arena *arena, E_TypeKey key)
|
||||
t->inheritance_chain = e_type_key_list_copy(scratch.arena, &task->inheritance_chain);
|
||||
e_type_key_list_push(scratch.arena, &t->inheritance_chain, type->members[member_idx].type_key);
|
||||
t->type_key = type->members[member_idx].type_key;
|
||||
t->type = e_type_from_key__cached(type->members[member_idx].type_key);
|
||||
t->type = e_type_from_key(type->members[member_idx].type_key);
|
||||
SLLQueuePush(first_task, last_task, t);
|
||||
members_need_offset_sort = 1;
|
||||
}
|
||||
@@ -1390,14 +1390,14 @@ e_expand_rule_from_type_key(E_TypeKey key)
|
||||
{
|
||||
E_TypeExpandRule *rule = &e_type_expand_rule__default;
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(e_type_key_unwrap(key, E_TypeUnwrapFlag_Meta));
|
||||
E_Type *type = e_type_from_key(e_type_key_unwrap(key, E_TypeUnwrapFlag_Meta));
|
||||
if(type->expand.info != 0)
|
||||
{
|
||||
rule = &type->expand;
|
||||
}
|
||||
for(E_Type *lens_type = type;
|
||||
lens_type->kind == E_TypeKind_Lens || lens_type->kind == E_TypeKind_Set;
|
||||
lens_type = e_type_from_key__cached(e_type_key_unwrap(lens_type->direct_type_key, E_TypeUnwrapFlag_Meta)))
|
||||
lens_type = e_type_from_key(e_type_key_unwrap(lens_type->direct_type_key, E_TypeUnwrapFlag_Meta)))
|
||||
{
|
||||
if(lens_type->expand.info != 0)
|
||||
{
|
||||
@@ -1421,7 +1421,7 @@ e_type_key_direct(E_TypeKey key)
|
||||
case E_TypeKeyKind_Ext:
|
||||
case E_TypeKeyKind_Cons:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
result = type->direct_type_key;
|
||||
}break;
|
||||
}
|
||||
@@ -1438,7 +1438,7 @@ e_type_key_owner(E_TypeKey key)
|
||||
case E_TypeKeyKind_Ext:
|
||||
case E_TypeKeyKind_Cons:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
result = type->owner_type_key;
|
||||
}break;
|
||||
}
|
||||
@@ -1554,8 +1554,8 @@ e_type_match(E_TypeKey l, E_TypeKey r)
|
||||
|
||||
case E_TypeKind_Array:
|
||||
{
|
||||
E_Type *lt = e_type_from_key__cached(l);
|
||||
E_Type *rt = e_type_from_key__cached(r);
|
||||
E_Type *lt = e_type_from_key(l);
|
||||
E_Type *rt = e_type_from_key(r);
|
||||
if(lt->count == rt->count && e_type_match(lt->direct_type_key, rt->direct_type_key))
|
||||
{
|
||||
result = 1;
|
||||
@@ -1564,8 +1564,8 @@ e_type_match(E_TypeKey l, E_TypeKey r)
|
||||
|
||||
case E_TypeKind_Function:
|
||||
{
|
||||
E_Type *lt = e_type_from_key__cached(l);
|
||||
E_Type *rt = e_type_from_key__cached(r);
|
||||
E_Type *lt = e_type_from_key(l);
|
||||
E_Type *rt = e_type_from_key(r);
|
||||
if(lt->count == rt->count && e_type_match(lt->direct_type_key, rt->direct_type_key))
|
||||
{
|
||||
B32 params_match = 1;
|
||||
@@ -1586,8 +1586,8 @@ e_type_match(E_TypeKey l, E_TypeKey r)
|
||||
|
||||
case E_TypeKind_Method:
|
||||
{
|
||||
E_Type *lt = e_type_from_key__cached(l);
|
||||
E_Type *rt = e_type_from_key__cached(r);
|
||||
E_Type *lt = e_type_from_key(l);
|
||||
E_Type *rt = e_type_from_key(r);
|
||||
if(lt->count == rt->count &&
|
||||
e_type_match(lt->direct_type_key, rt->direct_type_key) &&
|
||||
e_type_match(lt->owner_type_key, rt->owner_type_key))
|
||||
@@ -1625,20 +1625,20 @@ e_type_lhs_string_from_key(Arena *arena, E_TypeKey key, String8List *out, U32 pr
|
||||
{
|
||||
default:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
str8_list_pushf(arena, out, "%S ", type->name);
|
||||
}break;
|
||||
|
||||
case E_TypeKind_Bitfield:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
e_type_lhs_string_from_key(arena, type->direct_type_key, out, prec, skip_return);
|
||||
str8_list_pushf(arena, out, ": %I64u", type->count);
|
||||
}break;
|
||||
|
||||
case E_TypeKind_Modifier:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
E_TypeKey direct = type->direct_type_key;
|
||||
e_type_lhs_string_from_key(arena, direct, out, 1, skip_return);
|
||||
if(type->flags & E_TypeFlag_Const)
|
||||
@@ -1662,7 +1662,7 @@ e_type_lhs_string_from_key(Arena *arena, E_TypeKey key, String8List *out, U32 pr
|
||||
case E_TypeKind_Class:
|
||||
case E_TypeKind_Alias:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
str8_list_pushf(arena, out, "%S ", type->name);
|
||||
}break;
|
||||
|
||||
@@ -1672,7 +1672,7 @@ e_type_lhs_string_from_key(Arena *arena, E_TypeKey key, String8List *out, U32 pr
|
||||
case E_TypeKind_IncompleteClass: keyword = str8_lit("class"); goto fwd_udt;
|
||||
fwd_udt:;
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
str8_list_push(arena, out, keyword);
|
||||
str8_list_push(arena, out, str8_lit(" "));
|
||||
str8_list_pushf(arena, out, "%S ", type->name);
|
||||
@@ -1703,7 +1703,7 @@ e_type_lhs_string_from_key(Arena *arena, E_TypeKey key, String8List *out, U32 pr
|
||||
|
||||
case E_TypeKind_Lens:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
str8_list_pushf(arena, out, "%S(", type->name);
|
||||
E_TypeKey direct = e_type_key_direct(key);
|
||||
String8 direct_string = e_type_string_from_key(arena, direct);
|
||||
@@ -1722,7 +1722,7 @@ e_type_lhs_string_from_key(Arena *arena, E_TypeKey key, String8List *out, U32 pr
|
||||
E_TypeKey direct = e_type_key_direct(key);
|
||||
e_type_lhs_string_from_key(arena, direct, out, 1, skip_return);
|
||||
str8_list_push(arena, out, str8_lit("*"));
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
if(type->count != 1)
|
||||
{
|
||||
str8_list_pushf(arena, out, ".%I64u", type->count);
|
||||
@@ -1745,10 +1745,10 @@ e_type_lhs_string_from_key(Arena *arena, E_TypeKey key, String8List *out, U32 pr
|
||||
|
||||
case E_TypeKind_MemberPtr:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
E_TypeKey direct = type->direct_type_key;
|
||||
e_type_lhs_string_from_key(arena, direct, out, 1, skip_return);
|
||||
E_Type *container = e_type_from_key__cached(type->owner_type_key);
|
||||
E_Type *container = e_type_from_key(type->owner_type_key);
|
||||
if(container->kind != E_TypeKind_Null)
|
||||
{
|
||||
str8_list_push(arena, out, push_str8_copy(arena, container->name));
|
||||
@@ -1796,7 +1796,7 @@ e_type_rhs_string_from_key(Arena *arena, E_TypeKey key, String8List *out, U32 pr
|
||||
|
||||
case E_TypeKind_Array:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
if(prec == 1)
|
||||
{
|
||||
str8_list_push(arena, out, str8_lit(")"));
|
||||
@@ -1811,7 +1811,7 @@ e_type_rhs_string_from_key(Arena *arena, E_TypeKey key, String8List *out, U32 pr
|
||||
|
||||
case E_TypeKind_Function:
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
if(prec == 1)
|
||||
{
|
||||
str8_list_push(arena, out, str8_lit(")"));
|
||||
@@ -1884,7 +1884,7 @@ e_default_expansion_type_from_key(E_TypeKey root_key)
|
||||
//
|
||||
if(e_type_kind_is_pointer_or_ref(kind))
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(key);
|
||||
E_Type *type = e_type_from_key(key);
|
||||
if(!e_type_key_match(e_type_key_basic(E_TypeKind_Void), type->direct_type_key))
|
||||
{
|
||||
if(type->count == 1 && hit_1ptr)
|
||||
@@ -1965,7 +1965,7 @@ e_default_expansion_type_from_key(E_TypeKey root_key)
|
||||
//~ rjf: Cache Lookups
|
||||
|
||||
internal E_Type *
|
||||
e_type_from_key__cached(E_TypeKey key)
|
||||
e_type_from_key(E_TypeKey key)
|
||||
{
|
||||
E_Type *type = &e_type_nil;
|
||||
{
|
||||
@@ -1984,7 +1984,7 @@ e_type_from_key__cached(E_TypeKey key)
|
||||
{
|
||||
node = push_array(e_cache->arena, E_TypeCacheNode, 1);
|
||||
node->key = key;
|
||||
node->type = e_type_from_key(e_cache->arena, key);
|
||||
node->type = e_push_type_from_key(e_cache->arena, key);
|
||||
SLLQueuePush(e_cache->type_cache_slots[slot_idx].first, e_cache->type_cache_slots[slot_idx].last, node);
|
||||
}
|
||||
type = node->type;
|
||||
@@ -2144,7 +2144,7 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(default)
|
||||
if(array_type_kind == E_TypeKind_Array ||
|
||||
array_type_kind == E_TypeKind_Ptr)
|
||||
{
|
||||
E_Type *array_type = e_type_from_key__cached(expand_type_key);
|
||||
E_Type *array_type = e_type_from_key(expand_type_key);
|
||||
result.expr_count = array_type->count;
|
||||
did_expansion = 1;
|
||||
}
|
||||
@@ -2156,7 +2156,7 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(default)
|
||||
E_TypeKind enum_type_kind = e_type_kind_from_key(expand_type_key);
|
||||
if(enum_type_kind == E_TypeKind_Enum)
|
||||
{
|
||||
E_Type *enum_type = e_type_from_key__cached(expand_type_key);
|
||||
E_Type *enum_type = e_type_from_key(expand_type_key);
|
||||
result.expr_count = enum_type->count;
|
||||
did_expansion = 1;
|
||||
}
|
||||
@@ -2194,7 +2194,7 @@ E_TYPE_EXPAND_RANGE_FUNCTION_DEF(default)
|
||||
//- rjf: enum case -> the lookup-range will return a range of enum constants
|
||||
else if(expand_type_kind == E_TypeKind_Enum)
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(expand_type_key);
|
||||
E_Type *type = e_type_from_key(expand_type_key);
|
||||
Rng1U64 legal_idx_range = r1u64(0, type->count);
|
||||
Rng1U64 read_range = intersect_1u64(legal_idx_range, idx_range);
|
||||
U64 read_range_count = dim_1u64(read_range);
|
||||
@@ -2236,14 +2236,14 @@ E_TYPE_EXPAND_NUM_FROM_ID_FUNCTION_DEF(identity)
|
||||
|
||||
E_TYPE_EXPAND_INFO_FUNCTION_DEF(only)
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
||||
E_Type *type = e_type_from_key(eval.irtree.type_key);
|
||||
E_TypeExpandInfo info = {0, type->count};
|
||||
return info;
|
||||
}
|
||||
|
||||
E_TYPE_EXPAND_RANGE_FUNCTION_DEF(only)
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
||||
E_Type *type = e_type_from_key(eval.irtree.type_key);
|
||||
U64 out_idx = 0;
|
||||
for(U64 idx = idx_range.min; idx < idx_range.max; idx += 1, out_idx += 1)
|
||||
{
|
||||
@@ -2260,7 +2260,7 @@ E_TYPE_EXPAND_RANGE_FUNCTION_DEF(only)
|
||||
|
||||
E_TYPE_EXPAND_INFO_FUNCTION_DEF(omit)
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
||||
E_Type *type = e_type_from_key(eval.irtree.type_key);
|
||||
String8Array allowed_children_array = {0};
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
@@ -2345,7 +2345,7 @@ E_TYPE_EXPAND_RANGE_FUNCTION_DEF(sequence)
|
||||
|
||||
E_TYPE_EXPAND_INFO_FUNCTION_DEF(array)
|
||||
{
|
||||
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
||||
E_Type *type = e_type_from_key(eval.irtree.type_key);
|
||||
U64 count = 1;
|
||||
if(type->args != 0 && type->count > 0) E_ParentKey(eval.key)
|
||||
{
|
||||
|
||||
@@ -89,7 +89,7 @@ internal B32 e_type_key_match(E_TypeKey l, E_TypeKey r);
|
||||
internal U64 e_hash_from_type(E_Type *type);
|
||||
internal E_TypeKind e_type_kind_from_key(E_TypeKey key);
|
||||
internal U64 e_type_byte_size_from_key(E_TypeKey key);
|
||||
internal E_Type *e_type_from_key(Arena *arena, E_TypeKey key);
|
||||
internal E_Type *e_push_type_from_key(Arena *arena, E_TypeKey key);
|
||||
internal int e_type_qsort_compare_members_offset(E_Member *a, E_Member *b);
|
||||
internal E_MemberArray e_type_data_members_from_key(Arena *arena, E_TypeKey key);
|
||||
internal E_TypeExpandRule *e_expand_rule_from_type_key(E_TypeKey key);
|
||||
@@ -112,7 +112,7 @@ internal E_TypeKey e_default_expansion_type_from_key(E_TypeKey key);
|
||||
////////////////////////////////
|
||||
//~ rjf: Cache Lookups
|
||||
|
||||
internal E_Type *e_type_from_key__cached(E_TypeKey key);
|
||||
internal E_Type *e_type_from_key(E_TypeKey key);
|
||||
internal E_MemberCacheNode *e_member_cache_node_from_type_key(E_TypeKey key);
|
||||
internal E_MemberArray e_type_data_members_from_key_filter__cached(E_TypeKey key, String8 filter);
|
||||
internal E_MemberArray e_type_data_members_from_key__cached(E_TypeKey key);
|
||||
|
||||
Reference in New Issue
Block a user