diff --git a/src/metagen/metagen_main.c b/src/metagen/metagen_main.c index 2a75ca63..1f3f5401 100644 --- a/src/metagen/metagen_main.c +++ b/src/metagen/metagen_main.c @@ -264,6 +264,31 @@ int main(int argument_count, char **arguments) } } + ////////////////////////////// + //- rjf: generate xlists + // + for(MG_FileParseNode *n = parses.first; n != 0; n = n->next) + { + MD_Node *file = n->v.root; + for(MD_EachNode(node, file->first)) + { + MD_Node *tag = md_tag_from_string(node, str8_lit("xlist"), 0); + if(!md_node_is_nil(tag)) + { + String8 layer_key = mg_layer_key_from_path(file->string); + MG_Layer *layer = mg_layer_from_key(layer_key); + String8List gen_strings = mg_string_list_from_table_gen(mg_arena, table_grid_map, table_col_map, str8_lit(""), node); + str8_list_pushf(mg_arena, &layer->enums, "#define %S \\\n", node->string); + for(String8Node *n = gen_strings.first; n != 0; n = n->next) + { + String8 escaped = mg_escaped_from_str8(mg_arena, n->string); + str8_list_pushf(mg_arena, &layer->enums, "X(%S)\\\n", escaped); + } + str8_list_push(mg_arena, &layer->enums, str8_lit("\n")); + } + } + } + ////////////////////////////// //- rjf: generate structs // diff --git a/src/rdi_dump/rdi_dump.c b/src/rdi_dump/rdi_dump.c index b847c4be..efa88363 100644 --- a/src/rdi_dump/rdi_dump.c +++ b/src/rdi_dump/rdi_dump.c @@ -5,77 +5,87 @@ //~ rjf: RDI Enum -> String Functions internal String8 -rdi_string_from_data_section_tag(RDI_DataSectionTag tag){ - String8 result = {0}; - switch (tag){ -#define X(N,C) case C: result = str8_lit(#N); break; -#define Y(N) - RDI_DataSectionTagXList(X,Y) -#undef X -#undef Y - } - return(result); -} - -internal String8 -rdi_string_from_arch(RDI_Arch arch){ - String8 result = {0}; - switch (arch){ - default: result = str8_lit(""); break; - case RDI_Arch_X86: result = str8_lit("x86"); break; - case RDI_Arch_X64: result = str8_lit("x64"); break; - } - return(result); -} - -internal String8 -rdi_string_from_language(RDI_Language language){ - String8 result = {0}; - switch (language){ -#define X(name,code) case code: result = str8_lit(#name); break; - RDI_LanguageXList(X) +rdi_string_from_data_section_tag(RDI_DataSectionTag v) +{ + String8 result = str8_lit(""); + switch(v) + { + default:{}break; +#define X(name) case RDI_DataSectionTag_##name:{result = str8_lit(#name);}break; + RDI_DataSectionTag_XList #undef X } - return(result); + return result; } internal String8 -rdi_string_from_type_kind(RDI_TypeKind type_kind){ - String8 result = {0}; - switch (type_kind){ - default: result = str8_lit(""); break; -#define X(name,code) case code: result = str8_lit(#name); break; -#define XZ(name,code,size) X(name,code) -#define Y(a,n) - RDI_TypeKindXList(X,XZ,Y) -#undef X -#undef XZ -#undef Y - } - return(result); -} - -internal String8 -rdi_string_from_member_kind(RDI_MemberKind member_kind){ - String8 result = {0}; - switch (member_kind){ - default: result = str8_lit(""); break; -#define X(N,C) case C: result = str8_lit(#N); break; - RDI_MemberKindXList(X) +rdi_string_from_arch(RDI_Arch v) +{ + String8 result = str8_lit(""); + switch(v) + { + default:{}break; +#define X(name) case RDI_Arch_##name:{result = str8_lit(#name);}break; + RDI_Arch_XList #undef X } - return(result); + return result; } internal String8 -rdi_string_from_local_kind(RDI_LocalKind local_kind){ - String8 result = {0}; - switch (local_kind){ - default: result = str8_lit(""); break; - case RDI_LocalKind_Parameter: result = str8_lit("Parameter"); break; - case RDI_LocalKind_Variable: result = str8_lit("Variable"); break; +rdi_string_from_language(RDI_Language v) +{ + String8 result = str8_lit(""); + switch(v) + { + default:{}break; +#define X(name) case RDI_Language_##name:{result = str8_lit(#name);}break; + RDI_Language_XList +#undef X } - return(result); + return result; +} + +internal String8 +rdi_string_from_type_kind(RDI_TypeKind v) +{ + String8 result = str8_lit(""); + switch(v) + { + default:{}break; +#define X(name) case RDI_TypeKind_##name:{result = str8_lit(#name);}break; + RDI_TypeKind_XList +#undef X + } + return result; +} + +internal String8 +rdi_string_from_member_kind(RDI_MemberKind v) +{ + String8 result = str8_lit(""); + switch(v) + { + default:{}break; +#define X(name) case RDI_MemberKind_##name:{result = str8_lit(#name);}break; + RDI_MemberKind_XList +#undef X + } + return result; +} + +internal String8 +rdi_string_from_local_kind(RDI_LocalKind v) +{ + String8 result = str8_lit(""); + switch(v) + { + default:{}break; +#define X(name) case RDI_LocalKind_##name:{result = str8_lit(#name);}break; + RDI_LocalKind_XList +#undef X + } + return result; } //////////////////////////////// @@ -160,11 +170,11 @@ rdi_stringize_data_sections(Arena *arena, String8List *out, RDI_Parsed *parsed, internal void rdi_stringize_top_level_info(Arena *arena, String8List *out, RDI_Parsed *parsed, RDI_TopLevelInfo *tli, U32 indent_level){ - String8 arch_str = rdi_string_from_arch(tli->architecture); + String8 arch_str = rdi_string_from_arch(tli->arch); String8 exe_name = {0}; exe_name.str = rdi_string_from_idx(parsed, tli->exe_name_string_idx, &exe_name.size); - str8_list_pushf(arena, out, "%.*sarchitecture=%.*s\n", + str8_list_pushf(arena, out, "%.*sarch=%.*s\n", indent_level, rdi_stringize_spaces, str8_varg(arch_str)); str8_list_pushf(arena, out, "%.*sexe_name='%.*s'\n", indent_level, rdi_stringize_spaces, str8_varg(exe_name)); diff --git a/src/rdi_dump/rdi_dump.h b/src/rdi_dump/rdi_dump.h index 8af9fa62..69eb49d3 100644 --- a/src/rdi_dump/rdi_dump.h +++ b/src/rdi_dump/rdi_dump.h @@ -41,12 +41,12 @@ struct RDI_ScopeBundle //////////////////////////////// //~ rjf: RDI Enum -> String Functions -internal String8 rdi_string_from_data_section_tag(RDI_DataSectionTag tag); -internal String8 rdi_string_from_arch(RDI_Arch arch); -internal String8 rdi_string_from_language(RDI_Language language); -internal String8 rdi_string_from_type_kind(RDI_TypeKind type_kind); -internal String8 rdi_string_from_member_kind(RDI_MemberKind member_kind); -internal String8 rdi_string_from_local_kind(RDI_LocalKind local_kind); +internal String8 rdi_string_from_data_section_tag(RDI_DataSectionTag v); +internal String8 rdi_string_from_arch(RDI_Arch v); +internal String8 rdi_string_from_language(RDI_Language v); +internal String8 rdi_string_from_type_kind(RDI_TypeKind v); +internal String8 rdi_string_from_member_kind(RDI_MemberKind v); +internal String8 rdi_string_from_local_kind(RDI_LocalKind v); //////////////////////////////// //~ rjf: RDI Flags -> String Functions diff --git a/src/rdi_format/lib/rdi_format.c b/src/rdi_format/lib/rdi_format.c index b2a5be27..545c2c7a 100644 --- a/src/rdi_format/lib/rdi_format.c +++ b/src/rdi_format/lib/rdi_format.c @@ -155,13 +155,6 @@ rdi_eval_conversion_kind_from_typegroups(RDI_EvalTypeGroup in, RDI_EvalTypeGroup return k; } -RDI_PROC RDI_U8 * -rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out) -{ - *size_out = rdi_eval_conversion_kind_message_string_table[kind].size; - return rdi_eval_conversion_kind_message_string_table[kind].str; -} - RDI_PROC RDI_S32 rdi_eval_op_typegroup_are_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group) { @@ -193,4 +186,11 @@ rdi_eval_op_typegroup_are_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group) return result; } +RDI_PROC RDI_U8 * +rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out) +{ + *size_out = rdi_eval_conversion_kind_message_string_table[kind].size; + return rdi_eval_conversion_kind_message_string_table[kind].str; +} + #endif // RDI_FORMAT_C diff --git a/src/rdi_format/lib/rdi_format.h b/src/rdi_format/lib/rdi_format.h index ab14b260..71e28f83 100644 --- a/src/rdi_format/lib/rdi_format.h +++ b/src/rdi_format/lib/rdi_format.h @@ -80,7 +80,6 @@ RDI_DataSectionTag_LocationData = 0x0017, RDI_DataSectionTag_NameMaps = 0x0018, RDI_DataSectionTag_PRIMARY_COUNT = 0x0019, RDI_DataSectionTag_SECONDARY = 0x80000000, -RDI_DataSectionTag_SKIP = RDI_DataSectionTag_SECONDARY|0x0000, RDI_DataSectionTag_LineInfoVoffs = RDI_DataSectionTag_SECONDARY|0x0001, RDI_DataSectionTag_LineInfoData = RDI_DataSectionTag_SECONDARY|0x0002, RDI_DataSectionTag_LineInfoColumns = RDI_DataSectionTag_SECONDARY|0x0003, @@ -486,6 +485,229 @@ RDI_NameMapKind_NormalSourcePaths = 6, RDI_NameMapKind_COUNT = 7, } RDI_NameMapKindEnum; +#define RDI_DataSectionTag_XList \ +X(NULL)\ +X(TopLevelInfo)\ +X(StringData)\ +X(StringTable)\ +X(IndexRuns)\ +X(BinarySections)\ +X(FilePathNodes)\ +X(SourceFiles)\ +X(Units)\ +X(UnitVmap)\ +X(TypeNodes)\ +X(UDTs)\ +X(Members)\ +X(EnumMembers)\ +X(GlobalVariables)\ +X(GlobalVmap)\ +X(ThreadVariables)\ +X(Procedures)\ +X(Scopes)\ +X(ScopeVoffData)\ +X(ScopeVmap)\ +X(Locals)\ +X(LocationBlocks)\ +X(LocationData)\ +X(NameMaps)\ +X(PRIMARY_COUNT)\ +X(SECONDARY)\ +X(LineInfoVoffs)\ +X(LineInfoData)\ +X(LineInfoColumns)\ +X(LineMapNumbers)\ +X(LineMapRanges)\ +X(LineMapVoffs)\ +X(NameMapBuckets)\ +X(NameMapNodes)\ + +#define RDI_DataSectionEncoding_XList \ +X(Unpacked)\ +X(LZB)\ + +#define RDI_Arch_XList \ +X(NULL)\ +X(X86)\ +X(X64)\ + +#define RDI_BinarySectionFlags_XList \ +X(NULL)\ +X(X86)\ +X(X64)\ + +#define RDI_Language_XList \ +X(NULL)\ +X(C)\ +X(CPlusPlus)\ +X(COUNT)\ + +#define RDI_TypeKind_XList \ +X(NULL)\ +X(Void)\ +X(Handle)\ +X(Char8)\ +X(Char16)\ +X(Char32)\ +X(UChar8)\ +X(UChar16)\ +X(UChar32)\ +X(U8)\ +X(U16)\ +X(U32)\ +X(U64)\ +X(U128)\ +X(U256)\ +X(U512)\ +X(S8)\ +X(S16)\ +X(S32)\ +X(S64)\ +X(S128)\ +X(S256)\ +X(S512)\ +X(Bool)\ +X(F16)\ +X(F32)\ +X(F32PP)\ +X(F48)\ +X(F64)\ +X(F80)\ +X(F128)\ +X(ComplexF32)\ +X(ComplexF64)\ +X(ComplexF80)\ +X(ComplexF128)\ +X(Modifier)\ +X(Ptr)\ +X(LRef)\ +X(RRef)\ +X(Array)\ +X(Function)\ +X(Method)\ +X(MemberPtr)\ +X(Struct)\ +X(Class)\ +X(Union)\ +X(Enum)\ +X(Alias)\ +X(IncompleteStruct)\ +X(IncompleteUnion)\ +X(IncompleteClass)\ +X(IncompleteEnum)\ +X(Bitfield)\ +X(Variadic)\ + +#define RDI_TypeModifierFlags_XList \ +X(Const)\ +X(Volatile)\ + +#define RDI_UDTFlag_XList \ +X(EnumMembers)\ + +#define RDI_MemberKind_XList \ +X(NULL)\ +X(DataField)\ +X(StaticData)\ +X(Method)\ +X(StaticMethod)\ +X(VirtualMethod)\ +X(VTablePtr)\ +X(Base)\ +X(VirtualBase)\ +X(NestedType)\ + +#define RDI_LinkFlags_XList \ +X(External)\ +X(TypeScoped)\ +X(ProcScoped)\ + +#define RDI_LocalKind_XList \ +X(NULL)\ +X(Parameter)\ +X(Variable)\ + +#define RDI_LocationKind_XList \ +X(NULL)\ +X(AddrBytecodeStream)\ +X(ValBytecodeStream)\ +X(AddrRegPlusU16)\ +X(AddrAddrRegPlusU16)\ +X(ValReg)\ + +#define RDI_EvalOp_XList \ +X(Stop)\ +X(Noop)\ +X(Cond)\ +X(Skip)\ +X(MemRead)\ +X(RegRead)\ +X(RegReadDyn)\ +X(FrameOff)\ +X(ModuleOff)\ +X(TLSOff)\ +X(ObjectOff)\ +X(CFA)\ +X(ConstU8)\ +X(ConstU16)\ +X(ConstU32)\ +X(ConstU64)\ +X(Abs)\ +X(Neg)\ +X(Add)\ +X(Sub)\ +X(Mul)\ +X(Div)\ +X(Mod)\ +X(LShift)\ +X(RShift)\ +X(BitAnd)\ +X(BitOr)\ +X(BitXor)\ +X(BitNot)\ +X(LogAnd)\ +X(LogOr)\ +X(LogNot)\ +X(EqEq)\ +X(NtEq)\ +X(LsEq)\ +X(GrEq)\ +X(Less)\ +X(Grtr)\ +X(Trunc)\ +X(TruncSigned)\ +X(Convert)\ +X(Pick)\ +X(Pop)\ +X(Insert)\ +X(COUNT)\ + +#define RDI_EvalTypeGroup_XList \ +X(Other)\ +X(U)\ +X(S)\ +X(F32)\ +X(F64)\ +X(COUNT)\ + +#define RDI_EvalConversionKind_XList \ +X(Noop)\ +X(Legal)\ +X(OtherToOther)\ +X(ToOther)\ +X(FromOther)\ +X(COUNT)\ + +#define RDI_NameMapKind_XList \ +X(NULL)\ +X(GlobalVariables)\ +X(ThreadVariables)\ +X(Procedures)\ +X(Types)\ +X(LinkNameProcedures)\ +X(NormalSourcePaths)\ +X(COUNT)\ + #define RDI_EVAL_CTRLBITS(decodeN,popN,pushN) ((decodeN) | ((popN) << 4) | ((pushN) << 6)) #define RDI_DECODEN_FROM_CTRLBITS(ctrlbits) ((ctrlbits) & 0xf) #define RDI_POPN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 4) & 0x3) @@ -779,8 +1001,8 @@ RDI_PROC RDI_U64 rdi_hash(RDI_U8 *ptr, RDI_U64 size); RDI_PROC RDI_U32 rdi_size_from_basic_type_kind(RDI_TypeKind kind); RDI_PROC RDI_U32 rdi_addr_size_from_arch(RDI_Arch arch); RDI_PROC RDI_EvalConversionKind rdi_eval_conversion_kind_from_typegroups(RDI_EvalTypeGroup in, RDI_EvalTypeGroup out); -RDI_PROC RDI_U8 *rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out); -RDI_PROC RDI_S32 rdi_eval_op_typegroup_are_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group); +RDI_PROC RDI_S32 rdi_eval_op_typegroup_are_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group); +RDI_PROC RDI_U8 *rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out); extern RDI_U8 rdi_eval_op_ctrlbits_table[45]; diff --git a/src/rdi_format/rdi_format.mdesk b/src/rdi_format/rdi_format.mdesk index 8a560b4f..ed078778 100644 --- a/src/rdi_format/rdi_format.mdesk +++ b/src/rdi_format/rdi_format.mdesk @@ -137,7 +137,6 @@ RDI_DataSectionTable: {NameMaps 0x0018 ""} {PRIMARY_COUNT 0x0019 ""} {SECONDARY 0x80000000 ""} - {SKIP `RDI_DataSectionTag_SECONDARY|0x0000` ""} {LineInfoVoffs `RDI_DataSectionTag_SECONDARY|0x0001` ""} {LineInfoData `RDI_DataSectionTag_SECONDARY|0x0002` ""} {LineInfoColumns `RDI_DataSectionTag_SECONDARY|0x0003` ""} @@ -175,6 +174,16 @@ RDI_DataSectionMemberTable: @expand(RDI_DataSectionEncodingTable a) `$(a.name .. =>10) = $(a.value)`, } +@xlist RDI_DataSectionTag_XList: +{ + @expand(RDI_DataSectionTable a) `$(a.name)`; +} + +@xlist RDI_DataSectionEncoding_XList: +{ + @expand(RDI_DataSectionEncodingTable a) `$(a.name)`; +} + @struct RDI_DataSection: { @expand(RDI_DataSectionMemberTable a) `$(a.type) $(a.name)` @@ -359,6 +368,11 @@ RDI_RegCodeX64Table: @expand(RDI_ArchTable a) `$(a.name .. =>10) = $(a.value)` } +@xlist RDI_Arch_XList: +{ + @expand(RDI_ArchTable a) `$(a.name)`; +} + @enum(RDI_U8) RDI_RegCode: {nil} @enum(RDI_U8) RDI_RegCodeX86: @@ -415,6 +429,11 @@ RDI_BinarySectionMemberTable: @expand(RDI_BinarySectionFlagTable a) `$(a.name .. =>10) = $(a.value)`; } +@xlist RDI_BinarySectionFlags_XList: +{ + @expand(RDI_ArchTable a) `$(a.name)`; +} + @struct RDI_BinarySection: { @expand(RDI_BinarySectionMemberTable a) `$(a.type) $(a.name)` @@ -529,6 +548,11 @@ RDI_LanguageTable: @expand(RDI_LanguageTable a) `$(a.name .. =>10) = $(a.value)` } +@xlist RDI_Language_XList: +{ + @expand(RDI_LanguageTable a) `$(a.name)`; +} + //////////////////////////////// //~ rjf: Type Info Tables @@ -673,6 +697,16 @@ RDI_EnumMemberTable: @expand(RDI_TypeModifierFlagTable a) `$(a.name .. =>20) = $(a.value)`, } +@xlist RDI_TypeKind_XList: +{ + @expand(RDI_TypeKindTable a) `$(a.name)`; +} + +@xlist RDI_TypeModifierFlags_XList: +{ + @expand(RDI_TypeModifierFlagTable a) `$(a.name)`; +} + @struct RDI_TypeNode: { @expand(RDI_TypeNodeMemberTable a) `$(a.type_lhs) $(a.name)$(a.type_rhs)` @@ -722,6 +756,11 @@ RDI_EnumMemberTable: @expand(RDI_UDTFlagTable a) `$(a.name .. =>20) = $(a.value)` } +@xlist RDI_UDTFlag_XList: +{ + @expand(RDI_UDTFlagTable a) `$(a.name)`; +} + @struct RDI_UDT: { @expand(RDI_UDTMemberTable a) `$(a.type) $(a.name)` @@ -732,6 +771,11 @@ RDI_EnumMemberTable: @expand(RDI_MemberKindTable a) `$(a.name .. =>25) = $(a.value)` } +@xlist RDI_MemberKind_XList: +{ + @expand(RDI_MemberKindTable a) `$(a.name)`; +} + @struct RDI_Member: { @expand(RDI_MemberMemberTable a) `$(a.type) $(a.name)` @@ -874,6 +918,21 @@ RDI_LocationRegMemberTable: @expand(RDI_LocationKindTable a) `$(a.name .. =>20) = $(a.value)` } +@xlist RDI_LinkFlags_XList: +{ + @expand(RDI_LinkFlagTable a) `$(a.name)`; +} + +@xlist RDI_LocalKind_XList: +{ + @expand(RDI_LocalKindTable a) `$(a.name)`; +} + +@xlist RDI_LocationKind_XList: +{ + @expand(RDI_LocationKindTable a) `$(a.name)`; +} + @struct RDI_GlobalVariable: { @expand(RDI_GlobalVariableMemberTable a) `$(a.type) $(a.name)` @@ -1011,6 +1070,21 @@ RDI_EvalConversionKindTable: @expand(RDI_EvalConversionKindTable a) `$(a.name .. =>20) = $(a.value)` } +@xlist RDI_EvalOp_XList: +{ + @expand(RDI_EvalOpTable a) `$(a.name)`; +} + +@xlist RDI_EvalTypeGroup_XList: +{ + @expand(RDI_EvalTypeGroupTable a) `$(a.name)`; +} + +@xlist RDI_EvalConversionKind_XList: +{ + @expand(RDI_EvalConversionKindTable a) `$(a.name)`; +} + @gen(enums) ``` #define RDI_EVAL_CTRLBITS(decodeN,popN,pushN) ((decodeN) | ((popN) << 4) | ((pushN) << 6)) @@ -1083,6 +1157,11 @@ RDI_NameMapNodeMemberTable: @expand(RDI_NameMapKindTable a) `$(a.name .. =>20) = $(a.value)` } +@xlist RDI_NameMapKind_XList: +{ + @expand(RDI_NameMapKindTable a) `$(a.name)`; +} + @struct RDI_NameMap: { @expand(RDI_NameMapMemberTable a) `$(a.type) $(a.val)` @@ -1107,8 +1186,8 @@ RDI_PROC RDI_U64 rdi_hash(RDI_U8 *ptr, RDI_U64 size); RDI_PROC RDI_U32 rdi_size_from_basic_type_kind(RDI_TypeKind kind); RDI_PROC RDI_U32 rdi_addr_size_from_arch(RDI_Arch arch); RDI_PROC RDI_EvalConversionKind rdi_eval_conversion_kind_from_typegroups(RDI_EvalTypeGroup in, RDI_EvalTypeGroup out); -RDI_PROC RDI_U8 *rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out); RDI_PROC RDI_S32 rdi_eval_op_typegroup_are_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group); +RDI_PROC RDI_U8 *rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out); ``` @gen(functions) @c_file @@ -1168,16 +1247,6 @@ rdi_eval_conversion_kind_from_typegroups(RDI_EvalTypeGroup in, RDI_EvalTypeGroup } ``` -@gen(functions) @c_file -``` -RDI_PROC RDI_U8 * -rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out) -{ - *size_out = rdi_eval_conversion_kind_message_string_table[kind].size; - return rdi_eval_conversion_kind_message_string_table[kind].str; -} -``` - @gen(functions) @c_file ``` RDI_PROC RDI_S32 @@ -1211,3 +1280,13 @@ rdi_eval_op_typegroup_are_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group) return result; } ``` + +@gen(functions) @c_file +``` +RDI_PROC RDI_U8 * +rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out) +{ + *size_out = rdi_eval_conversion_kind_message_string_table[kind].size; + return rdi_eval_conversion_kind_message_string_table[kind].str; +} +``` diff --git a/src/rdi_format_local/rdi_format_local.c b/src/rdi_format_local/rdi_format_local.c index e860c025..5b6f41be 100644 --- a/src/rdi_format_local/rdi_format_local.c +++ b/src/rdi_format_local/rdi_format_local.c @@ -2,7 +2,7 @@ // Licensed under the MIT license (https://opensource.org/license/mit/) //#include "lib_rdi_format/rdi_format.c" -#include "rdi_format/generated/rdi_format.c" +#include "rdi_format/lib/rdi_format.c" #include "lib_rdi_format/rdi_format_parse.c" internal void diff --git a/src/rdi_format_local/rdi_format_local.h b/src/rdi_format_local/rdi_format_local.h index 3042e452..e89b41db 100644 --- a/src/rdi_format_local/rdi_format_local.h +++ b/src/rdi_format_local/rdi_format_local.h @@ -5,7 +5,7 @@ #define RDI_FORMAT_LOCAL_H //#include "lib_rdi_format/rdi_format.h" -#include "rdi_format/generated/rdi_format.h" +#include "rdi_format/lib/rdi_format.h" #include "lib_rdi_format/rdi_format_parse.h" internal void rdi_decompress_parsed(U8 *decompressed_data, U64 decompressed_size, RDI_Parsed *og_rdi);