mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-24 00:17:52 +00:00
further progress on metacode-driven generation of rdi headers; metaprogram xlist generation; getting rdi_dump up-to-speed
This commit is contained in:
+72
-62
@@ -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("<invalid-arch>"); 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("<invalid RDI_DataSectionTag>");
|
||||
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("<invalid-type-kind>"); 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("<invalid-member-kind>"); 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("<invalid RDI_Arch>");
|
||||
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("<invalid-local-kind>"); 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("<invalid RDI_Language>");
|
||||
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("<invalid RDI_TypeKind>");
|
||||
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("<invalid RDI_MemberKind>");
|
||||
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("<invalid RDI_LocalKind>");
|
||||
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));
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user