mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-13 07:32:23 -07:00
c34d7e2062
merged leaf id kinds into main leaf enum, renamed public flags enum, removed type dependency on PDB string table and PDB coff section array
631 lines
35 KiB
Plaintext
631 lines
35 KiB
Plaintext
////////////////////////////////
|
|
//~ rjf: CV Numerics
|
|
|
|
@table(name val)
|
|
CV_NumericKindTable:
|
|
{
|
|
{CHAR 0x8000}
|
|
{SHORT 0x8001}
|
|
{USHORT 0x8002}
|
|
{LONG 0x8003}
|
|
{ULONG 0x8004}
|
|
{FLOAT32 0x8005}
|
|
{FLOAT64 0x8006}
|
|
{FLOAT80 0x8007}
|
|
{FLOAT128 0x8008}
|
|
{QUADWORD 0x8009}
|
|
{UQUADWORD 0x800a}
|
|
{FLOAT48 0x800b}
|
|
{COMPLEX32 0x800c}
|
|
{COMPLEX64 0x800d}
|
|
{COMPLEX80 0x800e}
|
|
{COMPLEX128 0x800f}
|
|
{VARSTRING 0x8010}
|
|
{OCTWORD 0x8017}
|
|
{UOCTWORD 0x8018}
|
|
{DECIMAL 0x8019}
|
|
{DATE 0x801a}
|
|
{UTF8STRING 0x801b}
|
|
{FLOAT16 0x801c}
|
|
}
|
|
|
|
@enum(U16) CV_NumericKind:
|
|
{
|
|
@expand(CV_NumericKindTable a) `$(a.name) = $(a.val)`
|
|
}
|
|
|
|
@enum2string_switch(CV_NumericKind)
|
|
cv_string_from_numeric_kind:
|
|
{
|
|
@expand(CV_NumericKindTable a) `case CV_NumericKind_$(a.name):{result = str8_lit("$(a.name)");}break`;
|
|
}
|
|
|
|
////////////////////////////////
|
|
//~ rjf: CV Architectures
|
|
|
|
@table(name val)
|
|
CV_ArchTable:
|
|
{
|
|
{8080 0x00}
|
|
{8086 0x01}
|
|
{80286 0x02}
|
|
{80386 0x03}
|
|
{80486 0x04}
|
|
{PENTIUM 0x05}
|
|
{PENTIUMII 0x06}
|
|
{PENTIUMIII 0x07}
|
|
{MIPS 0x10}
|
|
{MIPS16 0x11}
|
|
{MIPS32 0x12}
|
|
{MIPS64 0x13}
|
|
{MIPSI 0x14}
|
|
{MIPSII 0x15}
|
|
{MIPSIII 0x16}
|
|
{MIPSIV 0x17}
|
|
{MIPSV 0x18}
|
|
{M68000 0x20}
|
|
{M68010 0x21}
|
|
{M68020 0x22}
|
|
{M68030 0x23}
|
|
{M68040 0x24}
|
|
{ALPHA 0x30}
|
|
{ALPHA_21164 0x31}
|
|
{ALPHA_21164A 0x32}
|
|
{ALPHA_21264 0x33}
|
|
{ALPHA_21364 0x34}
|
|
{PPC601 0x40}
|
|
{PPC603 0x41}
|
|
{PPC604 0x42}
|
|
{PPC620 0x43}
|
|
{PPCFP 0x44}
|
|
{PPCBE 0x45}
|
|
{SH3 0x50}
|
|
{SH3E 0x51}
|
|
{SH3DSP 0x52}
|
|
{SH4 0x53}
|
|
{SHMEDIA 0x54}
|
|
{ARM3 0x60}
|
|
{ARM4 0x61}
|
|
{ARM4T 0x62}
|
|
{ARM5 0x63}
|
|
{ARM5T 0x64}
|
|
{ARM6 0x65}
|
|
{ARM_XMAC 0x66}
|
|
{ARM_WMMX 0x67}
|
|
{ARM7 0x68}
|
|
{OMNI 0x70}
|
|
{IA64_1 0x80}
|
|
{IA64_2 0x81}
|
|
{CEE 0x90}
|
|
{AM33 0xA0}
|
|
{M32R 0xB0}
|
|
{TRICORE 0xC0}
|
|
{X64 0xD0}
|
|
{EBC 0xE0}
|
|
{THUMB 0xF0}
|
|
{ARMNT 0xF4}
|
|
{ARM64 0xF6}
|
|
{D3D11_SHADER 0x100}
|
|
}
|
|
|
|
@enum(U16) CV_Arch:
|
|
{
|
|
@expand(CV_ArchTable a) `$(a.name) = $(a.val)`,
|
|
`IA64 = CV_Arch_IA64_1`,
|
|
`PENTIUMPRO = CV_Arch_PENTIUMII`,
|
|
`MIPSR4000 = CV_Arch_MIPS`,
|
|
`ALPHA_21064 = CV_Arch_ALPHA`,
|
|
`AMD64 = CV_Arch_X64`,
|
|
}
|
|
|
|
@enum2string_switch(CV_Arch)
|
|
cv_string_from_arch:
|
|
{
|
|
@expand(CV_ArchTable a) `case CV_Arch_$(a.name):{result = str8_lit("$(a.name)");}break`;
|
|
}
|
|
|
|
////////////////////////////////
|
|
//~ rjf: CV Registers
|
|
|
|
@table(name val) CV_AllRegTable:
|
|
{
|
|
{ERR 30000}
|
|
{TEB 30001}
|
|
{TIMER 30002}
|
|
{EFAD1 30003}
|
|
{EFAD2 30004}
|
|
{EFAD3 30005}
|
|
{VFRAME 30006}
|
|
{HANDLE 30007}
|
|
{PARAMS 30008}
|
|
{LOCALS 30009}
|
|
{TID 30010}
|
|
{ENV 30011}
|
|
{CMDLN 30012}
|
|
}
|
|
|
|
@enum(U16) CV_AllReg:
|
|
{
|
|
@expand(CV_AllRegTable a) `$(a.name) = $(a.val)`
|
|
}
|
|
|
|
////////////////////////////////
|
|
//~ rjf: CV Sym Kinds
|
|
|
|
@table(name header_type_name val) CV_SymKindTable:
|
|
{
|
|
{COMPILE Compile 0x0001}
|
|
{REGISTER_16t - 0x0002}
|
|
{CONSTANT_16t - 0x0003}
|
|
{UDT_16t - 0x0004}
|
|
{SSEARCH StartSearch 0x0005}
|
|
{END - 0x0006}
|
|
{SKIP - 0x0007}
|
|
{CVRESERVE - 0x0008}
|
|
{OBJNAME_ST - 0x0009}
|
|
{ENDARG - 0x000a}
|
|
{COBOLUDT_16t - 0x000b}
|
|
{MANYREG_16t - 0x000c}
|
|
{RETURN Return 0x000d}
|
|
{ENTRYTHIS - 0x000e}
|
|
{BPREL16 - 0x0100}
|
|
{LDATA16 - 0x0101}
|
|
{GDATA16 - 0x0102}
|
|
{PUB16 - 0x0103}
|
|
{LPROC16 - 0x0104}
|
|
{GPROC16 - 0x0105}
|
|
{THUNK16 - 0x0106}
|
|
{BLOCK16 - 0x0107}
|
|
{WITH16 - 0x0108}
|
|
{LABEL16 - 0x0109}
|
|
{CEXMODEL16 - 0x010a}
|
|
{VFTABLE16 - 0x010b}
|
|
{REGREL16 - 0x010c}
|
|
{BPREL32_16t - 0x0200}
|
|
{LDATA32_16t - 0x0201}
|
|
{GDATA32_16t - 0x0202}
|
|
{PUB32_16t - 0x0203}
|
|
{LPROC32_16t - 0x0204}
|
|
{GPROC32_16t - 0x0205}
|
|
{THUNK32_ST - 0x0206}
|
|
{BLOCK32_ST - 0x0207}
|
|
{WITH32_ST - 0x0208}
|
|
{LABEL32_ST - 0x0209}
|
|
{CEXMODEL32 - 0x020a}
|
|
{VFTABLE32_16t - 0x020b}
|
|
{REGREL32_16t - 0x020c}
|
|
{LTHREAD32_16t - 0x020d}
|
|
{GTHREAD32_16t - 0x020e}
|
|
{SLINK32 SLink32 0x020f}
|
|
{LPROCMIPS_16t - 0x0300}
|
|
{GPROCMIPS_16t - 0x0301}
|
|
{PROCREF_ST - 0x0400}
|
|
{DATAREF_ST - 0x0401}
|
|
{ALIGN - 0x0402}
|
|
{LPROCREF_ST - 0x0403}
|
|
{OEM OEM 0x0404}
|
|
{TI16_MAX - 0x1000}
|
|
{CONSTANT_ST - 0x1002}
|
|
{UDT_ST - 0x1003}
|
|
{COBOLUDT_ST - 0x1004}
|
|
{MANYREG_ST - 0x1005}
|
|
{BPREL32_ST - 0x1006}
|
|
{LDATA32_ST - 0x1007}
|
|
{GDATA32_ST - 0x1008}
|
|
{PUB32_ST - 0x1009}
|
|
{LPROC32_ST - 0x100a}
|
|
{GPROC32_ST - 0x100b}
|
|
{VFTABLE32 VPath32 0x100c}
|
|
{REGREL32_ST - 0x100d}
|
|
{LTHREAD32_ST - 0x100e}
|
|
{GTHREAD32_ST - 0x100f}
|
|
{LPROCMIPS_ST - 0x1010}
|
|
{GPROCMIPS_ST - 0x1011}
|
|
{FRAMEPROC Frameproc 0x1012}
|
|
{COMPILE2_ST - 0x1013}
|
|
{MANYREG2_ST - 0x1014}
|
|
{LPROCIA64_ST - 0x1015}
|
|
{GPROCIA64_ST - 0x1016}
|
|
{LOCALSLOT_ST - 0x1017}
|
|
{PARAMSLOT_ST - 0x1018}
|
|
{ANNOTATION Annotation 0x1019}
|
|
{GMANPROC_ST - 0x101a}
|
|
{LMANPROC_ST - 0x101b}
|
|
{RESERVED1 - 0x101c}
|
|
{RESERVED2 - 0x101d}
|
|
{RESERVED3 - 0x101e}
|
|
{RESERVED4 - 0x101f}
|
|
{LMANDATA_ST - 0x1020}
|
|
{GMANDATA_ST - 0x1021}
|
|
{MANFRAMEREL_ST - 0x1022}
|
|
{MANREGISTER_ST - 0x1023}
|
|
{MANSLOT_ST - 0x1024}
|
|
{MANMANYREG_ST - 0x1025}
|
|
{MANREGREL_ST - 0x1026}
|
|
{MANMANYREG2_ST - 0x1027}
|
|
{MANTYPREF - 0x1028}
|
|
{UNAMESPACE_ST - 0x1029}
|
|
{ST_MAX - 0x1100}
|
|
{OBJNAME ObjName 0x1101}
|
|
{THUNK32 Thunk32 0x1102}
|
|
{BLOCK32 Block32 0x1103}
|
|
{WITH32 - 0x1104}
|
|
{LABEL32 Label32 0x1105}
|
|
{REGISTER Register 0x1106}
|
|
{CONSTANT Constant 0x1107}
|
|
{UDT UDT 0x1108}
|
|
{COBOLUDT - 0x1109}
|
|
{MANYREG Manyreg 0x110a}
|
|
{BPREL32 BPRel32 0x110b}
|
|
{LDATA32 Data32 0x110c}
|
|
{GDATA32 Data32 0x110d}
|
|
{PUB32 Pub32 0x110e}
|
|
{LPROC32 Proc32 0x110f}
|
|
{GPROC32 Proc32 0x1110}
|
|
{REGREL32 Regrel32 0x1111}
|
|
{LTHREAD32 Thread32 0x1112}
|
|
{GTHREAD32 Thread32 0x1113}
|
|
{LPROCMIPS - 0x1114}
|
|
{GPROCMIPS - 0x1115}
|
|
{COMPILE2 Compile2 0x1116}
|
|
{MANYREG2 Manyreg2 0x1117}
|
|
{LPROCIA64 - 0x1118}
|
|
{GPROCIA64 - 0x1119}
|
|
{LOCALSLOT Slot 0x111a}
|
|
{PARAMSLOT - 0x111b}
|
|
{LMANDATA - 0x111c}
|
|
{GMANDATA - 0x111d}
|
|
{MANFRAMEREL AttrFrameRel 0x111e}
|
|
{MANREGISTER AttrReg 0x111f}
|
|
{MANSLOT - 0x1120}
|
|
{MANMANYREG AttrManyReg 0x1121}
|
|
{MANREGREL AttrRegRel 0x1122}
|
|
{MANMANYREG2 - 0x1123}
|
|
{UNAMESPACE UNamespace 0x1124}
|
|
{PROCREF Ref2 0x1125}
|
|
{DATAREF Ref2 0x1126}
|
|
{LPROCREF Ref2 0x1127}
|
|
{ANNOTATIONREF - 0x1128}
|
|
{TOKENREF - 0x1129}
|
|
{GMANPROC - 0x112a}
|
|
{LMANPROC - 0x112b}
|
|
{TRAMPOLINE Trampoline 0x112c}
|
|
{MANCONSTANT - 0x112d}
|
|
{ATTR_FRAMEREL AttrFrameRel 0x112e}
|
|
{ATTR_REGISTER AttrReg 0x112f}
|
|
{ATTR_REGREL AttrRegRel 0x1130}
|
|
{ATTR_MANYREG AttrManyReg 0x1131}
|
|
{SEPCODE Sepcode 0x1132}
|
|
{DEFRANGE_2005 - 0x1134}
|
|
{DEFRANGE2_2005 - 0x1135}
|
|
{SECTION Section 0x1136}
|
|
{COFFGROUP CoffGroup 0x1137}
|
|
{EXPORT Export 0x1138}
|
|
{CALLSITEINFO CallSiteInfo 0x1139}
|
|
{FRAMECOOKIE FrameCookie 0x113a}
|
|
{DISCARDED Discarded 0x113b}
|
|
{COMPILE3 Compile3 0x113c}
|
|
{ENVBLOCK EnvBlock 0x113d}
|
|
{LOCAL Local 0x113e}
|
|
{DEFRANGE - 0x113f}
|
|
{DEFRANGE_SUBFIELD DefrangeSubfield 0x1140}
|
|
{DEFRANGE_REGISTER DefrangeRegister 0x1141}
|
|
{DEFRANGE_FRAMEPOINTER_REL DefrangeFramepointerRel 0x1142}
|
|
{DEFRANGE_SUBFIELD_REGISTER DefrangeSubfieldRegister 0x1143}
|
|
{DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE DefrangeFramepointerRelFullScope 0x1144}
|
|
{DEFRANGE_REGISTER_REL DefrangeRegisterRel 0x1145}
|
|
{LPROC32_ID - 0x1146}
|
|
{GPROC32_ID - 0x1147}
|
|
{LPROCMIPS_ID - 0x1148}
|
|
{GPROCMIPS_ID - 0x1149}
|
|
{LPROCIA64_ID - 0x114a}
|
|
{GPROCIA64_ID - 0x114b}
|
|
{BUILDINFO BuildInfo 0x114c}
|
|
{INLINESITE InlineSite 0x114d}
|
|
{INLINESITE_END - 0x114e}
|
|
{PROC_ID_END - 0x114f}
|
|
{DEFRANGE_HLSL - 0x1150}
|
|
{GDATA_HLSL - 0x1151}
|
|
{LDATA_HLSL - 0x1152}
|
|
{FILESTATIC FileStatic 0x1153}
|
|
{LPROC32_DPC - 0x1155}
|
|
{LPROC32_DPC_ID - 0x1156}
|
|
{DEFRANGE_DPC_PTR_TAG - 0x1157}
|
|
{DPC_SYM_TAG_MAP - 0x1158}
|
|
{ARMSWITCHTABLE - 0x1159}
|
|
{CALLEES FunctionList 0x115a}
|
|
{CALLERS FunctionList 0x115b}
|
|
{POGODATA PogoInfo 0x115c}
|
|
{INLINESITE2 InlineSite2 0x115d}
|
|
{HEAPALLOCSITE HeapAllocSite 0x115e}
|
|
{MOD_TYPEREF ModTypeRef 0x115f}
|
|
{REF_MINIPDB RefMiniPdb 0x1160}
|
|
{PDBMAP - 0x1161}
|
|
{GDATA_HLSL32 - 0x1162}
|
|
{LDATA_HLSL32 - 0x1163}
|
|
{GDATA_HLSL32_EX - 0x1164}
|
|
{LDATA_HLSL32_EX - 0x1165}
|
|
{FASTLINK FastLink 0x1167}
|
|
{INLINEES Inlinees 0x1168}
|
|
}
|
|
|
|
@enum(U16) CV_SymKind:
|
|
{
|
|
@expand(CV_SymKindTable a) `$(a.name) = $(a.val)`
|
|
}
|
|
|
|
@enum2string_switch(CV_SymKind)
|
|
cv_string_from_sym_kind:
|
|
{
|
|
@expand(CV_SymKindTable a) `case CV_SymKind_$(a.name):{result = str8_lit("$(a.name)");}break`;
|
|
}
|
|
|
|
@gen(functions)
|
|
{
|
|
`internal U64 cv_header_struct_size_from_sym_kind(CV_SymKind v);`;
|
|
}
|
|
|
|
@gen(functions) @c_file
|
|
{
|
|
`internal U64`;
|
|
`cv_header_struct_size_from_sym_kind(CV_SymKind v)`;
|
|
`{`;
|
|
`U64 result = 0;`;
|
|
`switch(v)`;
|
|
`{`;
|
|
`default:{}break;`;
|
|
@expand(CV_SymKindTable a) `$(a.header_type_name != "-" -> "case CV_SymKind_"..a.name..":{result = sizeof(CV_Sym"..a.header_type_name..");}break;")`;
|
|
`}`;
|
|
`return result;`;
|
|
`}`;
|
|
}
|
|
|
|
////////////////////////////////
|
|
//~ rjf: CV Basic Types
|
|
|
|
@table(name val type_name)
|
|
CV_BasicTypeTable:
|
|
{
|
|
{NOTYPE 0x00 "" }
|
|
{ABS 0x01 "" }
|
|
{SEGMENT 0x02 "" }
|
|
{VOID 0x03 "void" }
|
|
{CURRENCY 0x04 "" }
|
|
{NBASICSTR 0x05 "" }
|
|
{FBASICSTR 0x06 "" }
|
|
{NOTTRANS 0x07 "" }
|
|
{HRESULT 0x08 "HRESULT" }
|
|
{CHAR 0x10 "char" }
|
|
{SHORT 0x11 "S16" }
|
|
{LONG 0x12 "S32" }
|
|
{QUAD 0x13 "S64" }
|
|
{OCT 0x14 "S128" }
|
|
{UCHAR 0x20 "UCHAR" }
|
|
{USHORT 0x21 "U16" }
|
|
{ULONG 0x22 "U32" }
|
|
{UQUAD 0x23 "U64" }
|
|
{UOCT 0x24 "U128" }
|
|
{BOOL8 0x30 "B8" }
|
|
{BOOL16 0x31 "B16" }
|
|
{BOOL32 0x32 "B32" }
|
|
{BOOL64 0x33 "B64" }
|
|
{FLOAT32 0x40 "F32" }
|
|
{FLOAT64 0x41 "F64" }
|
|
{FLOAT80 0x42 "F80" }
|
|
{FLOAT128 0x43 "F128" }
|
|
{FLOAT48 0x44 "F48" }
|
|
{FLOAT32PP 0x45 "F32PP" }
|
|
{FLOAT16 0x46 "F16" }
|
|
{COMPLEX32 0x50 "ComplexF32" }
|
|
{COMPLEX64 0x51 "ComplexF64" }
|
|
{COMPLEX80 0x52 "ComplexF80" }
|
|
{COMPLEX128 0x53 "ComplexF128" }
|
|
{BIT 0x60 "" }
|
|
{PASCHAR 0x61 "" }
|
|
{BOOL32FF 0x62 "B32FF" }
|
|
{INT8 0x68 "S8" }
|
|
{UINT8 0x69 "U8" }
|
|
{RCHAR 0x70 "char" }
|
|
{WCHAR 0x71 "WCHAR" }
|
|
{INT16 0x72 "S16" }
|
|
{UINT16 0x73 "U16" }
|
|
{INT32 0x74 "S32" }
|
|
{UINT32 0x75 "U32" }
|
|
{INT64 0x76 "S64" }
|
|
{UINT64 0x77 "U64" }
|
|
{INT128 0x78 "S128" }
|
|
{UINT128 0x79 "U128" }
|
|
{CHAR16 0x7a "CHAR16" }
|
|
{CHAR32 0x7b "CHAR32" }
|
|
{CHAR8 0x7c "char" }
|
|
{PTR 0xf0 "PTR" }
|
|
}
|
|
|
|
@enum(U8) CV_BasicType:
|
|
{
|
|
@expand(CV_BasicTypeTable a) `$(a.name) = $(a.val)`
|
|
}
|
|
|
|
@enum2string_switch(CV_BasicType) cv_string_from_basic_type:
|
|
{
|
|
@expand(CV_BasicTypeTable a) `case CV_BasicType_$(a.name):{result = str8_lit("$(a.name)");}break`
|
|
}
|
|
|
|
@enum2string_switch(CV_BasicType) cv_type_name_from_basic_type:
|
|
{
|
|
@expand(CV_BasicTypeTable a) `case CV_BasicType_$(a.name):{result = str8_lit("$(a.type_name)");}break`
|
|
}
|
|
|
|
////////////////////////////////
|
|
//~ rjf: CV Leaf Kinds
|
|
|
|
@table(name header_type_name val)
|
|
CV_LeafKindTable:
|
|
{
|
|
{NOTYPE - 0x0000}
|
|
{MODIFIER_16t - 0x0001}
|
|
{POINTER_16t - 0x0002}
|
|
{ARRAY_16t - 0x0003}
|
|
{CLASS_16t - 0x0004}
|
|
{STRUCTURE_16t - 0x0005}
|
|
{UNION_16t - 0x0006}
|
|
{ENUM_16t - 0x0007}
|
|
{PROCEDURE_16t - 0x0008}
|
|
{MFUNCTION_16t - 0x0009}
|
|
{VTSHAPE VTShape 0x000a}
|
|
{COBOL0_16t - 0x000b}
|
|
{COBOL1 - 0x000c}
|
|
{BARRAY_16t - 0x000d}
|
|
{LABEL Label 0x000e}
|
|
{NULL - 0x000f}
|
|
{NOTTRAN - 0x0010}
|
|
{DIMARRAY_16t - 0x0011}
|
|
{VFTPATH_16t - 0x0012}
|
|
{PRECOMP_16t - 0x0013}
|
|
{ENDPRECOMP - 0x0014}
|
|
{OEM_16t - 0x0015}
|
|
{TYPESERVER_ST - 0x0016}
|
|
{SKIP_16t - 0x0200}
|
|
{ARGLIST_16t - 0x0201}
|
|
{DEFARG_16t - 0x0202}
|
|
{LIST - 0x0203}
|
|
{FIELDLIST_16t - 0x0204}
|
|
{DERIVED_16t - 0x0205}
|
|
{BITFIELD_16t - 0x0206}
|
|
{METHODLIST_16t - 0x0207}
|
|
{DIMCONU_16t - 0x0208}
|
|
{DIMCONLU_16t - 0x0209}
|
|
{DIMVARU_16t - 0x020a}
|
|
{DIMVARLU_16t - 0x020b}
|
|
{REFSYM - 0x020c}
|
|
{BCLASS_16t - 0x0400}
|
|
{VBCLASS_16t - 0x0401}
|
|
{IVBCLASS_16t - 0x0402}
|
|
{ENUMERATE_ST - 0x0403}
|
|
{FRIENDFCN_16t - 0x0404}
|
|
{INDEX_16t - 0x0405}
|
|
{MEMBER_16t - 0x0406}
|
|
{STMEMBER_16t - 0x0407}
|
|
{METHOD_16t - 0x0408}
|
|
{NESTTYPE_16t - 0x0409}
|
|
{VFUNCTAB_16t - 0x040a}
|
|
{FRIENDCLS_16t - 0x040b}
|
|
{ONEMETHOD_16t - 0x040c}
|
|
{VFUNCOFF_16t - 0x040d}
|
|
{TI16_MAX - 0x1000}
|
|
{MODIFIER Modifier 0x1001}
|
|
{POINTER Pointer 0x1002}
|
|
{ARRAY_ST - 0x1003}
|
|
{CLASS_ST - 0x1004}
|
|
{STRUCTURE_ST - 0x1005}
|
|
{UNION_ST - 0x1006}
|
|
{ENUM_ST - 0x1007}
|
|
{PROCEDURE Procedure 0x1008}
|
|
{MFUNCTION MFunction 0x1009}
|
|
{COBOL0 - 0x100a}
|
|
{BARRAY - 0x100b}
|
|
{DIMARRAY_ST - 0x100c}
|
|
{VFTPATH VFPath 0x100d}
|
|
{PRECOMP_ST - 0x100e}
|
|
{OEM - 0x100f}
|
|
{ALIAS_ST - 0x1010}
|
|
{OEM2 - 0x1011}
|
|
{SKIP Skip 0x1200}
|
|
{ARGLIST ArgList 0x1201}
|
|
{DEFARG_ST - 0x1202}
|
|
{FIELDLIST - 0x1203}
|
|
{DERIVED - 0x1204}
|
|
{BITFIELD BitField 0x1205}
|
|
{METHODLIST MethodListMember 0x1206}
|
|
{DIMCONU - 0x1207}
|
|
{DIMCONLU - 0x1208}
|
|
{DIMVARU - 0x1209}
|
|
{DIMVARLU - 0x120a}
|
|
{BCLASS BClass 0x1400}
|
|
{VBCLASS VBClass 0x1401}
|
|
{IVBCLASS - 0x1402}
|
|
{FRIENDFCN_ST - 0x1403}
|
|
{INDEX Index 0x1404}
|
|
{MEMBER_ST - 0x1405}
|
|
{STMEMBER_ST - 0x1406}
|
|
{METHOD_ST - 0x1407}
|
|
{NESTTYPE_ST - 0x1408}
|
|
{VFUNCTAB VFuncTab 0x1409}
|
|
{FRIENDCLS - 0x140a}
|
|
{ONEMETHOD_ST - 0x140b}
|
|
{VFUNCOFF VFuncOff 0x140c}
|
|
{NESTTYPEEX_ST - 0x140d}
|
|
{MEMBERMODIFY_ST - 0x140e}
|
|
{MANAGED_ST - 0x140f}
|
|
{ST_MAX - 0x1500}
|
|
{TYPESERVER TypeServer 0x1501}
|
|
{ENUMERATE Enumerate 0x1502}
|
|
{ARRAY Array 0x1503}
|
|
{CLASS Struct 0x1504}
|
|
{STRUCTURE Struct 0x1505}
|
|
{UNION Union 0x1506}
|
|
{ENUM Enum 0x1507}
|
|
{DIMARRAY - 0x1508}
|
|
{PRECOMP PreComp 0x1509}
|
|
{ALIAS Alias 0x150a}
|
|
{DEFARG - 0x150b}
|
|
{FRIENDFCN - 0x150c}
|
|
{MEMBER Member 0x150d}
|
|
{STMEMBER StMember 0x150e}
|
|
{METHOD Method 0x150f}
|
|
{NESTTYPE NestType 0x1510}
|
|
{ONEMETHOD OneMethod 0x1511}
|
|
{NESTTYPEEX NestTypeEx 0x1512}
|
|
{MEMBERMODIFY - 0x1513}
|
|
{MANAGED - 0x1514}
|
|
{TYPESERVER2 TypeServer2 0x1515}
|
|
{STRIDED_ARRAY - 0x1516}
|
|
{HLSL - 0x1517}
|
|
{MODIFIER_EX - 0x1518}
|
|
{INTERFACE Struct 0x1519}
|
|
{BINTERFACE - 0x151a}
|
|
{VECTOR - 0x151b}
|
|
{MATRIX - 0x151c}
|
|
{VFTABLE - 0x151d}
|
|
{FUNC_ID FuncId 0x1601}
|
|
{MFUNC_ID MFuncId 0x1602}
|
|
{BUILDINFO BuildInfo 0x1603}
|
|
{SUBSTR_LIST SubstrList 0x1604}
|
|
{STRING_ID StringId 0x1605}
|
|
{UDT_SRC_LINE UDTSrcLine 0x1606}
|
|
{UDT_MOD_SRC_LINE UDTModSrcLine 0x1607}
|
|
{CLASS2 Struct2 0x1608}
|
|
{STRUCT2 Struct2 0x1609}
|
|
}
|
|
|
|
@enum(U16) CV_LeafKind:
|
|
{
|
|
@expand(CV_LeafKindTable a) `$(a.name) = $(a.val)`;
|
|
}
|
|
|
|
@enum2string_switch(CV_LeafKind)
|
|
cv_string_from_leaf_kind:
|
|
{
|
|
@expand(CV_LeafKindTable a) `case CV_LeafKind_$(a.name):{result = str8_lit("$(a.name)");}break`;
|
|
}
|
|
|
|
@gen(functions)
|
|
{
|
|
`internal U64 cv_header_struct_size_from_leaf_kind(CV_LeafKind v);`;
|
|
}
|
|
|
|
@gen(functions) @c_file
|
|
{
|
|
`internal U64`;
|
|
`cv_header_struct_size_from_leaf_kind(CV_LeafKind v)`;
|
|
`{`;
|
|
`U64 result = 0;`;
|
|
`switch(v)`;
|
|
`{`;
|
|
`default:{}break;`;
|
|
@expand(CV_LeafKindTable a) `$(a.header_type_name != "-" -> "case CV_LeafKind_"..a.name..":{result = sizeof(CV_Leaf"..a.header_type_name..");}break;")`;
|
|
`}`;
|
|
`return result;`;
|
|
`}`;
|
|
}
|