4#ifndef SYMS_TYPE_GRAPH_H
5#define SYMS_TYPE_GRAPH_H
36#define SYMS_TYPE_GRAPH_TABLE_BUCKET_COUNT 1024
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition syms_debug_info.h:346
Definition syms_debug_info.h:341
Definition syms_parser.h:69
Definition syms_debug_info.h:130
Definition syms_base.h:306
Definition syms_base.h:296
Definition syms_data_structures.h:20
Definition syms_type_graph.h:63
struct SYMS_TypeChainNode * next
Definition syms_type_graph.h:64
struct SYMS_TypeNode * type
Definition syms_type_graph.h:65
Definition syms_type_graph.h:68
SYMS_TypeChainNode * first
Definition syms_type_graph.h:69
SYMS_TypeChainNode * last
Definition syms_type_graph.h:70
SYMS_U64 count
Definition syms_type_graph.h:71
Definition syms_type_graph.h:18
SYMS_TypeConsMember * last
Definition syms_type_graph.h:20
SYMS_U64 count
Definition syms_type_graph.h:21
SYMS_TypeConsMember * first
Definition syms_type_graph.h:19
Definition syms_type_graph.h:12
SYMS_String8 name
Definition syms_type_graph.h:14
struct SYMS_TypeNode * type
Definition syms_type_graph.h:15
struct SYMS_TypeConsMember * next
Definition syms_type_graph.h:13
Definition syms_type_graph.h:46
SYMS_TypeContentNode ** buckets
Definition syms_type_graph.h:47
Definition syms_type_graph.h:39
SYMS_String8 key
Definition syms_type_graph.h:41
struct SYMS_TypeContentNode * next
Definition syms_type_graph.h:40
SYMS_U64 hash
Definition syms_type_graph.h:42
struct SYMS_TypeNode * type
Definition syms_type_graph.h:43
Definition syms_type_graph.h:153
SYMS_TypeNode * type_s8
Definition syms_type_graph.h:168
SYMS_TypeNode * type_f32
Definition syms_type_graph.h:173
SYMS_TypeNode * type_u16
Definition syms_type_graph.h:164
SYMS_TypeNode * type_s64
Definition syms_type_graph.h:171
SYMS_U64 address_size
Definition syms_type_graph.h:156
SYMS_TypeNode * type_void
Definition syms_type_graph.h:161
SYMS_TypeNameBuckets name_buckets
Definition syms_type_graph.h:159
SYMS_TypeNode * type_u64
Definition syms_type_graph.h:166
SYMS_TypeNode * type_bool
Definition syms_type_graph.h:162
SYMS_TypeNode * type_u32
Definition syms_type_graph.h:165
SYMS_StringCons * string_cons
Definition syms_type_graph.h:155
SYMS_TypeNode * type_s32
Definition syms_type_graph.h:170
SYMS_TypeContentBuckets content_buckets
Definition syms_type_graph.h:157
SYMS_TypeNode * type_s128
Definition syms_type_graph.h:172
SYMS_TypeNode * type_u8
Definition syms_type_graph.h:163
SYMS_TypeUSIDBuckets usid_buckets
Definition syms_type_graph.h:158
SYMS_TypeNode * type_u128
Definition syms_type_graph.h:167
SYMS_TypeNode * type_s16
Definition syms_type_graph.h:169
SYMS_TypeNode * type_f64
Definition syms_type_graph.h:174
SYMS_Arena * arena
Definition syms_type_graph.h:154
Definition syms_type_graph.h:103
SYMS_TypeMember * mems
Definition syms_type_graph.h:104
SYMS_U64 count
Definition syms_type_graph.h:105
Definition syms_type_graph.h:88
SYMS_U32 off
Definition syms_type_graph.h:93
SYMS_MemKind kind
Definition syms_type_graph.h:89
struct SYMS_TypeNode * type
Definition syms_type_graph.h:95
SYMS_String8 name
Definition syms_type_graph.h:92
SYMS_U32 virtual_off
Definition syms_type_graph.h:94
SYMS_MemFlags flags
Definition syms_type_graph.h:91
SYMS_MemVisibility visibility
Definition syms_type_graph.h:90
Definition syms_type_graph.h:80
SYMS_TypeNameNode ** buckets
Definition syms_type_graph.h:81
Definition syms_type_graph.h:74
SYMS_U8 * name_ptr
Definition syms_type_graph.h:76
SYMS_TypeChain chain
Definition syms_type_graph.h:77
struct SYMS_TypeNameNode * next
Definition syms_type_graph.h:75
Definition syms_type_graph.h:108
SYMS_U64 param_count
Definition syms_type_graph.h:144
struct SYMS_TypeNode::@2314::@2316 bits
SYMS_U32 count
Definition syms_type_graph.h:138
struct SYMS_TypeNode::@2314::@2317 proc
struct SYMS_TypeNode * direct_type
Definition syms_type_graph.h:121
void * lazy_ptr
Definition syms_type_graph.h:149
SYMS_U64 array_count
Definition syms_type_graph.h:133
SYMS_U64 byte_size
Definition syms_type_graph.h:114
struct SYMS_TypeNode ** params
Definition syms_type_graph.h:143
struct SYMS_TypeNode * this_type
Definition syms_type_graph.h:126
SYMS_TypeModifiers mods
Definition syms_type_graph.h:130
SYMS_String8 name
Definition syms_type_graph.h:113
SYMS_TypeUniqueInfo * unique
Definition syms_type_graph.h:117
SYMS_TypeKind kind
Definition syms_type_graph.h:112
SYMS_U32 off
Definition syms_type_graph.h:137
Definition syms_type_graph.h:180
SYMS_MapAndUnit * type_map
Definition syms_type_graph.h:188
SYMS_UnitSetAccel * unit_set
Definition syms_type_graph.h:183
SYMS_UnitID uid
Definition syms_type_graph.h:185
SYMS_DbgAccel * dbg
Definition syms_type_graph.h:182
SYMS_UnitAccel * unit
Definition syms_type_graph.h:184
SYMS_String8 data
Definition syms_type_graph.h:181
Definition syms_type_graph.h:57
SYMS_U64 * bucket_counts
Definition syms_type_graph.h:59
SYMS_TypeUSIDNode ** buckets
Definition syms_type_graph.h:58
Definition syms_type_graph.h:51
struct SYMS_TypeUSIDNode * next
Definition syms_type_graph.h:52
SYMS_USID key
Definition syms_type_graph.h:53
struct SYMS_TypeNode * type
Definition syms_type_graph.h:54
Definition syms_type_graph.h:29
struct SYMS_TypeUSIDNode * usid_node
Definition syms_type_graph.h:30
Definition syms_type_graph.h:98
SYMS_USID usid
Definition syms_type_graph.h:99
SYMS_SrcCoord src_coord
Definition syms_type_graph.h:100
Definition syms_debug_info.h:234
#define SYMS_READ_ONLY
Definition syms_base.h:57
#define SYMS_API
Definition syms_base.h:29
SYMS_S32 SYMS_B32
Definition syms_base.h:99
#define SYMS_GLOBAL
Definition syms_base.h:42
uint32_t SYMS_U32
Definition syms_crt_overrides.h:38
uint64_t SYMS_U64
Definition syms_crt_overrides.h:39
uint8_t SYMS_U8
Definition syms_crt_overrides.h:36
SYMS_U32 SYMS_MemFlags
Definition syms_debug_info.h:318
SYMS_U64 SYMS_UnitID
Definition syms_debug_info.h:77
SYMS_U64 SYMS_SymbolID
Definition syms_debug_info.h:215
SYMS_MemKind
Definition syms_debug_info.h:306
#define SYMS_Arena
Definition syms_default_arena.h:61
SYMS_API SYMS_U64 syms_type_content_hash(SYMS_String8 data)
Definition syms_type_graph.c:1523
SYMS_API SYMS_U64 syms_type_name_hash(SYMS_U8 *ptr)
Definition syms_type_graph.c:1624
SYMS_API SYMS_TypeNode * syms_type_auto_casted_from_type_nodes(SYMS_TypeGraph *graph, SYMS_TypeNode *l, SYMS_TypeNode *r)
Definition syms_type_graph.c:811
SYMS_API SYMS_TypeNode * syms_type_u8(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:117
SYMS_API SYMS_EnumMemberArray syms_type_enum_members_from_type(SYMS_TypeGraph *graph, SYMS_TypeNode *node)
Definition syms_type_graph.c:73
SYMS_API void syms_type_cons_record_with_members(SYMS_TypeGraph *graph, SYMS_TypeNode *stub, SYMS_TypeKind kind, SYMS_String8 name, SYMS_TypeConsMemberList *list)
Definition syms_type_graph.c:439
SYMS_READ_ONLY SYMS_GLOBAL SYMS_TypeNode syms_type_node_nil
Definition syms_type_graph.h:194
SYMS_API SYMS_TypeNode * syms_type_void(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:97
SYMS_API SYMS_TypeMember * syms_type_equip_mems_pre_allocate(SYMS_TypeGraph *graph, SYMS_TypeNode *node, SYMS_U64 member_count)
Definition syms_type_graph.c:637
SYMS_READ_ONLY SYMS_GLOBAL SYMS_TypeMemberArray syms_type_member_array_nil
Definition syms_type_graph.h:203
SYMS_API SYMS_TypeNode * syms_type_u32(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:137
SYMS_API SYMS_TypeNode * syms_type_promoted_from_type_node(SYMS_TypeGraph *graph, SYMS_TypeNode *c)
Definition syms_type_graph.c:797
SYMS_API SYMS_EnumMember * syms_type_equip_enum_mems_pre_allocate(SYMS_TypeGraph *graph, SYMS_TypeNode *node, SYMS_U64 member_count)
Definition syms_type_graph.c:654
SYMS_API SYMS_TypeNode * syms_type_cons_mod(SYMS_TypeGraph *graph, SYMS_TypeNode *type, SYMS_TypeModifiers mods)
Definition syms_type_graph.c:269
SYMS_API SYMS_TypeNode * syms_type_cons_array(SYMS_TypeGraph *graph, SYMS_TypeNode *type, SYMS_U64 count)
Definition syms_type_graph.c:319
SYMS_API void syms_type_rhs_string_from_type__internal(SYMS_Arena *arena, SYMS_TypeNode *type, SYMS_String8List *out, SYMS_U32 prec)
Definition syms_type_graph.c:1010
SYMS_API SYMS_TypeNode * syms_type_from_usid_buckets(SYMS_TypeUSIDBuckets *buckets, SYMS_USID usid)
Definition syms_type_graph.c:1579
SYMS_API SYMS_B32 syms_type_members_are_equipped(SYMS_TypeGraph *graph, SYMS_TypeNode *node)
Definition syms_type_graph.c:82
SYMS_API SYMS_TypeUniqueInfo syms_type_unique_from_usid_src_coord(SYMS_USID usid, SYMS_SrcCoord *src_coord)
Definition syms_type_graph.c:681
SYMS_API SYMS_TypeNode * syms_type_cons_basic(SYMS_TypeGraph *graph, SYMS_TypeKind kind, SYMS_U64 size, SYMS_String8 name)
Definition syms_type_graph.c:240
SYMS_API void syms_type_lhs_string_from_type(SYMS_Arena *arena, SYMS_TypeNode *type, SYMS_String8List *out)
Definition syms_type_graph.c:877
SYMS_API void syms_type_graph_init(SYMS_TypeGraph *graph, SYMS_Arena *graph_arena, SYMS_StringCons *graph_string_cons, SYMS_U64 address_size_bytes)
Definition syms_type_graph.c:10
SYMS_API SYMS_TypeNode * syms_type_s128(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:207
SYMS_API SYMS_TypeNode * syms_type_cons_typedef(SYMS_TypeGraph *graph, SYMS_String8 name, SYMS_TypeNode *type, SYMS_TypeUniqueInfo *unique_opt)
Definition syms_type_graph.c:581
SYMS_API SYMS_TypeNode * syms_type_f32(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:217
SYMS_API SYMS_U64 syms_type_usid_hash(SYMS_USID usid)
Definition syms_type_graph.c:1573
SYMS_API SYMS_TypeNode * syms_type_from_dbg_sid(SYMS_TypeGraph *graph, SYMS_TypeParseParams *params, SYMS_SymbolID sid)
Definition syms_type_graph.c:1082
SYMS_API void syms_type_lhs_string_from_type_skip_return(SYMS_Arena *arena, SYMS_TypeNode *type, SYMS_String8List *out)
Definition syms_type_graph.c:891
SYMS_API SYMS_TypeNode * syms_type_cons_record_defer_members(SYMS_TypeGraph *graph, SYMS_TypeKind kind, SYMS_String8 name, SYMS_U64 byte_size, SYMS_TypeUniqueInfo *unique_opt)
Definition syms_type_graph.c:541
SYMS_API SYMS_String8 syms_type_content_insert(SYMS_Arena *arena, SYMS_TypeContentBuckets *buckets, SYMS_String8 key, SYMS_TypeNode *type)
Definition syms_type_graph.c:1549
SYMS_API SYMS_String8 syms_type_string_from_type(SYMS_Arena *arena, SYMS_TypeNode *type)
Definition syms_type_graph.c:864
SYMS_API SYMS_TypeNode * syms_type_resolve_enum_to_basic(SYMS_TypeGraph *graph, SYMS_TypeNode *t)
Definition syms_type_graph.c:788
SYMS_API SYMS_TypeUSIDPlaceHolder syms_type_usid_place_holder_insert(SYMS_TypeGraph *graph, SYMS_USID usid)
Definition syms_type_graph.c:621
SYMS_API SYMS_TypeChain * syms_type_chain_from_name_buckets(SYMS_TypeNameBuckets *buckets, SYMS_U8 *name_ptr)
Definition syms_type_graph.c:1632
SYMS_API SYMS_TypeNode * syms_type_s8(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:167
SYMS_API void syms_type_lhs_string_from_type__internal(SYMS_Arena *arena, SYMS_TypeNode *type, SYMS_String8List *out, SYMS_U32 prec, SYMS_B32 skip)
Definition syms_type_graph.c:898
SYMS_API SYMS_TypeNode * syms_type_u64(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:147
SYMS_API SYMS_TypeNode * syms_type_from_dbg_sid__rec(SYMS_TypeGraph *graph, SYMS_TypeParseParams *params, SYMS_SymbolID sid)
Definition syms_type_graph.c:1095
SYMS_API SYMS_TypeNode * syms_type_cons_enum_defer_members(SYMS_TypeGraph *graph, SYMS_String8 name, SYMS_TypeNode *underlying_type, SYMS_TypeUniqueInfo *unique_opt)
Definition syms_type_graph.c:561
SYMS_API SYMS_TypeNode * syms_type_from_usid(SYMS_TypeGraph *graph, SYMS_USID usid)
Definition syms_type_graph.c:44
SYMS_API SYMS_TypeNode * syms_type_cons_mem_ptr(SYMS_TypeGraph *graph, SYMS_TypeNode *container, SYMS_TypeNode *type)
Definition syms_type_graph.c:377
SYMS_API SYMS_TypeNode * syms_type_cons_proc(SYMS_TypeGraph *graph, SYMS_TypeNode *ret_type, SYMS_TypeNode *this_type, SYMS_TypeNode **params, SYMS_U64 count)
Definition syms_type_graph.c:345
SYMS_API SYMS_TypeNode * syms_type_u128(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:157
SYMS_API SYMS_TypeUSIDNode * syms_type_usid_insert(SYMS_Arena *arena, SYMS_TypeUSIDBuckets *buckets, SYMS_USID key, SYMS_TypeNode *type)
Definition syms_type_graph.c:1600
SYMS_API SYMS_TypeUniqueInfo * syms_type_unique_copy(SYMS_Arena *arena, SYMS_TypeUniqueInfo *unique_opt)
Definition syms_type_graph.c:671
SYMS_API SYMS_TypeNode * syms_type_s64(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:197
SYMS_API SYMS_TypeNode * syms_type_bool(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:107
SYMS_API void syms_type_name_insert(SYMS_Arena *arena, SYMS_TypeNameBuckets *buckets, SYMS_U8 *name_ptr, SYMS_TypeNode *type)
Definition syms_type_graph.c:1652
SYMS_API SYMS_TypeNode * syms_type_cons_fwd(SYMS_TypeGraph *graph, SYMS_TypeKind kind, SYMS_String8 name, SYMS_TypeNode *type, SYMS_TypeUniqueInfo *unique_opt)
Definition syms_type_graph.c:601
SYMS_API SYMS_TypeNode * syms_type_s16(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:177
SYMS_API SYMS_TypeNode * syms_type_from_content_buckets(SYMS_TypeContentBuckets *buckets, SYMS_String8 data)
Definition syms_type_graph.c:1529
SYMS_API SYMS_TypeMemberArray syms_type_members_from_type(SYMS_TypeGraph *graph, SYMS_TypeNode *node)
Definition syms_type_graph.c:64
SYMS_API void syms_type_cons_mem_list_push(SYMS_Arena *arena, SYMS_TypeConsMemberList *list, SYMS_String8 name, SYMS_TypeNode *type)
SYMS_API void syms_type_rhs_string_from_type(SYMS_Arena *arena, SYMS_TypeNode *type, SYMS_String8List *out)
Definition syms_type_graph.c:884
SYMS_API SYMS_TypeNode * syms_type_s32(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:187
SYMS_READ_ONLY SYMS_GLOBAL SYMS_EnumMemberArray syms_type_enum_member_array_nil
Definition syms_type_graph.h:204
SYMS_API SYMS_TypeNode * syms_type_u16(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:127
SYMS_API SYMS_TypeNode * syms_type_cons_ptr(SYMS_TypeGraph *graph, SYMS_TypeKind ptr_kind, SYMS_TypeNode *type)
Definition syms_type_graph.c:295
SYMS_API SYMS_TypeNode * syms_type_resolved(SYMS_TypeNode *type)
Definition syms_type_graph.c:695
SYMS_API void syms_type_equip_members_from_dbg(SYMS_TypeGraph *graph, SYMS_TypeParseParams *params, SYMS_TypeNode *node)
Definition syms_type_graph.c:1389
SYMS_API SYMS_TypeNode * syms_type_f64(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:227
SYMS_API SYMS_TypeNode * syms_type_cons_record_stub(SYMS_TypeGraph *graph)
Definition syms_type_graph.c:420
SYMS_API SYMS_TypeNode * syms_type_cons_bitfield(SYMS_TypeGraph *graph, SYMS_TypeNode *underlying_type, SYMS_U32 bitoff, SYMS_U32 bitcount)
Definition syms_type_graph.c:407
SYMS_API SYMS_B32 syms_type_node_match(SYMS_TypeNode *l, SYMS_TypeNode *r)
Definition syms_type_graph.c:706
SYMS_API void syms_type_usid_place_holder_replace(SYMS_TypeGraph *graph, SYMS_TypeUSIDPlaceHolder *place, SYMS_TypeNode *node)
Definition syms_type_graph.c:628
SYMS_API SYMS_String8 syms_type_string_cons(SYMS_TypeGraph *graph, SYMS_String8 name)
Definition syms_type_graph.c:38
SYMS_API SYMS_TypeChain syms_type_from_name(SYMS_TypeGraph *graph, SYMS_String8 name)
Definition syms_type_graph.c:50
Definition syms_parser.h:30
Definition syms_parser.h:42
Definition syms_parser.h:36