form value resolution; line table header parsing

This commit is contained in:
Ryan Fleury
2025-11-11 17:24:12 -08:00
parent faee02f763
commit 2a76093e17
5 changed files with 98 additions and 28 deletions
+8 -3
View File
@@ -59,7 +59,8 @@ struct DW2_ParseCtx
typedef struct DW2_FormVal DW2_FormVal;
struct DW2_FormVal
{
DW_SectionKind section_kind;
DW_FormKind kind;
String8 string;
U128 u128;
};
@@ -67,7 +68,6 @@ typedef struct DW2_Attrib DW2_Attrib;
struct DW2_Attrib
{
DW_AttribKind attrib_kind;
DW_FormKind form_kind;
DW2_FormVal val;
};
@@ -154,6 +154,11 @@ struct DW2_LineTableHeader
DW2_LineTableFileArray files;
};
////////////////////////////////
//~ rjf: Globals
global read_only DW2_Attrib dw2_attrib_nil = {0};
////////////////////////////////
//~ rjf: Basic Parsing Helpers
@@ -174,12 +179,12 @@ internal DW2_AbbrevMap dw2_abbrev_map_from_data(Arena *arena, String8 data, U64
//~ rjf: Form Value Parsing
internal U64 dw2_read_form_val(DW2_ParseCtx *ctx, String8 data, U64 off, DW_FormKind form_kind, U64 implicit_const, DW2_FormVal *out);
internal String8 dw2_string_from_form_val(DW2_ParseCtx *ctx, DW2_FormVal val);
////////////////////////////////
//~ rjf: Tag Parsing
internal U64 dw2_read_tag(Arena *arena, DW2_ParseCtx *ctx, String8 data, U64 off, DW2_Tag *tag_out);
internal DW2_Attrib *dw2_attrib_from_kind(DW2_Tag *tag, DW_AttribKind kind);
////////////////////////////////
//~ rjf: Line Table Parsing