From c62afbcf8341af03a672dc23d7e622e7d0a40d26 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Tue, 12 May 2026 18:25:18 -0700 Subject: [PATCH] normalize line endings in generated files --- src/codeview/generated/codeview.meta.c | 1436 ++++---- src/codeview/generated/codeview.meta.h | 1056 +++--- src/dbg_engine/generated/dbg_engine.meta.c | 416 +-- src/demon/generated/demon.meta.c | 84 +- src/demon/generated/demon.meta.h | 140 +- src/draw/generated/draw.meta.c | 34 +- src/draw/generated/draw.meta.h | 98 +- src/eval/generated/eval.meta.c | 544 +-- src/eval/generated/eval.meta.h | 362 +- src/lib_rdi/rdi.c | 710 ++-- src/lib_rdi/rdi.h | 2964 ++++++++--------- src/radbin/generated/radbin.meta.c | 44 +- src/radbin/generated/radbin.meta.h | 58 +- .../d3d11/generated/render_d3d11.meta.c | 138 +- .../d3d11/generated/render_d3d11.meta.h | 966 +++--- src/render/generated/render.meta.c | 136 +- src/render/generated/render.meta.h | 130 +- .../opengl/generated/render_opengl.meta.c | 76 +- .../opengl/generated/render_opengl.meta.h | 561 ++-- src/text/generated/text.meta.c | 916 ++--- src/text/generated/text.meta.h | 82 +- src/ui/generated/ui.meta.c | 424 +-- src/ui/generated/ui.meta.h | 816 ++--- 23 files changed, 6096 insertions(+), 6095 deletions(-) diff --git a/src/codeview/generated/codeview.meta.c b/src/codeview/generated/codeview.meta.c index 672e674a..2fcfaa11 100644 --- a/src/codeview/generated/codeview.meta.c +++ b/src/codeview/generated/codeview.meta.c @@ -1,718 +1,718 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -internal String8 -cv_string_from_numeric_kind(CV_NumericKind v) -{ -String8 result = str8_lit(""); -switch(v) -{ -default:{}break; -case CV_NumericKind_CHAR:{result = str8_lit("CHAR");}break; -case CV_NumericKind_SHORT:{result = str8_lit("SHORT");}break; -case CV_NumericKind_USHORT:{result = str8_lit("USHORT");}break; -case CV_NumericKind_LONG:{result = str8_lit("LONG");}break; -case CV_NumericKind_ULONG:{result = str8_lit("ULONG");}break; -case CV_NumericKind_FLOAT32:{result = str8_lit("FLOAT32");}break; -case CV_NumericKind_FLOAT64:{result = str8_lit("FLOAT64");}break; -case CV_NumericKind_FLOAT80:{result = str8_lit("FLOAT80");}break; -case CV_NumericKind_FLOAT128:{result = str8_lit("FLOAT128");}break; -case CV_NumericKind_QUADWORD:{result = str8_lit("QUADWORD");}break; -case CV_NumericKind_UQUADWORD:{result = str8_lit("UQUADWORD");}break; -case CV_NumericKind_FLOAT48:{result = str8_lit("FLOAT48");}break; -case CV_NumericKind_COMPLEX32:{result = str8_lit("COMPLEX32");}break; -case CV_NumericKind_COMPLEX64:{result = str8_lit("COMPLEX64");}break; -case CV_NumericKind_COMPLEX80:{result = str8_lit("COMPLEX80");}break; -case CV_NumericKind_COMPLEX128:{result = str8_lit("COMPLEX128");}break; -case CV_NumericKind_VARSTRING:{result = str8_lit("VARSTRING");}break; -case CV_NumericKind_OCTWORD:{result = str8_lit("OCTWORD");}break; -case CV_NumericKind_UOCTWORD:{result = str8_lit("UOCTWORD");}break; -case CV_NumericKind_DECIMAL:{result = str8_lit("DECIMAL");}break; -case CV_NumericKind_DATE:{result = str8_lit("DATE");}break; -case CV_NumericKind_UTF8STRING:{result = str8_lit("UTF8STRING");}break; -case CV_NumericKind_FLOAT16:{result = str8_lit("FLOAT16");}break; -} -return result; -} - -internal String8 -cv_string_from_arch(CV_Arch v) -{ -String8 result = str8_lit(""); -switch(v) -{ -default:{}break; -case CV_Arch_8080:{result = str8_lit("8080");}break; -case CV_Arch_8086:{result = str8_lit("8086");}break; -case CV_Arch_80286:{result = str8_lit("80286");}break; -case CV_Arch_80386:{result = str8_lit("80386");}break; -case CV_Arch_80486:{result = str8_lit("80486");}break; -case CV_Arch_PENTIUM:{result = str8_lit("PENTIUM");}break; -case CV_Arch_PENTIUMII:{result = str8_lit("PENTIUMII");}break; -case CV_Arch_PENTIUMIII:{result = str8_lit("PENTIUMIII");}break; -case CV_Arch_MIPS:{result = str8_lit("MIPS");}break; -case CV_Arch_MIPS16:{result = str8_lit("MIPS16");}break; -case CV_Arch_MIPS32:{result = str8_lit("MIPS32");}break; -case CV_Arch_MIPS64:{result = str8_lit("MIPS64");}break; -case CV_Arch_MIPSI:{result = str8_lit("MIPSI");}break; -case CV_Arch_MIPSII:{result = str8_lit("MIPSII");}break; -case CV_Arch_MIPSIII:{result = str8_lit("MIPSIII");}break; -case CV_Arch_MIPSIV:{result = str8_lit("MIPSIV");}break; -case CV_Arch_MIPSV:{result = str8_lit("MIPSV");}break; -case CV_Arch_M68000:{result = str8_lit("M68000");}break; -case CV_Arch_M68010:{result = str8_lit("M68010");}break; -case CV_Arch_M68020:{result = str8_lit("M68020");}break; -case CV_Arch_M68030:{result = str8_lit("M68030");}break; -case CV_Arch_M68040:{result = str8_lit("M68040");}break; -case CV_Arch_ALPHA:{result = str8_lit("ALPHA");}break; -case CV_Arch_ALPHA_21164:{result = str8_lit("ALPHA_21164");}break; -case CV_Arch_ALPHA_21164A:{result = str8_lit("ALPHA_21164A");}break; -case CV_Arch_ALPHA_21264:{result = str8_lit("ALPHA_21264");}break; -case CV_Arch_ALPHA_21364:{result = str8_lit("ALPHA_21364");}break; -case CV_Arch_PPC601:{result = str8_lit("PPC601");}break; -case CV_Arch_PPC603:{result = str8_lit("PPC603");}break; -case CV_Arch_PPC604:{result = str8_lit("PPC604");}break; -case CV_Arch_PPC620:{result = str8_lit("PPC620");}break; -case CV_Arch_PPCFP:{result = str8_lit("PPCFP");}break; -case CV_Arch_PPCBE:{result = str8_lit("PPCBE");}break; -case CV_Arch_SH3:{result = str8_lit("SH3");}break; -case CV_Arch_SH3E:{result = str8_lit("SH3E");}break; -case CV_Arch_SH3DSP:{result = str8_lit("SH3DSP");}break; -case CV_Arch_SH4:{result = str8_lit("SH4");}break; -case CV_Arch_SHMEDIA:{result = str8_lit("SHMEDIA");}break; -case CV_Arch_ARM3:{result = str8_lit("ARM3");}break; -case CV_Arch_ARM4:{result = str8_lit("ARM4");}break; -case CV_Arch_ARM4T:{result = str8_lit("ARM4T");}break; -case CV_Arch_ARM5:{result = str8_lit("ARM5");}break; -case CV_Arch_ARM5T:{result = str8_lit("ARM5T");}break; -case CV_Arch_ARM6:{result = str8_lit("ARM6");}break; -case CV_Arch_ARM_XMAC:{result = str8_lit("ARM_XMAC");}break; -case CV_Arch_ARM_WMMX:{result = str8_lit("ARM_WMMX");}break; -case CV_Arch_ARM7:{result = str8_lit("ARM7");}break; -case CV_Arch_OMNI:{result = str8_lit("OMNI");}break; -case CV_Arch_IA64_1:{result = str8_lit("IA64_1");}break; -case CV_Arch_IA64_2:{result = str8_lit("IA64_2");}break; -case CV_Arch_CEE:{result = str8_lit("CEE");}break; -case CV_Arch_AM33:{result = str8_lit("AM33");}break; -case CV_Arch_M32R:{result = str8_lit("M32R");}break; -case CV_Arch_TRICORE:{result = str8_lit("TRICORE");}break; -case CV_Arch_X64:{result = str8_lit("X64");}break; -case CV_Arch_EBC:{result = str8_lit("EBC");}break; -case CV_Arch_THUMB:{result = str8_lit("THUMB");}break; -case CV_Arch_ARMNT:{result = str8_lit("ARMNT");}break; -case CV_Arch_ARM64:{result = str8_lit("ARM64");}break; -case CV_Arch_D3D11_SHADER:{result = str8_lit("D3D11_SHADER");}break; -} -return result; -} - -internal String8 -cv_string_from_sym_kind(CV_SymKind v) -{ -String8 result = str8_lit(""); -switch(v) -{ -default:{}break; -case CV_SymKind_COMPILE:{result = str8_lit("COMPILE");}break; -case CV_SymKind_REGISTER_16t:{result = str8_lit("REGISTER_16t");}break; -case CV_SymKind_CONSTANT_16t:{result = str8_lit("CONSTANT_16t");}break; -case CV_SymKind_UDT_16t:{result = str8_lit("UDT_16t");}break; -case CV_SymKind_SSEARCH:{result = str8_lit("SSEARCH");}break; -case CV_SymKind_END:{result = str8_lit("END");}break; -case CV_SymKind_SKIP:{result = str8_lit("SKIP");}break; -case CV_SymKind_CVRESERVE:{result = str8_lit("CVRESERVE");}break; -case CV_SymKind_OBJNAME_ST:{result = str8_lit("OBJNAME_ST");}break; -case CV_SymKind_ENDARG:{result = str8_lit("ENDARG");}break; -case CV_SymKind_COBOLUDT_16t:{result = str8_lit("COBOLUDT_16t");}break; -case CV_SymKind_MANYREG_16t:{result = str8_lit("MANYREG_16t");}break; -case CV_SymKind_RETURN:{result = str8_lit("RETURN");}break; -case CV_SymKind_ENTRYTHIS:{result = str8_lit("ENTRYTHIS");}break; -case CV_SymKind_BPREL16:{result = str8_lit("BPREL16");}break; -case CV_SymKind_LDATA16:{result = str8_lit("LDATA16");}break; -case CV_SymKind_GDATA16:{result = str8_lit("GDATA16");}break; -case CV_SymKind_PUB16:{result = str8_lit("PUB16");}break; -case CV_SymKind_LPROC16:{result = str8_lit("LPROC16");}break; -case CV_SymKind_GPROC16:{result = str8_lit("GPROC16");}break; -case CV_SymKind_THUNK16:{result = str8_lit("THUNK16");}break; -case CV_SymKind_BLOCK16:{result = str8_lit("BLOCK16");}break; -case CV_SymKind_WITH16:{result = str8_lit("WITH16");}break; -case CV_SymKind_LABEL16:{result = str8_lit("LABEL16");}break; -case CV_SymKind_CEXMODEL16:{result = str8_lit("CEXMODEL16");}break; -case CV_SymKind_VFTABLE16:{result = str8_lit("VFTABLE16");}break; -case CV_SymKind_REGREL16:{result = str8_lit("REGREL16");}break; -case CV_SymKind_BPREL32_16t:{result = str8_lit("BPREL32_16t");}break; -case CV_SymKind_LDATA32_16t:{result = str8_lit("LDATA32_16t");}break; -case CV_SymKind_GDATA32_16t:{result = str8_lit("GDATA32_16t");}break; -case CV_SymKind_PUB32_16t:{result = str8_lit("PUB32_16t");}break; -case CV_SymKind_LPROC32_16t:{result = str8_lit("LPROC32_16t");}break; -case CV_SymKind_GPROC32_16t:{result = str8_lit("GPROC32_16t");}break; -case CV_SymKind_THUNK32_ST:{result = str8_lit("THUNK32_ST");}break; -case CV_SymKind_BLOCK32_ST:{result = str8_lit("BLOCK32_ST");}break; -case CV_SymKind_WITH32_ST:{result = str8_lit("WITH32_ST");}break; -case CV_SymKind_LABEL32_ST:{result = str8_lit("LABEL32_ST");}break; -case CV_SymKind_CEXMODEL32:{result = str8_lit("CEXMODEL32");}break; -case CV_SymKind_VFTABLE32_16t:{result = str8_lit("VFTABLE32_16t");}break; -case CV_SymKind_REGREL32_16t:{result = str8_lit("REGREL32_16t");}break; -case CV_SymKind_LTHREAD32_16t:{result = str8_lit("LTHREAD32_16t");}break; -case CV_SymKind_GTHREAD32_16t:{result = str8_lit("GTHREAD32_16t");}break; -case CV_SymKind_SLINK32:{result = str8_lit("SLINK32");}break; -case CV_SymKind_LPROCMIPS_16t:{result = str8_lit("LPROCMIPS_16t");}break; -case CV_SymKind_GPROCMIPS_16t:{result = str8_lit("GPROCMIPS_16t");}break; -case CV_SymKind_PROCREF_ST:{result = str8_lit("PROCREF_ST");}break; -case CV_SymKind_DATAREF_ST:{result = str8_lit("DATAREF_ST");}break; -case CV_SymKind_ALIGN:{result = str8_lit("ALIGN");}break; -case CV_SymKind_LPROCREF_ST:{result = str8_lit("LPROCREF_ST");}break; -case CV_SymKind_OEM:{result = str8_lit("OEM");}break; -case CV_SymKind_TI16_MAX:{result = str8_lit("TI16_MAX");}break; -case CV_SymKind_CONSTANT_ST:{result = str8_lit("CONSTANT_ST");}break; -case CV_SymKind_UDT_ST:{result = str8_lit("UDT_ST");}break; -case CV_SymKind_COBOLUDT_ST:{result = str8_lit("COBOLUDT_ST");}break; -case CV_SymKind_MANYREG_ST:{result = str8_lit("MANYREG_ST");}break; -case CV_SymKind_BPREL32_ST:{result = str8_lit("BPREL32_ST");}break; -case CV_SymKind_LDATA32_ST:{result = str8_lit("LDATA32_ST");}break; -case CV_SymKind_GDATA32_ST:{result = str8_lit("GDATA32_ST");}break; -case CV_SymKind_PUB32_ST:{result = str8_lit("PUB32_ST");}break; -case CV_SymKind_LPROC32_ST:{result = str8_lit("LPROC32_ST");}break; -case CV_SymKind_GPROC32_ST:{result = str8_lit("GPROC32_ST");}break; -case CV_SymKind_VFTABLE32:{result = str8_lit("VFTABLE32");}break; -case CV_SymKind_REGREL32_ST:{result = str8_lit("REGREL32_ST");}break; -case CV_SymKind_LTHREAD32_ST:{result = str8_lit("LTHREAD32_ST");}break; -case CV_SymKind_GTHREAD32_ST:{result = str8_lit("GTHREAD32_ST");}break; -case CV_SymKind_LPROCMIPS_ST:{result = str8_lit("LPROCMIPS_ST");}break; -case CV_SymKind_GPROCMIPS_ST:{result = str8_lit("GPROCMIPS_ST");}break; -case CV_SymKind_FRAMEPROC:{result = str8_lit("FRAMEPROC");}break; -case CV_SymKind_COMPILE2_ST:{result = str8_lit("COMPILE2_ST");}break; -case CV_SymKind_MANYREG2_ST:{result = str8_lit("MANYREG2_ST");}break; -case CV_SymKind_LPROCIA64_ST:{result = str8_lit("LPROCIA64_ST");}break; -case CV_SymKind_GPROCIA64_ST:{result = str8_lit("GPROCIA64_ST");}break; -case CV_SymKind_LOCALSLOT_ST:{result = str8_lit("LOCALSLOT_ST");}break; -case CV_SymKind_PARAMSLOT_ST:{result = str8_lit("PARAMSLOT_ST");}break; -case CV_SymKind_ANNOTATION:{result = str8_lit("ANNOTATION");}break; -case CV_SymKind_GMANPROC_ST:{result = str8_lit("GMANPROC_ST");}break; -case CV_SymKind_LMANPROC_ST:{result = str8_lit("LMANPROC_ST");}break; -case CV_SymKind_RESERVED1:{result = str8_lit("RESERVED1");}break; -case CV_SymKind_RESERVED2:{result = str8_lit("RESERVED2");}break; -case CV_SymKind_RESERVED3:{result = str8_lit("RESERVED3");}break; -case CV_SymKind_RESERVED4:{result = str8_lit("RESERVED4");}break; -case CV_SymKind_LMANDATA_ST:{result = str8_lit("LMANDATA_ST");}break; -case CV_SymKind_GMANDATA_ST:{result = str8_lit("GMANDATA_ST");}break; -case CV_SymKind_MANFRAMEREL_ST:{result = str8_lit("MANFRAMEREL_ST");}break; -case CV_SymKind_MANREGISTER_ST:{result = str8_lit("MANREGISTER_ST");}break; -case CV_SymKind_MANSLOT_ST:{result = str8_lit("MANSLOT_ST");}break; -case CV_SymKind_MANMANYREG_ST:{result = str8_lit("MANMANYREG_ST");}break; -case CV_SymKind_MANREGREL_ST:{result = str8_lit("MANREGREL_ST");}break; -case CV_SymKind_MANMANYREG2_ST:{result = str8_lit("MANMANYREG2_ST");}break; -case CV_SymKind_MANTYPREF:{result = str8_lit("MANTYPREF");}break; -case CV_SymKind_UNAMESPACE_ST:{result = str8_lit("UNAMESPACE_ST");}break; -case CV_SymKind_ST_MAX:{result = str8_lit("ST_MAX");}break; -case CV_SymKind_OBJNAME:{result = str8_lit("OBJNAME");}break; -case CV_SymKind_THUNK32:{result = str8_lit("THUNK32");}break; -case CV_SymKind_BLOCK32:{result = str8_lit("BLOCK32");}break; -case CV_SymKind_WITH32:{result = str8_lit("WITH32");}break; -case CV_SymKind_LABEL32:{result = str8_lit("LABEL32");}break; -case CV_SymKind_REGISTER:{result = str8_lit("REGISTER");}break; -case CV_SymKind_CONSTANT:{result = str8_lit("CONSTANT");}break; -case CV_SymKind_UDT:{result = str8_lit("UDT");}break; -case CV_SymKind_COBOLUDT:{result = str8_lit("COBOLUDT");}break; -case CV_SymKind_MANYREG:{result = str8_lit("MANYREG");}break; -case CV_SymKind_BPREL32:{result = str8_lit("BPREL32");}break; -case CV_SymKind_LDATA32:{result = str8_lit("LDATA32");}break; -case CV_SymKind_GDATA32:{result = str8_lit("GDATA32");}break; -case CV_SymKind_PUB32:{result = str8_lit("PUB32");}break; -case CV_SymKind_LPROC32:{result = str8_lit("LPROC32");}break; -case CV_SymKind_GPROC32:{result = str8_lit("GPROC32");}break; -case CV_SymKind_REGREL32:{result = str8_lit("REGREL32");}break; -case CV_SymKind_LTHREAD32:{result = str8_lit("LTHREAD32");}break; -case CV_SymKind_GTHREAD32:{result = str8_lit("GTHREAD32");}break; -case CV_SymKind_LPROCMIPS:{result = str8_lit("LPROCMIPS");}break; -case CV_SymKind_GPROCMIPS:{result = str8_lit("GPROCMIPS");}break; -case CV_SymKind_COMPILE2:{result = str8_lit("COMPILE2");}break; -case CV_SymKind_MANYREG2:{result = str8_lit("MANYREG2");}break; -case CV_SymKind_LPROCIA64:{result = str8_lit("LPROCIA64");}break; -case CV_SymKind_GPROCIA64:{result = str8_lit("GPROCIA64");}break; -case CV_SymKind_LOCALSLOT:{result = str8_lit("LOCALSLOT");}break; -case CV_SymKind_PARAMSLOT:{result = str8_lit("PARAMSLOT");}break; -case CV_SymKind_LMANDATA:{result = str8_lit("LMANDATA");}break; -case CV_SymKind_GMANDATA:{result = str8_lit("GMANDATA");}break; -case CV_SymKind_MANFRAMEREL:{result = str8_lit("MANFRAMEREL");}break; -case CV_SymKind_MANREGISTER:{result = str8_lit("MANREGISTER");}break; -case CV_SymKind_MANSLOT:{result = str8_lit("MANSLOT");}break; -case CV_SymKind_MANMANYREG:{result = str8_lit("MANMANYREG");}break; -case CV_SymKind_MANREGREL:{result = str8_lit("MANREGREL");}break; -case CV_SymKind_MANMANYREG2:{result = str8_lit("MANMANYREG2");}break; -case CV_SymKind_UNAMESPACE:{result = str8_lit("UNAMESPACE");}break; -case CV_SymKind_PROCREF:{result = str8_lit("PROCREF");}break; -case CV_SymKind_DATAREF:{result = str8_lit("DATAREF");}break; -case CV_SymKind_LPROCREF:{result = str8_lit("LPROCREF");}break; -case CV_SymKind_ANNOTATIONREF:{result = str8_lit("ANNOTATIONREF");}break; -case CV_SymKind_TOKENREF:{result = str8_lit("TOKENREF");}break; -case CV_SymKind_GMANPROC:{result = str8_lit("GMANPROC");}break; -case CV_SymKind_LMANPROC:{result = str8_lit("LMANPROC");}break; -case CV_SymKind_TRAMPOLINE:{result = str8_lit("TRAMPOLINE");}break; -case CV_SymKind_MANCONSTANT:{result = str8_lit("MANCONSTANT");}break; -case CV_SymKind_ATTR_FRAMEREL:{result = str8_lit("ATTR_FRAMEREL");}break; -case CV_SymKind_ATTR_REGISTER:{result = str8_lit("ATTR_REGISTER");}break; -case CV_SymKind_ATTR_REGREL:{result = str8_lit("ATTR_REGREL");}break; -case CV_SymKind_ATTR_MANYREG:{result = str8_lit("ATTR_MANYREG");}break; -case CV_SymKind_SEPCODE:{result = str8_lit("SEPCODE");}break; -case CV_SymKind_DEFRANGE_2005:{result = str8_lit("DEFRANGE_2005");}break; -case CV_SymKind_DEFRANGE2_2005:{result = str8_lit("DEFRANGE2_2005");}break; -case CV_SymKind_SECTION:{result = str8_lit("SECTION");}break; -case CV_SymKind_COFFGROUP:{result = str8_lit("COFFGROUP");}break; -case CV_SymKind_EXPORT:{result = str8_lit("EXPORT");}break; -case CV_SymKind_CALLSITEINFO:{result = str8_lit("CALLSITEINFO");}break; -case CV_SymKind_FRAMECOOKIE:{result = str8_lit("FRAMECOOKIE");}break; -case CV_SymKind_DISCARDED:{result = str8_lit("DISCARDED");}break; -case CV_SymKind_COMPILE3:{result = str8_lit("COMPILE3");}break; -case CV_SymKind_ENVBLOCK:{result = str8_lit("ENVBLOCK");}break; -case CV_SymKind_LOCAL:{result = str8_lit("LOCAL");}break; -case CV_SymKind_DEFRANGE:{result = str8_lit("DEFRANGE");}break; -case CV_SymKind_DEFRANGE_SUBFIELD:{result = str8_lit("DEFRANGE_SUBFIELD");}break; -case CV_SymKind_DEFRANGE_REGISTER:{result = str8_lit("DEFRANGE_REGISTER");}break; -case CV_SymKind_DEFRANGE_FRAMEPOINTER_REL:{result = str8_lit("DEFRANGE_FRAMEPOINTER_REL");}break; -case CV_SymKind_DEFRANGE_SUBFIELD_REGISTER:{result = str8_lit("DEFRANGE_SUBFIELD_REGISTER");}break; -case CV_SymKind_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE:{result = str8_lit("DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE");}break; -case CV_SymKind_DEFRANGE_REGISTER_REL:{result = str8_lit("DEFRANGE_REGISTER_REL");}break; -case CV_SymKind_LPROC32_ID:{result = str8_lit("LPROC32_ID");}break; -case CV_SymKind_GPROC32_ID:{result = str8_lit("GPROC32_ID");}break; -case CV_SymKind_LPROCMIPS_ID:{result = str8_lit("LPROCMIPS_ID");}break; -case CV_SymKind_GPROCMIPS_ID:{result = str8_lit("GPROCMIPS_ID");}break; -case CV_SymKind_LPROCIA64_ID:{result = str8_lit("LPROCIA64_ID");}break; -case CV_SymKind_GPROCIA64_ID:{result = str8_lit("GPROCIA64_ID");}break; -case CV_SymKind_BUILDINFO:{result = str8_lit("BUILDINFO");}break; -case CV_SymKind_INLINESITE:{result = str8_lit("INLINESITE");}break; -case CV_SymKind_INLINESITE_END:{result = str8_lit("INLINESITE_END");}break; -case CV_SymKind_PROC_ID_END:{result = str8_lit("PROC_ID_END");}break; -case CV_SymKind_DEFRANGE_HLSL:{result = str8_lit("DEFRANGE_HLSL");}break; -case CV_SymKind_GDATA_HLSL:{result = str8_lit("GDATA_HLSL");}break; -case CV_SymKind_LDATA_HLSL:{result = str8_lit("LDATA_HLSL");}break; -case CV_SymKind_FILESTATIC:{result = str8_lit("FILESTATIC");}break; -case CV_SymKind_LPROC32_DPC:{result = str8_lit("LPROC32_DPC");}break; -case CV_SymKind_LPROC32_DPC_ID:{result = str8_lit("LPROC32_DPC_ID");}break; -case CV_SymKind_DEFRANGE_DPC_PTR_TAG:{result = str8_lit("DEFRANGE_DPC_PTR_TAG");}break; -case CV_SymKind_DPC_SYM_TAG_MAP:{result = str8_lit("DPC_SYM_TAG_MAP");}break; -case CV_SymKind_ARMSWITCHTABLE:{result = str8_lit("ARMSWITCHTABLE");}break; -case CV_SymKind_CALLEES:{result = str8_lit("CALLEES");}break; -case CV_SymKind_CALLERS:{result = str8_lit("CALLERS");}break; -case CV_SymKind_POGODATA:{result = str8_lit("POGODATA");}break; -case CV_SymKind_INLINESITE2:{result = str8_lit("INLINESITE2");}break; -case CV_SymKind_HEAPALLOCSITE:{result = str8_lit("HEAPALLOCSITE");}break; -case CV_SymKind_MOD_TYPEREF:{result = str8_lit("MOD_TYPEREF");}break; -case CV_SymKind_REF_MINIPDB:{result = str8_lit("REF_MINIPDB");}break; -case CV_SymKind_PDBMAP:{result = str8_lit("PDBMAP");}break; -case CV_SymKind_GDATA_HLSL32:{result = str8_lit("GDATA_HLSL32");}break; -case CV_SymKind_LDATA_HLSL32:{result = str8_lit("LDATA_HLSL32");}break; -case CV_SymKind_GDATA_HLSL32_EX:{result = str8_lit("GDATA_HLSL32_EX");}break; -case CV_SymKind_LDATA_HLSL32_EX:{result = str8_lit("LDATA_HLSL32_EX");}break; -case CV_SymKind_FASTLINK:{result = str8_lit("FASTLINK");}break; -case CV_SymKind_INLINEES:{result = str8_lit("INLINEES");}break; -} -return result; -} - -internal String8 -cv_string_from_basic_type(CV_BasicType v) -{ -String8 result = str8_lit(""); -switch(v) -{ -default:{}break; -case CV_BasicType_NOTYPE:{result = str8_lit("NOTYPE");}break; -case CV_BasicType_ABS:{result = str8_lit("ABS");}break; -case CV_BasicType_SEGMENT:{result = str8_lit("SEGMENT");}break; -case CV_BasicType_VOID:{result = str8_lit("VOID");}break; -case CV_BasicType_CURRENCY:{result = str8_lit("CURRENCY");}break; -case CV_BasicType_NBASICSTR:{result = str8_lit("NBASICSTR");}break; -case CV_BasicType_FBASICSTR:{result = str8_lit("FBASICSTR");}break; -case CV_BasicType_NOTTRANS:{result = str8_lit("NOTTRANS");}break; -case CV_BasicType_HRESULT:{result = str8_lit("HRESULT");}break; -case CV_BasicType_CHAR:{result = str8_lit("CHAR");}break; -case CV_BasicType_SHORT:{result = str8_lit("SHORT");}break; -case CV_BasicType_LONG:{result = str8_lit("LONG");}break; -case CV_BasicType_QUAD:{result = str8_lit("QUAD");}break; -case CV_BasicType_OCT:{result = str8_lit("OCT");}break; -case CV_BasicType_UCHAR:{result = str8_lit("UCHAR");}break; -case CV_BasicType_USHORT:{result = str8_lit("USHORT");}break; -case CV_BasicType_ULONG:{result = str8_lit("ULONG");}break; -case CV_BasicType_UQUAD:{result = str8_lit("UQUAD");}break; -case CV_BasicType_UOCT:{result = str8_lit("UOCT");}break; -case CV_BasicType_BOOL8:{result = str8_lit("BOOL8");}break; -case CV_BasicType_BOOL16:{result = str8_lit("BOOL16");}break; -case CV_BasicType_BOOL32:{result = str8_lit("BOOL32");}break; -case CV_BasicType_BOOL64:{result = str8_lit("BOOL64");}break; -case CV_BasicType_FLOAT32:{result = str8_lit("FLOAT32");}break; -case CV_BasicType_FLOAT64:{result = str8_lit("FLOAT64");}break; -case CV_BasicType_FLOAT80:{result = str8_lit("FLOAT80");}break; -case CV_BasicType_FLOAT128:{result = str8_lit("FLOAT128");}break; -case CV_BasicType_FLOAT48:{result = str8_lit("FLOAT48");}break; -case CV_BasicType_FLOAT32PP:{result = str8_lit("FLOAT32PP");}break; -case CV_BasicType_FLOAT16:{result = str8_lit("FLOAT16");}break; -case CV_BasicType_COMPLEX32:{result = str8_lit("COMPLEX32");}break; -case CV_BasicType_COMPLEX64:{result = str8_lit("COMPLEX64");}break; -case CV_BasicType_COMPLEX80:{result = str8_lit("COMPLEX80");}break; -case CV_BasicType_COMPLEX128:{result = str8_lit("COMPLEX128");}break; -case CV_BasicType_BIT:{result = str8_lit("BIT");}break; -case CV_BasicType_PASCHAR:{result = str8_lit("PASCHAR");}break; -case CV_BasicType_BOOL32FF:{result = str8_lit("BOOL32FF");}break; -case CV_BasicType_INT8:{result = str8_lit("INT8");}break; -case CV_BasicType_UINT8:{result = str8_lit("UINT8");}break; -case CV_BasicType_RCHAR:{result = str8_lit("RCHAR");}break; -case CV_BasicType_WCHAR:{result = str8_lit("WCHAR");}break; -case CV_BasicType_INT16:{result = str8_lit("INT16");}break; -case CV_BasicType_UINT16:{result = str8_lit("UINT16");}break; -case CV_BasicType_INT32:{result = str8_lit("INT32");}break; -case CV_BasicType_UINT32:{result = str8_lit("UINT32");}break; -case CV_BasicType_INT64:{result = str8_lit("INT64");}break; -case CV_BasicType_UINT64:{result = str8_lit("UINT64");}break; -case CV_BasicType_INT128:{result = str8_lit("INT128");}break; -case CV_BasicType_UINT128:{result = str8_lit("UINT128");}break; -case CV_BasicType_CHAR16:{result = str8_lit("CHAR16");}break; -case CV_BasicType_CHAR32:{result = str8_lit("CHAR32");}break; -case CV_BasicType_CHAR8:{result = str8_lit("CHAR8");}break; -case CV_BasicType_PTR:{result = str8_lit("PTR");}break; -} -return result; -} - -internal String8 -cv_type_name_from_basic_type(CV_BasicType v) -{ -String8 result = str8_lit(""); -switch(v) -{ -default:{}break; -case CV_BasicType_NOTYPE:{result = str8_lit("");}break; -case CV_BasicType_ABS:{result = str8_lit("");}break; -case CV_BasicType_SEGMENT:{result = str8_lit("");}break; -case CV_BasicType_VOID:{result = str8_lit("void");}break; -case CV_BasicType_CURRENCY:{result = str8_lit("");}break; -case CV_BasicType_NBASICSTR:{result = str8_lit("");}break; -case CV_BasicType_FBASICSTR:{result = str8_lit("");}break; -case CV_BasicType_NOTTRANS:{result = str8_lit("");}break; -case CV_BasicType_HRESULT:{result = str8_lit("HRESULT");}break; -case CV_BasicType_CHAR:{result = str8_lit("CHAR");}break; -case CV_BasicType_SHORT:{result = str8_lit("SHORT");}break; -case CV_BasicType_LONG:{result = str8_lit("LONG");}break; -case CV_BasicType_QUAD:{result = str8_lit("QUAD");}break; -case CV_BasicType_OCT:{result = str8_lit("OCT");}break; -case CV_BasicType_UCHAR:{result = str8_lit("UCHAR");}break; -case CV_BasicType_USHORT:{result = str8_lit("USHORT");}break; -case CV_BasicType_ULONG:{result = str8_lit("ULONG");}break; -case CV_BasicType_UQUAD:{result = str8_lit("UQUAD");}break; -case CV_BasicType_UOCT:{result = str8_lit("UOCT");}break; -case CV_BasicType_BOOL8:{result = str8_lit("BOOL8");}break; -case CV_BasicType_BOOL16:{result = str8_lit("BOOL16");}break; -case CV_BasicType_BOOL32:{result = str8_lit("BOOL32");}break; -case CV_BasicType_BOOL64:{result = str8_lit("BOOL64");}break; -case CV_BasicType_FLOAT32:{result = str8_lit("FLOAT32");}break; -case CV_BasicType_FLOAT64:{result = str8_lit("FLOAT64");}break; -case CV_BasicType_FLOAT80:{result = str8_lit("FLOAT80");}break; -case CV_BasicType_FLOAT128:{result = str8_lit("FLOAT128");}break; -case CV_BasicType_FLOAT48:{result = str8_lit("FLOAT48");}break; -case CV_BasicType_FLOAT32PP:{result = str8_lit("FLOAT32PP");}break; -case CV_BasicType_FLOAT16:{result = str8_lit("FLOAT16");}break; -case CV_BasicType_COMPLEX32:{result = str8_lit("ComplexF32");}break; -case CV_BasicType_COMPLEX64:{result = str8_lit("ComplexF64");}break; -case CV_BasicType_COMPLEX80:{result = str8_lit("ComplexF80");}break; -case CV_BasicType_COMPLEX128:{result = str8_lit("ComplexF128");}break; -case CV_BasicType_BIT:{result = str8_lit("");}break; -case CV_BasicType_PASCHAR:{result = str8_lit("");}break; -case CV_BasicType_BOOL32FF:{result = str8_lit("BOOL32FF");}break; -case CV_BasicType_INT8:{result = str8_lit("int8");}break; -case CV_BasicType_UINT8:{result = str8_lit("uint8");}break; -case CV_BasicType_RCHAR:{result = str8_lit("char");}break; -case CV_BasicType_WCHAR:{result = str8_lit("WCHAR");}break; -case CV_BasicType_INT16:{result = str8_lit("int16");}break; -case CV_BasicType_UINT16:{result = str8_lit("uint16");}break; -case CV_BasicType_INT32:{result = str8_lit("int32");}break; -case CV_BasicType_UINT32:{result = str8_lit("uint32");}break; -case CV_BasicType_INT64:{result = str8_lit("int64");}break; -case CV_BasicType_UINT64:{result = str8_lit("uint64");}break; -case CV_BasicType_INT128:{result = str8_lit("int128");}break; -case CV_BasicType_UINT128:{result = str8_lit("uint128");}break; -case CV_BasicType_CHAR16:{result = str8_lit("char16");}break; -case CV_BasicType_CHAR32:{result = str8_lit("char32");}break; -case CV_BasicType_CHAR8:{result = str8_lit("char");}break; -case CV_BasicType_PTR:{result = str8_lit("PTR");}break; -} -return result; -} - -internal String8 -cv_string_from_leaf_kind(CV_LeafKind v) -{ -String8 result = str8_lit(""); -switch(v) -{ -default:{}break; -case CV_LeafKind_NOTYPE:{result = str8_lit("NOTYPE");}break; -case CV_LeafKind_MODIFIER_16t:{result = str8_lit("MODIFIER_16t");}break; -case CV_LeafKind_POINTER_16t:{result = str8_lit("POINTER_16t");}break; -case CV_LeafKind_ARRAY_16t:{result = str8_lit("ARRAY_16t");}break; -case CV_LeafKind_CLASS_16t:{result = str8_lit("CLASS_16t");}break; -case CV_LeafKind_STRUCTURE_16t:{result = str8_lit("STRUCTURE_16t");}break; -case CV_LeafKind_UNION_16t:{result = str8_lit("UNION_16t");}break; -case CV_LeafKind_ENUM_16t:{result = str8_lit("ENUM_16t");}break; -case CV_LeafKind_PROCEDURE_16t:{result = str8_lit("PROCEDURE_16t");}break; -case CV_LeafKind_MFUNCTION_16t:{result = str8_lit("MFUNCTION_16t");}break; -case CV_LeafKind_VTSHAPE:{result = str8_lit("VTSHAPE");}break; -case CV_LeafKind_COBOL0_16t:{result = str8_lit("COBOL0_16t");}break; -case CV_LeafKind_COBOL1:{result = str8_lit("COBOL1");}break; -case CV_LeafKind_BARRAY_16t:{result = str8_lit("BARRAY_16t");}break; -case CV_LeafKind_LABEL:{result = str8_lit("LABEL");}break; -case CV_LeafKind_NULL:{result = str8_lit("NULL");}break; -case CV_LeafKind_NOTTRAN:{result = str8_lit("NOTTRAN");}break; -case CV_LeafKind_DIMARRAY_16t:{result = str8_lit("DIMARRAY_16t");}break; -case CV_LeafKind_VFTPATH_16t:{result = str8_lit("VFTPATH_16t");}break; -case CV_LeafKind_PRECOMP_16t:{result = str8_lit("PRECOMP_16t");}break; -case CV_LeafKind_ENDPRECOMP:{result = str8_lit("ENDPRECOMP");}break; -case CV_LeafKind_OEM_16t:{result = str8_lit("OEM_16t");}break; -case CV_LeafKind_TYPESERVER_ST:{result = str8_lit("TYPESERVER_ST");}break; -case CV_LeafKind_SKIP_16t:{result = str8_lit("SKIP_16t");}break; -case CV_LeafKind_ARGLIST_16t:{result = str8_lit("ARGLIST_16t");}break; -case CV_LeafKind_DEFARG_16t:{result = str8_lit("DEFARG_16t");}break; -case CV_LeafKind_LIST:{result = str8_lit("LIST");}break; -case CV_LeafKind_FIELDLIST_16t:{result = str8_lit("FIELDLIST_16t");}break; -case CV_LeafKind_DERIVED_16t:{result = str8_lit("DERIVED_16t");}break; -case CV_LeafKind_BITFIELD_16t:{result = str8_lit("BITFIELD_16t");}break; -case CV_LeafKind_METHODLIST_16t:{result = str8_lit("METHODLIST_16t");}break; -case CV_LeafKind_DIMCONU_16t:{result = str8_lit("DIMCONU_16t");}break; -case CV_LeafKind_DIMCONLU_16t:{result = str8_lit("DIMCONLU_16t");}break; -case CV_LeafKind_DIMVARU_16t:{result = str8_lit("DIMVARU_16t");}break; -case CV_LeafKind_DIMVARLU_16t:{result = str8_lit("DIMVARLU_16t");}break; -case CV_LeafKind_REFSYM:{result = str8_lit("REFSYM");}break; -case CV_LeafKind_BCLASS_16t:{result = str8_lit("BCLASS_16t");}break; -case CV_LeafKind_VBCLASS_16t:{result = str8_lit("VBCLASS_16t");}break; -case CV_LeafKind_IVBCLASS_16t:{result = str8_lit("IVBCLASS_16t");}break; -case CV_LeafKind_ENUMERATE_ST:{result = str8_lit("ENUMERATE_ST");}break; -case CV_LeafKind_FRIENDFCN_16t:{result = str8_lit("FRIENDFCN_16t");}break; -case CV_LeafKind_INDEX_16t:{result = str8_lit("INDEX_16t");}break; -case CV_LeafKind_MEMBER_16t:{result = str8_lit("MEMBER_16t");}break; -case CV_LeafKind_STMEMBER_16t:{result = str8_lit("STMEMBER_16t");}break; -case CV_LeafKind_METHOD_16t:{result = str8_lit("METHOD_16t");}break; -case CV_LeafKind_NESTTYPE_16t:{result = str8_lit("NESTTYPE_16t");}break; -case CV_LeafKind_VFUNCTAB_16t:{result = str8_lit("VFUNCTAB_16t");}break; -case CV_LeafKind_FRIENDCLS_16t:{result = str8_lit("FRIENDCLS_16t");}break; -case CV_LeafKind_ONEMETHOD_16t:{result = str8_lit("ONEMETHOD_16t");}break; -case CV_LeafKind_VFUNCOFF_16t:{result = str8_lit("VFUNCOFF_16t");}break; -case CV_LeafKind_TI16_MAX:{result = str8_lit("TI16_MAX");}break; -case CV_LeafKind_MODIFIER:{result = str8_lit("MODIFIER");}break; -case CV_LeafKind_POINTER:{result = str8_lit("POINTER");}break; -case CV_LeafKind_ARRAY_ST:{result = str8_lit("ARRAY_ST");}break; -case CV_LeafKind_CLASS_ST:{result = str8_lit("CLASS_ST");}break; -case CV_LeafKind_STRUCTURE_ST:{result = str8_lit("STRUCTURE_ST");}break; -case CV_LeafKind_UNION_ST:{result = str8_lit("UNION_ST");}break; -case CV_LeafKind_ENUM_ST:{result = str8_lit("ENUM_ST");}break; -case CV_LeafKind_PROCEDURE:{result = str8_lit("PROCEDURE");}break; -case CV_LeafKind_MFUNCTION:{result = str8_lit("MFUNCTION");}break; -case CV_LeafKind_COBOL0:{result = str8_lit("COBOL0");}break; -case CV_LeafKind_BARRAY:{result = str8_lit("BARRAY");}break; -case CV_LeafKind_DIMARRAY_ST:{result = str8_lit("DIMARRAY_ST");}break; -case CV_LeafKind_VFTPATH:{result = str8_lit("VFTPATH");}break; -case CV_LeafKind_PRECOMP_ST:{result = str8_lit("PRECOMP_ST");}break; -case CV_LeafKind_OEM:{result = str8_lit("OEM");}break; -case CV_LeafKind_ALIAS_ST:{result = str8_lit("ALIAS_ST");}break; -case CV_LeafKind_OEM2:{result = str8_lit("OEM2");}break; -case CV_LeafKind_SKIP:{result = str8_lit("SKIP");}break; -case CV_LeafKind_ARGLIST:{result = str8_lit("ARGLIST");}break; -case CV_LeafKind_DEFARG_ST:{result = str8_lit("DEFARG_ST");}break; -case CV_LeafKind_FIELDLIST:{result = str8_lit("FIELDLIST");}break; -case CV_LeafKind_DERIVED:{result = str8_lit("DERIVED");}break; -case CV_LeafKind_BITFIELD:{result = str8_lit("BITFIELD");}break; -case CV_LeafKind_METHODLIST:{result = str8_lit("METHODLIST");}break; -case CV_LeafKind_DIMCONU:{result = str8_lit("DIMCONU");}break; -case CV_LeafKind_DIMCONLU:{result = str8_lit("DIMCONLU");}break; -case CV_LeafKind_DIMVARU:{result = str8_lit("DIMVARU");}break; -case CV_LeafKind_DIMVARLU:{result = str8_lit("DIMVARLU");}break; -case CV_LeafKind_BCLASS:{result = str8_lit("BCLASS");}break; -case CV_LeafKind_VBCLASS:{result = str8_lit("VBCLASS");}break; -case CV_LeafKind_IVBCLASS:{result = str8_lit("IVBCLASS");}break; -case CV_LeafKind_FRIENDFCN_ST:{result = str8_lit("FRIENDFCN_ST");}break; -case CV_LeafKind_INDEX:{result = str8_lit("INDEX");}break; -case CV_LeafKind_MEMBER_ST:{result = str8_lit("MEMBER_ST");}break; -case CV_LeafKind_STMEMBER_ST:{result = str8_lit("STMEMBER_ST");}break; -case CV_LeafKind_METHOD_ST:{result = str8_lit("METHOD_ST");}break; -case CV_LeafKind_NESTTYPE_ST:{result = str8_lit("NESTTYPE_ST");}break; -case CV_LeafKind_VFUNCTAB:{result = str8_lit("VFUNCTAB");}break; -case CV_LeafKind_FRIENDCLS:{result = str8_lit("FRIENDCLS");}break; -case CV_LeafKind_ONEMETHOD_ST:{result = str8_lit("ONEMETHOD_ST");}break; -case CV_LeafKind_VFUNCOFF:{result = str8_lit("VFUNCOFF");}break; -case CV_LeafKind_NESTTYPEEX_ST:{result = str8_lit("NESTTYPEEX_ST");}break; -case CV_LeafKind_MEMBERMODIFY_ST:{result = str8_lit("MEMBERMODIFY_ST");}break; -case CV_LeafKind_MANAGED_ST:{result = str8_lit("MANAGED_ST");}break; -case CV_LeafKind_ST_MAX:{result = str8_lit("ST_MAX");}break; -case CV_LeafKind_TYPESERVER:{result = str8_lit("TYPESERVER");}break; -case CV_LeafKind_ENUMERATE:{result = str8_lit("ENUMERATE");}break; -case CV_LeafKind_ARRAY:{result = str8_lit("ARRAY");}break; -case CV_LeafKind_CLASS:{result = str8_lit("CLASS");}break; -case CV_LeafKind_STRUCTURE:{result = str8_lit("STRUCTURE");}break; -case CV_LeafKind_UNION:{result = str8_lit("UNION");}break; -case CV_LeafKind_ENUM:{result = str8_lit("ENUM");}break; -case CV_LeafKind_DIMARRAY:{result = str8_lit("DIMARRAY");}break; -case CV_LeafKind_PRECOMP:{result = str8_lit("PRECOMP");}break; -case CV_LeafKind_ALIAS:{result = str8_lit("ALIAS");}break; -case CV_LeafKind_DEFARG:{result = str8_lit("DEFARG");}break; -case CV_LeafKind_FRIENDFCN:{result = str8_lit("FRIENDFCN");}break; -case CV_LeafKind_MEMBER:{result = str8_lit("MEMBER");}break; -case CV_LeafKind_STMEMBER:{result = str8_lit("STMEMBER");}break; -case CV_LeafKind_METHOD:{result = str8_lit("METHOD");}break; -case CV_LeafKind_NESTTYPE:{result = str8_lit("NESTTYPE");}break; -case CV_LeafKind_ONEMETHOD:{result = str8_lit("ONEMETHOD");}break; -case CV_LeafKind_NESTTYPEEX:{result = str8_lit("NESTTYPEEX");}break; -case CV_LeafKind_MEMBERMODIFY:{result = str8_lit("MEMBERMODIFY");}break; -case CV_LeafKind_MANAGED:{result = str8_lit("MANAGED");}break; -case CV_LeafKind_TYPESERVER2:{result = str8_lit("TYPESERVER2");}break; -case CV_LeafKind_STRIDED_ARRAY:{result = str8_lit("STRIDED_ARRAY");}break; -case CV_LeafKind_HLSL:{result = str8_lit("HLSL");}break; -case CV_LeafKind_MODIFIER_EX:{result = str8_lit("MODIFIER_EX");}break; -case CV_LeafKind_INTERFACE:{result = str8_lit("INTERFACE");}break; -case CV_LeafKind_BINTERFACE:{result = str8_lit("BINTERFACE");}break; -case CV_LeafKind_VECTOR:{result = str8_lit("VECTOR");}break; -case CV_LeafKind_MATRIX:{result = str8_lit("MATRIX");}break; -case CV_LeafKind_VFTABLE:{result = str8_lit("VFTABLE");}break; -case CV_LeafKind_FUNC_ID:{result = str8_lit("FUNC_ID");}break; -case CV_LeafKind_MFUNC_ID:{result = str8_lit("MFUNC_ID");}break; -case CV_LeafKind_BUILDINFO:{result = str8_lit("BUILDINFO");}break; -case CV_LeafKind_SUBSTR_LIST:{result = str8_lit("SUBSTR_LIST");}break; -case CV_LeafKind_STRING_ID:{result = str8_lit("STRING_ID");}break; -case CV_LeafKind_UDT_SRC_LINE:{result = str8_lit("UDT_SRC_LINE");}break; -case CV_LeafKind_UDT_MOD_SRC_LINE:{result = str8_lit("UDT_MOD_SRC_LINE");}break; -case CV_LeafKind_CLASS2:{result = str8_lit("CLASS2");}break; -case CV_LeafKind_STRUCT2:{result = str8_lit("STRUCT2");}break; -} -return result; -} - -internal U64 -cv_header_struct_size_from_sym_kind(CV_SymKind v) -{ -U64 result = 0; -switch(v) -{ -default:{}break; -case CV_SymKind_COMPILE:{result = sizeof(CV_SymCompile);}break; -case CV_SymKind_SSEARCH:{result = sizeof(CV_SymStartSearch);}break; -case CV_SymKind_RETURN:{result = sizeof(CV_SymReturn);}break; -case CV_SymKind_SLINK32:{result = sizeof(CV_SymSLink32);}break; -case CV_SymKind_OEM:{result = sizeof(CV_SymOEM);}break; -case CV_SymKind_VFTABLE32:{result = sizeof(CV_SymVPath32);}break; -case CV_SymKind_FRAMEPROC:{result = sizeof(CV_SymFrameproc);}break; -case CV_SymKind_ANNOTATION:{result = sizeof(CV_SymAnnotation);}break; -case CV_SymKind_OBJNAME:{result = sizeof(CV_SymObjName);}break; -case CV_SymKind_THUNK32:{result = sizeof(CV_SymThunk32);}break; -case CV_SymKind_BLOCK32:{result = sizeof(CV_SymBlock32);}break; -case CV_SymKind_LABEL32:{result = sizeof(CV_SymLabel32);}break; -case CV_SymKind_REGISTER:{result = sizeof(CV_SymRegister);}break; -case CV_SymKind_CONSTANT:{result = sizeof(CV_SymConstant);}break; -case CV_SymKind_UDT:{result = sizeof(CV_SymUDT);}break; -case CV_SymKind_MANYREG:{result = sizeof(CV_SymManyreg);}break; -case CV_SymKind_BPREL32:{result = sizeof(CV_SymBPRel32);}break; -case CV_SymKind_LDATA32:{result = sizeof(CV_SymData32);}break; -case CV_SymKind_GDATA32:{result = sizeof(CV_SymData32);}break; -case CV_SymKind_PUB32:{result = sizeof(CV_SymPub32);}break; -case CV_SymKind_LPROC32:{result = sizeof(CV_SymProc32);}break; -case CV_SymKind_GPROC32:{result = sizeof(CV_SymProc32);}break; -case CV_SymKind_REGREL32:{result = sizeof(CV_SymRegrel32);}break; -case CV_SymKind_LTHREAD32:{result = sizeof(CV_SymThread32);}break; -case CV_SymKind_GTHREAD32:{result = sizeof(CV_SymThread32);}break; -case CV_SymKind_COMPILE2:{result = sizeof(CV_SymCompile2);}break; -case CV_SymKind_MANYREG2:{result = sizeof(CV_SymManyreg2);}break; -case CV_SymKind_LOCALSLOT:{result = sizeof(CV_SymSlot);}break; -case CV_SymKind_MANFRAMEREL:{result = sizeof(CV_SymAttrFrameRel);}break; -case CV_SymKind_MANREGISTER:{result = sizeof(CV_SymAttrReg);}break; -case CV_SymKind_MANMANYREG:{result = sizeof(CV_SymAttrManyReg);}break; -case CV_SymKind_MANREGREL:{result = sizeof(CV_SymAttrRegRel);}break; -case CV_SymKind_UNAMESPACE:{result = sizeof(CV_SymUNamespace);}break; -case CV_SymKind_PROCREF:{result = sizeof(CV_SymRef2);}break; -case CV_SymKind_DATAREF:{result = sizeof(CV_SymRef2);}break; -case CV_SymKind_LPROCREF:{result = sizeof(CV_SymRef2);}break; -case CV_SymKind_TRAMPOLINE:{result = sizeof(CV_SymTrampoline);}break; -case CV_SymKind_ATTR_FRAMEREL:{result = sizeof(CV_SymAttrFrameRel);}break; -case CV_SymKind_ATTR_REGISTER:{result = sizeof(CV_SymAttrReg);}break; -case CV_SymKind_ATTR_REGREL:{result = sizeof(CV_SymAttrRegRel);}break; -case CV_SymKind_ATTR_MANYREG:{result = sizeof(CV_SymAttrManyReg);}break; -case CV_SymKind_SEPCODE:{result = sizeof(CV_SymSepcode);}break; -case CV_SymKind_SECTION:{result = sizeof(CV_SymSection);}break; -case CV_SymKind_COFFGROUP:{result = sizeof(CV_SymCoffGroup);}break; -case CV_SymKind_EXPORT:{result = sizeof(CV_SymExport);}break; -case CV_SymKind_CALLSITEINFO:{result = sizeof(CV_SymCallSiteInfo);}break; -case CV_SymKind_FRAMECOOKIE:{result = sizeof(CV_SymFrameCookie);}break; -case CV_SymKind_DISCARDED:{result = sizeof(CV_SymDiscarded);}break; -case CV_SymKind_COMPILE3:{result = sizeof(CV_SymCompile3);}break; -case CV_SymKind_ENVBLOCK:{result = sizeof(CV_SymEnvBlock);}break; -case CV_SymKind_LOCAL:{result = sizeof(CV_SymLocal);}break; -case CV_SymKind_DEFRANGE_SUBFIELD:{result = sizeof(CV_SymDefrangeSubfield);}break; -case CV_SymKind_DEFRANGE_REGISTER:{result = sizeof(CV_SymDefrangeRegister);}break; -case CV_SymKind_DEFRANGE_FRAMEPOINTER_REL:{result = sizeof(CV_SymDefrangeFramepointerRel);}break; -case CV_SymKind_DEFRANGE_SUBFIELD_REGISTER:{result = sizeof(CV_SymDefrangeSubfieldRegister);}break; -case CV_SymKind_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE:{result = sizeof(CV_SymDefrangeFramepointerRelFullScope);}break; -case CV_SymKind_DEFRANGE_REGISTER_REL:{result = sizeof(CV_SymDefrangeRegisterRel);}break; -case CV_SymKind_BUILDINFO:{result = sizeof(CV_SymBuildInfo);}break; -case CV_SymKind_INLINESITE:{result = sizeof(CV_SymInlineSite);}break; -case CV_SymKind_FILESTATIC:{result = sizeof(CV_SymFileStatic);}break; -case CV_SymKind_CALLEES:{result = sizeof(CV_SymFunctionList);}break; -case CV_SymKind_CALLERS:{result = sizeof(CV_SymFunctionList);}break; -case CV_SymKind_POGODATA:{result = sizeof(CV_SymPogoInfo);}break; -case CV_SymKind_INLINESITE2:{result = sizeof(CV_SymInlineSite2);}break; -case CV_SymKind_HEAPALLOCSITE:{result = sizeof(CV_SymHeapAllocSite);}break; -case CV_SymKind_MOD_TYPEREF:{result = sizeof(CV_SymModTypeRef);}break; -case CV_SymKind_REF_MINIPDB:{result = sizeof(CV_SymRefMiniPdb);}break; -case CV_SymKind_FASTLINK:{result = sizeof(CV_SymFastLink);}break; -case CV_SymKind_INLINEES:{result = sizeof(CV_SymInlinees);}break; -} -return result; -} -internal U64 -cv_header_struct_size_from_leaf_kind(CV_LeafKind v) -{ -U64 result = 0; -switch(v) -{ -default:{}break; -case CV_LeafKind_VTSHAPE:{result = sizeof(CV_LeafVTShape);}break; -case CV_LeafKind_LABEL:{result = sizeof(CV_LeafLabel);}break; -case CV_LeafKind_MODIFIER:{result = sizeof(CV_LeafModifier);}break; -case CV_LeafKind_POINTER:{result = sizeof(CV_LeafPointer);}break; -case CV_LeafKind_PROCEDURE:{result = sizeof(CV_LeafProcedure);}break; -case CV_LeafKind_MFUNCTION:{result = sizeof(CV_LeafMFunction);}break; -case CV_LeafKind_VFTPATH:{result = sizeof(CV_LeafVFPath);}break; -case CV_LeafKind_SKIP:{result = sizeof(CV_LeafSkip);}break; -case CV_LeafKind_ARGLIST:{result = sizeof(CV_LeafArgList);}break; -case CV_LeafKind_BITFIELD:{result = sizeof(CV_LeafBitField);}break; -case CV_LeafKind_METHODLIST:{result = sizeof(CV_LeafMethodListMember);}break; -case CV_LeafKind_BCLASS:{result = sizeof(CV_LeafBClass);}break; -case CV_LeafKind_VBCLASS:{result = sizeof(CV_LeafVBClass);}break; -case CV_LeafKind_INDEX:{result = sizeof(CV_LeafIndex);}break; -case CV_LeafKind_VFUNCTAB:{result = sizeof(CV_LeafVFuncTab);}break; -case CV_LeafKind_VFUNCOFF:{result = sizeof(CV_LeafVFuncOff);}break; -case CV_LeafKind_TYPESERVER:{result = sizeof(CV_LeafTypeServer);}break; -case CV_LeafKind_ENUMERATE:{result = sizeof(CV_LeafEnumerate);}break; -case CV_LeafKind_ARRAY:{result = sizeof(CV_LeafArray);}break; -case CV_LeafKind_CLASS:{result = sizeof(CV_LeafStruct);}break; -case CV_LeafKind_STRUCTURE:{result = sizeof(CV_LeafStruct);}break; -case CV_LeafKind_UNION:{result = sizeof(CV_LeafUnion);}break; -case CV_LeafKind_ENUM:{result = sizeof(CV_LeafEnum);}break; -case CV_LeafKind_PRECOMP:{result = sizeof(CV_LeafPreComp);}break; -case CV_LeafKind_ALIAS:{result = sizeof(CV_LeafAlias);}break; -case CV_LeafKind_MEMBER:{result = sizeof(CV_LeafMember);}break; -case CV_LeafKind_STMEMBER:{result = sizeof(CV_LeafStMember);}break; -case CV_LeafKind_METHOD:{result = sizeof(CV_LeafMethod);}break; -case CV_LeafKind_NESTTYPE:{result = sizeof(CV_LeafNestType);}break; -case CV_LeafKind_ONEMETHOD:{result = sizeof(CV_LeafOneMethod);}break; -case CV_LeafKind_NESTTYPEEX:{result = sizeof(CV_LeafNestTypeEx);}break; -case CV_LeafKind_TYPESERVER2:{result = sizeof(CV_LeafTypeServer2);}break; -case CV_LeafKind_INTERFACE:{result = sizeof(CV_LeafStruct);}break; -case CV_LeafKind_FUNC_ID:{result = sizeof(CV_LeafFuncId);}break; -case CV_LeafKind_MFUNC_ID:{result = sizeof(CV_LeafMFuncId);}break; -case CV_LeafKind_BUILDINFO:{result = sizeof(CV_LeafBuildInfo);}break; -case CV_LeafKind_SUBSTR_LIST:{result = sizeof(CV_LeafSubstrList);}break; -case CV_LeafKind_STRING_ID:{result = sizeof(CV_LeafStringId);}break; -case CV_LeafKind_UDT_SRC_LINE:{result = sizeof(CV_LeafUDTSrcLine);}break; -case CV_LeafKind_UDT_MOD_SRC_LINE:{result = sizeof(CV_LeafUDTModSrcLine);}break; -case CV_LeafKind_CLASS2:{result = sizeof(CV_LeafStruct2);}break; -case CV_LeafKind_STRUCT2:{result = sizeof(CV_LeafStruct2);}break; -} -return result; -} +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +internal String8 +cv_string_from_numeric_kind(CV_NumericKind v) +{ +String8 result = str8_lit(""); +switch(v) +{ +default:{}break; +case CV_NumericKind_CHAR:{result = str8_lit("CHAR");}break; +case CV_NumericKind_SHORT:{result = str8_lit("SHORT");}break; +case CV_NumericKind_USHORT:{result = str8_lit("USHORT");}break; +case CV_NumericKind_LONG:{result = str8_lit("LONG");}break; +case CV_NumericKind_ULONG:{result = str8_lit("ULONG");}break; +case CV_NumericKind_FLOAT32:{result = str8_lit("FLOAT32");}break; +case CV_NumericKind_FLOAT64:{result = str8_lit("FLOAT64");}break; +case CV_NumericKind_FLOAT80:{result = str8_lit("FLOAT80");}break; +case CV_NumericKind_FLOAT128:{result = str8_lit("FLOAT128");}break; +case CV_NumericKind_QUADWORD:{result = str8_lit("QUADWORD");}break; +case CV_NumericKind_UQUADWORD:{result = str8_lit("UQUADWORD");}break; +case CV_NumericKind_FLOAT48:{result = str8_lit("FLOAT48");}break; +case CV_NumericKind_COMPLEX32:{result = str8_lit("COMPLEX32");}break; +case CV_NumericKind_COMPLEX64:{result = str8_lit("COMPLEX64");}break; +case CV_NumericKind_COMPLEX80:{result = str8_lit("COMPLEX80");}break; +case CV_NumericKind_COMPLEX128:{result = str8_lit("COMPLEX128");}break; +case CV_NumericKind_VARSTRING:{result = str8_lit("VARSTRING");}break; +case CV_NumericKind_OCTWORD:{result = str8_lit("OCTWORD");}break; +case CV_NumericKind_UOCTWORD:{result = str8_lit("UOCTWORD");}break; +case CV_NumericKind_DECIMAL:{result = str8_lit("DECIMAL");}break; +case CV_NumericKind_DATE:{result = str8_lit("DATE");}break; +case CV_NumericKind_UTF8STRING:{result = str8_lit("UTF8STRING");}break; +case CV_NumericKind_FLOAT16:{result = str8_lit("FLOAT16");}break; +} +return result; +} + +internal String8 +cv_string_from_arch(CV_Arch v) +{ +String8 result = str8_lit(""); +switch(v) +{ +default:{}break; +case CV_Arch_8080:{result = str8_lit("8080");}break; +case CV_Arch_8086:{result = str8_lit("8086");}break; +case CV_Arch_80286:{result = str8_lit("80286");}break; +case CV_Arch_80386:{result = str8_lit("80386");}break; +case CV_Arch_80486:{result = str8_lit("80486");}break; +case CV_Arch_PENTIUM:{result = str8_lit("PENTIUM");}break; +case CV_Arch_PENTIUMII:{result = str8_lit("PENTIUMII");}break; +case CV_Arch_PENTIUMIII:{result = str8_lit("PENTIUMIII");}break; +case CV_Arch_MIPS:{result = str8_lit("MIPS");}break; +case CV_Arch_MIPS16:{result = str8_lit("MIPS16");}break; +case CV_Arch_MIPS32:{result = str8_lit("MIPS32");}break; +case CV_Arch_MIPS64:{result = str8_lit("MIPS64");}break; +case CV_Arch_MIPSI:{result = str8_lit("MIPSI");}break; +case CV_Arch_MIPSII:{result = str8_lit("MIPSII");}break; +case CV_Arch_MIPSIII:{result = str8_lit("MIPSIII");}break; +case CV_Arch_MIPSIV:{result = str8_lit("MIPSIV");}break; +case CV_Arch_MIPSV:{result = str8_lit("MIPSV");}break; +case CV_Arch_M68000:{result = str8_lit("M68000");}break; +case CV_Arch_M68010:{result = str8_lit("M68010");}break; +case CV_Arch_M68020:{result = str8_lit("M68020");}break; +case CV_Arch_M68030:{result = str8_lit("M68030");}break; +case CV_Arch_M68040:{result = str8_lit("M68040");}break; +case CV_Arch_ALPHA:{result = str8_lit("ALPHA");}break; +case CV_Arch_ALPHA_21164:{result = str8_lit("ALPHA_21164");}break; +case CV_Arch_ALPHA_21164A:{result = str8_lit("ALPHA_21164A");}break; +case CV_Arch_ALPHA_21264:{result = str8_lit("ALPHA_21264");}break; +case CV_Arch_ALPHA_21364:{result = str8_lit("ALPHA_21364");}break; +case CV_Arch_PPC601:{result = str8_lit("PPC601");}break; +case CV_Arch_PPC603:{result = str8_lit("PPC603");}break; +case CV_Arch_PPC604:{result = str8_lit("PPC604");}break; +case CV_Arch_PPC620:{result = str8_lit("PPC620");}break; +case CV_Arch_PPCFP:{result = str8_lit("PPCFP");}break; +case CV_Arch_PPCBE:{result = str8_lit("PPCBE");}break; +case CV_Arch_SH3:{result = str8_lit("SH3");}break; +case CV_Arch_SH3E:{result = str8_lit("SH3E");}break; +case CV_Arch_SH3DSP:{result = str8_lit("SH3DSP");}break; +case CV_Arch_SH4:{result = str8_lit("SH4");}break; +case CV_Arch_SHMEDIA:{result = str8_lit("SHMEDIA");}break; +case CV_Arch_ARM3:{result = str8_lit("ARM3");}break; +case CV_Arch_ARM4:{result = str8_lit("ARM4");}break; +case CV_Arch_ARM4T:{result = str8_lit("ARM4T");}break; +case CV_Arch_ARM5:{result = str8_lit("ARM5");}break; +case CV_Arch_ARM5T:{result = str8_lit("ARM5T");}break; +case CV_Arch_ARM6:{result = str8_lit("ARM6");}break; +case CV_Arch_ARM_XMAC:{result = str8_lit("ARM_XMAC");}break; +case CV_Arch_ARM_WMMX:{result = str8_lit("ARM_WMMX");}break; +case CV_Arch_ARM7:{result = str8_lit("ARM7");}break; +case CV_Arch_OMNI:{result = str8_lit("OMNI");}break; +case CV_Arch_IA64_1:{result = str8_lit("IA64_1");}break; +case CV_Arch_IA64_2:{result = str8_lit("IA64_2");}break; +case CV_Arch_CEE:{result = str8_lit("CEE");}break; +case CV_Arch_AM33:{result = str8_lit("AM33");}break; +case CV_Arch_M32R:{result = str8_lit("M32R");}break; +case CV_Arch_TRICORE:{result = str8_lit("TRICORE");}break; +case CV_Arch_X64:{result = str8_lit("X64");}break; +case CV_Arch_EBC:{result = str8_lit("EBC");}break; +case CV_Arch_THUMB:{result = str8_lit("THUMB");}break; +case CV_Arch_ARMNT:{result = str8_lit("ARMNT");}break; +case CV_Arch_ARM64:{result = str8_lit("ARM64");}break; +case CV_Arch_D3D11_SHADER:{result = str8_lit("D3D11_SHADER");}break; +} +return result; +} + +internal String8 +cv_string_from_sym_kind(CV_SymKind v) +{ +String8 result = str8_lit(""); +switch(v) +{ +default:{}break; +case CV_SymKind_COMPILE:{result = str8_lit("COMPILE");}break; +case CV_SymKind_REGISTER_16t:{result = str8_lit("REGISTER_16t");}break; +case CV_SymKind_CONSTANT_16t:{result = str8_lit("CONSTANT_16t");}break; +case CV_SymKind_UDT_16t:{result = str8_lit("UDT_16t");}break; +case CV_SymKind_SSEARCH:{result = str8_lit("SSEARCH");}break; +case CV_SymKind_END:{result = str8_lit("END");}break; +case CV_SymKind_SKIP:{result = str8_lit("SKIP");}break; +case CV_SymKind_CVRESERVE:{result = str8_lit("CVRESERVE");}break; +case CV_SymKind_OBJNAME_ST:{result = str8_lit("OBJNAME_ST");}break; +case CV_SymKind_ENDARG:{result = str8_lit("ENDARG");}break; +case CV_SymKind_COBOLUDT_16t:{result = str8_lit("COBOLUDT_16t");}break; +case CV_SymKind_MANYREG_16t:{result = str8_lit("MANYREG_16t");}break; +case CV_SymKind_RETURN:{result = str8_lit("RETURN");}break; +case CV_SymKind_ENTRYTHIS:{result = str8_lit("ENTRYTHIS");}break; +case CV_SymKind_BPREL16:{result = str8_lit("BPREL16");}break; +case CV_SymKind_LDATA16:{result = str8_lit("LDATA16");}break; +case CV_SymKind_GDATA16:{result = str8_lit("GDATA16");}break; +case CV_SymKind_PUB16:{result = str8_lit("PUB16");}break; +case CV_SymKind_LPROC16:{result = str8_lit("LPROC16");}break; +case CV_SymKind_GPROC16:{result = str8_lit("GPROC16");}break; +case CV_SymKind_THUNK16:{result = str8_lit("THUNK16");}break; +case CV_SymKind_BLOCK16:{result = str8_lit("BLOCK16");}break; +case CV_SymKind_WITH16:{result = str8_lit("WITH16");}break; +case CV_SymKind_LABEL16:{result = str8_lit("LABEL16");}break; +case CV_SymKind_CEXMODEL16:{result = str8_lit("CEXMODEL16");}break; +case CV_SymKind_VFTABLE16:{result = str8_lit("VFTABLE16");}break; +case CV_SymKind_REGREL16:{result = str8_lit("REGREL16");}break; +case CV_SymKind_BPREL32_16t:{result = str8_lit("BPREL32_16t");}break; +case CV_SymKind_LDATA32_16t:{result = str8_lit("LDATA32_16t");}break; +case CV_SymKind_GDATA32_16t:{result = str8_lit("GDATA32_16t");}break; +case CV_SymKind_PUB32_16t:{result = str8_lit("PUB32_16t");}break; +case CV_SymKind_LPROC32_16t:{result = str8_lit("LPROC32_16t");}break; +case CV_SymKind_GPROC32_16t:{result = str8_lit("GPROC32_16t");}break; +case CV_SymKind_THUNK32_ST:{result = str8_lit("THUNK32_ST");}break; +case CV_SymKind_BLOCK32_ST:{result = str8_lit("BLOCK32_ST");}break; +case CV_SymKind_WITH32_ST:{result = str8_lit("WITH32_ST");}break; +case CV_SymKind_LABEL32_ST:{result = str8_lit("LABEL32_ST");}break; +case CV_SymKind_CEXMODEL32:{result = str8_lit("CEXMODEL32");}break; +case CV_SymKind_VFTABLE32_16t:{result = str8_lit("VFTABLE32_16t");}break; +case CV_SymKind_REGREL32_16t:{result = str8_lit("REGREL32_16t");}break; +case CV_SymKind_LTHREAD32_16t:{result = str8_lit("LTHREAD32_16t");}break; +case CV_SymKind_GTHREAD32_16t:{result = str8_lit("GTHREAD32_16t");}break; +case CV_SymKind_SLINK32:{result = str8_lit("SLINK32");}break; +case CV_SymKind_LPROCMIPS_16t:{result = str8_lit("LPROCMIPS_16t");}break; +case CV_SymKind_GPROCMIPS_16t:{result = str8_lit("GPROCMIPS_16t");}break; +case CV_SymKind_PROCREF_ST:{result = str8_lit("PROCREF_ST");}break; +case CV_SymKind_DATAREF_ST:{result = str8_lit("DATAREF_ST");}break; +case CV_SymKind_ALIGN:{result = str8_lit("ALIGN");}break; +case CV_SymKind_LPROCREF_ST:{result = str8_lit("LPROCREF_ST");}break; +case CV_SymKind_OEM:{result = str8_lit("OEM");}break; +case CV_SymKind_TI16_MAX:{result = str8_lit("TI16_MAX");}break; +case CV_SymKind_CONSTANT_ST:{result = str8_lit("CONSTANT_ST");}break; +case CV_SymKind_UDT_ST:{result = str8_lit("UDT_ST");}break; +case CV_SymKind_COBOLUDT_ST:{result = str8_lit("COBOLUDT_ST");}break; +case CV_SymKind_MANYREG_ST:{result = str8_lit("MANYREG_ST");}break; +case CV_SymKind_BPREL32_ST:{result = str8_lit("BPREL32_ST");}break; +case CV_SymKind_LDATA32_ST:{result = str8_lit("LDATA32_ST");}break; +case CV_SymKind_GDATA32_ST:{result = str8_lit("GDATA32_ST");}break; +case CV_SymKind_PUB32_ST:{result = str8_lit("PUB32_ST");}break; +case CV_SymKind_LPROC32_ST:{result = str8_lit("LPROC32_ST");}break; +case CV_SymKind_GPROC32_ST:{result = str8_lit("GPROC32_ST");}break; +case CV_SymKind_VFTABLE32:{result = str8_lit("VFTABLE32");}break; +case CV_SymKind_REGREL32_ST:{result = str8_lit("REGREL32_ST");}break; +case CV_SymKind_LTHREAD32_ST:{result = str8_lit("LTHREAD32_ST");}break; +case CV_SymKind_GTHREAD32_ST:{result = str8_lit("GTHREAD32_ST");}break; +case CV_SymKind_LPROCMIPS_ST:{result = str8_lit("LPROCMIPS_ST");}break; +case CV_SymKind_GPROCMIPS_ST:{result = str8_lit("GPROCMIPS_ST");}break; +case CV_SymKind_FRAMEPROC:{result = str8_lit("FRAMEPROC");}break; +case CV_SymKind_COMPILE2_ST:{result = str8_lit("COMPILE2_ST");}break; +case CV_SymKind_MANYREG2_ST:{result = str8_lit("MANYREG2_ST");}break; +case CV_SymKind_LPROCIA64_ST:{result = str8_lit("LPROCIA64_ST");}break; +case CV_SymKind_GPROCIA64_ST:{result = str8_lit("GPROCIA64_ST");}break; +case CV_SymKind_LOCALSLOT_ST:{result = str8_lit("LOCALSLOT_ST");}break; +case CV_SymKind_PARAMSLOT_ST:{result = str8_lit("PARAMSLOT_ST");}break; +case CV_SymKind_ANNOTATION:{result = str8_lit("ANNOTATION");}break; +case CV_SymKind_GMANPROC_ST:{result = str8_lit("GMANPROC_ST");}break; +case CV_SymKind_LMANPROC_ST:{result = str8_lit("LMANPROC_ST");}break; +case CV_SymKind_RESERVED1:{result = str8_lit("RESERVED1");}break; +case CV_SymKind_RESERVED2:{result = str8_lit("RESERVED2");}break; +case CV_SymKind_RESERVED3:{result = str8_lit("RESERVED3");}break; +case CV_SymKind_RESERVED4:{result = str8_lit("RESERVED4");}break; +case CV_SymKind_LMANDATA_ST:{result = str8_lit("LMANDATA_ST");}break; +case CV_SymKind_GMANDATA_ST:{result = str8_lit("GMANDATA_ST");}break; +case CV_SymKind_MANFRAMEREL_ST:{result = str8_lit("MANFRAMEREL_ST");}break; +case CV_SymKind_MANREGISTER_ST:{result = str8_lit("MANREGISTER_ST");}break; +case CV_SymKind_MANSLOT_ST:{result = str8_lit("MANSLOT_ST");}break; +case CV_SymKind_MANMANYREG_ST:{result = str8_lit("MANMANYREG_ST");}break; +case CV_SymKind_MANREGREL_ST:{result = str8_lit("MANREGREL_ST");}break; +case CV_SymKind_MANMANYREG2_ST:{result = str8_lit("MANMANYREG2_ST");}break; +case CV_SymKind_MANTYPREF:{result = str8_lit("MANTYPREF");}break; +case CV_SymKind_UNAMESPACE_ST:{result = str8_lit("UNAMESPACE_ST");}break; +case CV_SymKind_ST_MAX:{result = str8_lit("ST_MAX");}break; +case CV_SymKind_OBJNAME:{result = str8_lit("OBJNAME");}break; +case CV_SymKind_THUNK32:{result = str8_lit("THUNK32");}break; +case CV_SymKind_BLOCK32:{result = str8_lit("BLOCK32");}break; +case CV_SymKind_WITH32:{result = str8_lit("WITH32");}break; +case CV_SymKind_LABEL32:{result = str8_lit("LABEL32");}break; +case CV_SymKind_REGISTER:{result = str8_lit("REGISTER");}break; +case CV_SymKind_CONSTANT:{result = str8_lit("CONSTANT");}break; +case CV_SymKind_UDT:{result = str8_lit("UDT");}break; +case CV_SymKind_COBOLUDT:{result = str8_lit("COBOLUDT");}break; +case CV_SymKind_MANYREG:{result = str8_lit("MANYREG");}break; +case CV_SymKind_BPREL32:{result = str8_lit("BPREL32");}break; +case CV_SymKind_LDATA32:{result = str8_lit("LDATA32");}break; +case CV_SymKind_GDATA32:{result = str8_lit("GDATA32");}break; +case CV_SymKind_PUB32:{result = str8_lit("PUB32");}break; +case CV_SymKind_LPROC32:{result = str8_lit("LPROC32");}break; +case CV_SymKind_GPROC32:{result = str8_lit("GPROC32");}break; +case CV_SymKind_REGREL32:{result = str8_lit("REGREL32");}break; +case CV_SymKind_LTHREAD32:{result = str8_lit("LTHREAD32");}break; +case CV_SymKind_GTHREAD32:{result = str8_lit("GTHREAD32");}break; +case CV_SymKind_LPROCMIPS:{result = str8_lit("LPROCMIPS");}break; +case CV_SymKind_GPROCMIPS:{result = str8_lit("GPROCMIPS");}break; +case CV_SymKind_COMPILE2:{result = str8_lit("COMPILE2");}break; +case CV_SymKind_MANYREG2:{result = str8_lit("MANYREG2");}break; +case CV_SymKind_LPROCIA64:{result = str8_lit("LPROCIA64");}break; +case CV_SymKind_GPROCIA64:{result = str8_lit("GPROCIA64");}break; +case CV_SymKind_LOCALSLOT:{result = str8_lit("LOCALSLOT");}break; +case CV_SymKind_PARAMSLOT:{result = str8_lit("PARAMSLOT");}break; +case CV_SymKind_LMANDATA:{result = str8_lit("LMANDATA");}break; +case CV_SymKind_GMANDATA:{result = str8_lit("GMANDATA");}break; +case CV_SymKind_MANFRAMEREL:{result = str8_lit("MANFRAMEREL");}break; +case CV_SymKind_MANREGISTER:{result = str8_lit("MANREGISTER");}break; +case CV_SymKind_MANSLOT:{result = str8_lit("MANSLOT");}break; +case CV_SymKind_MANMANYREG:{result = str8_lit("MANMANYREG");}break; +case CV_SymKind_MANREGREL:{result = str8_lit("MANREGREL");}break; +case CV_SymKind_MANMANYREG2:{result = str8_lit("MANMANYREG2");}break; +case CV_SymKind_UNAMESPACE:{result = str8_lit("UNAMESPACE");}break; +case CV_SymKind_PROCREF:{result = str8_lit("PROCREF");}break; +case CV_SymKind_DATAREF:{result = str8_lit("DATAREF");}break; +case CV_SymKind_LPROCREF:{result = str8_lit("LPROCREF");}break; +case CV_SymKind_ANNOTATIONREF:{result = str8_lit("ANNOTATIONREF");}break; +case CV_SymKind_TOKENREF:{result = str8_lit("TOKENREF");}break; +case CV_SymKind_GMANPROC:{result = str8_lit("GMANPROC");}break; +case CV_SymKind_LMANPROC:{result = str8_lit("LMANPROC");}break; +case CV_SymKind_TRAMPOLINE:{result = str8_lit("TRAMPOLINE");}break; +case CV_SymKind_MANCONSTANT:{result = str8_lit("MANCONSTANT");}break; +case CV_SymKind_ATTR_FRAMEREL:{result = str8_lit("ATTR_FRAMEREL");}break; +case CV_SymKind_ATTR_REGISTER:{result = str8_lit("ATTR_REGISTER");}break; +case CV_SymKind_ATTR_REGREL:{result = str8_lit("ATTR_REGREL");}break; +case CV_SymKind_ATTR_MANYREG:{result = str8_lit("ATTR_MANYREG");}break; +case CV_SymKind_SEPCODE:{result = str8_lit("SEPCODE");}break; +case CV_SymKind_DEFRANGE_2005:{result = str8_lit("DEFRANGE_2005");}break; +case CV_SymKind_DEFRANGE2_2005:{result = str8_lit("DEFRANGE2_2005");}break; +case CV_SymKind_SECTION:{result = str8_lit("SECTION");}break; +case CV_SymKind_COFFGROUP:{result = str8_lit("COFFGROUP");}break; +case CV_SymKind_EXPORT:{result = str8_lit("EXPORT");}break; +case CV_SymKind_CALLSITEINFO:{result = str8_lit("CALLSITEINFO");}break; +case CV_SymKind_FRAMECOOKIE:{result = str8_lit("FRAMECOOKIE");}break; +case CV_SymKind_DISCARDED:{result = str8_lit("DISCARDED");}break; +case CV_SymKind_COMPILE3:{result = str8_lit("COMPILE3");}break; +case CV_SymKind_ENVBLOCK:{result = str8_lit("ENVBLOCK");}break; +case CV_SymKind_LOCAL:{result = str8_lit("LOCAL");}break; +case CV_SymKind_DEFRANGE:{result = str8_lit("DEFRANGE");}break; +case CV_SymKind_DEFRANGE_SUBFIELD:{result = str8_lit("DEFRANGE_SUBFIELD");}break; +case CV_SymKind_DEFRANGE_REGISTER:{result = str8_lit("DEFRANGE_REGISTER");}break; +case CV_SymKind_DEFRANGE_FRAMEPOINTER_REL:{result = str8_lit("DEFRANGE_FRAMEPOINTER_REL");}break; +case CV_SymKind_DEFRANGE_SUBFIELD_REGISTER:{result = str8_lit("DEFRANGE_SUBFIELD_REGISTER");}break; +case CV_SymKind_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE:{result = str8_lit("DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE");}break; +case CV_SymKind_DEFRANGE_REGISTER_REL:{result = str8_lit("DEFRANGE_REGISTER_REL");}break; +case CV_SymKind_LPROC32_ID:{result = str8_lit("LPROC32_ID");}break; +case CV_SymKind_GPROC32_ID:{result = str8_lit("GPROC32_ID");}break; +case CV_SymKind_LPROCMIPS_ID:{result = str8_lit("LPROCMIPS_ID");}break; +case CV_SymKind_GPROCMIPS_ID:{result = str8_lit("GPROCMIPS_ID");}break; +case CV_SymKind_LPROCIA64_ID:{result = str8_lit("LPROCIA64_ID");}break; +case CV_SymKind_GPROCIA64_ID:{result = str8_lit("GPROCIA64_ID");}break; +case CV_SymKind_BUILDINFO:{result = str8_lit("BUILDINFO");}break; +case CV_SymKind_INLINESITE:{result = str8_lit("INLINESITE");}break; +case CV_SymKind_INLINESITE_END:{result = str8_lit("INLINESITE_END");}break; +case CV_SymKind_PROC_ID_END:{result = str8_lit("PROC_ID_END");}break; +case CV_SymKind_DEFRANGE_HLSL:{result = str8_lit("DEFRANGE_HLSL");}break; +case CV_SymKind_GDATA_HLSL:{result = str8_lit("GDATA_HLSL");}break; +case CV_SymKind_LDATA_HLSL:{result = str8_lit("LDATA_HLSL");}break; +case CV_SymKind_FILESTATIC:{result = str8_lit("FILESTATIC");}break; +case CV_SymKind_LPROC32_DPC:{result = str8_lit("LPROC32_DPC");}break; +case CV_SymKind_LPROC32_DPC_ID:{result = str8_lit("LPROC32_DPC_ID");}break; +case CV_SymKind_DEFRANGE_DPC_PTR_TAG:{result = str8_lit("DEFRANGE_DPC_PTR_TAG");}break; +case CV_SymKind_DPC_SYM_TAG_MAP:{result = str8_lit("DPC_SYM_TAG_MAP");}break; +case CV_SymKind_ARMSWITCHTABLE:{result = str8_lit("ARMSWITCHTABLE");}break; +case CV_SymKind_CALLEES:{result = str8_lit("CALLEES");}break; +case CV_SymKind_CALLERS:{result = str8_lit("CALLERS");}break; +case CV_SymKind_POGODATA:{result = str8_lit("POGODATA");}break; +case CV_SymKind_INLINESITE2:{result = str8_lit("INLINESITE2");}break; +case CV_SymKind_HEAPALLOCSITE:{result = str8_lit("HEAPALLOCSITE");}break; +case CV_SymKind_MOD_TYPEREF:{result = str8_lit("MOD_TYPEREF");}break; +case CV_SymKind_REF_MINIPDB:{result = str8_lit("REF_MINIPDB");}break; +case CV_SymKind_PDBMAP:{result = str8_lit("PDBMAP");}break; +case CV_SymKind_GDATA_HLSL32:{result = str8_lit("GDATA_HLSL32");}break; +case CV_SymKind_LDATA_HLSL32:{result = str8_lit("LDATA_HLSL32");}break; +case CV_SymKind_GDATA_HLSL32_EX:{result = str8_lit("GDATA_HLSL32_EX");}break; +case CV_SymKind_LDATA_HLSL32_EX:{result = str8_lit("LDATA_HLSL32_EX");}break; +case CV_SymKind_FASTLINK:{result = str8_lit("FASTLINK");}break; +case CV_SymKind_INLINEES:{result = str8_lit("INLINEES");}break; +} +return result; +} + +internal String8 +cv_string_from_basic_type(CV_BasicType v) +{ +String8 result = str8_lit(""); +switch(v) +{ +default:{}break; +case CV_BasicType_NOTYPE:{result = str8_lit("NOTYPE");}break; +case CV_BasicType_ABS:{result = str8_lit("ABS");}break; +case CV_BasicType_SEGMENT:{result = str8_lit("SEGMENT");}break; +case CV_BasicType_VOID:{result = str8_lit("VOID");}break; +case CV_BasicType_CURRENCY:{result = str8_lit("CURRENCY");}break; +case CV_BasicType_NBASICSTR:{result = str8_lit("NBASICSTR");}break; +case CV_BasicType_FBASICSTR:{result = str8_lit("FBASICSTR");}break; +case CV_BasicType_NOTTRANS:{result = str8_lit("NOTTRANS");}break; +case CV_BasicType_HRESULT:{result = str8_lit("HRESULT");}break; +case CV_BasicType_CHAR:{result = str8_lit("CHAR");}break; +case CV_BasicType_SHORT:{result = str8_lit("SHORT");}break; +case CV_BasicType_LONG:{result = str8_lit("LONG");}break; +case CV_BasicType_QUAD:{result = str8_lit("QUAD");}break; +case CV_BasicType_OCT:{result = str8_lit("OCT");}break; +case CV_BasicType_UCHAR:{result = str8_lit("UCHAR");}break; +case CV_BasicType_USHORT:{result = str8_lit("USHORT");}break; +case CV_BasicType_ULONG:{result = str8_lit("ULONG");}break; +case CV_BasicType_UQUAD:{result = str8_lit("UQUAD");}break; +case CV_BasicType_UOCT:{result = str8_lit("UOCT");}break; +case CV_BasicType_BOOL8:{result = str8_lit("BOOL8");}break; +case CV_BasicType_BOOL16:{result = str8_lit("BOOL16");}break; +case CV_BasicType_BOOL32:{result = str8_lit("BOOL32");}break; +case CV_BasicType_BOOL64:{result = str8_lit("BOOL64");}break; +case CV_BasicType_FLOAT32:{result = str8_lit("FLOAT32");}break; +case CV_BasicType_FLOAT64:{result = str8_lit("FLOAT64");}break; +case CV_BasicType_FLOAT80:{result = str8_lit("FLOAT80");}break; +case CV_BasicType_FLOAT128:{result = str8_lit("FLOAT128");}break; +case CV_BasicType_FLOAT48:{result = str8_lit("FLOAT48");}break; +case CV_BasicType_FLOAT32PP:{result = str8_lit("FLOAT32PP");}break; +case CV_BasicType_FLOAT16:{result = str8_lit("FLOAT16");}break; +case CV_BasicType_COMPLEX32:{result = str8_lit("COMPLEX32");}break; +case CV_BasicType_COMPLEX64:{result = str8_lit("COMPLEX64");}break; +case CV_BasicType_COMPLEX80:{result = str8_lit("COMPLEX80");}break; +case CV_BasicType_COMPLEX128:{result = str8_lit("COMPLEX128");}break; +case CV_BasicType_BIT:{result = str8_lit("BIT");}break; +case CV_BasicType_PASCHAR:{result = str8_lit("PASCHAR");}break; +case CV_BasicType_BOOL32FF:{result = str8_lit("BOOL32FF");}break; +case CV_BasicType_INT8:{result = str8_lit("INT8");}break; +case CV_BasicType_UINT8:{result = str8_lit("UINT8");}break; +case CV_BasicType_RCHAR:{result = str8_lit("RCHAR");}break; +case CV_BasicType_WCHAR:{result = str8_lit("WCHAR");}break; +case CV_BasicType_INT16:{result = str8_lit("INT16");}break; +case CV_BasicType_UINT16:{result = str8_lit("UINT16");}break; +case CV_BasicType_INT32:{result = str8_lit("INT32");}break; +case CV_BasicType_UINT32:{result = str8_lit("UINT32");}break; +case CV_BasicType_INT64:{result = str8_lit("INT64");}break; +case CV_BasicType_UINT64:{result = str8_lit("UINT64");}break; +case CV_BasicType_INT128:{result = str8_lit("INT128");}break; +case CV_BasicType_UINT128:{result = str8_lit("UINT128");}break; +case CV_BasicType_CHAR16:{result = str8_lit("CHAR16");}break; +case CV_BasicType_CHAR32:{result = str8_lit("CHAR32");}break; +case CV_BasicType_CHAR8:{result = str8_lit("CHAR8");}break; +case CV_BasicType_PTR:{result = str8_lit("PTR");}break; +} +return result; +} + +internal String8 +cv_type_name_from_basic_type(CV_BasicType v) +{ +String8 result = str8_lit(""); +switch(v) +{ +default:{}break; +case CV_BasicType_NOTYPE:{result = str8_lit("");}break; +case CV_BasicType_ABS:{result = str8_lit("");}break; +case CV_BasicType_SEGMENT:{result = str8_lit("");}break; +case CV_BasicType_VOID:{result = str8_lit("void");}break; +case CV_BasicType_CURRENCY:{result = str8_lit("");}break; +case CV_BasicType_NBASICSTR:{result = str8_lit("");}break; +case CV_BasicType_FBASICSTR:{result = str8_lit("");}break; +case CV_BasicType_NOTTRANS:{result = str8_lit("");}break; +case CV_BasicType_HRESULT:{result = str8_lit("HRESULT");}break; +case CV_BasicType_CHAR:{result = str8_lit("CHAR");}break; +case CV_BasicType_SHORT:{result = str8_lit("SHORT");}break; +case CV_BasicType_LONG:{result = str8_lit("LONG");}break; +case CV_BasicType_QUAD:{result = str8_lit("QUAD");}break; +case CV_BasicType_OCT:{result = str8_lit("OCT");}break; +case CV_BasicType_UCHAR:{result = str8_lit("UCHAR");}break; +case CV_BasicType_USHORT:{result = str8_lit("USHORT");}break; +case CV_BasicType_ULONG:{result = str8_lit("ULONG");}break; +case CV_BasicType_UQUAD:{result = str8_lit("UQUAD");}break; +case CV_BasicType_UOCT:{result = str8_lit("UOCT");}break; +case CV_BasicType_BOOL8:{result = str8_lit("BOOL8");}break; +case CV_BasicType_BOOL16:{result = str8_lit("BOOL16");}break; +case CV_BasicType_BOOL32:{result = str8_lit("BOOL32");}break; +case CV_BasicType_BOOL64:{result = str8_lit("BOOL64");}break; +case CV_BasicType_FLOAT32:{result = str8_lit("FLOAT32");}break; +case CV_BasicType_FLOAT64:{result = str8_lit("FLOAT64");}break; +case CV_BasicType_FLOAT80:{result = str8_lit("FLOAT80");}break; +case CV_BasicType_FLOAT128:{result = str8_lit("FLOAT128");}break; +case CV_BasicType_FLOAT48:{result = str8_lit("FLOAT48");}break; +case CV_BasicType_FLOAT32PP:{result = str8_lit("FLOAT32PP");}break; +case CV_BasicType_FLOAT16:{result = str8_lit("FLOAT16");}break; +case CV_BasicType_COMPLEX32:{result = str8_lit("ComplexF32");}break; +case CV_BasicType_COMPLEX64:{result = str8_lit("ComplexF64");}break; +case CV_BasicType_COMPLEX80:{result = str8_lit("ComplexF80");}break; +case CV_BasicType_COMPLEX128:{result = str8_lit("ComplexF128");}break; +case CV_BasicType_BIT:{result = str8_lit("");}break; +case CV_BasicType_PASCHAR:{result = str8_lit("");}break; +case CV_BasicType_BOOL32FF:{result = str8_lit("BOOL32FF");}break; +case CV_BasicType_INT8:{result = str8_lit("int8");}break; +case CV_BasicType_UINT8:{result = str8_lit("uint8");}break; +case CV_BasicType_RCHAR:{result = str8_lit("char");}break; +case CV_BasicType_WCHAR:{result = str8_lit("WCHAR");}break; +case CV_BasicType_INT16:{result = str8_lit("int16");}break; +case CV_BasicType_UINT16:{result = str8_lit("uint16");}break; +case CV_BasicType_INT32:{result = str8_lit("int32");}break; +case CV_BasicType_UINT32:{result = str8_lit("uint32");}break; +case CV_BasicType_INT64:{result = str8_lit("int64");}break; +case CV_BasicType_UINT64:{result = str8_lit("uint64");}break; +case CV_BasicType_INT128:{result = str8_lit("int128");}break; +case CV_BasicType_UINT128:{result = str8_lit("uint128");}break; +case CV_BasicType_CHAR16:{result = str8_lit("char16");}break; +case CV_BasicType_CHAR32:{result = str8_lit("char32");}break; +case CV_BasicType_CHAR8:{result = str8_lit("char");}break; +case CV_BasicType_PTR:{result = str8_lit("PTR");}break; +} +return result; +} + +internal String8 +cv_string_from_leaf_kind(CV_LeafKind v) +{ +String8 result = str8_lit(""); +switch(v) +{ +default:{}break; +case CV_LeafKind_NOTYPE:{result = str8_lit("NOTYPE");}break; +case CV_LeafKind_MODIFIER_16t:{result = str8_lit("MODIFIER_16t");}break; +case CV_LeafKind_POINTER_16t:{result = str8_lit("POINTER_16t");}break; +case CV_LeafKind_ARRAY_16t:{result = str8_lit("ARRAY_16t");}break; +case CV_LeafKind_CLASS_16t:{result = str8_lit("CLASS_16t");}break; +case CV_LeafKind_STRUCTURE_16t:{result = str8_lit("STRUCTURE_16t");}break; +case CV_LeafKind_UNION_16t:{result = str8_lit("UNION_16t");}break; +case CV_LeafKind_ENUM_16t:{result = str8_lit("ENUM_16t");}break; +case CV_LeafKind_PROCEDURE_16t:{result = str8_lit("PROCEDURE_16t");}break; +case CV_LeafKind_MFUNCTION_16t:{result = str8_lit("MFUNCTION_16t");}break; +case CV_LeafKind_VTSHAPE:{result = str8_lit("VTSHAPE");}break; +case CV_LeafKind_COBOL0_16t:{result = str8_lit("COBOL0_16t");}break; +case CV_LeafKind_COBOL1:{result = str8_lit("COBOL1");}break; +case CV_LeafKind_BARRAY_16t:{result = str8_lit("BARRAY_16t");}break; +case CV_LeafKind_LABEL:{result = str8_lit("LABEL");}break; +case CV_LeafKind_NULL:{result = str8_lit("NULL");}break; +case CV_LeafKind_NOTTRAN:{result = str8_lit("NOTTRAN");}break; +case CV_LeafKind_DIMARRAY_16t:{result = str8_lit("DIMARRAY_16t");}break; +case CV_LeafKind_VFTPATH_16t:{result = str8_lit("VFTPATH_16t");}break; +case CV_LeafKind_PRECOMP_16t:{result = str8_lit("PRECOMP_16t");}break; +case CV_LeafKind_ENDPRECOMP:{result = str8_lit("ENDPRECOMP");}break; +case CV_LeafKind_OEM_16t:{result = str8_lit("OEM_16t");}break; +case CV_LeafKind_TYPESERVER_ST:{result = str8_lit("TYPESERVER_ST");}break; +case CV_LeafKind_SKIP_16t:{result = str8_lit("SKIP_16t");}break; +case CV_LeafKind_ARGLIST_16t:{result = str8_lit("ARGLIST_16t");}break; +case CV_LeafKind_DEFARG_16t:{result = str8_lit("DEFARG_16t");}break; +case CV_LeafKind_LIST:{result = str8_lit("LIST");}break; +case CV_LeafKind_FIELDLIST_16t:{result = str8_lit("FIELDLIST_16t");}break; +case CV_LeafKind_DERIVED_16t:{result = str8_lit("DERIVED_16t");}break; +case CV_LeafKind_BITFIELD_16t:{result = str8_lit("BITFIELD_16t");}break; +case CV_LeafKind_METHODLIST_16t:{result = str8_lit("METHODLIST_16t");}break; +case CV_LeafKind_DIMCONU_16t:{result = str8_lit("DIMCONU_16t");}break; +case CV_LeafKind_DIMCONLU_16t:{result = str8_lit("DIMCONLU_16t");}break; +case CV_LeafKind_DIMVARU_16t:{result = str8_lit("DIMVARU_16t");}break; +case CV_LeafKind_DIMVARLU_16t:{result = str8_lit("DIMVARLU_16t");}break; +case CV_LeafKind_REFSYM:{result = str8_lit("REFSYM");}break; +case CV_LeafKind_BCLASS_16t:{result = str8_lit("BCLASS_16t");}break; +case CV_LeafKind_VBCLASS_16t:{result = str8_lit("VBCLASS_16t");}break; +case CV_LeafKind_IVBCLASS_16t:{result = str8_lit("IVBCLASS_16t");}break; +case CV_LeafKind_ENUMERATE_ST:{result = str8_lit("ENUMERATE_ST");}break; +case CV_LeafKind_FRIENDFCN_16t:{result = str8_lit("FRIENDFCN_16t");}break; +case CV_LeafKind_INDEX_16t:{result = str8_lit("INDEX_16t");}break; +case CV_LeafKind_MEMBER_16t:{result = str8_lit("MEMBER_16t");}break; +case CV_LeafKind_STMEMBER_16t:{result = str8_lit("STMEMBER_16t");}break; +case CV_LeafKind_METHOD_16t:{result = str8_lit("METHOD_16t");}break; +case CV_LeafKind_NESTTYPE_16t:{result = str8_lit("NESTTYPE_16t");}break; +case CV_LeafKind_VFUNCTAB_16t:{result = str8_lit("VFUNCTAB_16t");}break; +case CV_LeafKind_FRIENDCLS_16t:{result = str8_lit("FRIENDCLS_16t");}break; +case CV_LeafKind_ONEMETHOD_16t:{result = str8_lit("ONEMETHOD_16t");}break; +case CV_LeafKind_VFUNCOFF_16t:{result = str8_lit("VFUNCOFF_16t");}break; +case CV_LeafKind_TI16_MAX:{result = str8_lit("TI16_MAX");}break; +case CV_LeafKind_MODIFIER:{result = str8_lit("MODIFIER");}break; +case CV_LeafKind_POINTER:{result = str8_lit("POINTER");}break; +case CV_LeafKind_ARRAY_ST:{result = str8_lit("ARRAY_ST");}break; +case CV_LeafKind_CLASS_ST:{result = str8_lit("CLASS_ST");}break; +case CV_LeafKind_STRUCTURE_ST:{result = str8_lit("STRUCTURE_ST");}break; +case CV_LeafKind_UNION_ST:{result = str8_lit("UNION_ST");}break; +case CV_LeafKind_ENUM_ST:{result = str8_lit("ENUM_ST");}break; +case CV_LeafKind_PROCEDURE:{result = str8_lit("PROCEDURE");}break; +case CV_LeafKind_MFUNCTION:{result = str8_lit("MFUNCTION");}break; +case CV_LeafKind_COBOL0:{result = str8_lit("COBOL0");}break; +case CV_LeafKind_BARRAY:{result = str8_lit("BARRAY");}break; +case CV_LeafKind_DIMARRAY_ST:{result = str8_lit("DIMARRAY_ST");}break; +case CV_LeafKind_VFTPATH:{result = str8_lit("VFTPATH");}break; +case CV_LeafKind_PRECOMP_ST:{result = str8_lit("PRECOMP_ST");}break; +case CV_LeafKind_OEM:{result = str8_lit("OEM");}break; +case CV_LeafKind_ALIAS_ST:{result = str8_lit("ALIAS_ST");}break; +case CV_LeafKind_OEM2:{result = str8_lit("OEM2");}break; +case CV_LeafKind_SKIP:{result = str8_lit("SKIP");}break; +case CV_LeafKind_ARGLIST:{result = str8_lit("ARGLIST");}break; +case CV_LeafKind_DEFARG_ST:{result = str8_lit("DEFARG_ST");}break; +case CV_LeafKind_FIELDLIST:{result = str8_lit("FIELDLIST");}break; +case CV_LeafKind_DERIVED:{result = str8_lit("DERIVED");}break; +case CV_LeafKind_BITFIELD:{result = str8_lit("BITFIELD");}break; +case CV_LeafKind_METHODLIST:{result = str8_lit("METHODLIST");}break; +case CV_LeafKind_DIMCONU:{result = str8_lit("DIMCONU");}break; +case CV_LeafKind_DIMCONLU:{result = str8_lit("DIMCONLU");}break; +case CV_LeafKind_DIMVARU:{result = str8_lit("DIMVARU");}break; +case CV_LeafKind_DIMVARLU:{result = str8_lit("DIMVARLU");}break; +case CV_LeafKind_BCLASS:{result = str8_lit("BCLASS");}break; +case CV_LeafKind_VBCLASS:{result = str8_lit("VBCLASS");}break; +case CV_LeafKind_IVBCLASS:{result = str8_lit("IVBCLASS");}break; +case CV_LeafKind_FRIENDFCN_ST:{result = str8_lit("FRIENDFCN_ST");}break; +case CV_LeafKind_INDEX:{result = str8_lit("INDEX");}break; +case CV_LeafKind_MEMBER_ST:{result = str8_lit("MEMBER_ST");}break; +case CV_LeafKind_STMEMBER_ST:{result = str8_lit("STMEMBER_ST");}break; +case CV_LeafKind_METHOD_ST:{result = str8_lit("METHOD_ST");}break; +case CV_LeafKind_NESTTYPE_ST:{result = str8_lit("NESTTYPE_ST");}break; +case CV_LeafKind_VFUNCTAB:{result = str8_lit("VFUNCTAB");}break; +case CV_LeafKind_FRIENDCLS:{result = str8_lit("FRIENDCLS");}break; +case CV_LeafKind_ONEMETHOD_ST:{result = str8_lit("ONEMETHOD_ST");}break; +case CV_LeafKind_VFUNCOFF:{result = str8_lit("VFUNCOFF");}break; +case CV_LeafKind_NESTTYPEEX_ST:{result = str8_lit("NESTTYPEEX_ST");}break; +case CV_LeafKind_MEMBERMODIFY_ST:{result = str8_lit("MEMBERMODIFY_ST");}break; +case CV_LeafKind_MANAGED_ST:{result = str8_lit("MANAGED_ST");}break; +case CV_LeafKind_ST_MAX:{result = str8_lit("ST_MAX");}break; +case CV_LeafKind_TYPESERVER:{result = str8_lit("TYPESERVER");}break; +case CV_LeafKind_ENUMERATE:{result = str8_lit("ENUMERATE");}break; +case CV_LeafKind_ARRAY:{result = str8_lit("ARRAY");}break; +case CV_LeafKind_CLASS:{result = str8_lit("CLASS");}break; +case CV_LeafKind_STRUCTURE:{result = str8_lit("STRUCTURE");}break; +case CV_LeafKind_UNION:{result = str8_lit("UNION");}break; +case CV_LeafKind_ENUM:{result = str8_lit("ENUM");}break; +case CV_LeafKind_DIMARRAY:{result = str8_lit("DIMARRAY");}break; +case CV_LeafKind_PRECOMP:{result = str8_lit("PRECOMP");}break; +case CV_LeafKind_ALIAS:{result = str8_lit("ALIAS");}break; +case CV_LeafKind_DEFARG:{result = str8_lit("DEFARG");}break; +case CV_LeafKind_FRIENDFCN:{result = str8_lit("FRIENDFCN");}break; +case CV_LeafKind_MEMBER:{result = str8_lit("MEMBER");}break; +case CV_LeafKind_STMEMBER:{result = str8_lit("STMEMBER");}break; +case CV_LeafKind_METHOD:{result = str8_lit("METHOD");}break; +case CV_LeafKind_NESTTYPE:{result = str8_lit("NESTTYPE");}break; +case CV_LeafKind_ONEMETHOD:{result = str8_lit("ONEMETHOD");}break; +case CV_LeafKind_NESTTYPEEX:{result = str8_lit("NESTTYPEEX");}break; +case CV_LeafKind_MEMBERMODIFY:{result = str8_lit("MEMBERMODIFY");}break; +case CV_LeafKind_MANAGED:{result = str8_lit("MANAGED");}break; +case CV_LeafKind_TYPESERVER2:{result = str8_lit("TYPESERVER2");}break; +case CV_LeafKind_STRIDED_ARRAY:{result = str8_lit("STRIDED_ARRAY");}break; +case CV_LeafKind_HLSL:{result = str8_lit("HLSL");}break; +case CV_LeafKind_MODIFIER_EX:{result = str8_lit("MODIFIER_EX");}break; +case CV_LeafKind_INTERFACE:{result = str8_lit("INTERFACE");}break; +case CV_LeafKind_BINTERFACE:{result = str8_lit("BINTERFACE");}break; +case CV_LeafKind_VECTOR:{result = str8_lit("VECTOR");}break; +case CV_LeafKind_MATRIX:{result = str8_lit("MATRIX");}break; +case CV_LeafKind_VFTABLE:{result = str8_lit("VFTABLE");}break; +case CV_LeafKind_FUNC_ID:{result = str8_lit("FUNC_ID");}break; +case CV_LeafKind_MFUNC_ID:{result = str8_lit("MFUNC_ID");}break; +case CV_LeafKind_BUILDINFO:{result = str8_lit("BUILDINFO");}break; +case CV_LeafKind_SUBSTR_LIST:{result = str8_lit("SUBSTR_LIST");}break; +case CV_LeafKind_STRING_ID:{result = str8_lit("STRING_ID");}break; +case CV_LeafKind_UDT_SRC_LINE:{result = str8_lit("UDT_SRC_LINE");}break; +case CV_LeafKind_UDT_MOD_SRC_LINE:{result = str8_lit("UDT_MOD_SRC_LINE");}break; +case CV_LeafKind_CLASS2:{result = str8_lit("CLASS2");}break; +case CV_LeafKind_STRUCT2:{result = str8_lit("STRUCT2");}break; +} +return result; +} + +internal U64 +cv_header_struct_size_from_sym_kind(CV_SymKind v) +{ +U64 result = 0; +switch(v) +{ +default:{}break; +case CV_SymKind_COMPILE:{result = sizeof(CV_SymCompile);}break; +case CV_SymKind_SSEARCH:{result = sizeof(CV_SymStartSearch);}break; +case CV_SymKind_RETURN:{result = sizeof(CV_SymReturn);}break; +case CV_SymKind_SLINK32:{result = sizeof(CV_SymSLink32);}break; +case CV_SymKind_OEM:{result = sizeof(CV_SymOEM);}break; +case CV_SymKind_VFTABLE32:{result = sizeof(CV_SymVPath32);}break; +case CV_SymKind_FRAMEPROC:{result = sizeof(CV_SymFrameproc);}break; +case CV_SymKind_ANNOTATION:{result = sizeof(CV_SymAnnotation);}break; +case CV_SymKind_OBJNAME:{result = sizeof(CV_SymObjName);}break; +case CV_SymKind_THUNK32:{result = sizeof(CV_SymThunk32);}break; +case CV_SymKind_BLOCK32:{result = sizeof(CV_SymBlock32);}break; +case CV_SymKind_LABEL32:{result = sizeof(CV_SymLabel32);}break; +case CV_SymKind_REGISTER:{result = sizeof(CV_SymRegister);}break; +case CV_SymKind_CONSTANT:{result = sizeof(CV_SymConstant);}break; +case CV_SymKind_UDT:{result = sizeof(CV_SymUDT);}break; +case CV_SymKind_MANYREG:{result = sizeof(CV_SymManyreg);}break; +case CV_SymKind_BPREL32:{result = sizeof(CV_SymBPRel32);}break; +case CV_SymKind_LDATA32:{result = sizeof(CV_SymData32);}break; +case CV_SymKind_GDATA32:{result = sizeof(CV_SymData32);}break; +case CV_SymKind_PUB32:{result = sizeof(CV_SymPub32);}break; +case CV_SymKind_LPROC32:{result = sizeof(CV_SymProc32);}break; +case CV_SymKind_GPROC32:{result = sizeof(CV_SymProc32);}break; +case CV_SymKind_REGREL32:{result = sizeof(CV_SymRegrel32);}break; +case CV_SymKind_LTHREAD32:{result = sizeof(CV_SymThread32);}break; +case CV_SymKind_GTHREAD32:{result = sizeof(CV_SymThread32);}break; +case CV_SymKind_COMPILE2:{result = sizeof(CV_SymCompile2);}break; +case CV_SymKind_MANYREG2:{result = sizeof(CV_SymManyreg2);}break; +case CV_SymKind_LOCALSLOT:{result = sizeof(CV_SymSlot);}break; +case CV_SymKind_MANFRAMEREL:{result = sizeof(CV_SymAttrFrameRel);}break; +case CV_SymKind_MANREGISTER:{result = sizeof(CV_SymAttrReg);}break; +case CV_SymKind_MANMANYREG:{result = sizeof(CV_SymAttrManyReg);}break; +case CV_SymKind_MANREGREL:{result = sizeof(CV_SymAttrRegRel);}break; +case CV_SymKind_UNAMESPACE:{result = sizeof(CV_SymUNamespace);}break; +case CV_SymKind_PROCREF:{result = sizeof(CV_SymRef2);}break; +case CV_SymKind_DATAREF:{result = sizeof(CV_SymRef2);}break; +case CV_SymKind_LPROCREF:{result = sizeof(CV_SymRef2);}break; +case CV_SymKind_TRAMPOLINE:{result = sizeof(CV_SymTrampoline);}break; +case CV_SymKind_ATTR_FRAMEREL:{result = sizeof(CV_SymAttrFrameRel);}break; +case CV_SymKind_ATTR_REGISTER:{result = sizeof(CV_SymAttrReg);}break; +case CV_SymKind_ATTR_REGREL:{result = sizeof(CV_SymAttrRegRel);}break; +case CV_SymKind_ATTR_MANYREG:{result = sizeof(CV_SymAttrManyReg);}break; +case CV_SymKind_SEPCODE:{result = sizeof(CV_SymSepcode);}break; +case CV_SymKind_SECTION:{result = sizeof(CV_SymSection);}break; +case CV_SymKind_COFFGROUP:{result = sizeof(CV_SymCoffGroup);}break; +case CV_SymKind_EXPORT:{result = sizeof(CV_SymExport);}break; +case CV_SymKind_CALLSITEINFO:{result = sizeof(CV_SymCallSiteInfo);}break; +case CV_SymKind_FRAMECOOKIE:{result = sizeof(CV_SymFrameCookie);}break; +case CV_SymKind_DISCARDED:{result = sizeof(CV_SymDiscarded);}break; +case CV_SymKind_COMPILE3:{result = sizeof(CV_SymCompile3);}break; +case CV_SymKind_ENVBLOCK:{result = sizeof(CV_SymEnvBlock);}break; +case CV_SymKind_LOCAL:{result = sizeof(CV_SymLocal);}break; +case CV_SymKind_DEFRANGE_SUBFIELD:{result = sizeof(CV_SymDefrangeSubfield);}break; +case CV_SymKind_DEFRANGE_REGISTER:{result = sizeof(CV_SymDefrangeRegister);}break; +case CV_SymKind_DEFRANGE_FRAMEPOINTER_REL:{result = sizeof(CV_SymDefrangeFramepointerRel);}break; +case CV_SymKind_DEFRANGE_SUBFIELD_REGISTER:{result = sizeof(CV_SymDefrangeSubfieldRegister);}break; +case CV_SymKind_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE:{result = sizeof(CV_SymDefrangeFramepointerRelFullScope);}break; +case CV_SymKind_DEFRANGE_REGISTER_REL:{result = sizeof(CV_SymDefrangeRegisterRel);}break; +case CV_SymKind_BUILDINFO:{result = sizeof(CV_SymBuildInfo);}break; +case CV_SymKind_INLINESITE:{result = sizeof(CV_SymInlineSite);}break; +case CV_SymKind_FILESTATIC:{result = sizeof(CV_SymFileStatic);}break; +case CV_SymKind_CALLEES:{result = sizeof(CV_SymFunctionList);}break; +case CV_SymKind_CALLERS:{result = sizeof(CV_SymFunctionList);}break; +case CV_SymKind_POGODATA:{result = sizeof(CV_SymPogoInfo);}break; +case CV_SymKind_INLINESITE2:{result = sizeof(CV_SymInlineSite2);}break; +case CV_SymKind_HEAPALLOCSITE:{result = sizeof(CV_SymHeapAllocSite);}break; +case CV_SymKind_MOD_TYPEREF:{result = sizeof(CV_SymModTypeRef);}break; +case CV_SymKind_REF_MINIPDB:{result = sizeof(CV_SymRefMiniPdb);}break; +case CV_SymKind_FASTLINK:{result = sizeof(CV_SymFastLink);}break; +case CV_SymKind_INLINEES:{result = sizeof(CV_SymInlinees);}break; +} +return result; +} +internal U64 +cv_header_struct_size_from_leaf_kind(CV_LeafKind v) +{ +U64 result = 0; +switch(v) +{ +default:{}break; +case CV_LeafKind_VTSHAPE:{result = sizeof(CV_LeafVTShape);}break; +case CV_LeafKind_LABEL:{result = sizeof(CV_LeafLabel);}break; +case CV_LeafKind_MODIFIER:{result = sizeof(CV_LeafModifier);}break; +case CV_LeafKind_POINTER:{result = sizeof(CV_LeafPointer);}break; +case CV_LeafKind_PROCEDURE:{result = sizeof(CV_LeafProcedure);}break; +case CV_LeafKind_MFUNCTION:{result = sizeof(CV_LeafMFunction);}break; +case CV_LeafKind_VFTPATH:{result = sizeof(CV_LeafVFPath);}break; +case CV_LeafKind_SKIP:{result = sizeof(CV_LeafSkip);}break; +case CV_LeafKind_ARGLIST:{result = sizeof(CV_LeafArgList);}break; +case CV_LeafKind_BITFIELD:{result = sizeof(CV_LeafBitField);}break; +case CV_LeafKind_METHODLIST:{result = sizeof(CV_LeafMethodListMember);}break; +case CV_LeafKind_BCLASS:{result = sizeof(CV_LeafBClass);}break; +case CV_LeafKind_VBCLASS:{result = sizeof(CV_LeafVBClass);}break; +case CV_LeafKind_INDEX:{result = sizeof(CV_LeafIndex);}break; +case CV_LeafKind_VFUNCTAB:{result = sizeof(CV_LeafVFuncTab);}break; +case CV_LeafKind_VFUNCOFF:{result = sizeof(CV_LeafVFuncOff);}break; +case CV_LeafKind_TYPESERVER:{result = sizeof(CV_LeafTypeServer);}break; +case CV_LeafKind_ENUMERATE:{result = sizeof(CV_LeafEnumerate);}break; +case CV_LeafKind_ARRAY:{result = sizeof(CV_LeafArray);}break; +case CV_LeafKind_CLASS:{result = sizeof(CV_LeafStruct);}break; +case CV_LeafKind_STRUCTURE:{result = sizeof(CV_LeafStruct);}break; +case CV_LeafKind_UNION:{result = sizeof(CV_LeafUnion);}break; +case CV_LeafKind_ENUM:{result = sizeof(CV_LeafEnum);}break; +case CV_LeafKind_PRECOMP:{result = sizeof(CV_LeafPreComp);}break; +case CV_LeafKind_ALIAS:{result = sizeof(CV_LeafAlias);}break; +case CV_LeafKind_MEMBER:{result = sizeof(CV_LeafMember);}break; +case CV_LeafKind_STMEMBER:{result = sizeof(CV_LeafStMember);}break; +case CV_LeafKind_METHOD:{result = sizeof(CV_LeafMethod);}break; +case CV_LeafKind_NESTTYPE:{result = sizeof(CV_LeafNestType);}break; +case CV_LeafKind_ONEMETHOD:{result = sizeof(CV_LeafOneMethod);}break; +case CV_LeafKind_NESTTYPEEX:{result = sizeof(CV_LeafNestTypeEx);}break; +case CV_LeafKind_TYPESERVER2:{result = sizeof(CV_LeafTypeServer2);}break; +case CV_LeafKind_INTERFACE:{result = sizeof(CV_LeafStruct);}break; +case CV_LeafKind_FUNC_ID:{result = sizeof(CV_LeafFuncId);}break; +case CV_LeafKind_MFUNC_ID:{result = sizeof(CV_LeafMFuncId);}break; +case CV_LeafKind_BUILDINFO:{result = sizeof(CV_LeafBuildInfo);}break; +case CV_LeafKind_SUBSTR_LIST:{result = sizeof(CV_LeafSubstrList);}break; +case CV_LeafKind_STRING_ID:{result = sizeof(CV_LeafStringId);}break; +case CV_LeafKind_UDT_SRC_LINE:{result = sizeof(CV_LeafUDTSrcLine);}break; +case CV_LeafKind_UDT_MOD_SRC_LINE:{result = sizeof(CV_LeafUDTModSrcLine);}break; +case CV_LeafKind_CLASS2:{result = sizeof(CV_LeafStruct2);}break; +case CV_LeafKind_STRUCT2:{result = sizeof(CV_LeafStruct2);}break; +} +return result; +} diff --git a/src/codeview/generated/codeview.meta.h b/src/codeview/generated/codeview.meta.h index 84612e5e..24265ebc 100644 --- a/src/codeview/generated/codeview.meta.h +++ b/src/codeview/generated/codeview.meta.h @@ -1,528 +1,528 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef CODEVIEW_META_H -#define CODEVIEW_META_H - -typedef U16 CV_NumericKind; -typedef enum CV_NumericKindEnum -{ -CV_NumericKind_CHAR = 0x8000, -CV_NumericKind_SHORT = 0x8001, -CV_NumericKind_USHORT = 0x8002, -CV_NumericKind_LONG = 0x8003, -CV_NumericKind_ULONG = 0x8004, -CV_NumericKind_FLOAT32 = 0x8005, -CV_NumericKind_FLOAT64 = 0x8006, -CV_NumericKind_FLOAT80 = 0x8007, -CV_NumericKind_FLOAT128 = 0x8008, -CV_NumericKind_QUADWORD = 0x8009, -CV_NumericKind_UQUADWORD = 0x800a, -CV_NumericKind_FLOAT48 = 0x800b, -CV_NumericKind_COMPLEX32 = 0x800c, -CV_NumericKind_COMPLEX64 = 0x800d, -CV_NumericKind_COMPLEX80 = 0x800e, -CV_NumericKind_COMPLEX128 = 0x800f, -CV_NumericKind_VARSTRING = 0x8010, -CV_NumericKind_OCTWORD = 0x8017, -CV_NumericKind_UOCTWORD = 0x8018, -CV_NumericKind_DECIMAL = 0x8019, -CV_NumericKind_DATE = 0x801a, -CV_NumericKind_UTF8STRING = 0x801b, -CV_NumericKind_FLOAT16 = 0x801c, -} CV_NumericKindEnum; - -typedef U16 CV_Arch; -typedef enum CV_ArchEnum -{ -CV_Arch_8080 = 0x00, -CV_Arch_8086 = 0x01, -CV_Arch_80286 = 0x02, -CV_Arch_80386 = 0x03, -CV_Arch_80486 = 0x04, -CV_Arch_PENTIUM = 0x05, -CV_Arch_PENTIUMII = 0x06, -CV_Arch_PENTIUMIII = 0x07, -CV_Arch_MIPS = 0x10, -CV_Arch_MIPS16 = 0x11, -CV_Arch_MIPS32 = 0x12, -CV_Arch_MIPS64 = 0x13, -CV_Arch_MIPSI = 0x14, -CV_Arch_MIPSII = 0x15, -CV_Arch_MIPSIII = 0x16, -CV_Arch_MIPSIV = 0x17, -CV_Arch_MIPSV = 0x18, -CV_Arch_M68000 = 0x20, -CV_Arch_M68010 = 0x21, -CV_Arch_M68020 = 0x22, -CV_Arch_M68030 = 0x23, -CV_Arch_M68040 = 0x24, -CV_Arch_ALPHA = 0x30, -CV_Arch_ALPHA_21164 = 0x31, -CV_Arch_ALPHA_21164A = 0x32, -CV_Arch_ALPHA_21264 = 0x33, -CV_Arch_ALPHA_21364 = 0x34, -CV_Arch_PPC601 = 0x40, -CV_Arch_PPC603 = 0x41, -CV_Arch_PPC604 = 0x42, -CV_Arch_PPC620 = 0x43, -CV_Arch_PPCFP = 0x44, -CV_Arch_PPCBE = 0x45, -CV_Arch_SH3 = 0x50, -CV_Arch_SH3E = 0x51, -CV_Arch_SH3DSP = 0x52, -CV_Arch_SH4 = 0x53, -CV_Arch_SHMEDIA = 0x54, -CV_Arch_ARM3 = 0x60, -CV_Arch_ARM4 = 0x61, -CV_Arch_ARM4T = 0x62, -CV_Arch_ARM5 = 0x63, -CV_Arch_ARM5T = 0x64, -CV_Arch_ARM6 = 0x65, -CV_Arch_ARM_XMAC = 0x66, -CV_Arch_ARM_WMMX = 0x67, -CV_Arch_ARM7 = 0x68, -CV_Arch_OMNI = 0x70, -CV_Arch_IA64_1 = 0x80, -CV_Arch_IA64_2 = 0x81, -CV_Arch_CEE = 0x90, -CV_Arch_AM33 = 0xA0, -CV_Arch_M32R = 0xB0, -CV_Arch_TRICORE = 0xC0, -CV_Arch_X64 = 0xD0, -CV_Arch_EBC = 0xE0, -CV_Arch_THUMB = 0xF0, -CV_Arch_ARMNT = 0xF4, -CV_Arch_ARM64 = 0xF6, -CV_Arch_D3D11_SHADER = 0x100, -CV_Arch_IA64 = CV_Arch_IA64_1, -CV_Arch_PENTIUMPRO = CV_Arch_PENTIUMII, -CV_Arch_MIPSR4000 = CV_Arch_MIPS, -CV_Arch_ALPHA_21064 = CV_Arch_ALPHA, -CV_Arch_AMD64 = CV_Arch_X64, -} CV_ArchEnum; - -typedef U16 CV_AllReg; -typedef enum CV_AllRegEnum -{ -CV_AllReg_ERR = 30000, -CV_AllReg_TEB = 30001, -CV_AllReg_TIMER = 30002, -CV_AllReg_EFAD1 = 30003, -CV_AllReg_EFAD2 = 30004, -CV_AllReg_EFAD3 = 30005, -CV_AllReg_VFRAME = 30006, -CV_AllReg_HANDLE = 30007, -CV_AllReg_PARAMS = 30008, -CV_AllReg_LOCALS = 30009, -CV_AllReg_TID = 30010, -CV_AllReg_ENV = 30011, -CV_AllReg_CMDLN = 30012, -} CV_AllRegEnum; - -typedef U16 CV_SymKind; -typedef enum CV_SymKindEnum -{ -CV_SymKind_COMPILE = 0x0001, -CV_SymKind_REGISTER_16t = 0x0002, -CV_SymKind_CONSTANT_16t = 0x0003, -CV_SymKind_UDT_16t = 0x0004, -CV_SymKind_SSEARCH = 0x0005, -CV_SymKind_END = 0x0006, -CV_SymKind_SKIP = 0x0007, -CV_SymKind_CVRESERVE = 0x0008, -CV_SymKind_OBJNAME_ST = 0x0009, -CV_SymKind_ENDARG = 0x000a, -CV_SymKind_COBOLUDT_16t = 0x000b, -CV_SymKind_MANYREG_16t = 0x000c, -CV_SymKind_RETURN = 0x000d, -CV_SymKind_ENTRYTHIS = 0x000e, -CV_SymKind_BPREL16 = 0x0100, -CV_SymKind_LDATA16 = 0x0101, -CV_SymKind_GDATA16 = 0x0102, -CV_SymKind_PUB16 = 0x0103, -CV_SymKind_LPROC16 = 0x0104, -CV_SymKind_GPROC16 = 0x0105, -CV_SymKind_THUNK16 = 0x0106, -CV_SymKind_BLOCK16 = 0x0107, -CV_SymKind_WITH16 = 0x0108, -CV_SymKind_LABEL16 = 0x0109, -CV_SymKind_CEXMODEL16 = 0x010a, -CV_SymKind_VFTABLE16 = 0x010b, -CV_SymKind_REGREL16 = 0x010c, -CV_SymKind_BPREL32_16t = 0x0200, -CV_SymKind_LDATA32_16t = 0x0201, -CV_SymKind_GDATA32_16t = 0x0202, -CV_SymKind_PUB32_16t = 0x0203, -CV_SymKind_LPROC32_16t = 0x0204, -CV_SymKind_GPROC32_16t = 0x0205, -CV_SymKind_THUNK32_ST = 0x0206, -CV_SymKind_BLOCK32_ST = 0x0207, -CV_SymKind_WITH32_ST = 0x0208, -CV_SymKind_LABEL32_ST = 0x0209, -CV_SymKind_CEXMODEL32 = 0x020a, -CV_SymKind_VFTABLE32_16t = 0x020b, -CV_SymKind_REGREL32_16t = 0x020c, -CV_SymKind_LTHREAD32_16t = 0x020d, -CV_SymKind_GTHREAD32_16t = 0x020e, -CV_SymKind_SLINK32 = 0x020f, -CV_SymKind_LPROCMIPS_16t = 0x0300, -CV_SymKind_GPROCMIPS_16t = 0x0301, -CV_SymKind_PROCREF_ST = 0x0400, -CV_SymKind_DATAREF_ST = 0x0401, -CV_SymKind_ALIGN = 0x0402, -CV_SymKind_LPROCREF_ST = 0x0403, -CV_SymKind_OEM = 0x0404, -CV_SymKind_TI16_MAX = 0x1000, -CV_SymKind_CONSTANT_ST = 0x1002, -CV_SymKind_UDT_ST = 0x1003, -CV_SymKind_COBOLUDT_ST = 0x1004, -CV_SymKind_MANYREG_ST = 0x1005, -CV_SymKind_BPREL32_ST = 0x1006, -CV_SymKind_LDATA32_ST = 0x1007, -CV_SymKind_GDATA32_ST = 0x1008, -CV_SymKind_PUB32_ST = 0x1009, -CV_SymKind_LPROC32_ST = 0x100a, -CV_SymKind_GPROC32_ST = 0x100b, -CV_SymKind_VFTABLE32 = 0x100c, -CV_SymKind_REGREL32_ST = 0x100d, -CV_SymKind_LTHREAD32_ST = 0x100e, -CV_SymKind_GTHREAD32_ST = 0x100f, -CV_SymKind_LPROCMIPS_ST = 0x1010, -CV_SymKind_GPROCMIPS_ST = 0x1011, -CV_SymKind_FRAMEPROC = 0x1012, -CV_SymKind_COMPILE2_ST = 0x1013, -CV_SymKind_MANYREG2_ST = 0x1014, -CV_SymKind_LPROCIA64_ST = 0x1015, -CV_SymKind_GPROCIA64_ST = 0x1016, -CV_SymKind_LOCALSLOT_ST = 0x1017, -CV_SymKind_PARAMSLOT_ST = 0x1018, -CV_SymKind_ANNOTATION = 0x1019, -CV_SymKind_GMANPROC_ST = 0x101a, -CV_SymKind_LMANPROC_ST = 0x101b, -CV_SymKind_RESERVED1 = 0x101c, -CV_SymKind_RESERVED2 = 0x101d, -CV_SymKind_RESERVED3 = 0x101e, -CV_SymKind_RESERVED4 = 0x101f, -CV_SymKind_LMANDATA_ST = 0x1020, -CV_SymKind_GMANDATA_ST = 0x1021, -CV_SymKind_MANFRAMEREL_ST = 0x1022, -CV_SymKind_MANREGISTER_ST = 0x1023, -CV_SymKind_MANSLOT_ST = 0x1024, -CV_SymKind_MANMANYREG_ST = 0x1025, -CV_SymKind_MANREGREL_ST = 0x1026, -CV_SymKind_MANMANYREG2_ST = 0x1027, -CV_SymKind_MANTYPREF = 0x1028, -CV_SymKind_UNAMESPACE_ST = 0x1029, -CV_SymKind_ST_MAX = 0x1100, -CV_SymKind_OBJNAME = 0x1101, -CV_SymKind_THUNK32 = 0x1102, -CV_SymKind_BLOCK32 = 0x1103, -CV_SymKind_WITH32 = 0x1104, -CV_SymKind_LABEL32 = 0x1105, -CV_SymKind_REGISTER = 0x1106, -CV_SymKind_CONSTANT = 0x1107, -CV_SymKind_UDT = 0x1108, -CV_SymKind_COBOLUDT = 0x1109, -CV_SymKind_MANYREG = 0x110a, -CV_SymKind_BPREL32 = 0x110b, -CV_SymKind_LDATA32 = 0x110c, -CV_SymKind_GDATA32 = 0x110d, -CV_SymKind_PUB32 = 0x110e, -CV_SymKind_LPROC32 = 0x110f, -CV_SymKind_GPROC32 = 0x1110, -CV_SymKind_REGREL32 = 0x1111, -CV_SymKind_LTHREAD32 = 0x1112, -CV_SymKind_GTHREAD32 = 0x1113, -CV_SymKind_LPROCMIPS = 0x1114, -CV_SymKind_GPROCMIPS = 0x1115, -CV_SymKind_COMPILE2 = 0x1116, -CV_SymKind_MANYREG2 = 0x1117, -CV_SymKind_LPROCIA64 = 0x1118, -CV_SymKind_GPROCIA64 = 0x1119, -CV_SymKind_LOCALSLOT = 0x111a, -CV_SymKind_PARAMSLOT = 0x111b, -CV_SymKind_LMANDATA = 0x111c, -CV_SymKind_GMANDATA = 0x111d, -CV_SymKind_MANFRAMEREL = 0x111e, -CV_SymKind_MANREGISTER = 0x111f, -CV_SymKind_MANSLOT = 0x1120, -CV_SymKind_MANMANYREG = 0x1121, -CV_SymKind_MANREGREL = 0x1122, -CV_SymKind_MANMANYREG2 = 0x1123, -CV_SymKind_UNAMESPACE = 0x1124, -CV_SymKind_PROCREF = 0x1125, -CV_SymKind_DATAREF = 0x1126, -CV_SymKind_LPROCREF = 0x1127, -CV_SymKind_ANNOTATIONREF = 0x1128, -CV_SymKind_TOKENREF = 0x1129, -CV_SymKind_GMANPROC = 0x112a, -CV_SymKind_LMANPROC = 0x112b, -CV_SymKind_TRAMPOLINE = 0x112c, -CV_SymKind_MANCONSTANT = 0x112d, -CV_SymKind_ATTR_FRAMEREL = 0x112e, -CV_SymKind_ATTR_REGISTER = 0x112f, -CV_SymKind_ATTR_REGREL = 0x1130, -CV_SymKind_ATTR_MANYREG = 0x1131, -CV_SymKind_SEPCODE = 0x1132, -CV_SymKind_DEFRANGE_2005 = 0x1134, -CV_SymKind_DEFRANGE2_2005 = 0x1135, -CV_SymKind_SECTION = 0x1136, -CV_SymKind_COFFGROUP = 0x1137, -CV_SymKind_EXPORT = 0x1138, -CV_SymKind_CALLSITEINFO = 0x1139, -CV_SymKind_FRAMECOOKIE = 0x113a, -CV_SymKind_DISCARDED = 0x113b, -CV_SymKind_COMPILE3 = 0x113c, -CV_SymKind_ENVBLOCK = 0x113d, -CV_SymKind_LOCAL = 0x113e, -CV_SymKind_DEFRANGE = 0x113f, -CV_SymKind_DEFRANGE_SUBFIELD = 0x1140, -CV_SymKind_DEFRANGE_REGISTER = 0x1141, -CV_SymKind_DEFRANGE_FRAMEPOINTER_REL = 0x1142, -CV_SymKind_DEFRANGE_SUBFIELD_REGISTER = 0x1143, -CV_SymKind_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE = 0x1144, -CV_SymKind_DEFRANGE_REGISTER_REL = 0x1145, -CV_SymKind_LPROC32_ID = 0x1146, -CV_SymKind_GPROC32_ID = 0x1147, -CV_SymKind_LPROCMIPS_ID = 0x1148, -CV_SymKind_GPROCMIPS_ID = 0x1149, -CV_SymKind_LPROCIA64_ID = 0x114a, -CV_SymKind_GPROCIA64_ID = 0x114b, -CV_SymKind_BUILDINFO = 0x114c, -CV_SymKind_INLINESITE = 0x114d, -CV_SymKind_INLINESITE_END = 0x114e, -CV_SymKind_PROC_ID_END = 0x114f, -CV_SymKind_DEFRANGE_HLSL = 0x1150, -CV_SymKind_GDATA_HLSL = 0x1151, -CV_SymKind_LDATA_HLSL = 0x1152, -CV_SymKind_FILESTATIC = 0x1153, -CV_SymKind_LPROC32_DPC = 0x1155, -CV_SymKind_LPROC32_DPC_ID = 0x1156, -CV_SymKind_DEFRANGE_DPC_PTR_TAG = 0x1157, -CV_SymKind_DPC_SYM_TAG_MAP = 0x1158, -CV_SymKind_ARMSWITCHTABLE = 0x1159, -CV_SymKind_CALLEES = 0x115a, -CV_SymKind_CALLERS = 0x115b, -CV_SymKind_POGODATA = 0x115c, -CV_SymKind_INLINESITE2 = 0x115d, -CV_SymKind_HEAPALLOCSITE = 0x115e, -CV_SymKind_MOD_TYPEREF = 0x115f, -CV_SymKind_REF_MINIPDB = 0x1160, -CV_SymKind_PDBMAP = 0x1161, -CV_SymKind_GDATA_HLSL32 = 0x1162, -CV_SymKind_LDATA_HLSL32 = 0x1163, -CV_SymKind_GDATA_HLSL32_EX = 0x1164, -CV_SymKind_LDATA_HLSL32_EX = 0x1165, -CV_SymKind_FASTLINK = 0x1167, -CV_SymKind_INLINEES = 0x1168, -} CV_SymKindEnum; - -typedef U8 CV_BasicType; -typedef enum CV_BasicTypeEnum -{ -CV_BasicType_NOTYPE = 0x00, -CV_BasicType_ABS = 0x01, -CV_BasicType_SEGMENT = 0x02, -CV_BasicType_VOID = 0x03, -CV_BasicType_CURRENCY = 0x04, -CV_BasicType_NBASICSTR = 0x05, -CV_BasicType_FBASICSTR = 0x06, -CV_BasicType_NOTTRANS = 0x07, -CV_BasicType_HRESULT = 0x08, -CV_BasicType_CHAR = 0x10, -CV_BasicType_SHORT = 0x11, -CV_BasicType_LONG = 0x12, -CV_BasicType_QUAD = 0x13, -CV_BasicType_OCT = 0x14, -CV_BasicType_UCHAR = 0x20, -CV_BasicType_USHORT = 0x21, -CV_BasicType_ULONG = 0x22, -CV_BasicType_UQUAD = 0x23, -CV_BasicType_UOCT = 0x24, -CV_BasicType_BOOL8 = 0x30, -CV_BasicType_BOOL16 = 0x31, -CV_BasicType_BOOL32 = 0x32, -CV_BasicType_BOOL64 = 0x33, -CV_BasicType_FLOAT32 = 0x40, -CV_BasicType_FLOAT64 = 0x41, -CV_BasicType_FLOAT80 = 0x42, -CV_BasicType_FLOAT128 = 0x43, -CV_BasicType_FLOAT48 = 0x44, -CV_BasicType_FLOAT32PP = 0x45, -CV_BasicType_FLOAT16 = 0x46, -CV_BasicType_COMPLEX32 = 0x50, -CV_BasicType_COMPLEX64 = 0x51, -CV_BasicType_COMPLEX80 = 0x52, -CV_BasicType_COMPLEX128 = 0x53, -CV_BasicType_BIT = 0x60, -CV_BasicType_PASCHAR = 0x61, -CV_BasicType_BOOL32FF = 0x62, -CV_BasicType_INT8 = 0x68, -CV_BasicType_UINT8 = 0x69, -CV_BasicType_RCHAR = 0x70, -CV_BasicType_WCHAR = 0x71, -CV_BasicType_INT16 = 0x72, -CV_BasicType_UINT16 = 0x73, -CV_BasicType_INT32 = 0x74, -CV_BasicType_UINT32 = 0x75, -CV_BasicType_INT64 = 0x76, -CV_BasicType_UINT64 = 0x77, -CV_BasicType_INT128 = 0x78, -CV_BasicType_UINT128 = 0x79, -CV_BasicType_CHAR16 = 0x7a, -CV_BasicType_CHAR32 = 0x7b, -CV_BasicType_CHAR8 = 0x7c, -CV_BasicType_PTR = 0xf0, -} CV_BasicTypeEnum; - -typedef U16 CV_LeafKind; -typedef enum CV_LeafKindEnum -{ -CV_LeafKind_NOTYPE = 0x0000, -CV_LeafKind_MODIFIER_16t = 0x0001, -CV_LeafKind_POINTER_16t = 0x0002, -CV_LeafKind_ARRAY_16t = 0x0003, -CV_LeafKind_CLASS_16t = 0x0004, -CV_LeafKind_STRUCTURE_16t = 0x0005, -CV_LeafKind_UNION_16t = 0x0006, -CV_LeafKind_ENUM_16t = 0x0007, -CV_LeafKind_PROCEDURE_16t = 0x0008, -CV_LeafKind_MFUNCTION_16t = 0x0009, -CV_LeafKind_VTSHAPE = 0x000a, -CV_LeafKind_COBOL0_16t = 0x000b, -CV_LeafKind_COBOL1 = 0x000c, -CV_LeafKind_BARRAY_16t = 0x000d, -CV_LeafKind_LABEL = 0x000e, -CV_LeafKind_NULL = 0x000f, -CV_LeafKind_NOTTRAN = 0x0010, -CV_LeafKind_DIMARRAY_16t = 0x0011, -CV_LeafKind_VFTPATH_16t = 0x0012, -CV_LeafKind_PRECOMP_16t = 0x0013, -CV_LeafKind_ENDPRECOMP = 0x0014, -CV_LeafKind_OEM_16t = 0x0015, -CV_LeafKind_TYPESERVER_ST = 0x0016, -CV_LeafKind_SKIP_16t = 0x0200, -CV_LeafKind_ARGLIST_16t = 0x0201, -CV_LeafKind_DEFARG_16t = 0x0202, -CV_LeafKind_LIST = 0x0203, -CV_LeafKind_FIELDLIST_16t = 0x0204, -CV_LeafKind_DERIVED_16t = 0x0205, -CV_LeafKind_BITFIELD_16t = 0x0206, -CV_LeafKind_METHODLIST_16t = 0x0207, -CV_LeafKind_DIMCONU_16t = 0x0208, -CV_LeafKind_DIMCONLU_16t = 0x0209, -CV_LeafKind_DIMVARU_16t = 0x020a, -CV_LeafKind_DIMVARLU_16t = 0x020b, -CV_LeafKind_REFSYM = 0x020c, -CV_LeafKind_BCLASS_16t = 0x0400, -CV_LeafKind_VBCLASS_16t = 0x0401, -CV_LeafKind_IVBCLASS_16t = 0x0402, -CV_LeafKind_ENUMERATE_ST = 0x0403, -CV_LeafKind_FRIENDFCN_16t = 0x0404, -CV_LeafKind_INDEX_16t = 0x0405, -CV_LeafKind_MEMBER_16t = 0x0406, -CV_LeafKind_STMEMBER_16t = 0x0407, -CV_LeafKind_METHOD_16t = 0x0408, -CV_LeafKind_NESTTYPE_16t = 0x0409, -CV_LeafKind_VFUNCTAB_16t = 0x040a, -CV_LeafKind_FRIENDCLS_16t = 0x040b, -CV_LeafKind_ONEMETHOD_16t = 0x040c, -CV_LeafKind_VFUNCOFF_16t = 0x040d, -CV_LeafKind_TI16_MAX = 0x1000, -CV_LeafKind_MODIFIER = 0x1001, -CV_LeafKind_POINTER = 0x1002, -CV_LeafKind_ARRAY_ST = 0x1003, -CV_LeafKind_CLASS_ST = 0x1004, -CV_LeafKind_STRUCTURE_ST = 0x1005, -CV_LeafKind_UNION_ST = 0x1006, -CV_LeafKind_ENUM_ST = 0x1007, -CV_LeafKind_PROCEDURE = 0x1008, -CV_LeafKind_MFUNCTION = 0x1009, -CV_LeafKind_COBOL0 = 0x100a, -CV_LeafKind_BARRAY = 0x100b, -CV_LeafKind_DIMARRAY_ST = 0x100c, -CV_LeafKind_VFTPATH = 0x100d, -CV_LeafKind_PRECOMP_ST = 0x100e, -CV_LeafKind_OEM = 0x100f, -CV_LeafKind_ALIAS_ST = 0x1010, -CV_LeafKind_OEM2 = 0x1011, -CV_LeafKind_SKIP = 0x1200, -CV_LeafKind_ARGLIST = 0x1201, -CV_LeafKind_DEFARG_ST = 0x1202, -CV_LeafKind_FIELDLIST = 0x1203, -CV_LeafKind_DERIVED = 0x1204, -CV_LeafKind_BITFIELD = 0x1205, -CV_LeafKind_METHODLIST = 0x1206, -CV_LeafKind_DIMCONU = 0x1207, -CV_LeafKind_DIMCONLU = 0x1208, -CV_LeafKind_DIMVARU = 0x1209, -CV_LeafKind_DIMVARLU = 0x120a, -CV_LeafKind_BCLASS = 0x1400, -CV_LeafKind_VBCLASS = 0x1401, -CV_LeafKind_IVBCLASS = 0x1402, -CV_LeafKind_FRIENDFCN_ST = 0x1403, -CV_LeafKind_INDEX = 0x1404, -CV_LeafKind_MEMBER_ST = 0x1405, -CV_LeafKind_STMEMBER_ST = 0x1406, -CV_LeafKind_METHOD_ST = 0x1407, -CV_LeafKind_NESTTYPE_ST = 0x1408, -CV_LeafKind_VFUNCTAB = 0x1409, -CV_LeafKind_FRIENDCLS = 0x140a, -CV_LeafKind_ONEMETHOD_ST = 0x140b, -CV_LeafKind_VFUNCOFF = 0x140c, -CV_LeafKind_NESTTYPEEX_ST = 0x140d, -CV_LeafKind_MEMBERMODIFY_ST = 0x140e, -CV_LeafKind_MANAGED_ST = 0x140f, -CV_LeafKind_ST_MAX = 0x1500, -CV_LeafKind_TYPESERVER = 0x1501, -CV_LeafKind_ENUMERATE = 0x1502, -CV_LeafKind_ARRAY = 0x1503, -CV_LeafKind_CLASS = 0x1504, -CV_LeafKind_STRUCTURE = 0x1505, -CV_LeafKind_UNION = 0x1506, -CV_LeafKind_ENUM = 0x1507, -CV_LeafKind_DIMARRAY = 0x1508, -CV_LeafKind_PRECOMP = 0x1509, -CV_LeafKind_ALIAS = 0x150a, -CV_LeafKind_DEFARG = 0x150b, -CV_LeafKind_FRIENDFCN = 0x150c, -CV_LeafKind_MEMBER = 0x150d, -CV_LeafKind_STMEMBER = 0x150e, -CV_LeafKind_METHOD = 0x150f, -CV_LeafKind_NESTTYPE = 0x1510, -CV_LeafKind_ONEMETHOD = 0x1511, -CV_LeafKind_NESTTYPEEX = 0x1512, -CV_LeafKind_MEMBERMODIFY = 0x1513, -CV_LeafKind_MANAGED = 0x1514, -CV_LeafKind_TYPESERVER2 = 0x1515, -CV_LeafKind_STRIDED_ARRAY = 0x1516, -CV_LeafKind_HLSL = 0x1517, -CV_LeafKind_MODIFIER_EX = 0x1518, -CV_LeafKind_INTERFACE = 0x1519, -CV_LeafKind_BINTERFACE = 0x151a, -CV_LeafKind_VECTOR = 0x151b, -CV_LeafKind_MATRIX = 0x151c, -CV_LeafKind_VFTABLE = 0x151d, -CV_LeafKind_FUNC_ID = 0x1601, -CV_LeafKind_MFUNC_ID = 0x1602, -CV_LeafKind_BUILDINFO = 0x1603, -CV_LeafKind_SUBSTR_LIST = 0x1604, -CV_LeafKind_STRING_ID = 0x1605, -CV_LeafKind_UDT_SRC_LINE = 0x1606, -CV_LeafKind_UDT_MOD_SRC_LINE = 0x1607, -CV_LeafKind_CLASS2 = 0x1608, -CV_LeafKind_STRUCT2 = 0x1609, -} CV_LeafKindEnum; - -internal String8 cv_string_from_numeric_kind(CV_NumericKind v); -internal String8 cv_string_from_arch(CV_Arch v); -internal String8 cv_string_from_sym_kind(CV_SymKind v); -internal String8 cv_string_from_basic_type(CV_BasicType v); -internal String8 cv_type_name_from_basic_type(CV_BasicType v); -internal String8 cv_string_from_leaf_kind(CV_LeafKind v); -internal U64 cv_header_struct_size_from_sym_kind(CV_SymKind v); -internal U64 cv_header_struct_size_from_leaf_kind(CV_LeafKind v); -#endif // CODEVIEW_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef CODEVIEW_META_H +#define CODEVIEW_META_H + +typedef U16 CV_NumericKind; +typedef enum CV_NumericKindEnum +{ +CV_NumericKind_CHAR = 0x8000, +CV_NumericKind_SHORT = 0x8001, +CV_NumericKind_USHORT = 0x8002, +CV_NumericKind_LONG = 0x8003, +CV_NumericKind_ULONG = 0x8004, +CV_NumericKind_FLOAT32 = 0x8005, +CV_NumericKind_FLOAT64 = 0x8006, +CV_NumericKind_FLOAT80 = 0x8007, +CV_NumericKind_FLOAT128 = 0x8008, +CV_NumericKind_QUADWORD = 0x8009, +CV_NumericKind_UQUADWORD = 0x800a, +CV_NumericKind_FLOAT48 = 0x800b, +CV_NumericKind_COMPLEX32 = 0x800c, +CV_NumericKind_COMPLEX64 = 0x800d, +CV_NumericKind_COMPLEX80 = 0x800e, +CV_NumericKind_COMPLEX128 = 0x800f, +CV_NumericKind_VARSTRING = 0x8010, +CV_NumericKind_OCTWORD = 0x8017, +CV_NumericKind_UOCTWORD = 0x8018, +CV_NumericKind_DECIMAL = 0x8019, +CV_NumericKind_DATE = 0x801a, +CV_NumericKind_UTF8STRING = 0x801b, +CV_NumericKind_FLOAT16 = 0x801c, +} CV_NumericKindEnum; + +typedef U16 CV_Arch; +typedef enum CV_ArchEnum +{ +CV_Arch_8080 = 0x00, +CV_Arch_8086 = 0x01, +CV_Arch_80286 = 0x02, +CV_Arch_80386 = 0x03, +CV_Arch_80486 = 0x04, +CV_Arch_PENTIUM = 0x05, +CV_Arch_PENTIUMII = 0x06, +CV_Arch_PENTIUMIII = 0x07, +CV_Arch_MIPS = 0x10, +CV_Arch_MIPS16 = 0x11, +CV_Arch_MIPS32 = 0x12, +CV_Arch_MIPS64 = 0x13, +CV_Arch_MIPSI = 0x14, +CV_Arch_MIPSII = 0x15, +CV_Arch_MIPSIII = 0x16, +CV_Arch_MIPSIV = 0x17, +CV_Arch_MIPSV = 0x18, +CV_Arch_M68000 = 0x20, +CV_Arch_M68010 = 0x21, +CV_Arch_M68020 = 0x22, +CV_Arch_M68030 = 0x23, +CV_Arch_M68040 = 0x24, +CV_Arch_ALPHA = 0x30, +CV_Arch_ALPHA_21164 = 0x31, +CV_Arch_ALPHA_21164A = 0x32, +CV_Arch_ALPHA_21264 = 0x33, +CV_Arch_ALPHA_21364 = 0x34, +CV_Arch_PPC601 = 0x40, +CV_Arch_PPC603 = 0x41, +CV_Arch_PPC604 = 0x42, +CV_Arch_PPC620 = 0x43, +CV_Arch_PPCFP = 0x44, +CV_Arch_PPCBE = 0x45, +CV_Arch_SH3 = 0x50, +CV_Arch_SH3E = 0x51, +CV_Arch_SH3DSP = 0x52, +CV_Arch_SH4 = 0x53, +CV_Arch_SHMEDIA = 0x54, +CV_Arch_ARM3 = 0x60, +CV_Arch_ARM4 = 0x61, +CV_Arch_ARM4T = 0x62, +CV_Arch_ARM5 = 0x63, +CV_Arch_ARM5T = 0x64, +CV_Arch_ARM6 = 0x65, +CV_Arch_ARM_XMAC = 0x66, +CV_Arch_ARM_WMMX = 0x67, +CV_Arch_ARM7 = 0x68, +CV_Arch_OMNI = 0x70, +CV_Arch_IA64_1 = 0x80, +CV_Arch_IA64_2 = 0x81, +CV_Arch_CEE = 0x90, +CV_Arch_AM33 = 0xA0, +CV_Arch_M32R = 0xB0, +CV_Arch_TRICORE = 0xC0, +CV_Arch_X64 = 0xD0, +CV_Arch_EBC = 0xE0, +CV_Arch_THUMB = 0xF0, +CV_Arch_ARMNT = 0xF4, +CV_Arch_ARM64 = 0xF6, +CV_Arch_D3D11_SHADER = 0x100, +CV_Arch_IA64 = CV_Arch_IA64_1, +CV_Arch_PENTIUMPRO = CV_Arch_PENTIUMII, +CV_Arch_MIPSR4000 = CV_Arch_MIPS, +CV_Arch_ALPHA_21064 = CV_Arch_ALPHA, +CV_Arch_AMD64 = CV_Arch_X64, +} CV_ArchEnum; + +typedef U16 CV_AllReg; +typedef enum CV_AllRegEnum +{ +CV_AllReg_ERR = 30000, +CV_AllReg_TEB = 30001, +CV_AllReg_TIMER = 30002, +CV_AllReg_EFAD1 = 30003, +CV_AllReg_EFAD2 = 30004, +CV_AllReg_EFAD3 = 30005, +CV_AllReg_VFRAME = 30006, +CV_AllReg_HANDLE = 30007, +CV_AllReg_PARAMS = 30008, +CV_AllReg_LOCALS = 30009, +CV_AllReg_TID = 30010, +CV_AllReg_ENV = 30011, +CV_AllReg_CMDLN = 30012, +} CV_AllRegEnum; + +typedef U16 CV_SymKind; +typedef enum CV_SymKindEnum +{ +CV_SymKind_COMPILE = 0x0001, +CV_SymKind_REGISTER_16t = 0x0002, +CV_SymKind_CONSTANT_16t = 0x0003, +CV_SymKind_UDT_16t = 0x0004, +CV_SymKind_SSEARCH = 0x0005, +CV_SymKind_END = 0x0006, +CV_SymKind_SKIP = 0x0007, +CV_SymKind_CVRESERVE = 0x0008, +CV_SymKind_OBJNAME_ST = 0x0009, +CV_SymKind_ENDARG = 0x000a, +CV_SymKind_COBOLUDT_16t = 0x000b, +CV_SymKind_MANYREG_16t = 0x000c, +CV_SymKind_RETURN = 0x000d, +CV_SymKind_ENTRYTHIS = 0x000e, +CV_SymKind_BPREL16 = 0x0100, +CV_SymKind_LDATA16 = 0x0101, +CV_SymKind_GDATA16 = 0x0102, +CV_SymKind_PUB16 = 0x0103, +CV_SymKind_LPROC16 = 0x0104, +CV_SymKind_GPROC16 = 0x0105, +CV_SymKind_THUNK16 = 0x0106, +CV_SymKind_BLOCK16 = 0x0107, +CV_SymKind_WITH16 = 0x0108, +CV_SymKind_LABEL16 = 0x0109, +CV_SymKind_CEXMODEL16 = 0x010a, +CV_SymKind_VFTABLE16 = 0x010b, +CV_SymKind_REGREL16 = 0x010c, +CV_SymKind_BPREL32_16t = 0x0200, +CV_SymKind_LDATA32_16t = 0x0201, +CV_SymKind_GDATA32_16t = 0x0202, +CV_SymKind_PUB32_16t = 0x0203, +CV_SymKind_LPROC32_16t = 0x0204, +CV_SymKind_GPROC32_16t = 0x0205, +CV_SymKind_THUNK32_ST = 0x0206, +CV_SymKind_BLOCK32_ST = 0x0207, +CV_SymKind_WITH32_ST = 0x0208, +CV_SymKind_LABEL32_ST = 0x0209, +CV_SymKind_CEXMODEL32 = 0x020a, +CV_SymKind_VFTABLE32_16t = 0x020b, +CV_SymKind_REGREL32_16t = 0x020c, +CV_SymKind_LTHREAD32_16t = 0x020d, +CV_SymKind_GTHREAD32_16t = 0x020e, +CV_SymKind_SLINK32 = 0x020f, +CV_SymKind_LPROCMIPS_16t = 0x0300, +CV_SymKind_GPROCMIPS_16t = 0x0301, +CV_SymKind_PROCREF_ST = 0x0400, +CV_SymKind_DATAREF_ST = 0x0401, +CV_SymKind_ALIGN = 0x0402, +CV_SymKind_LPROCREF_ST = 0x0403, +CV_SymKind_OEM = 0x0404, +CV_SymKind_TI16_MAX = 0x1000, +CV_SymKind_CONSTANT_ST = 0x1002, +CV_SymKind_UDT_ST = 0x1003, +CV_SymKind_COBOLUDT_ST = 0x1004, +CV_SymKind_MANYREG_ST = 0x1005, +CV_SymKind_BPREL32_ST = 0x1006, +CV_SymKind_LDATA32_ST = 0x1007, +CV_SymKind_GDATA32_ST = 0x1008, +CV_SymKind_PUB32_ST = 0x1009, +CV_SymKind_LPROC32_ST = 0x100a, +CV_SymKind_GPROC32_ST = 0x100b, +CV_SymKind_VFTABLE32 = 0x100c, +CV_SymKind_REGREL32_ST = 0x100d, +CV_SymKind_LTHREAD32_ST = 0x100e, +CV_SymKind_GTHREAD32_ST = 0x100f, +CV_SymKind_LPROCMIPS_ST = 0x1010, +CV_SymKind_GPROCMIPS_ST = 0x1011, +CV_SymKind_FRAMEPROC = 0x1012, +CV_SymKind_COMPILE2_ST = 0x1013, +CV_SymKind_MANYREG2_ST = 0x1014, +CV_SymKind_LPROCIA64_ST = 0x1015, +CV_SymKind_GPROCIA64_ST = 0x1016, +CV_SymKind_LOCALSLOT_ST = 0x1017, +CV_SymKind_PARAMSLOT_ST = 0x1018, +CV_SymKind_ANNOTATION = 0x1019, +CV_SymKind_GMANPROC_ST = 0x101a, +CV_SymKind_LMANPROC_ST = 0x101b, +CV_SymKind_RESERVED1 = 0x101c, +CV_SymKind_RESERVED2 = 0x101d, +CV_SymKind_RESERVED3 = 0x101e, +CV_SymKind_RESERVED4 = 0x101f, +CV_SymKind_LMANDATA_ST = 0x1020, +CV_SymKind_GMANDATA_ST = 0x1021, +CV_SymKind_MANFRAMEREL_ST = 0x1022, +CV_SymKind_MANREGISTER_ST = 0x1023, +CV_SymKind_MANSLOT_ST = 0x1024, +CV_SymKind_MANMANYREG_ST = 0x1025, +CV_SymKind_MANREGREL_ST = 0x1026, +CV_SymKind_MANMANYREG2_ST = 0x1027, +CV_SymKind_MANTYPREF = 0x1028, +CV_SymKind_UNAMESPACE_ST = 0x1029, +CV_SymKind_ST_MAX = 0x1100, +CV_SymKind_OBJNAME = 0x1101, +CV_SymKind_THUNK32 = 0x1102, +CV_SymKind_BLOCK32 = 0x1103, +CV_SymKind_WITH32 = 0x1104, +CV_SymKind_LABEL32 = 0x1105, +CV_SymKind_REGISTER = 0x1106, +CV_SymKind_CONSTANT = 0x1107, +CV_SymKind_UDT = 0x1108, +CV_SymKind_COBOLUDT = 0x1109, +CV_SymKind_MANYREG = 0x110a, +CV_SymKind_BPREL32 = 0x110b, +CV_SymKind_LDATA32 = 0x110c, +CV_SymKind_GDATA32 = 0x110d, +CV_SymKind_PUB32 = 0x110e, +CV_SymKind_LPROC32 = 0x110f, +CV_SymKind_GPROC32 = 0x1110, +CV_SymKind_REGREL32 = 0x1111, +CV_SymKind_LTHREAD32 = 0x1112, +CV_SymKind_GTHREAD32 = 0x1113, +CV_SymKind_LPROCMIPS = 0x1114, +CV_SymKind_GPROCMIPS = 0x1115, +CV_SymKind_COMPILE2 = 0x1116, +CV_SymKind_MANYREG2 = 0x1117, +CV_SymKind_LPROCIA64 = 0x1118, +CV_SymKind_GPROCIA64 = 0x1119, +CV_SymKind_LOCALSLOT = 0x111a, +CV_SymKind_PARAMSLOT = 0x111b, +CV_SymKind_LMANDATA = 0x111c, +CV_SymKind_GMANDATA = 0x111d, +CV_SymKind_MANFRAMEREL = 0x111e, +CV_SymKind_MANREGISTER = 0x111f, +CV_SymKind_MANSLOT = 0x1120, +CV_SymKind_MANMANYREG = 0x1121, +CV_SymKind_MANREGREL = 0x1122, +CV_SymKind_MANMANYREG2 = 0x1123, +CV_SymKind_UNAMESPACE = 0x1124, +CV_SymKind_PROCREF = 0x1125, +CV_SymKind_DATAREF = 0x1126, +CV_SymKind_LPROCREF = 0x1127, +CV_SymKind_ANNOTATIONREF = 0x1128, +CV_SymKind_TOKENREF = 0x1129, +CV_SymKind_GMANPROC = 0x112a, +CV_SymKind_LMANPROC = 0x112b, +CV_SymKind_TRAMPOLINE = 0x112c, +CV_SymKind_MANCONSTANT = 0x112d, +CV_SymKind_ATTR_FRAMEREL = 0x112e, +CV_SymKind_ATTR_REGISTER = 0x112f, +CV_SymKind_ATTR_REGREL = 0x1130, +CV_SymKind_ATTR_MANYREG = 0x1131, +CV_SymKind_SEPCODE = 0x1132, +CV_SymKind_DEFRANGE_2005 = 0x1134, +CV_SymKind_DEFRANGE2_2005 = 0x1135, +CV_SymKind_SECTION = 0x1136, +CV_SymKind_COFFGROUP = 0x1137, +CV_SymKind_EXPORT = 0x1138, +CV_SymKind_CALLSITEINFO = 0x1139, +CV_SymKind_FRAMECOOKIE = 0x113a, +CV_SymKind_DISCARDED = 0x113b, +CV_SymKind_COMPILE3 = 0x113c, +CV_SymKind_ENVBLOCK = 0x113d, +CV_SymKind_LOCAL = 0x113e, +CV_SymKind_DEFRANGE = 0x113f, +CV_SymKind_DEFRANGE_SUBFIELD = 0x1140, +CV_SymKind_DEFRANGE_REGISTER = 0x1141, +CV_SymKind_DEFRANGE_FRAMEPOINTER_REL = 0x1142, +CV_SymKind_DEFRANGE_SUBFIELD_REGISTER = 0x1143, +CV_SymKind_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE = 0x1144, +CV_SymKind_DEFRANGE_REGISTER_REL = 0x1145, +CV_SymKind_LPROC32_ID = 0x1146, +CV_SymKind_GPROC32_ID = 0x1147, +CV_SymKind_LPROCMIPS_ID = 0x1148, +CV_SymKind_GPROCMIPS_ID = 0x1149, +CV_SymKind_LPROCIA64_ID = 0x114a, +CV_SymKind_GPROCIA64_ID = 0x114b, +CV_SymKind_BUILDINFO = 0x114c, +CV_SymKind_INLINESITE = 0x114d, +CV_SymKind_INLINESITE_END = 0x114e, +CV_SymKind_PROC_ID_END = 0x114f, +CV_SymKind_DEFRANGE_HLSL = 0x1150, +CV_SymKind_GDATA_HLSL = 0x1151, +CV_SymKind_LDATA_HLSL = 0x1152, +CV_SymKind_FILESTATIC = 0x1153, +CV_SymKind_LPROC32_DPC = 0x1155, +CV_SymKind_LPROC32_DPC_ID = 0x1156, +CV_SymKind_DEFRANGE_DPC_PTR_TAG = 0x1157, +CV_SymKind_DPC_SYM_TAG_MAP = 0x1158, +CV_SymKind_ARMSWITCHTABLE = 0x1159, +CV_SymKind_CALLEES = 0x115a, +CV_SymKind_CALLERS = 0x115b, +CV_SymKind_POGODATA = 0x115c, +CV_SymKind_INLINESITE2 = 0x115d, +CV_SymKind_HEAPALLOCSITE = 0x115e, +CV_SymKind_MOD_TYPEREF = 0x115f, +CV_SymKind_REF_MINIPDB = 0x1160, +CV_SymKind_PDBMAP = 0x1161, +CV_SymKind_GDATA_HLSL32 = 0x1162, +CV_SymKind_LDATA_HLSL32 = 0x1163, +CV_SymKind_GDATA_HLSL32_EX = 0x1164, +CV_SymKind_LDATA_HLSL32_EX = 0x1165, +CV_SymKind_FASTLINK = 0x1167, +CV_SymKind_INLINEES = 0x1168, +} CV_SymKindEnum; + +typedef U8 CV_BasicType; +typedef enum CV_BasicTypeEnum +{ +CV_BasicType_NOTYPE = 0x00, +CV_BasicType_ABS = 0x01, +CV_BasicType_SEGMENT = 0x02, +CV_BasicType_VOID = 0x03, +CV_BasicType_CURRENCY = 0x04, +CV_BasicType_NBASICSTR = 0x05, +CV_BasicType_FBASICSTR = 0x06, +CV_BasicType_NOTTRANS = 0x07, +CV_BasicType_HRESULT = 0x08, +CV_BasicType_CHAR = 0x10, +CV_BasicType_SHORT = 0x11, +CV_BasicType_LONG = 0x12, +CV_BasicType_QUAD = 0x13, +CV_BasicType_OCT = 0x14, +CV_BasicType_UCHAR = 0x20, +CV_BasicType_USHORT = 0x21, +CV_BasicType_ULONG = 0x22, +CV_BasicType_UQUAD = 0x23, +CV_BasicType_UOCT = 0x24, +CV_BasicType_BOOL8 = 0x30, +CV_BasicType_BOOL16 = 0x31, +CV_BasicType_BOOL32 = 0x32, +CV_BasicType_BOOL64 = 0x33, +CV_BasicType_FLOAT32 = 0x40, +CV_BasicType_FLOAT64 = 0x41, +CV_BasicType_FLOAT80 = 0x42, +CV_BasicType_FLOAT128 = 0x43, +CV_BasicType_FLOAT48 = 0x44, +CV_BasicType_FLOAT32PP = 0x45, +CV_BasicType_FLOAT16 = 0x46, +CV_BasicType_COMPLEX32 = 0x50, +CV_BasicType_COMPLEX64 = 0x51, +CV_BasicType_COMPLEX80 = 0x52, +CV_BasicType_COMPLEX128 = 0x53, +CV_BasicType_BIT = 0x60, +CV_BasicType_PASCHAR = 0x61, +CV_BasicType_BOOL32FF = 0x62, +CV_BasicType_INT8 = 0x68, +CV_BasicType_UINT8 = 0x69, +CV_BasicType_RCHAR = 0x70, +CV_BasicType_WCHAR = 0x71, +CV_BasicType_INT16 = 0x72, +CV_BasicType_UINT16 = 0x73, +CV_BasicType_INT32 = 0x74, +CV_BasicType_UINT32 = 0x75, +CV_BasicType_INT64 = 0x76, +CV_BasicType_UINT64 = 0x77, +CV_BasicType_INT128 = 0x78, +CV_BasicType_UINT128 = 0x79, +CV_BasicType_CHAR16 = 0x7a, +CV_BasicType_CHAR32 = 0x7b, +CV_BasicType_CHAR8 = 0x7c, +CV_BasicType_PTR = 0xf0, +} CV_BasicTypeEnum; + +typedef U16 CV_LeafKind; +typedef enum CV_LeafKindEnum +{ +CV_LeafKind_NOTYPE = 0x0000, +CV_LeafKind_MODIFIER_16t = 0x0001, +CV_LeafKind_POINTER_16t = 0x0002, +CV_LeafKind_ARRAY_16t = 0x0003, +CV_LeafKind_CLASS_16t = 0x0004, +CV_LeafKind_STRUCTURE_16t = 0x0005, +CV_LeafKind_UNION_16t = 0x0006, +CV_LeafKind_ENUM_16t = 0x0007, +CV_LeafKind_PROCEDURE_16t = 0x0008, +CV_LeafKind_MFUNCTION_16t = 0x0009, +CV_LeafKind_VTSHAPE = 0x000a, +CV_LeafKind_COBOL0_16t = 0x000b, +CV_LeafKind_COBOL1 = 0x000c, +CV_LeafKind_BARRAY_16t = 0x000d, +CV_LeafKind_LABEL = 0x000e, +CV_LeafKind_NULL = 0x000f, +CV_LeafKind_NOTTRAN = 0x0010, +CV_LeafKind_DIMARRAY_16t = 0x0011, +CV_LeafKind_VFTPATH_16t = 0x0012, +CV_LeafKind_PRECOMP_16t = 0x0013, +CV_LeafKind_ENDPRECOMP = 0x0014, +CV_LeafKind_OEM_16t = 0x0015, +CV_LeafKind_TYPESERVER_ST = 0x0016, +CV_LeafKind_SKIP_16t = 0x0200, +CV_LeafKind_ARGLIST_16t = 0x0201, +CV_LeafKind_DEFARG_16t = 0x0202, +CV_LeafKind_LIST = 0x0203, +CV_LeafKind_FIELDLIST_16t = 0x0204, +CV_LeafKind_DERIVED_16t = 0x0205, +CV_LeafKind_BITFIELD_16t = 0x0206, +CV_LeafKind_METHODLIST_16t = 0x0207, +CV_LeafKind_DIMCONU_16t = 0x0208, +CV_LeafKind_DIMCONLU_16t = 0x0209, +CV_LeafKind_DIMVARU_16t = 0x020a, +CV_LeafKind_DIMVARLU_16t = 0x020b, +CV_LeafKind_REFSYM = 0x020c, +CV_LeafKind_BCLASS_16t = 0x0400, +CV_LeafKind_VBCLASS_16t = 0x0401, +CV_LeafKind_IVBCLASS_16t = 0x0402, +CV_LeafKind_ENUMERATE_ST = 0x0403, +CV_LeafKind_FRIENDFCN_16t = 0x0404, +CV_LeafKind_INDEX_16t = 0x0405, +CV_LeafKind_MEMBER_16t = 0x0406, +CV_LeafKind_STMEMBER_16t = 0x0407, +CV_LeafKind_METHOD_16t = 0x0408, +CV_LeafKind_NESTTYPE_16t = 0x0409, +CV_LeafKind_VFUNCTAB_16t = 0x040a, +CV_LeafKind_FRIENDCLS_16t = 0x040b, +CV_LeafKind_ONEMETHOD_16t = 0x040c, +CV_LeafKind_VFUNCOFF_16t = 0x040d, +CV_LeafKind_TI16_MAX = 0x1000, +CV_LeafKind_MODIFIER = 0x1001, +CV_LeafKind_POINTER = 0x1002, +CV_LeafKind_ARRAY_ST = 0x1003, +CV_LeafKind_CLASS_ST = 0x1004, +CV_LeafKind_STRUCTURE_ST = 0x1005, +CV_LeafKind_UNION_ST = 0x1006, +CV_LeafKind_ENUM_ST = 0x1007, +CV_LeafKind_PROCEDURE = 0x1008, +CV_LeafKind_MFUNCTION = 0x1009, +CV_LeafKind_COBOL0 = 0x100a, +CV_LeafKind_BARRAY = 0x100b, +CV_LeafKind_DIMARRAY_ST = 0x100c, +CV_LeafKind_VFTPATH = 0x100d, +CV_LeafKind_PRECOMP_ST = 0x100e, +CV_LeafKind_OEM = 0x100f, +CV_LeafKind_ALIAS_ST = 0x1010, +CV_LeafKind_OEM2 = 0x1011, +CV_LeafKind_SKIP = 0x1200, +CV_LeafKind_ARGLIST = 0x1201, +CV_LeafKind_DEFARG_ST = 0x1202, +CV_LeafKind_FIELDLIST = 0x1203, +CV_LeafKind_DERIVED = 0x1204, +CV_LeafKind_BITFIELD = 0x1205, +CV_LeafKind_METHODLIST = 0x1206, +CV_LeafKind_DIMCONU = 0x1207, +CV_LeafKind_DIMCONLU = 0x1208, +CV_LeafKind_DIMVARU = 0x1209, +CV_LeafKind_DIMVARLU = 0x120a, +CV_LeafKind_BCLASS = 0x1400, +CV_LeafKind_VBCLASS = 0x1401, +CV_LeafKind_IVBCLASS = 0x1402, +CV_LeafKind_FRIENDFCN_ST = 0x1403, +CV_LeafKind_INDEX = 0x1404, +CV_LeafKind_MEMBER_ST = 0x1405, +CV_LeafKind_STMEMBER_ST = 0x1406, +CV_LeafKind_METHOD_ST = 0x1407, +CV_LeafKind_NESTTYPE_ST = 0x1408, +CV_LeafKind_VFUNCTAB = 0x1409, +CV_LeafKind_FRIENDCLS = 0x140a, +CV_LeafKind_ONEMETHOD_ST = 0x140b, +CV_LeafKind_VFUNCOFF = 0x140c, +CV_LeafKind_NESTTYPEEX_ST = 0x140d, +CV_LeafKind_MEMBERMODIFY_ST = 0x140e, +CV_LeafKind_MANAGED_ST = 0x140f, +CV_LeafKind_ST_MAX = 0x1500, +CV_LeafKind_TYPESERVER = 0x1501, +CV_LeafKind_ENUMERATE = 0x1502, +CV_LeafKind_ARRAY = 0x1503, +CV_LeafKind_CLASS = 0x1504, +CV_LeafKind_STRUCTURE = 0x1505, +CV_LeafKind_UNION = 0x1506, +CV_LeafKind_ENUM = 0x1507, +CV_LeafKind_DIMARRAY = 0x1508, +CV_LeafKind_PRECOMP = 0x1509, +CV_LeafKind_ALIAS = 0x150a, +CV_LeafKind_DEFARG = 0x150b, +CV_LeafKind_FRIENDFCN = 0x150c, +CV_LeafKind_MEMBER = 0x150d, +CV_LeafKind_STMEMBER = 0x150e, +CV_LeafKind_METHOD = 0x150f, +CV_LeafKind_NESTTYPE = 0x1510, +CV_LeafKind_ONEMETHOD = 0x1511, +CV_LeafKind_NESTTYPEEX = 0x1512, +CV_LeafKind_MEMBERMODIFY = 0x1513, +CV_LeafKind_MANAGED = 0x1514, +CV_LeafKind_TYPESERVER2 = 0x1515, +CV_LeafKind_STRIDED_ARRAY = 0x1516, +CV_LeafKind_HLSL = 0x1517, +CV_LeafKind_MODIFIER_EX = 0x1518, +CV_LeafKind_INTERFACE = 0x1519, +CV_LeafKind_BINTERFACE = 0x151a, +CV_LeafKind_VECTOR = 0x151b, +CV_LeafKind_MATRIX = 0x151c, +CV_LeafKind_VFTABLE = 0x151d, +CV_LeafKind_FUNC_ID = 0x1601, +CV_LeafKind_MFUNC_ID = 0x1602, +CV_LeafKind_BUILDINFO = 0x1603, +CV_LeafKind_SUBSTR_LIST = 0x1604, +CV_LeafKind_STRING_ID = 0x1605, +CV_LeafKind_UDT_SRC_LINE = 0x1606, +CV_LeafKind_UDT_MOD_SRC_LINE = 0x1607, +CV_LeafKind_CLASS2 = 0x1608, +CV_LeafKind_STRUCT2 = 0x1609, +} CV_LeafKindEnum; + +internal String8 cv_string_from_numeric_kind(CV_NumericKind v); +internal String8 cv_string_from_arch(CV_Arch v); +internal String8 cv_string_from_sym_kind(CV_SymKind v); +internal String8 cv_string_from_basic_type(CV_BasicType v); +internal String8 cv_type_name_from_basic_type(CV_BasicType v); +internal String8 cv_string_from_leaf_kind(CV_LeafKind v); +internal U64 cv_header_struct_size_from_sym_kind(CV_SymKind v); +internal U64 cv_header_struct_size_from_leaf_kind(CV_LeafKind v); +#endif // CODEVIEW_META_H diff --git a/src/dbg_engine/generated/dbg_engine.meta.c b/src/dbg_engine/generated/dbg_engine.meta.c index 12e147c8..2d300773 100644 --- a/src/dbg_engine/generated/dbg_engine.meta.c +++ b/src/dbg_engine/generated/dbg_engine.meta.c @@ -1,208 +1,208 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -C_LINKAGE_BEGIN -String8 d_entity_kind_code_name_table[12] = -{ -{0}, -str8_lit_comp("root"), -str8_lit_comp("machine"), -str8_lit_comp("process"), -str8_lit_comp("thread"), -str8_lit_comp("module"), -str8_lit_comp("entry_point"), -str8_lit_comp("debug_info_path"), -str8_lit_comp("pending_thread_name"), -str8_lit_comp("pending_thread_color"), -str8_lit_comp("breakpoint"), -str8_lit_comp("address_range_annotation"), -}; - -String8 d_entity_kind_display_string_table[12] = -{ -{0}, -str8_lit_comp("Root"), -str8_lit_comp("Machine"), -str8_lit_comp("Process"), -str8_lit_comp("Thread"), -str8_lit_comp("Module"), -str8_lit_comp("EntryPoint"), -str8_lit_comp("DebugInfoPath"), -str8_lit_comp("PendingThreadName"), -str8_lit_comp("PendingThreadColor"), -str8_lit_comp("Breakpoint"), -str8_lit_comp("AddressRangeAnnotation"), -}; - -U32 d_exception_code_kind_code_table[38] = -{ -0, -0x40010005, -0x40010008, -0x40080201, -0x40080202, -0x0000071a, -0x80000002, -0xc0000005, -0xc0000006, -0xc0000008, -0xc0000017, -0xc000001d, -0xc0000025, -0xc0000026, -0xc000008c, -0xc000008d, -0xc000008e, -0xc000008f, -0xc0000090, -0xc0000091, -0xc0000092, -0xc0000093, -0xc0000094, -0xc0000095, -0xc0000096, -0xc00000fd, -0xc0000135, -0xc0000138, -0xc0000139, -0xc0000142, -0xc00002b4, -0xc00002b5, -0xc0000420, -0xc06d007e, -0xc06d007f, -0xe073616e, -0xe0736171, -0x0000087a, -}; - -String8 d_exception_code_kind_display_string_table[38] = -{ -{0}, -str8_lit_comp("(Win32) Control-C"), -str8_lit_comp("(Win32) Control-Break"), -str8_lit_comp("(Win32) WinRT Originate Error"), -str8_lit_comp("(Win32) WinRT Transform Error"), -str8_lit_comp("(Win32) RPC Call Cancelled"), -str8_lit_comp("(Win32) Data Type Misalignment"), -str8_lit_comp("(Win32) Access Violation"), -str8_lit_comp("(Win32) In Page Error"), -str8_lit_comp("(Win32) Invalid Handle Specified"), -str8_lit_comp("(Win32) Not Enough Quota"), -str8_lit_comp("(Win32) Illegal Instruction"), -str8_lit_comp("(Win32) Cannot Continue From Exception"), -str8_lit_comp("(Win32) Invalid Exception Disposition Returned By Handler"), -str8_lit_comp("(Win32) Array Bounds Exceeded"), -str8_lit_comp("(Win32) Floating-Point Denormal Operand"), -str8_lit_comp("(Win32) Floating-Point Division By Zero"), -str8_lit_comp("(Win32) Floating-Point Inexact Result"), -str8_lit_comp("(Win32) Floating-Point Invalid Operation"), -str8_lit_comp("(Win32) Floating-Point Overflow"), -str8_lit_comp("(Win32) Floating-Point Stack Check"), -str8_lit_comp("(Win32) Floating-Point Underflow"), -str8_lit_comp("(Win32) Integer Division By Zero"), -str8_lit_comp("(Win32) Integer Overflow"), -str8_lit_comp("(Win32) Privileged Instruction"), -str8_lit_comp("(Win32) Stack Overflow"), -str8_lit_comp("(Win32) Unable To Locate DLL"), -str8_lit_comp("(Win32) Ordinal Not Found"), -str8_lit_comp("(Win32) Entry Point Not Found"), -str8_lit_comp("(Win32) DLL Initialization Failed"), -str8_lit_comp("(Win32) Floating Point SSE Multiple Faults"), -str8_lit_comp("(Win32) Floating Point SSE Multiple Traps"), -str8_lit_comp("(Win32) Assertion Failed"), -str8_lit_comp("(Win32) Module Not Found"), -str8_lit_comp("(Win32) Procedure Not Found"), -str8_lit_comp("(Win32) Sanitizer Error Detected"), -str8_lit_comp("(Win32) Sanitizer Raw Access Violation"), -str8_lit_comp("(Win32) DirectX Debug Layer"), -}; - -String8 d_exception_code_kind_lowercase_code_string_table[38] = -{ -{0}, -str8_lit_comp("win32_ctrl_c"), -str8_lit_comp("win32_ctrl_break"), -str8_lit_comp("win32_win_rt_originate_error"), -str8_lit_comp("win32_win_rt_transform_error"), -str8_lit_comp("win32_rpc_call_cancelled"), -str8_lit_comp("win32_datatype_misalignment"), -str8_lit_comp("win32_access_violation"), -str8_lit_comp("win32_in_page_error"), -str8_lit_comp("win32_invalid_handle"), -str8_lit_comp("win32_not_enough_quota"), -str8_lit_comp("win32_illegal_instruction"), -str8_lit_comp("win32_cannot_continue_exception"), -str8_lit_comp("win32_invalid_exception_disposition"), -str8_lit_comp("win32_array_bounds_exceeded"), -str8_lit_comp("win32_floating_point_denormal_operand"), -str8_lit_comp("win32_floating_point_division_by_zero"), -str8_lit_comp("win32_floating_point_inexact_result"), -str8_lit_comp("win32_floating_point_invalid_operation"), -str8_lit_comp("win32_floating_point_overflow"), -str8_lit_comp("win32_floating_point_stack_check"), -str8_lit_comp("win32_floating_point_underflow"), -str8_lit_comp("win32_integer_division_by_zero"), -str8_lit_comp("win32_integer_overflow"), -str8_lit_comp("win32_privileged_instruction"), -str8_lit_comp("win32_stack_overflow"), -str8_lit_comp("win32_unable_to_locate_dll"), -str8_lit_comp("win32_ordinal_not_found"), -str8_lit_comp("win32_entry_point_not_found"), -str8_lit_comp("win32_dll_initialization_failed"), -str8_lit_comp("win32_floating_point_sse_multiple_faults"), -str8_lit_comp("win32_floating_point_sse_multiple_traps"), -str8_lit_comp("win32_assertion_failed"), -str8_lit_comp("win32_module_not_found"), -str8_lit_comp("win32_procedure_not_found"), -str8_lit_comp("win32_sanitizer_error_detected"), -str8_lit_comp("win32_sanitizer_raw_access_violation"), -str8_lit_comp("win32_directx_debug_layer"), -}; - -B8 d_exception_code_kind_default_enable_table[38] = -{ -0, -1, -1, -0, -0, -0, -0, -1, -0, -1, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -1, -0, -0, -1, -0, -1, -}; - -C_LINKAGE_END - +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +C_LINKAGE_BEGIN +String8 d_entity_kind_code_name_table[12] = +{ +{0}, +str8_lit_comp("root"), +str8_lit_comp("machine"), +str8_lit_comp("process"), +str8_lit_comp("thread"), +str8_lit_comp("module"), +str8_lit_comp("entry_point"), +str8_lit_comp("debug_info_path"), +str8_lit_comp("pending_thread_name"), +str8_lit_comp("pending_thread_color"), +str8_lit_comp("breakpoint"), +str8_lit_comp("address_range_annotation"), +}; + +String8 d_entity_kind_display_string_table[12] = +{ +{0}, +str8_lit_comp("Root"), +str8_lit_comp("Machine"), +str8_lit_comp("Process"), +str8_lit_comp("Thread"), +str8_lit_comp("Module"), +str8_lit_comp("EntryPoint"), +str8_lit_comp("DebugInfoPath"), +str8_lit_comp("PendingThreadName"), +str8_lit_comp("PendingThreadColor"), +str8_lit_comp("Breakpoint"), +str8_lit_comp("AddressRangeAnnotation"), +}; + +U32 d_exception_code_kind_code_table[38] = +{ +0, +0x40010005, +0x40010008, +0x40080201, +0x40080202, +0x0000071a, +0x80000002, +0xc0000005, +0xc0000006, +0xc0000008, +0xc0000017, +0xc000001d, +0xc0000025, +0xc0000026, +0xc000008c, +0xc000008d, +0xc000008e, +0xc000008f, +0xc0000090, +0xc0000091, +0xc0000092, +0xc0000093, +0xc0000094, +0xc0000095, +0xc0000096, +0xc00000fd, +0xc0000135, +0xc0000138, +0xc0000139, +0xc0000142, +0xc00002b4, +0xc00002b5, +0xc0000420, +0xc06d007e, +0xc06d007f, +0xe073616e, +0xe0736171, +0x0000087a, +}; + +String8 d_exception_code_kind_display_string_table[38] = +{ +{0}, +str8_lit_comp("(Win32) Control-C"), +str8_lit_comp("(Win32) Control-Break"), +str8_lit_comp("(Win32) WinRT Originate Error"), +str8_lit_comp("(Win32) WinRT Transform Error"), +str8_lit_comp("(Win32) RPC Call Cancelled"), +str8_lit_comp("(Win32) Data Type Misalignment"), +str8_lit_comp("(Win32) Access Violation"), +str8_lit_comp("(Win32) In Page Error"), +str8_lit_comp("(Win32) Invalid Handle Specified"), +str8_lit_comp("(Win32) Not Enough Quota"), +str8_lit_comp("(Win32) Illegal Instruction"), +str8_lit_comp("(Win32) Cannot Continue From Exception"), +str8_lit_comp("(Win32) Invalid Exception Disposition Returned By Handler"), +str8_lit_comp("(Win32) Array Bounds Exceeded"), +str8_lit_comp("(Win32) Floating-Point Denormal Operand"), +str8_lit_comp("(Win32) Floating-Point Division By Zero"), +str8_lit_comp("(Win32) Floating-Point Inexact Result"), +str8_lit_comp("(Win32) Floating-Point Invalid Operation"), +str8_lit_comp("(Win32) Floating-Point Overflow"), +str8_lit_comp("(Win32) Floating-Point Stack Check"), +str8_lit_comp("(Win32) Floating-Point Underflow"), +str8_lit_comp("(Win32) Integer Division By Zero"), +str8_lit_comp("(Win32) Integer Overflow"), +str8_lit_comp("(Win32) Privileged Instruction"), +str8_lit_comp("(Win32) Stack Overflow"), +str8_lit_comp("(Win32) Unable To Locate DLL"), +str8_lit_comp("(Win32) Ordinal Not Found"), +str8_lit_comp("(Win32) Entry Point Not Found"), +str8_lit_comp("(Win32) DLL Initialization Failed"), +str8_lit_comp("(Win32) Floating Point SSE Multiple Faults"), +str8_lit_comp("(Win32) Floating Point SSE Multiple Traps"), +str8_lit_comp("(Win32) Assertion Failed"), +str8_lit_comp("(Win32) Module Not Found"), +str8_lit_comp("(Win32) Procedure Not Found"), +str8_lit_comp("(Win32) Sanitizer Error Detected"), +str8_lit_comp("(Win32) Sanitizer Raw Access Violation"), +str8_lit_comp("(Win32) DirectX Debug Layer"), +}; + +String8 d_exception_code_kind_lowercase_code_string_table[38] = +{ +{0}, +str8_lit_comp("win32_ctrl_c"), +str8_lit_comp("win32_ctrl_break"), +str8_lit_comp("win32_win_rt_originate_error"), +str8_lit_comp("win32_win_rt_transform_error"), +str8_lit_comp("win32_rpc_call_cancelled"), +str8_lit_comp("win32_datatype_misalignment"), +str8_lit_comp("win32_access_violation"), +str8_lit_comp("win32_in_page_error"), +str8_lit_comp("win32_invalid_handle"), +str8_lit_comp("win32_not_enough_quota"), +str8_lit_comp("win32_illegal_instruction"), +str8_lit_comp("win32_cannot_continue_exception"), +str8_lit_comp("win32_invalid_exception_disposition"), +str8_lit_comp("win32_array_bounds_exceeded"), +str8_lit_comp("win32_floating_point_denormal_operand"), +str8_lit_comp("win32_floating_point_division_by_zero"), +str8_lit_comp("win32_floating_point_inexact_result"), +str8_lit_comp("win32_floating_point_invalid_operation"), +str8_lit_comp("win32_floating_point_overflow"), +str8_lit_comp("win32_floating_point_stack_check"), +str8_lit_comp("win32_floating_point_underflow"), +str8_lit_comp("win32_integer_division_by_zero"), +str8_lit_comp("win32_integer_overflow"), +str8_lit_comp("win32_privileged_instruction"), +str8_lit_comp("win32_stack_overflow"), +str8_lit_comp("win32_unable_to_locate_dll"), +str8_lit_comp("win32_ordinal_not_found"), +str8_lit_comp("win32_entry_point_not_found"), +str8_lit_comp("win32_dll_initialization_failed"), +str8_lit_comp("win32_floating_point_sse_multiple_faults"), +str8_lit_comp("win32_floating_point_sse_multiple_traps"), +str8_lit_comp("win32_assertion_failed"), +str8_lit_comp("win32_module_not_found"), +str8_lit_comp("win32_procedure_not_found"), +str8_lit_comp("win32_sanitizer_error_detected"), +str8_lit_comp("win32_sanitizer_raw_access_violation"), +str8_lit_comp("win32_directx_debug_layer"), +}; + +B8 d_exception_code_kind_default_enable_table[38] = +{ +0, +1, +1, +0, +0, +0, +0, +1, +0, +1, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +1, +0, +0, +1, +0, +1, +}; + +C_LINKAGE_END + diff --git a/src/demon/generated/demon.meta.c b/src/demon/generated/demon.meta.c index cf282f4a..41c98976 100644 --- a/src/demon/generated/demon.meta.c +++ b/src/demon/generated/demon.meta.c @@ -1,42 +1,42 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -C_LINKAGE_BEGIN -String8 dmn_event_kind_string_table[21] = -{ -str8_lit_comp("Null"), -str8_lit_comp("Error"), -str8_lit_comp("HandshakeComplete"), -str8_lit_comp("CreateProcess"), -str8_lit_comp("ExitProcess"), -str8_lit_comp("CreateThread"), -str8_lit_comp("ExitThread"), -str8_lit_comp("LoadModule"), -str8_lit_comp("UnloadModule"), -str8_lit_comp("Breakpoint"), -str8_lit_comp("Trap"), -str8_lit_comp("SingleStep"), -str8_lit_comp("Exception"), -str8_lit_comp("Halt"), -str8_lit_comp("Memory"), -str8_lit_comp("DebugString"), -str8_lit_comp("SetThreadName"), -str8_lit_comp("SetThreadColor"), -str8_lit_comp("SetBreakpoint"), -str8_lit_comp("UnsetBreakpoint"), -str8_lit_comp("SetVAddrRangeNote"), -}; - -String8 dmn_exception_kind_string_table[5] = -{ -str8_lit_comp("Null"), -str8_lit_comp("MemoryRead"), -str8_lit_comp("MemoryWrite"), -str8_lit_comp("MemoryExecute"), -str8_lit_comp("CppThrow"), -}; - -C_LINKAGE_END - +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +C_LINKAGE_BEGIN +String8 dmn_event_kind_string_table[21] = +{ +str8_lit_comp("Null"), +str8_lit_comp("Error"), +str8_lit_comp("HandshakeComplete"), +str8_lit_comp("CreateProcess"), +str8_lit_comp("ExitProcess"), +str8_lit_comp("CreateThread"), +str8_lit_comp("ExitThread"), +str8_lit_comp("LoadModule"), +str8_lit_comp("UnloadModule"), +str8_lit_comp("Breakpoint"), +str8_lit_comp("Trap"), +str8_lit_comp("SingleStep"), +str8_lit_comp("Exception"), +str8_lit_comp("Halt"), +str8_lit_comp("Memory"), +str8_lit_comp("DebugString"), +str8_lit_comp("SetThreadName"), +str8_lit_comp("SetThreadColor"), +str8_lit_comp("SetBreakpoint"), +str8_lit_comp("UnsetBreakpoint"), +str8_lit_comp("SetVAddrRangeNote"), +}; + +String8 dmn_exception_kind_string_table[5] = +{ +str8_lit_comp("Null"), +str8_lit_comp("MemoryRead"), +str8_lit_comp("MemoryWrite"), +str8_lit_comp("MemoryExecute"), +str8_lit_comp("CppThrow"), +}; + +C_LINKAGE_END + diff --git a/src/demon/generated/demon.meta.h b/src/demon/generated/demon.meta.h index 7e1513e0..24ee3bf3 100644 --- a/src/demon/generated/demon.meta.h +++ b/src/demon/generated/demon.meta.h @@ -1,70 +1,70 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef DEMON_META_H -#define DEMON_META_H - -typedef enum DMN_EventKind -{ -DMN_EventKind_Null, -DMN_EventKind_Error, -DMN_EventKind_HandshakeComplete, -DMN_EventKind_CreateProcess, -DMN_EventKind_ExitProcess, -DMN_EventKind_CreateThread, -DMN_EventKind_ExitThread, -DMN_EventKind_LoadModule, -DMN_EventKind_UnloadModule, -DMN_EventKind_Breakpoint, -DMN_EventKind_Trap, -DMN_EventKind_SingleStep, -DMN_EventKind_Exception, -DMN_EventKind_Halt, -DMN_EventKind_Memory, -DMN_EventKind_DebugString, -DMN_EventKind_SetThreadName, -DMN_EventKind_SetThreadColor, -DMN_EventKind_SetBreakpoint, -DMN_EventKind_UnsetBreakpoint, -DMN_EventKind_SetVAddrRangeNote, -DMN_EventKind_COUNT, -} DMN_EventKind; - -typedef enum DMN_ErrorKind -{ -DMN_ErrorKind_Null, -DMN_ErrorKind_NotAttached, -DMN_ErrorKind_UnexpectedFailure, -DMN_ErrorKind_InvalidHandle, -DMN_ErrorKind_COUNT, -} DMN_ErrorKind; - -typedef enum DMN_MemoryEventKind -{ -DMN_MemoryEventKind_Null, -DMN_MemoryEventKind_Commit, -DMN_MemoryEventKind_Reserve, -DMN_MemoryEventKind_Decommit, -DMN_MemoryEventKind_Release, -DMN_MemoryEventKind_COUNT, -} DMN_MemoryEventKind; - -typedef enum DMN_ExceptionKind -{ -DMN_ExceptionKind_Null, -DMN_ExceptionKind_MemoryRead, -DMN_ExceptionKind_MemoryWrite, -DMN_ExceptionKind_MemoryExecute, -DMN_ExceptionKind_CppThrow, -DMN_ExceptionKind_COUNT, -} DMN_ExceptionKind; - -C_LINKAGE_BEGIN -extern String8 dmn_event_kind_string_table[21]; -extern String8 dmn_exception_kind_string_table[5]; - -C_LINKAGE_END - -#endif // DEMON_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef DEMON_META_H +#define DEMON_META_H + +typedef enum DMN_EventKind +{ +DMN_EventKind_Null, +DMN_EventKind_Error, +DMN_EventKind_HandshakeComplete, +DMN_EventKind_CreateProcess, +DMN_EventKind_ExitProcess, +DMN_EventKind_CreateThread, +DMN_EventKind_ExitThread, +DMN_EventKind_LoadModule, +DMN_EventKind_UnloadModule, +DMN_EventKind_Breakpoint, +DMN_EventKind_Trap, +DMN_EventKind_SingleStep, +DMN_EventKind_Exception, +DMN_EventKind_Halt, +DMN_EventKind_Memory, +DMN_EventKind_DebugString, +DMN_EventKind_SetThreadName, +DMN_EventKind_SetThreadColor, +DMN_EventKind_SetBreakpoint, +DMN_EventKind_UnsetBreakpoint, +DMN_EventKind_SetVAddrRangeNote, +DMN_EventKind_COUNT, +} DMN_EventKind; + +typedef enum DMN_ErrorKind +{ +DMN_ErrorKind_Null, +DMN_ErrorKind_NotAttached, +DMN_ErrorKind_UnexpectedFailure, +DMN_ErrorKind_InvalidHandle, +DMN_ErrorKind_COUNT, +} DMN_ErrorKind; + +typedef enum DMN_MemoryEventKind +{ +DMN_MemoryEventKind_Null, +DMN_MemoryEventKind_Commit, +DMN_MemoryEventKind_Reserve, +DMN_MemoryEventKind_Decommit, +DMN_MemoryEventKind_Release, +DMN_MemoryEventKind_COUNT, +} DMN_MemoryEventKind; + +typedef enum DMN_ExceptionKind +{ +DMN_ExceptionKind_Null, +DMN_ExceptionKind_MemoryRead, +DMN_ExceptionKind_MemoryWrite, +DMN_ExceptionKind_MemoryExecute, +DMN_ExceptionKind_CppThrow, +DMN_ExceptionKind_COUNT, +} DMN_ExceptionKind; + +C_LINKAGE_BEGIN +extern String8 dmn_event_kind_string_table[21]; +extern String8 dmn_exception_kind_string_table[5]; + +C_LINKAGE_END + +#endif // DEMON_META_H diff --git a/src/draw/generated/draw.meta.c b/src/draw/generated/draw.meta.c index 2efd51aa..1f40856a 100644 --- a/src/draw/generated/draw.meta.c +++ b/src/draw/generated/draw.meta.c @@ -1,17 +1,17 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -internal R_Tex2DSampleKind dr_push_tex2d_sample_kind(R_Tex2DSampleKind v) {DR_StackPushImpl(Tex2DSampleKind, tex2d_sample_kind, R_Tex2DSampleKind, v);} -internal Mat3x3F32 dr_push_xform2d(Mat3x3F32 v) {DR_StackPushImpl(XForm2D, xform2d, Mat3x3F32, v);} -internal Rng2F32 dr_push_clip(Rng2F32 v) {DR_StackPushImpl(Clip, clip, Rng2F32, v);} -internal F32 dr_push_transparency(F32 v) {DR_StackPushImpl(Transparency, transparency, F32, v);} -internal R_Tex2DSampleKind dr_pop_tex2d_sample_kind(void) {DR_StackPopImpl(Tex2DSampleKind, tex2d_sample_kind, R_Tex2DSampleKind);} -internal Mat3x3F32 dr_pop_xform2d(void) {DR_StackPopImpl(XForm2D, xform2d, Mat3x3F32);} -internal Rng2F32 dr_pop_clip(void) {DR_StackPopImpl(Clip, clip, Rng2F32);} -internal F32 dr_pop_transparency(void) {DR_StackPopImpl(Transparency, transparency, F32);} -internal R_Tex2DSampleKind dr_top_tex2d_sample_kind(void) {DR_StackTopImpl(Tex2DSampleKind, tex2d_sample_kind, R_Tex2DSampleKind);} -internal Mat3x3F32 dr_top_xform2d(void) {DR_StackTopImpl(XForm2D, xform2d, Mat3x3F32);} -internal Rng2F32 dr_top_clip(void) {DR_StackTopImpl(Clip, clip, Rng2F32);} -internal F32 dr_top_transparency(void) {DR_StackTopImpl(Transparency, transparency, F32);} +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +internal R_Tex2DSampleKind dr_push_tex2d_sample_kind(R_Tex2DSampleKind v) {DR_StackPushImpl(Tex2DSampleKind, tex2d_sample_kind, R_Tex2DSampleKind, v);} +internal Mat3x3F32 dr_push_xform2d(Mat3x3F32 v) {DR_StackPushImpl(XForm2D, xform2d, Mat3x3F32, v);} +internal Rng2F32 dr_push_clip(Rng2F32 v) {DR_StackPushImpl(Clip, clip, Rng2F32, v);} +internal F32 dr_push_transparency(F32 v) {DR_StackPushImpl(Transparency, transparency, F32, v);} +internal R_Tex2DSampleKind dr_pop_tex2d_sample_kind(void) {DR_StackPopImpl(Tex2DSampleKind, tex2d_sample_kind, R_Tex2DSampleKind);} +internal Mat3x3F32 dr_pop_xform2d(void) {DR_StackPopImpl(XForm2D, xform2d, Mat3x3F32);} +internal Rng2F32 dr_pop_clip(void) {DR_StackPopImpl(Clip, clip, Rng2F32);} +internal F32 dr_pop_transparency(void) {DR_StackPopImpl(Transparency, transparency, F32);} +internal R_Tex2DSampleKind dr_top_tex2d_sample_kind(void) {DR_StackTopImpl(Tex2DSampleKind, tex2d_sample_kind, R_Tex2DSampleKind);} +internal Mat3x3F32 dr_top_xform2d(void) {DR_StackTopImpl(XForm2D, xform2d, Mat3x3F32);} +internal Rng2F32 dr_top_clip(void) {DR_StackTopImpl(Clip, clip, Rng2F32);} +internal F32 dr_top_transparency(void) {DR_StackTopImpl(Transparency, transparency, F32);} diff --git a/src/draw/generated/draw.meta.h b/src/draw/generated/draw.meta.h index 58db1f4e..017fb418 100644 --- a/src/draw/generated/draw.meta.h +++ b/src/draw/generated/draw.meta.h @@ -1,49 +1,49 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef DRAW_META_H -#define DRAW_META_H - -typedef struct DR_Tex2DSampleKindNode DR_Tex2DSampleKindNode; struct DR_Tex2DSampleKindNode {DR_Tex2DSampleKindNode *next; R_Tex2DSampleKind v;}; -typedef struct DR_XForm2DNode DR_XForm2DNode; struct DR_XForm2DNode {DR_XForm2DNode *next; Mat3x3F32 v;}; -typedef struct DR_ClipNode DR_ClipNode; struct DR_ClipNode {DR_ClipNode *next; Rng2F32 v;}; -typedef struct DR_TransparencyNode DR_TransparencyNode; struct DR_TransparencyNode {DR_TransparencyNode *next; F32 v;}; -#define DR_BucketStackDecls struct{\ -DR_Tex2DSampleKindNode *top_tex2d_sample_kind;\ -DR_XForm2DNode *top_xform2d;\ -DR_ClipNode *top_clip;\ -DR_TransparencyNode *top_transparency;\ -} -read_only global DR_Tex2DSampleKindNode dr_nil_tex2d_sample_kind = {0, R_Tex2DSampleKind_Nearest}; -read_only global DR_XForm2DNode dr_nil_xform2d = {0, {1, 0, 0, 0, 1, 0, 0, 0, 1}}; -read_only global DR_ClipNode dr_nil_clip = {0, {0}}; -read_only global DR_TransparencyNode dr_nil_transparency = {0, 0}; -#define DR_BucketStackInits(b) do{\ -(b)->top_tex2d_sample_kind = &dr_nil_tex2d_sample_kind;\ -(b)->top_xform2d = &dr_nil_xform2d;\ -(b)->top_clip = &dr_nil_clip;\ -(b)->top_transparency = &dr_nil_transparency;\ -}while(0) -#if 0 -internal R_Tex2DSampleKind dr_push_tex2d_sample_kind(R_Tex2DSampleKind v); -internal Mat3x3F32 dr_push_xform2d(Mat3x3F32 v); -internal Rng2F32 dr_push_clip(Rng2F32 v); -internal F32 dr_push_transparency(F32 v); -internal R_Tex2DSampleKind dr_pop_tex2d_sample_kind(void); -internal Mat3x3F32 dr_pop_xform2d(void); -internal Rng2F32 dr_pop_clip(void); -internal F32 dr_pop_transparency(void); -internal R_Tex2DSampleKind dr_top_tex2d_sample_kind(void); -internal Mat3x3F32 dr_top_xform2d(void); -internal Rng2F32 dr_top_clip(void); -internal F32 dr_top_transparency(void); -#endif -#if 0 -#define DR_Tex2DSampleKindScope(v) DeferLoop(dr_push_tex2d_sample_kind(v), dr_pop_tex2d_sample_kind()) -#define DR_XForm2DScope(v) DeferLoop(dr_push_xform2d(v), dr_pop_xform2d()) -#define DR_ClipScope(v) DeferLoop(dr_push_clip(v), dr_pop_clip()) -#define DR_TransparencyScope(v) DeferLoop(dr_push_transparency(v), dr_pop_transparency()) -#endif -#endif // DRAW_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef DRAW_META_H +#define DRAW_META_H + +typedef struct DR_Tex2DSampleKindNode DR_Tex2DSampleKindNode; struct DR_Tex2DSampleKindNode {DR_Tex2DSampleKindNode *next; R_Tex2DSampleKind v;}; +typedef struct DR_XForm2DNode DR_XForm2DNode; struct DR_XForm2DNode {DR_XForm2DNode *next; Mat3x3F32 v;}; +typedef struct DR_ClipNode DR_ClipNode; struct DR_ClipNode {DR_ClipNode *next; Rng2F32 v;}; +typedef struct DR_TransparencyNode DR_TransparencyNode; struct DR_TransparencyNode {DR_TransparencyNode *next; F32 v;}; +#define DR_BucketStackDecls struct{\ +DR_Tex2DSampleKindNode *top_tex2d_sample_kind;\ +DR_XForm2DNode *top_xform2d;\ +DR_ClipNode *top_clip;\ +DR_TransparencyNode *top_transparency;\ +} +read_only global DR_Tex2DSampleKindNode dr_nil_tex2d_sample_kind = {0, R_Tex2DSampleKind_Nearest}; +read_only global DR_XForm2DNode dr_nil_xform2d = {0, {1, 0, 0, 0, 1, 0, 0, 0, 1}}; +read_only global DR_ClipNode dr_nil_clip = {0, {0}}; +read_only global DR_TransparencyNode dr_nil_transparency = {0, 0}; +#define DR_BucketStackInits(b) do{\ +(b)->top_tex2d_sample_kind = &dr_nil_tex2d_sample_kind;\ +(b)->top_xform2d = &dr_nil_xform2d;\ +(b)->top_clip = &dr_nil_clip;\ +(b)->top_transparency = &dr_nil_transparency;\ +}while(0) +#if 0 +internal R_Tex2DSampleKind dr_push_tex2d_sample_kind(R_Tex2DSampleKind v); +internal Mat3x3F32 dr_push_xform2d(Mat3x3F32 v); +internal Rng2F32 dr_push_clip(Rng2F32 v); +internal F32 dr_push_transparency(F32 v); +internal R_Tex2DSampleKind dr_pop_tex2d_sample_kind(void); +internal Mat3x3F32 dr_pop_xform2d(void); +internal Rng2F32 dr_pop_clip(void); +internal F32 dr_pop_transparency(void); +internal R_Tex2DSampleKind dr_top_tex2d_sample_kind(void); +internal Mat3x3F32 dr_top_xform2d(void); +internal Rng2F32 dr_top_clip(void); +internal F32 dr_top_transparency(void); +#endif +#if 0 +#define DR_Tex2DSampleKindScope(v) DeferLoop(dr_push_tex2d_sample_kind(v), dr_pop_tex2d_sample_kind()) +#define DR_XForm2DScope(v) DeferLoop(dr_push_xform2d(v), dr_pop_xform2d()) +#define DR_ClipScope(v) DeferLoop(dr_push_clip(v), dr_pop_clip()) +#define DR_TransparencyScope(v) DeferLoop(dr_push_transparency(v), dr_pop_transparency()) +#endif +#endif // DRAW_META_H diff --git a/src/eval/generated/eval.meta.c b/src/eval/generated/eval.meta.c index caab4db9..e3af8aa3 100644 --- a/src/eval/generated/eval.meta.c +++ b/src/eval/generated/eval.meta.c @@ -1,272 +1,272 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -C_LINKAGE_BEGIN -String8 e_token_kind_strings[7] = -{ -str8_lit_comp("Null"), -str8_lit_comp("Identifier"), -str8_lit_comp("Numeric"), -str8_lit_comp("StringLiteral"), -str8_lit_comp("CharLiteral"), -str8_lit_comp("Symbol"), -str8_lit_comp("Comment"), -}; - -String8 e_type_kind_basic_string_table[61] = -{ -str8_lit_comp(""), -str8_lit_comp("void"), -str8_lit_comp("HANDLE"), -str8_lit_comp("HRESULT"), -str8_lit_comp("char8"), -str8_lit_comp("char16"), -str8_lit_comp("char32"), -str8_lit_comp("uchar8"), -str8_lit_comp("uchar16"), -str8_lit_comp("uchar32"), -str8_lit_comp("uint8"), -str8_lit_comp("uint16"), -str8_lit_comp("uint32"), -str8_lit_comp("uint64"), -str8_lit_comp("uint128"), -str8_lit_comp("uint256"), -str8_lit_comp("uint512"), -str8_lit_comp("int8"), -str8_lit_comp("int16"), -str8_lit_comp("int32"), -str8_lit_comp("int64"), -str8_lit_comp("int128"), -str8_lit_comp("int256"), -str8_lit_comp("int512"), -str8_lit_comp("bool"), -str8_lit_comp("float16"), -str8_lit_comp("float32"), -str8_lit_comp("float32PP"), -str8_lit_comp("float48"), -str8_lit_comp("float64"), -str8_lit_comp("float80"), -str8_lit_comp("float128"), -str8_lit_comp("complex_float32"), -str8_lit_comp("complex_float64"), -str8_lit_comp("complex_float80"), -str8_lit_comp("complex_float128"), -str8_lit_comp("modifier"), -str8_lit_comp("ptr"), -str8_lit_comp("lref"), -str8_lit_comp("rref"), -str8_lit_comp("array"), -str8_lit_comp("function"), -str8_lit_comp("method"), -str8_lit_comp("member_ptr"), -str8_lit_comp("struct"), -str8_lit_comp("class"), -str8_lit_comp("union"), -str8_lit_comp("enum"), -str8_lit_comp("typedef"), -str8_lit_comp("struct"), -str8_lit_comp("union"), -str8_lit_comp("class"), -str8_lit_comp("enum"), -str8_lit_comp("bitfield"), -str8_lit_comp("variadic"), -str8_lit_comp("set"), -str8_lit_comp("lens"), -str8_lit_comp("lens_spec"), -str8_lit_comp("meta_expr"), -str8_lit_comp("meta_display_name"), -str8_lit_comp("meta_description"), -}; - -U8 e_type_kind_basic_byte_size_table[61] = -{ -0, -0, -0xFF, -4, -1, -2, -4, -1, -2, -4, -1, -2, -4, -8, -16, -32, -64, -1, -2, -4, -8, -16, -32, -64, -1, -2, -4, -4, -6, -8, -10, -16, -8, -16, -20, -32, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -}; - -String8 e_expr_kind_strings[50] = -{ -str8_lit_comp("Nil"), -str8_lit_comp("Ref"), -str8_lit_comp("ArrayIndex"), -str8_lit_comp("MemberAccess"), -str8_lit_comp("Deref"), -str8_lit_comp("Address"), -str8_lit_comp("Cast"), -str8_lit_comp("Sizeof"), -str8_lit_comp("Typeof"), -str8_lit_comp("Symbolof"), -str8_lit_comp("ByteSwap"), -str8_lit_comp("Pos"), -str8_lit_comp("Neg"), -str8_lit_comp("LogNot"), -str8_lit_comp("BitNot"), -str8_lit_comp("Mul"), -str8_lit_comp("Div"), -str8_lit_comp("Mod"), -str8_lit_comp("Add"), -str8_lit_comp("Sub"), -str8_lit_comp("LShift"), -str8_lit_comp("RShift"), -str8_lit_comp("Less"), -str8_lit_comp("LsEq"), -str8_lit_comp("Grtr"), -str8_lit_comp("GrEq"), -str8_lit_comp("EqEq"), -str8_lit_comp("NtEq"), -str8_lit_comp("BitAnd"), -str8_lit_comp("BitXor"), -str8_lit_comp("BitOr"), -str8_lit_comp("LogAnd"), -str8_lit_comp("LogOr"), -str8_lit_comp("Ternary"), -str8_lit_comp("Call"), -str8_lit_comp("LeafBytecode"), -str8_lit_comp("LeafStringLiteral"), -str8_lit_comp("LeafU64"), -str8_lit_comp("LeafF64"), -str8_lit_comp("LeafF32"), -str8_lit_comp("LeafIdentifier"), -str8_lit_comp("LeafOffset"), -str8_lit_comp("LeafValue"), -str8_lit_comp("LeafFilePath"), -str8_lit_comp("TypeIdent"), -str8_lit_comp("Ptr"), -str8_lit_comp("Array"), -str8_lit_comp("Func"), -str8_lit_comp("Unsigned"), -str8_lit_comp("Define"), -}; - -E_OpInfo e_expr_kind_op_info_table[50] = -{ -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp("["), str8_lit_comp("]"), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp("."), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("*"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("&"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 1, str8_lit_comp("cast("), str8_lit_comp(")"), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 1, str8_lit_comp("sizeof "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 1, str8_lit_comp("typeof "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 1, str8_lit_comp("symbolof "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 1, str8_lit_comp("bswap "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("+"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("-"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("!"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("~"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 3, str8_lit_comp(""), str8_lit_comp(" * "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 3, str8_lit_comp(""), str8_lit_comp(" / "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 3, str8_lit_comp(""), str8_lit_comp(" % "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 4, str8_lit_comp(""), str8_lit_comp(" + "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 4, str8_lit_comp(""), str8_lit_comp(" - "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 5, str8_lit_comp(""), str8_lit_comp(" << "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 5, str8_lit_comp(""), str8_lit_comp(" >> "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 6, str8_lit_comp(""), str8_lit_comp(" < "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 6, str8_lit_comp(""), str8_lit_comp(" <= "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 6, str8_lit_comp(""), str8_lit_comp(" > "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 6, str8_lit_comp(""), str8_lit_comp(" >= "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 7, str8_lit_comp(""), str8_lit_comp(" == "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 7, str8_lit_comp(""), str8_lit_comp(" != "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 8, str8_lit_comp(""), str8_lit_comp(" & "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 9, str8_lit_comp(""), str8_lit_comp(" ^ "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 10, str8_lit_comp(""), str8_lit_comp(" | "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 11, str8_lit_comp(""), str8_lit_comp(" && "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 12, str8_lit_comp(""), str8_lit_comp(" || "), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(" ? "), str8_lit_comp(""), str8_lit_comp(" : ") }, -{ E_OpKind_Null, 15, str8_lit_comp(""), str8_lit_comp("("), str8_lit_comp(")"), str8_lit_comp(", ") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Null, 0, str8_lit_comp("unsigned "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, -{ E_OpKind_Binary, 13, str8_lit_comp(""), str8_lit_comp(" = "), str8_lit_comp(""), str8_lit_comp("") }, -}; - -String8 e_interpretation_code_display_strings[11] = -{ -str8_lit_comp(""), -str8_lit_comp("Cannot divide by zero."), -str8_lit_comp("Invalid operation."), -str8_lit_comp("Invalid operation types."), -str8_lit_comp("Failed memory read."), -str8_lit_comp("Failed register read."), -str8_lit_comp("Invalid frame base address."), -str8_lit_comp("Invalid module base address."), -str8_lit_comp("Invalid thread-local storage base address."), -str8_lit_comp("Insufficient evaluation machine stack space."), -str8_lit_comp("Malformed bytecode."), -}; - -C_LINKAGE_END - +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +C_LINKAGE_BEGIN +String8 e_token_kind_strings[7] = +{ +str8_lit_comp("Null"), +str8_lit_comp("Identifier"), +str8_lit_comp("Numeric"), +str8_lit_comp("StringLiteral"), +str8_lit_comp("CharLiteral"), +str8_lit_comp("Symbol"), +str8_lit_comp("Comment"), +}; + +String8 e_type_kind_basic_string_table[61] = +{ +str8_lit_comp(""), +str8_lit_comp("void"), +str8_lit_comp("HANDLE"), +str8_lit_comp("HRESULT"), +str8_lit_comp("char8"), +str8_lit_comp("char16"), +str8_lit_comp("char32"), +str8_lit_comp("uchar8"), +str8_lit_comp("uchar16"), +str8_lit_comp("uchar32"), +str8_lit_comp("uint8"), +str8_lit_comp("uint16"), +str8_lit_comp("uint32"), +str8_lit_comp("uint64"), +str8_lit_comp("uint128"), +str8_lit_comp("uint256"), +str8_lit_comp("uint512"), +str8_lit_comp("int8"), +str8_lit_comp("int16"), +str8_lit_comp("int32"), +str8_lit_comp("int64"), +str8_lit_comp("int128"), +str8_lit_comp("int256"), +str8_lit_comp("int512"), +str8_lit_comp("bool"), +str8_lit_comp("float16"), +str8_lit_comp("float32"), +str8_lit_comp("float32PP"), +str8_lit_comp("float48"), +str8_lit_comp("float64"), +str8_lit_comp("float80"), +str8_lit_comp("float128"), +str8_lit_comp("complex_float32"), +str8_lit_comp("complex_float64"), +str8_lit_comp("complex_float80"), +str8_lit_comp("complex_float128"), +str8_lit_comp("modifier"), +str8_lit_comp("ptr"), +str8_lit_comp("lref"), +str8_lit_comp("rref"), +str8_lit_comp("array"), +str8_lit_comp("function"), +str8_lit_comp("method"), +str8_lit_comp("member_ptr"), +str8_lit_comp("struct"), +str8_lit_comp("class"), +str8_lit_comp("union"), +str8_lit_comp("enum"), +str8_lit_comp("typedef"), +str8_lit_comp("struct"), +str8_lit_comp("union"), +str8_lit_comp("class"), +str8_lit_comp("enum"), +str8_lit_comp("bitfield"), +str8_lit_comp("variadic"), +str8_lit_comp("set"), +str8_lit_comp("lens"), +str8_lit_comp("lens_spec"), +str8_lit_comp("meta_expr"), +str8_lit_comp("meta_display_name"), +str8_lit_comp("meta_description"), +}; + +U8 e_type_kind_basic_byte_size_table[61] = +{ +0, +0, +0xFF, +4, +1, +2, +4, +1, +2, +4, +1, +2, +4, +8, +16, +32, +64, +1, +2, +4, +8, +16, +32, +64, +1, +2, +4, +4, +6, +8, +10, +16, +8, +16, +20, +32, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +}; + +String8 e_expr_kind_strings[50] = +{ +str8_lit_comp("Nil"), +str8_lit_comp("Ref"), +str8_lit_comp("ArrayIndex"), +str8_lit_comp("MemberAccess"), +str8_lit_comp("Deref"), +str8_lit_comp("Address"), +str8_lit_comp("Cast"), +str8_lit_comp("Sizeof"), +str8_lit_comp("Typeof"), +str8_lit_comp("Symbolof"), +str8_lit_comp("ByteSwap"), +str8_lit_comp("Pos"), +str8_lit_comp("Neg"), +str8_lit_comp("LogNot"), +str8_lit_comp("BitNot"), +str8_lit_comp("Mul"), +str8_lit_comp("Div"), +str8_lit_comp("Mod"), +str8_lit_comp("Add"), +str8_lit_comp("Sub"), +str8_lit_comp("LShift"), +str8_lit_comp("RShift"), +str8_lit_comp("Less"), +str8_lit_comp("LsEq"), +str8_lit_comp("Grtr"), +str8_lit_comp("GrEq"), +str8_lit_comp("EqEq"), +str8_lit_comp("NtEq"), +str8_lit_comp("BitAnd"), +str8_lit_comp("BitXor"), +str8_lit_comp("BitOr"), +str8_lit_comp("LogAnd"), +str8_lit_comp("LogOr"), +str8_lit_comp("Ternary"), +str8_lit_comp("Call"), +str8_lit_comp("LeafBytecode"), +str8_lit_comp("LeafStringLiteral"), +str8_lit_comp("LeafU64"), +str8_lit_comp("LeafF64"), +str8_lit_comp("LeafF32"), +str8_lit_comp("LeafIdentifier"), +str8_lit_comp("LeafOffset"), +str8_lit_comp("LeafValue"), +str8_lit_comp("LeafFilePath"), +str8_lit_comp("TypeIdent"), +str8_lit_comp("Ptr"), +str8_lit_comp("Array"), +str8_lit_comp("Func"), +str8_lit_comp("Unsigned"), +str8_lit_comp("Define"), +}; + +E_OpInfo e_expr_kind_op_info_table[50] = +{ +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp("["), str8_lit_comp("]"), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp("."), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("*"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("&"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 1, str8_lit_comp("cast("), str8_lit_comp(")"), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 1, str8_lit_comp("sizeof "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 1, str8_lit_comp("typeof "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 1, str8_lit_comp("symbolof "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 1, str8_lit_comp("bswap "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("+"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("-"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("!"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_UnaryPrefix, 2, str8_lit_comp("~"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 3, str8_lit_comp(""), str8_lit_comp(" * "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 3, str8_lit_comp(""), str8_lit_comp(" / "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 3, str8_lit_comp(""), str8_lit_comp(" % "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 4, str8_lit_comp(""), str8_lit_comp(" + "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 4, str8_lit_comp(""), str8_lit_comp(" - "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 5, str8_lit_comp(""), str8_lit_comp(" << "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 5, str8_lit_comp(""), str8_lit_comp(" >> "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 6, str8_lit_comp(""), str8_lit_comp(" < "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 6, str8_lit_comp(""), str8_lit_comp(" <= "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 6, str8_lit_comp(""), str8_lit_comp(" > "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 6, str8_lit_comp(""), str8_lit_comp(" >= "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 7, str8_lit_comp(""), str8_lit_comp(" == "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 7, str8_lit_comp(""), str8_lit_comp(" != "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 8, str8_lit_comp(""), str8_lit_comp(" & "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 9, str8_lit_comp(""), str8_lit_comp(" ^ "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 10, str8_lit_comp(""), str8_lit_comp(" | "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 11, str8_lit_comp(""), str8_lit_comp(" && "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 12, str8_lit_comp(""), str8_lit_comp(" || "), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(" ? "), str8_lit_comp(""), str8_lit_comp(" : ") }, +{ E_OpKind_Null, 15, str8_lit_comp(""), str8_lit_comp("("), str8_lit_comp(")"), str8_lit_comp(", ") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Null, 0, str8_lit_comp("unsigned "), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("") }, +{ E_OpKind_Binary, 13, str8_lit_comp(""), str8_lit_comp(" = "), str8_lit_comp(""), str8_lit_comp("") }, +}; + +String8 e_interpretation_code_display_strings[11] = +{ +str8_lit_comp(""), +str8_lit_comp("Cannot divide by zero."), +str8_lit_comp("Invalid operation."), +str8_lit_comp("Invalid operation types."), +str8_lit_comp("Failed memory read."), +str8_lit_comp("Failed register read."), +str8_lit_comp("Invalid frame base address."), +str8_lit_comp("Invalid module base address."), +str8_lit_comp("Invalid thread-local storage base address."), +str8_lit_comp("Insufficient evaluation machine stack space."), +str8_lit_comp("Malformed bytecode."), +}; + +C_LINKAGE_END + diff --git a/src/eval/generated/eval.meta.h b/src/eval/generated/eval.meta.h index 65847eb1..03a7d5b7 100644 --- a/src/eval/generated/eval.meta.h +++ b/src/eval/generated/eval.meta.h @@ -1,181 +1,181 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef EVAL_META_H -#define EVAL_META_H - -typedef enum E_TokenKind -{ -E_TokenKind_Null, -E_TokenKind_Identifier, -E_TokenKind_Numeric, -E_TokenKind_StringLiteral, -E_TokenKind_CharLiteral, -E_TokenKind_Symbol, -E_TokenKind_Comment, -E_TokenKind_COUNT, -} E_TokenKind; - -typedef enum E_TypeKind -{ -E_TypeKind_Null, -E_TypeKind_Void, -E_TypeKind_Handle, -E_TypeKind_HResult, -E_TypeKind_Char8, -E_TypeKind_Char16, -E_TypeKind_Char32, -E_TypeKind_UChar8, -E_TypeKind_UChar16, -E_TypeKind_UChar32, -E_TypeKind_U8, -E_TypeKind_U16, -E_TypeKind_U32, -E_TypeKind_U64, -E_TypeKind_U128, -E_TypeKind_U256, -E_TypeKind_U512, -E_TypeKind_S8, -E_TypeKind_S16, -E_TypeKind_S32, -E_TypeKind_S64, -E_TypeKind_S128, -E_TypeKind_S256, -E_TypeKind_S512, -E_TypeKind_Bool, -E_TypeKind_F16, -E_TypeKind_F32, -E_TypeKind_F32PP, -E_TypeKind_F48, -E_TypeKind_F64, -E_TypeKind_F80, -E_TypeKind_F128, -E_TypeKind_ComplexF32, -E_TypeKind_ComplexF64, -E_TypeKind_ComplexF80, -E_TypeKind_ComplexF128, -E_TypeKind_Modifier, -E_TypeKind_Ptr, -E_TypeKind_LRef, -E_TypeKind_RRef, -E_TypeKind_Array, -E_TypeKind_Function, -E_TypeKind_Method, -E_TypeKind_MemberPtr, -E_TypeKind_Struct, -E_TypeKind_Class, -E_TypeKind_Union, -E_TypeKind_Enum, -E_TypeKind_Alias, -E_TypeKind_IncompleteStruct, -E_TypeKind_IncompleteUnion, -E_TypeKind_IncompleteClass, -E_TypeKind_IncompleteEnum, -E_TypeKind_Bitfield, -E_TypeKind_Variadic, -E_TypeKind_Set, -E_TypeKind_Lens, -E_TypeKind_LensSpec, -E_TypeKind_MetaExpr, -E_TypeKind_MetaDisplayName, -E_TypeKind_MetaDescription, -E_TypeKind_COUNT, -E_TypeKind_FirstBasic = E_TypeKind_Void, -E_TypeKind_LastBasic = E_TypeKind_ComplexF128, -E_TypeKind_FirstInteger = E_TypeKind_Char8, -E_TypeKind_LastInteger = E_TypeKind_S512, -E_TypeKind_FirstSigned1 = E_TypeKind_Char8, -E_TypeKind_LastSigned1 = E_TypeKind_Char32, -E_TypeKind_FirstSigned2 = E_TypeKind_S8, -E_TypeKind_LastSigned2 = E_TypeKind_S512, -E_TypeKind_FirstIncomplete = E_TypeKind_IncompleteStruct, -E_TypeKind_LastIncomplete = E_TypeKind_IncompleteEnum, -E_TypeKind_FirstMeta = E_TypeKind_MetaExpr, -E_TypeKind_LastMeta = E_TypeKind_MetaDescription, -} E_TypeKind; - -typedef U32 E_ExprKind; -typedef enum E_ExprKindEnum -{ -E_ExprKind_Nil, -E_ExprKind_Ref, -E_ExprKind_ArrayIndex, -E_ExprKind_MemberAccess, -E_ExprKind_Deref, -E_ExprKind_Address, -E_ExprKind_Cast, -E_ExprKind_Sizeof, -E_ExprKind_Typeof, -E_ExprKind_Symbolof, -E_ExprKind_ByteSwap, -E_ExprKind_Pos, -E_ExprKind_Neg, -E_ExprKind_LogNot, -E_ExprKind_BitNot, -E_ExprKind_Mul, -E_ExprKind_Div, -E_ExprKind_Mod, -E_ExprKind_Add, -E_ExprKind_Sub, -E_ExprKind_LShift, -E_ExprKind_RShift, -E_ExprKind_Less, -E_ExprKind_LsEq, -E_ExprKind_Grtr, -E_ExprKind_GrEq, -E_ExprKind_EqEq, -E_ExprKind_NtEq, -E_ExprKind_BitAnd, -E_ExprKind_BitXor, -E_ExprKind_BitOr, -E_ExprKind_LogAnd, -E_ExprKind_LogOr, -E_ExprKind_Ternary, -E_ExprKind_Call, -E_ExprKind_LeafBytecode, -E_ExprKind_LeafStringLiteral, -E_ExprKind_LeafU64, -E_ExprKind_LeafF64, -E_ExprKind_LeafF32, -E_ExprKind_LeafIdentifier, -E_ExprKind_LeafOffset, -E_ExprKind_LeafValue, -E_ExprKind_LeafFilePath, -E_ExprKind_TypeIdent, -E_ExprKind_Ptr, -E_ExprKind_Array, -E_ExprKind_Func, -E_ExprKind_Unsigned, -E_ExprKind_Define, -E_ExprKind_COUNT, -} E_ExprKindEnum; - -typedef enum E_InterpretationCode -{ -E_InterpretationCode_Good, -E_InterpretationCode_DivideByZero, -E_InterpretationCode_BadOp, -E_InterpretationCode_BadOpTypes, -E_InterpretationCode_BadMemRead, -E_InterpretationCode_BadRegRead, -E_InterpretationCode_BadFrameBase, -E_InterpretationCode_BadModuleBase, -E_InterpretationCode_BadTLSBase, -E_InterpretationCode_InsufficientStackSpace, -E_InterpretationCode_MalformedBytecode, -E_InterpretationCode_COUNT, -} E_InterpretationCode; - -C_LINKAGE_BEGIN -extern String8 e_token_kind_strings[7]; -extern String8 e_type_kind_basic_string_table[61]; -extern U8 e_type_kind_basic_byte_size_table[61]; -extern String8 e_expr_kind_strings[50]; -extern E_OpInfo e_expr_kind_op_info_table[50]; -extern String8 e_interpretation_code_display_strings[11]; - -C_LINKAGE_END - -#endif // EVAL_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef EVAL_META_H +#define EVAL_META_H + +typedef enum E_TokenKind +{ +E_TokenKind_Null, +E_TokenKind_Identifier, +E_TokenKind_Numeric, +E_TokenKind_StringLiteral, +E_TokenKind_CharLiteral, +E_TokenKind_Symbol, +E_TokenKind_Comment, +E_TokenKind_COUNT, +} E_TokenKind; + +typedef enum E_TypeKind +{ +E_TypeKind_Null, +E_TypeKind_Void, +E_TypeKind_Handle, +E_TypeKind_HResult, +E_TypeKind_Char8, +E_TypeKind_Char16, +E_TypeKind_Char32, +E_TypeKind_UChar8, +E_TypeKind_UChar16, +E_TypeKind_UChar32, +E_TypeKind_U8, +E_TypeKind_U16, +E_TypeKind_U32, +E_TypeKind_U64, +E_TypeKind_U128, +E_TypeKind_U256, +E_TypeKind_U512, +E_TypeKind_S8, +E_TypeKind_S16, +E_TypeKind_S32, +E_TypeKind_S64, +E_TypeKind_S128, +E_TypeKind_S256, +E_TypeKind_S512, +E_TypeKind_Bool, +E_TypeKind_F16, +E_TypeKind_F32, +E_TypeKind_F32PP, +E_TypeKind_F48, +E_TypeKind_F64, +E_TypeKind_F80, +E_TypeKind_F128, +E_TypeKind_ComplexF32, +E_TypeKind_ComplexF64, +E_TypeKind_ComplexF80, +E_TypeKind_ComplexF128, +E_TypeKind_Modifier, +E_TypeKind_Ptr, +E_TypeKind_LRef, +E_TypeKind_RRef, +E_TypeKind_Array, +E_TypeKind_Function, +E_TypeKind_Method, +E_TypeKind_MemberPtr, +E_TypeKind_Struct, +E_TypeKind_Class, +E_TypeKind_Union, +E_TypeKind_Enum, +E_TypeKind_Alias, +E_TypeKind_IncompleteStruct, +E_TypeKind_IncompleteUnion, +E_TypeKind_IncompleteClass, +E_TypeKind_IncompleteEnum, +E_TypeKind_Bitfield, +E_TypeKind_Variadic, +E_TypeKind_Set, +E_TypeKind_Lens, +E_TypeKind_LensSpec, +E_TypeKind_MetaExpr, +E_TypeKind_MetaDisplayName, +E_TypeKind_MetaDescription, +E_TypeKind_COUNT, +E_TypeKind_FirstBasic = E_TypeKind_Void, +E_TypeKind_LastBasic = E_TypeKind_ComplexF128, +E_TypeKind_FirstInteger = E_TypeKind_Char8, +E_TypeKind_LastInteger = E_TypeKind_S512, +E_TypeKind_FirstSigned1 = E_TypeKind_Char8, +E_TypeKind_LastSigned1 = E_TypeKind_Char32, +E_TypeKind_FirstSigned2 = E_TypeKind_S8, +E_TypeKind_LastSigned2 = E_TypeKind_S512, +E_TypeKind_FirstIncomplete = E_TypeKind_IncompleteStruct, +E_TypeKind_LastIncomplete = E_TypeKind_IncompleteEnum, +E_TypeKind_FirstMeta = E_TypeKind_MetaExpr, +E_TypeKind_LastMeta = E_TypeKind_MetaDescription, +} E_TypeKind; + +typedef U32 E_ExprKind; +typedef enum E_ExprKindEnum +{ +E_ExprKind_Nil, +E_ExprKind_Ref, +E_ExprKind_ArrayIndex, +E_ExprKind_MemberAccess, +E_ExprKind_Deref, +E_ExprKind_Address, +E_ExprKind_Cast, +E_ExprKind_Sizeof, +E_ExprKind_Typeof, +E_ExprKind_Symbolof, +E_ExprKind_ByteSwap, +E_ExprKind_Pos, +E_ExprKind_Neg, +E_ExprKind_LogNot, +E_ExprKind_BitNot, +E_ExprKind_Mul, +E_ExprKind_Div, +E_ExprKind_Mod, +E_ExprKind_Add, +E_ExprKind_Sub, +E_ExprKind_LShift, +E_ExprKind_RShift, +E_ExprKind_Less, +E_ExprKind_LsEq, +E_ExprKind_Grtr, +E_ExprKind_GrEq, +E_ExprKind_EqEq, +E_ExprKind_NtEq, +E_ExprKind_BitAnd, +E_ExprKind_BitXor, +E_ExprKind_BitOr, +E_ExprKind_LogAnd, +E_ExprKind_LogOr, +E_ExprKind_Ternary, +E_ExprKind_Call, +E_ExprKind_LeafBytecode, +E_ExprKind_LeafStringLiteral, +E_ExprKind_LeafU64, +E_ExprKind_LeafF64, +E_ExprKind_LeafF32, +E_ExprKind_LeafIdentifier, +E_ExprKind_LeafOffset, +E_ExprKind_LeafValue, +E_ExprKind_LeafFilePath, +E_ExprKind_TypeIdent, +E_ExprKind_Ptr, +E_ExprKind_Array, +E_ExprKind_Func, +E_ExprKind_Unsigned, +E_ExprKind_Define, +E_ExprKind_COUNT, +} E_ExprKindEnum; + +typedef enum E_InterpretationCode +{ +E_InterpretationCode_Good, +E_InterpretationCode_DivideByZero, +E_InterpretationCode_BadOp, +E_InterpretationCode_BadOpTypes, +E_InterpretationCode_BadMemRead, +E_InterpretationCode_BadRegRead, +E_InterpretationCode_BadFrameBase, +E_InterpretationCode_BadModuleBase, +E_InterpretationCode_BadTLSBase, +E_InterpretationCode_InsufficientStackSpace, +E_InterpretationCode_MalformedBytecode, +E_InterpretationCode_COUNT, +} E_InterpretationCode; + +C_LINKAGE_BEGIN +extern String8 e_token_kind_strings[7]; +extern String8 e_type_kind_basic_string_table[61]; +extern U8 e_type_kind_basic_byte_size_table[61]; +extern String8 e_expr_kind_strings[50]; +extern E_OpInfo e_expr_kind_op_info_table[50]; +extern String8 e_interpretation_code_display_strings[11]; + +C_LINKAGE_END + +#endif // EVAL_META_H diff --git a/src/lib_rdi/rdi.c b/src/lib_rdi/rdi.c index dcbb9c1d..c87679b5 100644 --- a/src/lib_rdi/rdi.c +++ b/src/lib_rdi/rdi.c @@ -1,355 +1,355 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//////////////////////////////////////////////////////////////// -//~ (R)AD (D)ebug (I)nfo Format Library -// -// Defines standard RDI debug information format types and -// functions. - -#ifndef RDI_C -#define RDI_C - -RDI_U16 rdi_section_element_size_table[44] = -{ -sizeof(RDI_U8), -sizeof(RDI_TopLevelInfo), -sizeof(RDI_U8), -sizeof(RDI_U32), -sizeof(RDI_U32), -sizeof(RDI_BinarySection), -sizeof(RDI_FilePathNode), -sizeof(RDI_SourceFile), -sizeof(RDI_LineTable), -sizeof(RDI_U64), -sizeof(RDI_Line), -sizeof(RDI_Column), -sizeof(RDI_SourceLineMap), -sizeof(RDI_U32), -sizeof(RDI_U32), -sizeof(RDI_U64), -sizeof(RDI_Unit), -sizeof(RDI_VMapEntry), -sizeof(RDI_Namespace), -sizeof(RDI_TypeNode), -sizeof(RDI_UDT), -sizeof(RDI_Member), -sizeof(RDI_EnumMember), -sizeof(RDI_Scope), -sizeof(RDI_U64), -sizeof(RDI_VMapEntry), -sizeof(RDI_InlineSite), -sizeof(RDI_Symbol), -sizeof(RDI_VMapEntry), -sizeof(RDI_Symbol), -sizeof(RDI_Symbol), -sizeof(RDI_Symbol), -sizeof(RDI_Symbol), -sizeof(RDI_U8), -sizeof(RDI_U8), -sizeof(RDI_LocationSetElement), -sizeof(RDI_MD5), -sizeof(RDI_SHA1), -sizeof(RDI_SHA256), -sizeof(RDI_U64), -sizeof(RDI_NameMap), -sizeof(RDI_NameMapBucket), -sizeof(RDI_NameMapNode), -sizeof(RDI_U8), -}; - -RDI_U16 rdi_eval_op_ctrlbits_table[54] = -{ -RDI_EVAL_CTRLBITS(0, 0, 0), -RDI_EVAL_CTRLBITS(0, 0, 0), -RDI_EVAL_CTRLBITS(2, 1, 0), -RDI_EVAL_CTRLBITS(2, 0, 0), -RDI_EVAL_CTRLBITS(1, 1, 1), -RDI_EVAL_CTRLBITS(4, 0, 1), -RDI_EVAL_CTRLBITS(0, 1, 1), -RDI_EVAL_CTRLBITS(8, 0, 1), -RDI_EVAL_CTRLBITS(4, 0, 1), -RDI_EVAL_CTRLBITS(4, 0, 1), -RDI_EVAL_CTRLBITS(0, 0, 0), -RDI_EVAL_CTRLBITS(0, 0, 0), -RDI_EVAL_CTRLBITS(1, 0, 1), -RDI_EVAL_CTRLBITS(2, 0, 1), -RDI_EVAL_CTRLBITS(4, 0, 1), -RDI_EVAL_CTRLBITS(8, 0, 1), -RDI_EVAL_CTRLBITS(16, 0, 1), -RDI_EVAL_CTRLBITS(1, 0, 1), -RDI_EVAL_CTRLBITS(1, 1, 1), -RDI_EVAL_CTRLBITS(1, 1, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(2, 2, 1), -RDI_EVAL_CTRLBITS(2, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 1, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 1, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 1, 1), -RDI_EVAL_CTRLBITS(1, 1, 1), -RDI_EVAL_CTRLBITS(2, 1, 1), -RDI_EVAL_CTRLBITS(1, 0, 1), -RDI_EVAL_CTRLBITS(0, 1, 0), -RDI_EVAL_CTRLBITS(1, 0, 0), -RDI_EVAL_CTRLBITS(1, 2, 1), -RDI_EVAL_CTRLBITS(1, 1, 1), -RDI_EVAL_CTRLBITS(4, 0, 0), -RDI_EVAL_CTRLBITS(4, 0, 0), -RDI_EVAL_CTRLBITS(8, 0, 0), -RDI_EVAL_CTRLBITS(0, 2, 2), -RDI_EVAL_CTRLBITS(0, 0, 1), -RDI_EVAL_CTRLBITS(0, 0, 0), -}; - -struct {RDI_EvalConversionKind dst_typegroups[RDI_EvalTypeGroup_COUNT];} rdi_eval_typegroup_conversion_kind_matrix[8] = -{ -{{RDI_EvalConversionKind_OtherToOther, RDI_EvalConversionKind_FromOther, RDI_EvalConversionKind_FromOther, RDI_EvalConversionKind_FromOther, RDI_EvalConversionKind_FromOther}}, -{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, -{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, -{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Legal}}, -{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Noop}}, -{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, -{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, -{{RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop}}, -}; - -struct {RDI_U8 *str; RDI_U64 size;} rdi_eval_conversion_kind_message_string_table[6] = -{ -{(RDI_U8 *)"", sizeof("")}, -{(RDI_U8 *)"", sizeof("")}, -{(RDI_U8 *)"Cannot convert between these types.", sizeof("Cannot convert between these types.")}, -{(RDI_U8 *)"Cannot convert to this type.", sizeof("Cannot convert to this type.")}, -{(RDI_U8 *)"Cannot convert this type.", sizeof("Cannot convert this type.")}, -{(RDI_U8 *)"", sizeof("")}, -}; - -RDI_PROC RDI_U64 -rdi_hash(RDI_U8 *ptr, RDI_U64 size) -{ - RDI_U64 result = 0; - if(size != 0) - { - result = 5381; - RDI_U8 *opl = ptr + size; - for(;ptr < opl; ptr += 1) - { - result = ((result << 5) + result) + *ptr; - } - } - return result; -} - -RDI_PROC RDI_U8 * -rdi_string_from_type_kind(RDI_TypeKind kind, RDI_U64 *size_out) -{ -RDI_U8 *result = 0; -*size_out = 0; -switch (kind) -{ -default:{}break; -case RDI_TypeKind_NULL: {result = (RDI_U8*)"NULL"; *size_out = sizeof("NULL")-1;}break; -case RDI_TypeKind_Void: {result = (RDI_U8*)"Void"; *size_out = sizeof("Void")-1;}break; -case RDI_TypeKind_Handle: {result = (RDI_U8*)"Handle"; *size_out = sizeof("Handle")-1;}break; -case RDI_TypeKind_HResult: {result = (RDI_U8*)"HResult"; *size_out = sizeof("HResult")-1;}break; -case RDI_TypeKind_Char8: {result = (RDI_U8*)"Char8"; *size_out = sizeof("Char8")-1;}break; -case RDI_TypeKind_Char16: {result = (RDI_U8*)"Char16"; *size_out = sizeof("Char16")-1;}break; -case RDI_TypeKind_Char32: {result = (RDI_U8*)"Char32"; *size_out = sizeof("Char32")-1;}break; -case RDI_TypeKind_UChar8: {result = (RDI_U8*)"UChar8"; *size_out = sizeof("UChar8")-1;}break; -case RDI_TypeKind_UChar16: {result = (RDI_U8*)"UChar16"; *size_out = sizeof("UChar16")-1;}break; -case RDI_TypeKind_UChar32: {result = (RDI_U8*)"UChar32"; *size_out = sizeof("UChar32")-1;}break; -case RDI_TypeKind_U8: {result = (RDI_U8*)"U8"; *size_out = sizeof("U8")-1;}break; -case RDI_TypeKind_U16: {result = (RDI_U8*)"U16"; *size_out = sizeof("U16")-1;}break; -case RDI_TypeKind_U32: {result = (RDI_U8*)"U32"; *size_out = sizeof("U32")-1;}break; -case RDI_TypeKind_U64: {result = (RDI_U8*)"U64"; *size_out = sizeof("U64")-1;}break; -case RDI_TypeKind_U128: {result = (RDI_U8*)"U128"; *size_out = sizeof("U128")-1;}break; -case RDI_TypeKind_U256: {result = (RDI_U8*)"U256"; *size_out = sizeof("U256")-1;}break; -case RDI_TypeKind_U512: {result = (RDI_U8*)"U512"; *size_out = sizeof("U512")-1;}break; -case RDI_TypeKind_S8: {result = (RDI_U8*)"S8"; *size_out = sizeof("S8")-1;}break; -case RDI_TypeKind_S16: {result = (RDI_U8*)"S16"; *size_out = sizeof("S16")-1;}break; -case RDI_TypeKind_S32: {result = (RDI_U8*)"S32"; *size_out = sizeof("S32")-1;}break; -case RDI_TypeKind_S64: {result = (RDI_U8*)"S64"; *size_out = sizeof("S64")-1;}break; -case RDI_TypeKind_S128: {result = (RDI_U8*)"S128"; *size_out = sizeof("S128")-1;}break; -case RDI_TypeKind_S256: {result = (RDI_U8*)"S256"; *size_out = sizeof("S256")-1;}break; -case RDI_TypeKind_S512: {result = (RDI_U8*)"S512"; *size_out = sizeof("S512")-1;}break; -case RDI_TypeKind_Bool: {result = (RDI_U8*)"Bool"; *size_out = sizeof("Bool")-1;}break; -case RDI_TypeKind_BF16: {result = (RDI_U8*)"BF16"; *size_out = sizeof("BF16")-1;}break; -case RDI_TypeKind_F16: {result = (RDI_U8*)"F16"; *size_out = sizeof("F16")-1;}break; -case RDI_TypeKind_F32: {result = (RDI_U8*)"F32"; *size_out = sizeof("F32")-1;}break; -case RDI_TypeKind_F32PP: {result = (RDI_U8*)"F32PP"; *size_out = sizeof("F32PP")-1;}break; -case RDI_TypeKind_F48: {result = (RDI_U8*)"F48"; *size_out = sizeof("F48")-1;}break; -case RDI_TypeKind_F64: {result = (RDI_U8*)"F64"; *size_out = sizeof("F64")-1;}break; -case RDI_TypeKind_F80: {result = (RDI_U8*)"F80"; *size_out = sizeof("F80")-1;}break; -case RDI_TypeKind_F96: {result = (RDI_U8*)"F96"; *size_out = sizeof("F96")-1;}break; -case RDI_TypeKind_F128: {result = (RDI_U8*)"F128"; *size_out = sizeof("F128")-1;}break; -case RDI_TypeKind_ComplexF32: {result = (RDI_U8*)"ComplexF32"; *size_out = sizeof("ComplexF32")-1;}break; -case RDI_TypeKind_ComplexF64: {result = (RDI_U8*)"ComplexF64"; *size_out = sizeof("ComplexF64")-1;}break; -case RDI_TypeKind_ComplexF80: {result = (RDI_U8*)"ComplexF80"; *size_out = sizeof("ComplexF80")-1;}break; -case RDI_TypeKind_ComplexF128: {result = (RDI_U8*)"ComplexF128"; *size_out = sizeof("ComplexF128")-1;}break; -case RDI_TypeKind_Decimal32: {result = (RDI_U8*)"Decimal32"; *size_out = sizeof("Decimal32")-1;}break; -case RDI_TypeKind_Decimal64: {result = (RDI_U8*)"Decimal64"; *size_out = sizeof("Decimal64")-1;}break; -case RDI_TypeKind_Decimal128: {result = (RDI_U8*)"Decimal128"; *size_out = sizeof("Decimal128")-1;}break; -case RDI_TypeKind_Variadic: {result = (RDI_U8*)"Variadic"; *size_out = sizeof("Variadic")-1;}break; -case RDI_TypeKind_Modifier: {result = (RDI_U8*)"Modifier"; *size_out = sizeof("Modifier")-1;}break; -case RDI_TypeKind_Ptr: {result = (RDI_U8*)"Ptr"; *size_out = sizeof("Ptr")-1;}break; -case RDI_TypeKind_LRef: {result = (RDI_U8*)"LRef"; *size_out = sizeof("LRef")-1;}break; -case RDI_TypeKind_RRef: {result = (RDI_U8*)"RRef"; *size_out = sizeof("RRef")-1;}break; -case RDI_TypeKind_Array: {result = (RDI_U8*)"Array"; *size_out = sizeof("Array")-1;}break; -case RDI_TypeKind_Function: {result = (RDI_U8*)"Function"; *size_out = sizeof("Function")-1;}break; -case RDI_TypeKind_Method: {result = (RDI_U8*)"Method"; *size_out = sizeof("Method")-1;}break; -case RDI_TypeKind_MemberPtr: {result = (RDI_U8*)"MemberPtr"; *size_out = sizeof("MemberPtr")-1;}break; -case RDI_TypeKind_Struct: {result = (RDI_U8*)"Struct"; *size_out = sizeof("Struct")-1;}break; -case RDI_TypeKind_Class: {result = (RDI_U8*)"Class"; *size_out = sizeof("Class")-1;}break; -case RDI_TypeKind_Union: {result = (RDI_U8*)"Union"; *size_out = sizeof("Union")-1;}break; -case RDI_TypeKind_Enum: {result = (RDI_U8*)"Enum"; *size_out = sizeof("Enum")-1;}break; -case RDI_TypeKind_Alias: {result = (RDI_U8*)"Alias"; *size_out = sizeof("Alias")-1;}break; -case RDI_TypeKind_IncompleteStruct: {result = (RDI_U8*)"IncompleteStruct"; *size_out = sizeof("IncompleteStruct")-1;}break; -case RDI_TypeKind_IncompleteUnion: {result = (RDI_U8*)"IncompleteUnion"; *size_out = sizeof("IncompleteUnion")-1;}break; -case RDI_TypeKind_IncompleteClass: {result = (RDI_U8*)"IncompleteClass"; *size_out = sizeof("IncompleteClass")-1;}break; -case RDI_TypeKind_IncompleteEnum: {result = (RDI_U8*)"IncompleteEnum"; *size_out = sizeof("IncompleteEnum")-1;}break; -case RDI_TypeKind_Bitfield: {result = (RDI_U8*)"Bitfield"; *size_out = sizeof("Bitfield")-1;}break; -case RDI_TypeKind_COUNT: {result = (RDI_U8*)"COUNT"; *size_out = sizeof("COUNT")-1;}break; -} -return result; -} - -RDI_PROC RDI_U32 -rdi_size_from_basic_type_kind(RDI_TypeKind kind) -{ -RDI_U32 result = 0; -switch(kind) -{ -default:{}break; -case RDI_TypeKind_Handle:{result = 0xFFFFFFFF;}break; -case RDI_TypeKind_HResult:{result = 4;}break; -case RDI_TypeKind_Char8:{result = 1;}break; -case RDI_TypeKind_Char16:{result = 2;}break; -case RDI_TypeKind_Char32:{result = 4;}break; -case RDI_TypeKind_UChar8:{result = 1;}break; -case RDI_TypeKind_UChar16:{result = 2;}break; -case RDI_TypeKind_UChar32:{result = 4;}break; -case RDI_TypeKind_U8:{result = 1;}break; -case RDI_TypeKind_U16:{result = 2;}break; -case RDI_TypeKind_U32:{result = 4;}break; -case RDI_TypeKind_U64:{result = 8;}break; -case RDI_TypeKind_U128:{result = 16;}break; -case RDI_TypeKind_U256:{result = 32;}break; -case RDI_TypeKind_U512:{result = 64;}break; -case RDI_TypeKind_S8:{result = 1;}break; -case RDI_TypeKind_S16:{result = 2;}break; -case RDI_TypeKind_S32:{result = 4;}break; -case RDI_TypeKind_S64:{result = 8;}break; -case RDI_TypeKind_S128:{result = 16;}break; -case RDI_TypeKind_S256:{result = 32;}break; -case RDI_TypeKind_S512:{result = 64;}break; -case RDI_TypeKind_Bool:{result = 1;}break; -case RDI_TypeKind_BF16:{result = 2;}break; -case RDI_TypeKind_F16:{result = 2;}break; -case RDI_TypeKind_F32:{result = 4;}break; -case RDI_TypeKind_F32PP:{result = 4;}break; -case RDI_TypeKind_F48:{result = 6;}break; -case RDI_TypeKind_F64:{result = 8;}break; -case RDI_TypeKind_F80:{result = 10;}break; -case RDI_TypeKind_F96:{result = 12;}break; -case RDI_TypeKind_F128:{result = 16;}break; -case RDI_TypeKind_ComplexF32:{result = 8;}break; -case RDI_TypeKind_ComplexF64:{result = 16;}break; -case RDI_TypeKind_ComplexF80:{result = 20;}break; -case RDI_TypeKind_ComplexF128:{result = 32;}break; -case RDI_TypeKind_Decimal32:{result = 4;}break; -case RDI_TypeKind_Decimal64:{result = 8;}break; -case RDI_TypeKind_Decimal128:{result = 16;}break; -} -return result; -} - -RDI_PROC RDI_U32 -rdi_addr_size_from_arch(RDI_Arch arch) -{ -RDI_U32 result = 0; -switch(arch) -{ -default:{}break; -case RDI_Arch_X64:{result = 8;}break; -case RDI_Arch_X86:{result = 4;}break; -} -return result; -} - -RDI_PROC RDI_EvalConversionKind -rdi_eval_conversion_kind_from_typegroups(RDI_EvalTypeGroup in, RDI_EvalTypeGroup out) -{ - RDI_EvalConversionKind k = rdi_eval_typegroup_conversion_kind_matrix[in].dst_typegroups[out]; - return k; -} - -RDI_PROC RDI_S32 -rdi_eval_op_typegroup_are_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group) -{ - RDI_S32 result = 0; - switch(op) - { - case RDI_EvalOp_Neg: case RDI_EvalOp_Add: case RDI_EvalOp_Sub: - case RDI_EvalOp_Mul: case RDI_EvalOp_Div: - case RDI_EvalOp_EqEq:case RDI_EvalOp_NtEq: - case RDI_EvalOp_LsEq:case RDI_EvalOp_GrEq: - case RDI_EvalOp_Less:case RDI_EvalOp_Grtr: - { - if(group != RDI_EvalTypeGroup_Other) - { - result = 1; - } - }break; - case RDI_EvalOp_Mod:case RDI_EvalOp_LShift:case RDI_EvalOp_RShift: - case RDI_EvalOp_BitNot:case RDI_EvalOp_BitAnd:case RDI_EvalOp_BitXor: - case RDI_EvalOp_BitOr:case RDI_EvalOp_LogNot:case RDI_EvalOp_LogAnd: - case RDI_EvalOp_LogOr: - { - if(group == RDI_EvalTypeGroup_S || group == RDI_EvalTypeGroup_U) - { - result = 1; - } - }break; - } - 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; -} - -RDI_PROC RDI_SectionKind -rdi_section_kind_from_checksum_kind(RDI_ChecksumKind kind) -{ -RDI_SectionKind result = 0; -switch(kind) -{ -default:{}break; -case RDI_ChecksumKind_NULL:{result = RDI_SectionKind_NULL;}break; -case RDI_ChecksumKind_MD5:{result = RDI_SectionKind_MD5Checksums;}break; -case RDI_ChecksumKind_SHA1:{result = RDI_SectionKind_SHA1Checksums;}break; -case RDI_ChecksumKind_SHA256:{result = RDI_SectionKind_SHA256Checksums;}break; -case RDI_ChecksumKind_Timestamp:{result = RDI_SectionKind_Timestamps;}break; -case RDI_ChecksumKind_COUNT:{result = RDI_SectionKind_NULL;}break; -} -return result; -} - -#endif // RDI_C +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//////////////////////////////////////////////////////////////// +//~ (R)AD (D)ebug (I)nfo Format Library +// +// Defines standard RDI debug information format types and +// functions. + +#ifndef RDI_C +#define RDI_C + +RDI_U16 rdi_section_element_size_table[44] = +{ +sizeof(RDI_U8), +sizeof(RDI_TopLevelInfo), +sizeof(RDI_U8), +sizeof(RDI_U32), +sizeof(RDI_U32), +sizeof(RDI_BinarySection), +sizeof(RDI_FilePathNode), +sizeof(RDI_SourceFile), +sizeof(RDI_LineTable), +sizeof(RDI_U64), +sizeof(RDI_Line), +sizeof(RDI_Column), +sizeof(RDI_SourceLineMap), +sizeof(RDI_U32), +sizeof(RDI_U32), +sizeof(RDI_U64), +sizeof(RDI_Unit), +sizeof(RDI_VMapEntry), +sizeof(RDI_Namespace), +sizeof(RDI_TypeNode), +sizeof(RDI_UDT), +sizeof(RDI_Member), +sizeof(RDI_EnumMember), +sizeof(RDI_Scope), +sizeof(RDI_U64), +sizeof(RDI_VMapEntry), +sizeof(RDI_InlineSite), +sizeof(RDI_Symbol), +sizeof(RDI_VMapEntry), +sizeof(RDI_Symbol), +sizeof(RDI_Symbol), +sizeof(RDI_Symbol), +sizeof(RDI_Symbol), +sizeof(RDI_U8), +sizeof(RDI_U8), +sizeof(RDI_LocationSetElement), +sizeof(RDI_MD5), +sizeof(RDI_SHA1), +sizeof(RDI_SHA256), +sizeof(RDI_U64), +sizeof(RDI_NameMap), +sizeof(RDI_NameMapBucket), +sizeof(RDI_NameMapNode), +sizeof(RDI_U8), +}; + +RDI_U16 rdi_eval_op_ctrlbits_table[54] = +{ +RDI_EVAL_CTRLBITS(0, 0, 0), +RDI_EVAL_CTRLBITS(0, 0, 0), +RDI_EVAL_CTRLBITS(2, 1, 0), +RDI_EVAL_CTRLBITS(2, 0, 0), +RDI_EVAL_CTRLBITS(1, 1, 1), +RDI_EVAL_CTRLBITS(4, 0, 1), +RDI_EVAL_CTRLBITS(0, 1, 1), +RDI_EVAL_CTRLBITS(8, 0, 1), +RDI_EVAL_CTRLBITS(4, 0, 1), +RDI_EVAL_CTRLBITS(4, 0, 1), +RDI_EVAL_CTRLBITS(0, 0, 0), +RDI_EVAL_CTRLBITS(0, 0, 0), +RDI_EVAL_CTRLBITS(1, 0, 1), +RDI_EVAL_CTRLBITS(2, 0, 1), +RDI_EVAL_CTRLBITS(4, 0, 1), +RDI_EVAL_CTRLBITS(8, 0, 1), +RDI_EVAL_CTRLBITS(16, 0, 1), +RDI_EVAL_CTRLBITS(1, 0, 1), +RDI_EVAL_CTRLBITS(1, 1, 1), +RDI_EVAL_CTRLBITS(1, 1, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(2, 2, 1), +RDI_EVAL_CTRLBITS(2, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 1, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 1, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 1, 1), +RDI_EVAL_CTRLBITS(1, 1, 1), +RDI_EVAL_CTRLBITS(2, 1, 1), +RDI_EVAL_CTRLBITS(1, 0, 1), +RDI_EVAL_CTRLBITS(0, 1, 0), +RDI_EVAL_CTRLBITS(1, 0, 0), +RDI_EVAL_CTRLBITS(1, 2, 1), +RDI_EVAL_CTRLBITS(1, 1, 1), +RDI_EVAL_CTRLBITS(4, 0, 0), +RDI_EVAL_CTRLBITS(4, 0, 0), +RDI_EVAL_CTRLBITS(8, 0, 0), +RDI_EVAL_CTRLBITS(0, 2, 2), +RDI_EVAL_CTRLBITS(0, 0, 1), +RDI_EVAL_CTRLBITS(0, 0, 0), +}; + +struct {RDI_EvalConversionKind dst_typegroups[RDI_EvalTypeGroup_COUNT];} rdi_eval_typegroup_conversion_kind_matrix[8] = +{ +{{RDI_EvalConversionKind_OtherToOther, RDI_EvalConversionKind_FromOther, RDI_EvalConversionKind_FromOther, RDI_EvalConversionKind_FromOther, RDI_EvalConversionKind_FromOther}}, +{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, +{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, +{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Legal}}, +{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Noop}}, +{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, +{{RDI_EvalConversionKind_ToOther, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal, RDI_EvalConversionKind_Legal}}, +{{RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop, RDI_EvalConversionKind_Noop}}, +}; + +struct {RDI_U8 *str; RDI_U64 size;} rdi_eval_conversion_kind_message_string_table[6] = +{ +{(RDI_U8 *)"", sizeof("")}, +{(RDI_U8 *)"", sizeof("")}, +{(RDI_U8 *)"Cannot convert between these types.", sizeof("Cannot convert between these types.")}, +{(RDI_U8 *)"Cannot convert to this type.", sizeof("Cannot convert to this type.")}, +{(RDI_U8 *)"Cannot convert this type.", sizeof("Cannot convert this type.")}, +{(RDI_U8 *)"", sizeof("")}, +}; + +RDI_PROC RDI_U64 +rdi_hash(RDI_U8 *ptr, RDI_U64 size) +{ + RDI_U64 result = 0; + if(size != 0) + { + result = 5381; + RDI_U8 *opl = ptr + size; + for(;ptr < opl; ptr += 1) + { + result = ((result << 5) + result) + *ptr; + } + } + return result; +} + +RDI_PROC RDI_U8 * +rdi_string_from_type_kind(RDI_TypeKind kind, RDI_U64 *size_out) +{ +RDI_U8 *result = 0; +*size_out = 0; +switch (kind) +{ +default:{}break; +case RDI_TypeKind_NULL: {result = (RDI_U8*)"NULL"; *size_out = sizeof("NULL")-1;}break; +case RDI_TypeKind_Void: {result = (RDI_U8*)"Void"; *size_out = sizeof("Void")-1;}break; +case RDI_TypeKind_Handle: {result = (RDI_U8*)"Handle"; *size_out = sizeof("Handle")-1;}break; +case RDI_TypeKind_HResult: {result = (RDI_U8*)"HResult"; *size_out = sizeof("HResult")-1;}break; +case RDI_TypeKind_Char8: {result = (RDI_U8*)"Char8"; *size_out = sizeof("Char8")-1;}break; +case RDI_TypeKind_Char16: {result = (RDI_U8*)"Char16"; *size_out = sizeof("Char16")-1;}break; +case RDI_TypeKind_Char32: {result = (RDI_U8*)"Char32"; *size_out = sizeof("Char32")-1;}break; +case RDI_TypeKind_UChar8: {result = (RDI_U8*)"UChar8"; *size_out = sizeof("UChar8")-1;}break; +case RDI_TypeKind_UChar16: {result = (RDI_U8*)"UChar16"; *size_out = sizeof("UChar16")-1;}break; +case RDI_TypeKind_UChar32: {result = (RDI_U8*)"UChar32"; *size_out = sizeof("UChar32")-1;}break; +case RDI_TypeKind_U8: {result = (RDI_U8*)"U8"; *size_out = sizeof("U8")-1;}break; +case RDI_TypeKind_U16: {result = (RDI_U8*)"U16"; *size_out = sizeof("U16")-1;}break; +case RDI_TypeKind_U32: {result = (RDI_U8*)"U32"; *size_out = sizeof("U32")-1;}break; +case RDI_TypeKind_U64: {result = (RDI_U8*)"U64"; *size_out = sizeof("U64")-1;}break; +case RDI_TypeKind_U128: {result = (RDI_U8*)"U128"; *size_out = sizeof("U128")-1;}break; +case RDI_TypeKind_U256: {result = (RDI_U8*)"U256"; *size_out = sizeof("U256")-1;}break; +case RDI_TypeKind_U512: {result = (RDI_U8*)"U512"; *size_out = sizeof("U512")-1;}break; +case RDI_TypeKind_S8: {result = (RDI_U8*)"S8"; *size_out = sizeof("S8")-1;}break; +case RDI_TypeKind_S16: {result = (RDI_U8*)"S16"; *size_out = sizeof("S16")-1;}break; +case RDI_TypeKind_S32: {result = (RDI_U8*)"S32"; *size_out = sizeof("S32")-1;}break; +case RDI_TypeKind_S64: {result = (RDI_U8*)"S64"; *size_out = sizeof("S64")-1;}break; +case RDI_TypeKind_S128: {result = (RDI_U8*)"S128"; *size_out = sizeof("S128")-1;}break; +case RDI_TypeKind_S256: {result = (RDI_U8*)"S256"; *size_out = sizeof("S256")-1;}break; +case RDI_TypeKind_S512: {result = (RDI_U8*)"S512"; *size_out = sizeof("S512")-1;}break; +case RDI_TypeKind_Bool: {result = (RDI_U8*)"Bool"; *size_out = sizeof("Bool")-1;}break; +case RDI_TypeKind_BF16: {result = (RDI_U8*)"BF16"; *size_out = sizeof("BF16")-1;}break; +case RDI_TypeKind_F16: {result = (RDI_U8*)"F16"; *size_out = sizeof("F16")-1;}break; +case RDI_TypeKind_F32: {result = (RDI_U8*)"F32"; *size_out = sizeof("F32")-1;}break; +case RDI_TypeKind_F32PP: {result = (RDI_U8*)"F32PP"; *size_out = sizeof("F32PP")-1;}break; +case RDI_TypeKind_F48: {result = (RDI_U8*)"F48"; *size_out = sizeof("F48")-1;}break; +case RDI_TypeKind_F64: {result = (RDI_U8*)"F64"; *size_out = sizeof("F64")-1;}break; +case RDI_TypeKind_F80: {result = (RDI_U8*)"F80"; *size_out = sizeof("F80")-1;}break; +case RDI_TypeKind_F96: {result = (RDI_U8*)"F96"; *size_out = sizeof("F96")-1;}break; +case RDI_TypeKind_F128: {result = (RDI_U8*)"F128"; *size_out = sizeof("F128")-1;}break; +case RDI_TypeKind_ComplexF32: {result = (RDI_U8*)"ComplexF32"; *size_out = sizeof("ComplexF32")-1;}break; +case RDI_TypeKind_ComplexF64: {result = (RDI_U8*)"ComplexF64"; *size_out = sizeof("ComplexF64")-1;}break; +case RDI_TypeKind_ComplexF80: {result = (RDI_U8*)"ComplexF80"; *size_out = sizeof("ComplexF80")-1;}break; +case RDI_TypeKind_ComplexF128: {result = (RDI_U8*)"ComplexF128"; *size_out = sizeof("ComplexF128")-1;}break; +case RDI_TypeKind_Decimal32: {result = (RDI_U8*)"Decimal32"; *size_out = sizeof("Decimal32")-1;}break; +case RDI_TypeKind_Decimal64: {result = (RDI_U8*)"Decimal64"; *size_out = sizeof("Decimal64")-1;}break; +case RDI_TypeKind_Decimal128: {result = (RDI_U8*)"Decimal128"; *size_out = sizeof("Decimal128")-1;}break; +case RDI_TypeKind_Variadic: {result = (RDI_U8*)"Variadic"; *size_out = sizeof("Variadic")-1;}break; +case RDI_TypeKind_Modifier: {result = (RDI_U8*)"Modifier"; *size_out = sizeof("Modifier")-1;}break; +case RDI_TypeKind_Ptr: {result = (RDI_U8*)"Ptr"; *size_out = sizeof("Ptr")-1;}break; +case RDI_TypeKind_LRef: {result = (RDI_U8*)"LRef"; *size_out = sizeof("LRef")-1;}break; +case RDI_TypeKind_RRef: {result = (RDI_U8*)"RRef"; *size_out = sizeof("RRef")-1;}break; +case RDI_TypeKind_Array: {result = (RDI_U8*)"Array"; *size_out = sizeof("Array")-1;}break; +case RDI_TypeKind_Function: {result = (RDI_U8*)"Function"; *size_out = sizeof("Function")-1;}break; +case RDI_TypeKind_Method: {result = (RDI_U8*)"Method"; *size_out = sizeof("Method")-1;}break; +case RDI_TypeKind_MemberPtr: {result = (RDI_U8*)"MemberPtr"; *size_out = sizeof("MemberPtr")-1;}break; +case RDI_TypeKind_Struct: {result = (RDI_U8*)"Struct"; *size_out = sizeof("Struct")-1;}break; +case RDI_TypeKind_Class: {result = (RDI_U8*)"Class"; *size_out = sizeof("Class")-1;}break; +case RDI_TypeKind_Union: {result = (RDI_U8*)"Union"; *size_out = sizeof("Union")-1;}break; +case RDI_TypeKind_Enum: {result = (RDI_U8*)"Enum"; *size_out = sizeof("Enum")-1;}break; +case RDI_TypeKind_Alias: {result = (RDI_U8*)"Alias"; *size_out = sizeof("Alias")-1;}break; +case RDI_TypeKind_IncompleteStruct: {result = (RDI_U8*)"IncompleteStruct"; *size_out = sizeof("IncompleteStruct")-1;}break; +case RDI_TypeKind_IncompleteUnion: {result = (RDI_U8*)"IncompleteUnion"; *size_out = sizeof("IncompleteUnion")-1;}break; +case RDI_TypeKind_IncompleteClass: {result = (RDI_U8*)"IncompleteClass"; *size_out = sizeof("IncompleteClass")-1;}break; +case RDI_TypeKind_IncompleteEnum: {result = (RDI_U8*)"IncompleteEnum"; *size_out = sizeof("IncompleteEnum")-1;}break; +case RDI_TypeKind_Bitfield: {result = (RDI_U8*)"Bitfield"; *size_out = sizeof("Bitfield")-1;}break; +case RDI_TypeKind_COUNT: {result = (RDI_U8*)"COUNT"; *size_out = sizeof("COUNT")-1;}break; +} +return result; +} + +RDI_PROC RDI_U32 +rdi_size_from_basic_type_kind(RDI_TypeKind kind) +{ +RDI_U32 result = 0; +switch(kind) +{ +default:{}break; +case RDI_TypeKind_Handle:{result = 0xFFFFFFFF;}break; +case RDI_TypeKind_HResult:{result = 4;}break; +case RDI_TypeKind_Char8:{result = 1;}break; +case RDI_TypeKind_Char16:{result = 2;}break; +case RDI_TypeKind_Char32:{result = 4;}break; +case RDI_TypeKind_UChar8:{result = 1;}break; +case RDI_TypeKind_UChar16:{result = 2;}break; +case RDI_TypeKind_UChar32:{result = 4;}break; +case RDI_TypeKind_U8:{result = 1;}break; +case RDI_TypeKind_U16:{result = 2;}break; +case RDI_TypeKind_U32:{result = 4;}break; +case RDI_TypeKind_U64:{result = 8;}break; +case RDI_TypeKind_U128:{result = 16;}break; +case RDI_TypeKind_U256:{result = 32;}break; +case RDI_TypeKind_U512:{result = 64;}break; +case RDI_TypeKind_S8:{result = 1;}break; +case RDI_TypeKind_S16:{result = 2;}break; +case RDI_TypeKind_S32:{result = 4;}break; +case RDI_TypeKind_S64:{result = 8;}break; +case RDI_TypeKind_S128:{result = 16;}break; +case RDI_TypeKind_S256:{result = 32;}break; +case RDI_TypeKind_S512:{result = 64;}break; +case RDI_TypeKind_Bool:{result = 1;}break; +case RDI_TypeKind_BF16:{result = 2;}break; +case RDI_TypeKind_F16:{result = 2;}break; +case RDI_TypeKind_F32:{result = 4;}break; +case RDI_TypeKind_F32PP:{result = 4;}break; +case RDI_TypeKind_F48:{result = 6;}break; +case RDI_TypeKind_F64:{result = 8;}break; +case RDI_TypeKind_F80:{result = 10;}break; +case RDI_TypeKind_F96:{result = 12;}break; +case RDI_TypeKind_F128:{result = 16;}break; +case RDI_TypeKind_ComplexF32:{result = 8;}break; +case RDI_TypeKind_ComplexF64:{result = 16;}break; +case RDI_TypeKind_ComplexF80:{result = 20;}break; +case RDI_TypeKind_ComplexF128:{result = 32;}break; +case RDI_TypeKind_Decimal32:{result = 4;}break; +case RDI_TypeKind_Decimal64:{result = 8;}break; +case RDI_TypeKind_Decimal128:{result = 16;}break; +} +return result; +} + +RDI_PROC RDI_U32 +rdi_addr_size_from_arch(RDI_Arch arch) +{ +RDI_U32 result = 0; +switch(arch) +{ +default:{}break; +case RDI_Arch_X64:{result = 8;}break; +case RDI_Arch_X86:{result = 4;}break; +} +return result; +} + +RDI_PROC RDI_EvalConversionKind +rdi_eval_conversion_kind_from_typegroups(RDI_EvalTypeGroup in, RDI_EvalTypeGroup out) +{ + RDI_EvalConversionKind k = rdi_eval_typegroup_conversion_kind_matrix[in].dst_typegroups[out]; + return k; +} + +RDI_PROC RDI_S32 +rdi_eval_op_typegroup_are_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group) +{ + RDI_S32 result = 0; + switch(op) + { + case RDI_EvalOp_Neg: case RDI_EvalOp_Add: case RDI_EvalOp_Sub: + case RDI_EvalOp_Mul: case RDI_EvalOp_Div: + case RDI_EvalOp_EqEq:case RDI_EvalOp_NtEq: + case RDI_EvalOp_LsEq:case RDI_EvalOp_GrEq: + case RDI_EvalOp_Less:case RDI_EvalOp_Grtr: + { + if(group != RDI_EvalTypeGroup_Other) + { + result = 1; + } + }break; + case RDI_EvalOp_Mod:case RDI_EvalOp_LShift:case RDI_EvalOp_RShift: + case RDI_EvalOp_BitNot:case RDI_EvalOp_BitAnd:case RDI_EvalOp_BitXor: + case RDI_EvalOp_BitOr:case RDI_EvalOp_LogNot:case RDI_EvalOp_LogAnd: + case RDI_EvalOp_LogOr: + { + if(group == RDI_EvalTypeGroup_S || group == RDI_EvalTypeGroup_U) + { + result = 1; + } + }break; + } + 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; +} + +RDI_PROC RDI_SectionKind +rdi_section_kind_from_checksum_kind(RDI_ChecksumKind kind) +{ +RDI_SectionKind result = 0; +switch(kind) +{ +default:{}break; +case RDI_ChecksumKind_NULL:{result = RDI_SectionKind_NULL;}break; +case RDI_ChecksumKind_MD5:{result = RDI_SectionKind_MD5Checksums;}break; +case RDI_ChecksumKind_SHA1:{result = RDI_SectionKind_SHA1Checksums;}break; +case RDI_ChecksumKind_SHA256:{result = RDI_SectionKind_SHA256Checksums;}break; +case RDI_ChecksumKind_Timestamp:{result = RDI_SectionKind_Timestamps;}break; +case RDI_ChecksumKind_COUNT:{result = RDI_SectionKind_NULL;}break; +} +return result; +} + +#endif // RDI_C diff --git a/src/lib_rdi/rdi.h b/src/lib_rdi/rdi.h index db869bd3..17098d15 100644 --- a/src/lib_rdi/rdi.h +++ b/src/lib_rdi/rdi.h @@ -1,1482 +1,1482 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//////////////////////////////////////////////////////////////// -//~ (R)AD (D)ebug (I)nfo Format Library -// -// Defines standard RDI debug information format types and -// functions. - -#ifndef RDI_H -#define RDI_H - -//////////////////////////////////////////////////////////////// -//~ Overridable Procedure Decoration - -#if !defined(RDI_PROC) -# define RDI_PROC static -#endif - -//////////////////////////////////////////////////////////////// -//~ Overridable Basic Integer Types - -#if !defined(RDI_U8) -# define RDI_U8 RDI_U8 -# define RDI_U16 RDI_U16 -# define RDI_U32 RDI_U32 -# define RDI_U64 RDI_U64 -# define RDI_S8 RDI_S8 -# define RDI_S16 RDI_S16 -# define RDI_S32 RDI_S32 -# define RDI_S64 RDI_S64 -#include -typedef uint8_t RDI_U8; -typedef uint16_t RDI_U16; -typedef uint32_t RDI_U32; -typedef uint64_t RDI_U64; -typedef int8_t RDI_S8; -typedef int16_t RDI_S16; -typedef int32_t RDI_S32; -typedef int64_t RDI_S64; -#endif - -//////////////////////////////////////////////////////////////// -//~ Checksum Types - -typedef union RDI_MD5 RDI_MD5; -union RDI_MD5 {RDI_U8 u8[16]; RDI_U64 u64[2];}; - -typedef union RDI_SHA1 RDI_SHA1; -union RDI_SHA1 {RDI_U8 u8[20];}; - -typedef union RDI_SHA256 RDI_SHA256; -union RDI_SHA256 {RDI_U8 u8[32]; RDI_U64 u64[4];}; - -typedef union RDI_GUID RDI_GUID; -union RDI_GUID {RDI_U8 u8[16]; RDI_U64 u64[2];}; - -//////////////////////////////////////////////////////////////// -//~ Overridable Enabling/Disabling Of Table Index Typechecking - -#if !defined(RDI_DISABLE_TABLE_INDEX_TYPECHECKING) -# define RDI_DISABLE_TABLE_INDEX_TYPECHECKING 0 -#endif - -//////////////////////////////////////////////////////////////// -//~ Format Constants - -// "raddbg\0\0" -#define RDI_MAGIC_CONSTANT 0x0000676264646172 -#define RDI_ENCODING_VERSION 22 - -//////////////////////////////////////////////////////////////// -//~ Format Types & Functions - -typedef RDI_U32 RDI_SectionKind; -typedef enum RDI_SectionKindEnum -{ -RDI_SectionKind_NULL = 0x0000, -RDI_SectionKind_TopLevelInfo = 0x0001, -RDI_SectionKind_StringData = 0x0002, -RDI_SectionKind_StringTable = 0x0003, -RDI_SectionKind_IndexRuns = 0x0004, -RDI_SectionKind_BinarySections = 0x0005, -RDI_SectionKind_FilePathNodes = 0x0006, -RDI_SectionKind_SourceFiles = 0x0007, -RDI_SectionKind_LineTables = 0x0008, -RDI_SectionKind_LineInfoVOffs = 0x0009, -RDI_SectionKind_LineInfoLines = 0x000A, -RDI_SectionKind_LineInfoColumns = 0x000B, -RDI_SectionKind_SourceLineMaps = 0x000C, -RDI_SectionKind_SourceLineMapNumbers = 0x000D, -RDI_SectionKind_SourceLineMapRanges = 0x000E, -RDI_SectionKind_SourceLineMapVOffs = 0x000F, -RDI_SectionKind_Units = 0x0010, -RDI_SectionKind_UnitVMap = 0x0011, -RDI_SectionKind_Namespaces = 0x0012, -RDI_SectionKind_TypeNodes = 0x0013, -RDI_SectionKind_UDTs = 0x0014, -RDI_SectionKind_Members = 0x0015, -RDI_SectionKind_EnumMembers = 0x0016, -RDI_SectionKind_Scopes = 0x0017, -RDI_SectionKind_ScopeVOffData = 0x0018, -RDI_SectionKind_ScopeVMap = 0x0019, -RDI_SectionKind_InlineSites = 0x001A, -RDI_SectionKind_GlobalVariables = 0x001B, -RDI_SectionKind_GlobalVMap = 0x001C, -RDI_SectionKind_ThreadVariables = 0x001D, -RDI_SectionKind_Constants = 0x001E, -RDI_SectionKind_Procedures = 0x001F, -RDI_SectionKind_LocalVariables = 0x0020, -RDI_SectionKind_LocationsBytecodeData = 0x0021, -RDI_SectionKind_LocationsConstantData = 0x0022, -RDI_SectionKind_LocationsSetElements = 0x0023, -RDI_SectionKind_MD5Checksums = 0x0024, -RDI_SectionKind_SHA1Checksums = 0x0025, -RDI_SectionKind_SHA256Checksums = 0x0026, -RDI_SectionKind_Timestamps = 0x0027, -RDI_SectionKind_NameMaps = 0x0028, -RDI_SectionKind_NameMapBuckets = 0x0029, -RDI_SectionKind_NameMapNodes = 0x002A, -RDI_SectionKind_COUNT = 0x002B, -} RDI_SectionKindEnum; - -typedef RDI_U32 RDI_SectionEncoding; -typedef enum RDI_SectionEncodingEnum -{ -RDI_SectionEncoding_Unpacked = 0, -RDI_SectionEncoding_LZB = 1, -} RDI_SectionEncodingEnum; - -typedef RDI_U32 RDI_Arch; -typedef enum RDI_ArchEnum -{ -RDI_Arch_NULL = 0, -RDI_Arch_X64 = 1, -RDI_Arch_X86 = 2, -} RDI_ArchEnum; - -typedef RDI_U8 RDI_RegCode; -typedef enum RDI_RegCodeEnum -{ -RDI_RegCode_nil, -} RDI_RegCodeEnum; - -typedef RDI_U8 RDI_RegCodeX64; -typedef enum RDI_RegCodeX64Enum -{ -RDI_RegCodeX64_nil = 0, -RDI_RegCodeX64_rax = 1, -RDI_RegCodeX64_rcx = 2, -RDI_RegCodeX64_rdx = 3, -RDI_RegCodeX64_rbx = 4, -RDI_RegCodeX64_rsp = 5, -RDI_RegCodeX64_rbp = 6, -RDI_RegCodeX64_rsi = 7, -RDI_RegCodeX64_rdi = 8, -RDI_RegCodeX64_r8 = 9, -RDI_RegCodeX64_r9 = 10, -RDI_RegCodeX64_r10 = 11, -RDI_RegCodeX64_r11 = 12, -RDI_RegCodeX64_r12 = 13, -RDI_RegCodeX64_r13 = 14, -RDI_RegCodeX64_r14 = 15, -RDI_RegCodeX64_r15 = 16, -RDI_RegCodeX64_es = 17, -RDI_RegCodeX64_cs = 18, -RDI_RegCodeX64_ss = 19, -RDI_RegCodeX64_ds = 20, -RDI_RegCodeX64_fs = 21, -RDI_RegCodeX64_gs = 22, -RDI_RegCodeX64_rip = 23, -RDI_RegCodeX64_rflags = 24, -RDI_RegCodeX64_dr0 = 25, -RDI_RegCodeX64_dr1 = 26, -RDI_RegCodeX64_dr2 = 27, -RDI_RegCodeX64_dr3 = 28, -RDI_RegCodeX64_dr4 = 29, -RDI_RegCodeX64_dr5 = 30, -RDI_RegCodeX64_dr6 = 31, -RDI_RegCodeX64_dr7 = 32, -RDI_RegCodeX64_st0 = 33, -RDI_RegCodeX64_st1 = 34, -RDI_RegCodeX64_st2 = 35, -RDI_RegCodeX64_st3 = 36, -RDI_RegCodeX64_st4 = 37, -RDI_RegCodeX64_st5 = 38, -RDI_RegCodeX64_st6 = 39, -RDI_RegCodeX64_st7 = 40, -RDI_RegCodeX64_zmm0 = 41, -RDI_RegCodeX64_zmm1 = 42, -RDI_RegCodeX64_zmm2 = 43, -RDI_RegCodeX64_zmm3 = 44, -RDI_RegCodeX64_zmm4 = 45, -RDI_RegCodeX64_zmm5 = 46, -RDI_RegCodeX64_zmm6 = 47, -RDI_RegCodeX64_zmm7 = 48, -RDI_RegCodeX64_zmm8 = 49, -RDI_RegCodeX64_zmm9 = 50, -RDI_RegCodeX64_zmm10 = 51, -RDI_RegCodeX64_zmm11 = 52, -RDI_RegCodeX64_zmm12 = 53, -RDI_RegCodeX64_zmm13 = 54, -RDI_RegCodeX64_zmm14 = 55, -RDI_RegCodeX64_zmm15 = 56, -RDI_RegCodeX64_zmm16 = 57, -RDI_RegCodeX64_zmm17 = 58, -RDI_RegCodeX64_zmm18 = 59, -RDI_RegCodeX64_zmm19 = 60, -RDI_RegCodeX64_zmm20 = 61, -RDI_RegCodeX64_zmm21 = 62, -RDI_RegCodeX64_zmm22 = 63, -RDI_RegCodeX64_zmm23 = 64, -RDI_RegCodeX64_zmm24 = 65, -RDI_RegCodeX64_zmm25 = 66, -RDI_RegCodeX64_zmm26 = 67, -RDI_RegCodeX64_zmm27 = 68, -RDI_RegCodeX64_zmm28 = 69, -RDI_RegCodeX64_zmm29 = 70, -RDI_RegCodeX64_zmm30 = 71, -RDI_RegCodeX64_zmm31 = 72, -RDI_RegCodeX64_k0 = 73, -RDI_RegCodeX64_k1 = 74, -RDI_RegCodeX64_k2 = 75, -RDI_RegCodeX64_k3 = 76, -RDI_RegCodeX64_k4 = 77, -RDI_RegCodeX64_k5 = 78, -RDI_RegCodeX64_k6 = 79, -RDI_RegCodeX64_k7 = 80, -RDI_RegCodeX64_mxcsr = 81, -RDI_RegCodeX64_fsbase = 82, -RDI_RegCodeX64_gsbase = 83, -RDI_RegCodeX64_fcw = 84, -RDI_RegCodeX64_fsw = 85, -RDI_RegCodeX64_ftw = 86, -RDI_RegCodeX64_fop = 87, -RDI_RegCodeX64_fcs = 88, -RDI_RegCodeX64_fds = 89, -RDI_RegCodeX64_fip = 90, -RDI_RegCodeX64_fdp = 91, -RDI_RegCodeX64_mxcsr_mask = 92, -RDI_RegCodeX64_cetmsr = 93, -RDI_RegCodeX64_cetssp = 94, -} RDI_RegCodeX64Enum; - -typedef RDI_U32 RDI_BinarySectionFlags; -typedef enum RDI_BinarySectionFlagsEnum -{ -RDI_BinarySectionFlag_Read = 1<<0, -RDI_BinarySectionFlag_Write = 1<<1, -RDI_BinarySectionFlag_Execute = 1<<2, -} RDI_BinarySectionFlagsEnum; - -typedef RDI_U32 RDI_ChecksumKind; -typedef enum RDI_ChecksumKindEnum -{ -RDI_ChecksumKind_NULL = 0, -RDI_ChecksumKind_MD5 = 1, -RDI_ChecksumKind_SHA1 = 2, -RDI_ChecksumKind_SHA256 = 3, -RDI_ChecksumKind_Timestamp = 4, -RDI_ChecksumKind_COUNT = 5, -} RDI_ChecksumKindEnum; - -typedef RDI_U32 RDI_Language; -typedef enum RDI_LanguageEnum -{ -RDI_Language_NULL = 0, -RDI_Language_C = 1, -RDI_Language_CPlusPlus = 2, -RDI_Language_Masm = 3, -RDI_Language_COUNT = 4, -} RDI_LanguageEnum; - -typedef RDI_U16 RDI_TypeKind; -typedef enum RDI_TypeKindEnum -{ -RDI_TypeKind_NULL = 0x0000, -RDI_TypeKind_Void = 0x0001, -RDI_TypeKind_Handle = 0x0002, -RDI_TypeKind_HResult = 0x0003, -RDI_TypeKind_Char8 = 0x0004, -RDI_TypeKind_Char16 = 0x0005, -RDI_TypeKind_Char32 = 0x0006, -RDI_TypeKind_UChar8 = 0x0007, -RDI_TypeKind_UChar16 = 0x0008, -RDI_TypeKind_UChar32 = 0x0009, -RDI_TypeKind_U8 = 0x000A, -RDI_TypeKind_U16 = 0x000B, -RDI_TypeKind_U32 = 0x000C, -RDI_TypeKind_U64 = 0x000D, -RDI_TypeKind_U128 = 0x000E, -RDI_TypeKind_U256 = 0x000F, -RDI_TypeKind_U512 = 0x0010, -RDI_TypeKind_S8 = 0x0011, -RDI_TypeKind_S16 = 0x0012, -RDI_TypeKind_S32 = 0x0013, -RDI_TypeKind_S64 = 0x0014, -RDI_TypeKind_S128 = 0x0015, -RDI_TypeKind_S256 = 0x0016, -RDI_TypeKind_S512 = 0x0017, -RDI_TypeKind_Bool = 0x0018, -RDI_TypeKind_BF16 = 0x0019, -RDI_TypeKind_F16 = 0x001A, -RDI_TypeKind_F32 = 0x001B, -RDI_TypeKind_F32PP = 0x001C, -RDI_TypeKind_F48 = 0x001D, -RDI_TypeKind_F64 = 0x001E, -RDI_TypeKind_F80 = 0x001F, -RDI_TypeKind_F96 = 0x0020, -RDI_TypeKind_F128 = 0x0021, -RDI_TypeKind_ComplexF32 = 0x0022, -RDI_TypeKind_ComplexF64 = 0x0023, -RDI_TypeKind_ComplexF80 = 0x0024, -RDI_TypeKind_ComplexF128 = 0x0025, -RDI_TypeKind_Decimal32 = 0x0026, -RDI_TypeKind_Decimal64 = 0x0027, -RDI_TypeKind_Decimal128 = 0x0028, -RDI_TypeKind_Variadic = 0x0029, -RDI_TypeKind_Modifier = 0x1000, -RDI_TypeKind_Ptr = 0x1001, -RDI_TypeKind_LRef = 0x1002, -RDI_TypeKind_RRef = 0x1003, -RDI_TypeKind_Array = 0x1004, -RDI_TypeKind_Function = 0x1005, -RDI_TypeKind_Method = 0x1006, -RDI_TypeKind_MemberPtr = 0x1007, -RDI_TypeKind_Struct = 0x2000, -RDI_TypeKind_Class = 0x2001, -RDI_TypeKind_Union = 0x2002, -RDI_TypeKind_Enum = 0x2003, -RDI_TypeKind_Alias = 0x2004, -RDI_TypeKind_IncompleteStruct = 0x2005, -RDI_TypeKind_IncompleteUnion = 0x2006, -RDI_TypeKind_IncompleteClass = 0x2007, -RDI_TypeKind_IncompleteEnum = 0x2008, -RDI_TypeKind_Bitfield = 0xF000, -RDI_TypeKind_COUNT = 0xF002, -RDI_TypeKind_FirstBuiltIn = RDI_TypeKind_Void, -RDI_TypeKind_LastBuiltIn = RDI_TypeKind_Variadic, -RDI_TypeKind_FirstConstructed = RDI_TypeKind_Modifier, -RDI_TypeKind_LastConstructed = RDI_TypeKind_MemberPtr, -RDI_TypeKind_FirstUserDefined = RDI_TypeKind_Struct, -RDI_TypeKind_LastRecord = RDI_TypeKind_Union, -RDI_TypeKind_FirstIncomplete = RDI_TypeKind_IncompleteStruct, -RDI_TypeKind_LastIncomplete = RDI_TypeKind_IncompleteEnum, -RDI_TypeKind_FirstRecord = RDI_TypeKind_Struct, -RDI_TypeKind_LastUserDefined = RDI_TypeKind_IncompleteEnum, -} RDI_TypeKindEnum; - -typedef RDI_U16 RDI_TypeModifierFlags; -typedef enum RDI_TypeModifierFlagsEnum -{ -RDI_TypeModifierFlag_Const = 1<<0, -RDI_TypeModifierFlag_Volatile = 1<<1, -RDI_TypeModifierFlag_Restrict = 1<<2, -} RDI_TypeModifierFlagsEnum; - -typedef RDI_U8 RDI_UDTFlags; -typedef enum RDI_UDTFlagsEnum -{ -RDI_UDTFlag_EnumMembers = 1<<0, -} RDI_UDTFlagsEnum; - -typedef RDI_U16 RDI_MemberKind; -typedef enum RDI_MemberKindEnum -{ -RDI_MemberKind_NULL = 0x0000, -RDI_MemberKind_DataField = 0x0001, -RDI_MemberKind_StaticData = 0x0002, -RDI_MemberKind_Method = 0x0100, -RDI_MemberKind_StaticMethod = 0x0101, -RDI_MemberKind_VirtualMethod = 0x0102, -RDI_MemberKind_VTablePtr = 0x0200, -RDI_MemberKind_Base = 0x0201, -RDI_MemberKind_VirtualBase = 0x0202, -RDI_MemberKind_NestedType = 0x0300, -} RDI_MemberKindEnum; - -typedef RDI_U8 RDI_ContainerKind; -typedef enum RDI_ContainerKindEnum -{ -RDI_ContainerKind_NULL = 0x0, -RDI_ContainerKind_Type = 0x1, -RDI_ContainerKind_Scope = 0x2, -RDI_ContainerKind_Namespace = 0x3, -} RDI_ContainerKindEnum; - -typedef RDI_U8 RDI_ContainerFlags; -typedef enum RDI_ContainerFlagsEnum -{ -RDI_ContainerFlag_External = 1u<<7, -RDI_ContainerFlag_KindMask = 0x7f, -} RDI_ContainerFlagsEnum; - -typedef RDI_U8 RDI_SymbolFlags; -typedef enum RDI_SymbolFlagsEnum -{ -RDI_SymbolFlag_IsParam = 0x1, -} RDI_SymbolFlagsEnum; - -typedef RDI_U8 RDI_LocationKind; -typedef enum RDI_LocationKindEnum -{ -RDI_LocationKind_NULL = 0x0, -RDI_LocationKind_AddrBytecodeStream = 0x1, -RDI_LocationKind_ValBytecodeStream = 0x2, -RDI_LocationKind_AddrRegPlusOff = 0x3, -RDI_LocationKind_AddrAddrRegPlusOff = 0x4, -RDI_LocationKind_ValReg = 0x5, -RDI_LocationKind_ModuleOff = 0x6, -RDI_LocationKind_TLSOff = 0x7, -RDI_LocationKind_ConstantDataOff = 0x8, -RDI_LocationKind_Set = 0x9, -} RDI_LocationKindEnum; - -typedef RDI_U8 RDI_EvalOp; -typedef enum RDI_EvalOpEnum -{ -RDI_EvalOp_Stop = 0, -RDI_EvalOp_Noop = 1, -RDI_EvalOp_Cond = 2, -RDI_EvalOp_Skip = 3, -RDI_EvalOp_MemRead = 4, -RDI_EvalOp_RegRead = 5, -RDI_EvalOp_RegReadDyn = 6, -RDI_EvalOp_FrameOff = 7, -RDI_EvalOp_ModuleOff = 8, -RDI_EvalOp_TLSOff = 9, -RDI_EvalOp_ObjectOff = 10, -RDI_EvalOp_CFA = 11, -RDI_EvalOp_ConstU8 = 12, -RDI_EvalOp_ConstU16 = 13, -RDI_EvalOp_ConstU32 = 14, -RDI_EvalOp_ConstU64 = 15, -RDI_EvalOp_ConstU128 = 16, -RDI_EvalOp_ConstString = 17, -RDI_EvalOp_Abs = 18, -RDI_EvalOp_Neg = 19, -RDI_EvalOp_Add = 20, -RDI_EvalOp_Sub = 21, -RDI_EvalOp_Mul = 22, -RDI_EvalOp_Div = 23, -RDI_EvalOp_Mod = 24, -RDI_EvalOp_LShift = 25, -RDI_EvalOp_RShift = 26, -RDI_EvalOp_BitAnd = 27, -RDI_EvalOp_BitOr = 28, -RDI_EvalOp_BitXor = 29, -RDI_EvalOp_BitNot = 30, -RDI_EvalOp_LogAnd = 31, -RDI_EvalOp_LogOr = 32, -RDI_EvalOp_LogNot = 33, -RDI_EvalOp_EqEq = 34, -RDI_EvalOp_NtEq = 35, -RDI_EvalOp_LsEq = 36, -RDI_EvalOp_GrEq = 37, -RDI_EvalOp_Less = 38, -RDI_EvalOp_Grtr = 39, -RDI_EvalOp_Trunc = 40, -RDI_EvalOp_TruncSigned = 41, -RDI_EvalOp_Convert = 42, -RDI_EvalOp_Pick = 43, -RDI_EvalOp_Pop = 44, -RDI_EvalOp_Insert = 45, -RDI_EvalOp_ValueRead = 46, -RDI_EvalOp_ByteSwap = 47, -RDI_EvalOp_CallSiteValue = 48, -RDI_EvalOp_PartialValue = 49, -RDI_EvalOp_PartialValueBit = 50, -RDI_EvalOp_Swap = 51, -RDI_EvalOp_PushCfa = 52, -RDI_EvalOp_COUNT = 53, -} RDI_EvalOpEnum; - -typedef RDI_U8 RDI_EvalTypeGroup; -typedef enum RDI_EvalTypeGroupEnum -{ -RDI_EvalTypeGroup_Other = 0, -RDI_EvalTypeGroup_U = 1, -RDI_EvalTypeGroup_S = 2, -RDI_EvalTypeGroup_F32 = 3, -RDI_EvalTypeGroup_F64 = 4, -RDI_EvalTypeGroup_F80 = 5, -RDI_EvalTypeGroup_F128 = 6, -RDI_EvalTypeGroup_COUNT = 7, -} RDI_EvalTypeGroupEnum; - -typedef RDI_U8 RDI_EvalConversionKind; -typedef enum RDI_EvalConversionKindEnum -{ -RDI_EvalConversionKind_Noop = 0, -RDI_EvalConversionKind_Legal = 1, -RDI_EvalConversionKind_OtherToOther = 2, -RDI_EvalConversionKind_ToOther = 3, -RDI_EvalConversionKind_FromOther = 4, -RDI_EvalConversionKind_COUNT = 5, -} RDI_EvalConversionKindEnum; - -typedef RDI_U32 RDI_NameMapKind; -typedef enum RDI_NameMapKindEnum -{ -RDI_NameMapKind_NULL = 0, -RDI_NameMapKind_GlobalVariables = 1, -RDI_NameMapKind_ThreadVariables = 2, -RDI_NameMapKind_Constants = 3, -RDI_NameMapKind_Procedures = 4, -RDI_NameMapKind_Types = 5, -RDI_NameMapKind_LinkNameProcedures = 6, -RDI_NameMapKind_NormalSourcePaths = 7, -RDI_NameMapKind_COUNT = 8, -} RDI_NameMapKindEnum; - -#define RDI_Header_XList \ -X(RDI_U64, magic)\ -X(RDI_U32, encoding_version)\ -X(RDI_U32, data_section_off)\ -X(RDI_U32, data_section_count)\ - -#define RDI_SectionKind_XList \ -X(NULL, null, RDI_U8)\ -X(TopLevelInfo, top_level_info, RDI_TopLevelInfo)\ -X(StringData, string_data, RDI_U8)\ -X(StringTable, string_table, RDI_U32)\ -X(IndexRuns, index_runs, RDI_U32)\ -X(BinarySections, binary_sections, RDI_BinarySection)\ -X(FilePathNodes, file_path_nodes, RDI_FilePathNode)\ -X(SourceFiles, source_files, RDI_SourceFile)\ -X(LineTables, line_tables, RDI_LineTable)\ -X(LineInfoVOffs, line_info_voffs, RDI_U64)\ -X(LineInfoLines, line_info_lines, RDI_Line)\ -X(LineInfoColumns, line_info_columns, RDI_Column)\ -X(SourceLineMaps, source_line_maps, RDI_SourceLineMap)\ -X(SourceLineMapNumbers, source_line_map_numbers, RDI_U32)\ -X(SourceLineMapRanges, source_line_map_ranges, RDI_U32)\ -X(SourceLineMapVOffs, source_line_map_voffs, RDI_U64)\ -X(Units, units, RDI_Unit)\ -X(UnitVMap, unit_vmap, RDI_VMapEntry)\ -X(Namespaces, namespaces, RDI_Namespace)\ -X(TypeNodes, type_nodes, RDI_TypeNode)\ -X(UDTs, udts, RDI_UDT)\ -X(Members, members, RDI_Member)\ -X(EnumMembers, enum_members, RDI_EnumMember)\ -X(Scopes, scopes, RDI_Scope)\ -X(ScopeVOffData, scope_voff_data, RDI_U64)\ -X(ScopeVMap, scope_vmap, RDI_VMapEntry)\ -X(InlineSites, inline_sites, RDI_InlineSite)\ -X(GlobalVariables, global_variables, RDI_Symbol)\ -X(GlobalVMap, global_vmap, RDI_VMapEntry)\ -X(ThreadVariables, thread_variables, RDI_Symbol)\ -X(Constants, constants, RDI_Symbol)\ -X(Procedures, procedures, RDI_Symbol)\ -X(LocalVariables, local_variables, RDI_Symbol)\ -X(LocationsBytecodeData, locations_bytecode_data, RDI_U8)\ -X(LocationsConstantData, locations_constant_data, RDI_U8)\ -X(LocationsSetElements, locations_set_elements, RDI_LocationSetElement)\ -X(MD5Checksums, md5_checksums, RDI_MD5)\ -X(SHA1Checksums, sha1_checksums, RDI_SHA1)\ -X(SHA256Checksums, sha256_checksums, RDI_SHA256)\ -X(Timestamps, timestamps, RDI_U64)\ -X(NameMaps, name_maps, RDI_NameMap)\ -X(NameMapBuckets, name_map_buckets, RDI_NameMapBucket)\ -X(NameMapNodes, name_map_nodes, RDI_NameMapNode)\ - -#define RDI_SectionEncoding_XList \ -X(Unpacked)\ -X(LZB)\ - -#define RDI_Section_XList \ -X(RDI_SectionEncoding, encoding)\ -X(RDI_U32, pad)\ -X(RDI_U64, off)\ -X(RDI_U64, encoded_size)\ -X(RDI_U64, unpacked_size)\ - -#define RDI_VMapEntry_XList \ -X(RDI_U64, voff)\ -X(RDI_U64, idx)\ - -#define RDI_Arch_XList \ -X(NULL)\ -X(X64)\ -X(X86)\ - -#define RDI_RegCodeX64_XList \ -X(nil, 0)\ -X(rax, 1)\ -X(rcx, 2)\ -X(rdx, 3)\ -X(rbx, 4)\ -X(rsp, 5)\ -X(rbp, 6)\ -X(rsi, 7)\ -X(rdi, 8)\ -X(r8, 9)\ -X(r9, 10)\ -X(r10, 11)\ -X(r11, 12)\ -X(r12, 13)\ -X(r13, 14)\ -X(r14, 15)\ -X(r15, 16)\ -X(es, 17)\ -X(cs, 18)\ -X(ss, 19)\ -X(ds, 20)\ -X(fs, 21)\ -X(gs, 22)\ -X(rip, 23)\ -X(rflags, 24)\ -X(dr0, 25)\ -X(dr1, 26)\ -X(dr2, 27)\ -X(dr3, 28)\ -X(dr4, 29)\ -X(dr5, 30)\ -X(dr6, 31)\ -X(dr7, 32)\ -X(st0, 33)\ -X(st1, 34)\ -X(st2, 35)\ -X(st3, 36)\ -X(st4, 37)\ -X(st5, 38)\ -X(st6, 39)\ -X(st7, 40)\ -X(zmm0, 41)\ -X(zmm1, 42)\ -X(zmm2, 43)\ -X(zmm3, 44)\ -X(zmm4, 45)\ -X(zmm5, 46)\ -X(zmm6, 47)\ -X(zmm7, 48)\ -X(zmm8, 49)\ -X(zmm9, 50)\ -X(zmm10, 51)\ -X(zmm11, 52)\ -X(zmm12, 53)\ -X(zmm13, 54)\ -X(zmm14, 55)\ -X(zmm15, 56)\ -X(zmm16, 57)\ -X(zmm17, 58)\ -X(zmm18, 59)\ -X(zmm19, 60)\ -X(zmm20, 61)\ -X(zmm21, 62)\ -X(zmm22, 63)\ -X(zmm23, 64)\ -X(zmm24, 65)\ -X(zmm25, 66)\ -X(zmm26, 67)\ -X(zmm27, 68)\ -X(zmm28, 69)\ -X(zmm29, 70)\ -X(zmm30, 71)\ -X(zmm31, 72)\ -X(k0, 73)\ -X(k1, 74)\ -X(k2, 75)\ -X(k3, 76)\ -X(k4, 77)\ -X(k5, 78)\ -X(k6, 79)\ -X(k7, 80)\ -X(mxcsr, 81)\ -X(fsbase, 82)\ -X(gsbase, 83)\ -X(fcw, 84)\ -X(fsw, 85)\ -X(ftw, 86)\ -X(fop, 87)\ -X(fcs, 88)\ -X(fds, 89)\ -X(fip, 90)\ -X(fdp, 91)\ -X(mxcsr_mask, 92)\ -X(cetmsr, 93)\ -X(cetssp, 94)\ - -#define RDI_TopLevelInfo_XList \ -X(RDI_Arch, arch)\ -X(RDI_U32, exe_name_string_idx)\ -X(RDI_U64, exe_hash)\ -X(RDI_U64, voff_max)\ -X(RDI_GUID, guid)\ -X(RDI_U32, producer_name_string_idx)\ - -#define RDI_BinarySectionFlags_XList \ -X(Read)\ -X(Write)\ -X(Execute)\ - -#define RDI_BinarySection_XList \ -X(RDI_U32, name_string_idx)\ -X(RDI_BinarySectionFlags, flags)\ -X(RDI_U64, voff_first)\ -X(RDI_U64, voff_opl)\ -X(RDI_U64, foff_first)\ -X(RDI_U64, foff_opl)\ - -#define RDI_ChecksumKind_XList \ -X(NULL, NULL)\ -X(MD5, MD5Checksums)\ -X(SHA1, SHA1Checksums)\ -X(SHA256, SHA256Checksums)\ -X(Timestamp, Timestamps)\ -X(COUNT, NULL)\ - -#define RDI_FilePathNode_XList \ -X(RDI_U32, name_string_idx)\ -X(RDI_U32, parent_path_node)\ -X(RDI_U32, first_child)\ -X(RDI_U32, next_sibling)\ -X(RDI_U32, source_file_idx)\ - -#define RDI_SourceFile_XList \ -X(RDI_U32, file_path_node_idx)\ -X(RDI_U32, normal_full_path_string_idx)\ -X(RDI_U32, source_line_map_idx)\ -X(RDI_ChecksumKind, checksum_kind)\ -X(RDI_U32, checksum_idx)\ - -#define RDI_Unit_XList \ -X(RDI_U32, unit_name_string_idx)\ -X(RDI_U32, compiler_name_string_idx)\ -X(RDI_U32, source_file_path_node)\ -X(RDI_U32, object_file_path_node)\ -X(RDI_U32, archive_file_path_node)\ -X(RDI_U32, build_path_node)\ -X(RDI_Language, language)\ -X(RDI_U32, line_table_idx)\ -X(RDI_U32, procedures_first_idx)\ -X(RDI_U32, procedures_count)\ -X(RDI_U32, global_variables_first_idx)\ -X(RDI_U32, global_variables_count)\ -X(RDI_U32, thread_variables_first_idx)\ -X(RDI_U32, thread_variables_count)\ -X(RDI_U32, constants_first_idx)\ -X(RDI_U32, constants_count)\ - -#define RDI_LineTable_XList \ -X(RDI_U32, voffs_base_idx)\ -X(RDI_U32, lines_base_idx)\ -X(RDI_U32, cols_base_idx)\ -X(RDI_U32, lines_count)\ -X(RDI_U32, cols_count)\ - -#define RDI_Line_XList \ -X(RDI_U32, file_idx)\ -X(RDI_U32, line_num)\ - -#define RDI_Column_XList \ -X(RDI_U16, col_first)\ -X(RDI_U16, col_opl)\ - -#define RDI_SourceLineMapMemberTable \ -X(RDI_U32, line_count)\ -X(RDI_U32, voff_count)\ -X(RDI_U32, line_map_nums_base_idx)\ -X(RDI_U32, line_map_range_base_idx)\ -X(RDI_U32, line_map_voff_base_idx)\ - -#define RDI_Language_XList \ -X(NULL)\ -X(C)\ -X(CPlusPlus)\ -X(Masm)\ -X(COUNT)\ - -#define RDI_TypeKind_XList \ -X(NULL)\ -X(Void)\ -X(Handle)\ -X(HResult)\ -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(BF16)\ -X(F16)\ -X(F32)\ -X(F32PP)\ -X(F48)\ -X(F64)\ -X(F80)\ -X(F96)\ -X(F128)\ -X(ComplexF32)\ -X(ComplexF64)\ -X(ComplexF80)\ -X(ComplexF128)\ -X(Decimal32)\ -X(Decimal64)\ -X(Decimal128)\ -X(Variadic)\ -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(COUNT)\ - -#define RDI_TypeModifierFlags_XList \ -X(Const)\ -X(Volatile)\ -X(Restrict)\ - -#define RDI_TypeNode_XList \ -X(RDI_TypeKind, kind)\ -X(RDI_U16, flags)\ -X(RDI_U32, byte_size)\ - -#define RDI_UDTFlags_XList \ -X(EnumMembers)\ - -#define RDI_UDT_XList \ -X(RDI_U32, self_type_idx)\ -X(RDI_UDTFlags, flags)\ -X(RDI_ContainerFlags, container_flags)\ -X(RDI_U16, reserved_0)\ -X(RDI_U32, member_first)\ -X(RDI_U32, member_count)\ -X(RDI_U32, file_idx)\ -X(RDI_U32, line)\ -X(RDI_U32, col)\ -X(RDI_U32, container_idx)\ - -#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_Member_XList \ -X(RDI_MemberKind, kind)\ -X(RDI_U16, pad)\ -X(RDI_U32, name_string_idx)\ -X(RDI_U32, type_idx)\ -X(RDI_U32, off)\ - -#define RDI_EnumMember_XList \ -X(RDI_U32, name_string_idx)\ -X(RDI_U32, pad)\ -X(RDI_U64, val)\ - -#define RDI_LinkFlags_XList \ -X($(a.name != COUNT -> a.name))\ - -#define RDI_LocationKind_XList \ -X(NULL)\ -X(AddrBytecodeStream)\ -X(ValBytecodeStream)\ -X(AddrRegPlusOff)\ -X(AddrAddrRegPlusOff)\ -X(ValReg)\ -X(ModuleOff)\ -X(TLSOff)\ -X(ConstantDataOff)\ -X(Set)\ - -#define RDI_Namespace_XList \ -X(RDI_U32, name_string_idx)\ -X(RDI_ContainerFlags, container_flags)\ -X(RDI_U8, padding_0)\ -X(RDI_U16, padding_1)\ -X(RDI_U32, container_idx)\ - -#define RDI_Symbol_XList \ -X(RDI_U32, name_string_idx)\ -X(RDI_SymbolFlags, symbol_flags)\ -X(RDI_ContainerFlags, container_flags)\ -X(RDI_U16, reserved_0)\ -X(RDI_Location, location)\ -X(RDI_U32, container_idx)\ -X(RDI_U32, type_idx)\ -X(RDI_U32, root_scope_idx)\ -X(RDI_U32, link_name_string_idx)\ - -#define RDI_Scope_XList \ -X(RDI_U32, proc_idx)\ -X(RDI_U32, parent_scope_idx)\ -X(RDI_U32, first_child_scope_idx)\ -X(RDI_U32, next_sibling_scope_idx)\ -X(RDI_U32, voff_range_first)\ -X(RDI_U32, voff_range_opl)\ -X(RDI_U32, local_first)\ -X(RDI_U32, local_count)\ -X(RDI_U32, inline_site_idx)\ - -#define RDI_InlineSite_XList \ -X(RDI_U32, name_string_idx)\ -X(RDI_U32, type_idx)\ -X(RDI_U32, owner_type_idx)\ -X(RDI_U32, line_table_idx)\ - -#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(ConstU128)\ -X(ConstString)\ -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(ValueRead)\ -X(ByteSwap)\ -X(CallSiteValue)\ -X(PartialValue)\ -X(PartialValueBit)\ -X(Swap)\ -X(PushCfa)\ - -#define RDI_EvalTypeGroup_XList \ -X(Other)\ -X(U)\ -X(S)\ -X(F32)\ -X(F64)\ -X(F80)\ -X(F128)\ - -#define RDI_EvalConversionKind_XList \ -X(Noop)\ -X(Legal)\ -X(OtherToOther)\ -X(ToOther)\ -X(FromOther)\ - -#define RDI_NameMapKind_XList \ -X(NULL)\ -X(GlobalVariables)\ -X(ThreadVariables)\ -X(Constants)\ -X(Procedures)\ -X(Types)\ -X(LinkNameProcedures)\ -X(NormalSourcePaths)\ - -#define RDI_NameMap_XList \ -X(RDI_U32, bucket_base_idx)\ -X(RDI_U32, node_base_idx)\ -X(RDI_U32, bucket_count)\ -X(RDI_U32, node_count)\ - -#define RDI_NameMapBucket_XList \ -X(RDI_U32, first_node)\ -X(RDI_U32, node_count)\ - -#define RDI_NameMapNode_XList \ -X(RDI_U32, string_idx)\ -X(RDI_U32, match_count)\ -X(RDI_U32, match_idx_or_idx_run_first)\ - -#if !RDI_DISABLE_TABLE_INDEX_TYPECHECKING -typedef struct RDI_U32_StringTable { RDI_U32 v; } RDI_U32_StringTable; -typedef struct RDI_U32_IndexRuns { RDI_U32 v; } RDI_U32_IndexRuns; -typedef struct RDI_U32_BinarySections { RDI_U32 v; } RDI_U32_BinarySections; -typedef struct RDI_U32_FilePathNodes { RDI_U32 v; } RDI_U32_FilePathNodes; -typedef struct RDI_U32_SourceFiles { RDI_U32 v; } RDI_U32_SourceFiles; -typedef struct RDI_U32_LineTables { RDI_U32 v; } RDI_U32_LineTables; -typedef struct RDI_U32_LineInfoVOffs { RDI_U32 v; } RDI_U32_LineInfoVOffs; -typedef struct RDI_U32_LineInfoLines { RDI_U32 v; } RDI_U32_LineInfoLines; -typedef struct RDI_U32_LineInfoColumns { RDI_U32 v; } RDI_U32_LineInfoColumns; -typedef struct RDI_U32_SourceLineMaps { RDI_U32 v; } RDI_U32_SourceLineMaps; -typedef struct RDI_U32_SourceLineMapNumbers { RDI_U32 v; } RDI_U32_SourceLineMapNumbers; -typedef struct RDI_U32_SourceLineMapRanges { RDI_U32 v; } RDI_U32_SourceLineMapRanges; -typedef struct RDI_U32_SourceLineMapVOffs { RDI_U32 v; } RDI_U32_SourceLineMapVOffs; -typedef struct RDI_U32_Units { RDI_U32 v; } RDI_U32_Units; -typedef struct RDI_U32_Namespaces { RDI_U32 v; } RDI_U32_Namespaces; -typedef struct RDI_U32_TypeNodes { RDI_U32 v; } RDI_U32_TypeNodes; -typedef struct RDI_U32_UDTs { RDI_U32 v; } RDI_U32_UDTs; -typedef struct RDI_U32_Members { RDI_U32 v; } RDI_U32_Members; -typedef struct RDI_U32_EnumMembers { RDI_U32 v; } RDI_U32_EnumMembers; -typedef struct RDI_U32_Scopes { RDI_U32 v; } RDI_U32_Scopes; -typedef struct RDI_U32_ScopeVOffData { RDI_U32 v; } RDI_U32_ScopeVOffData; -typedef struct RDI_U32_InlineSites { RDI_U32 v; } RDI_U32_InlineSites; -typedef struct RDI_U32_GlobalVariables { RDI_U32 v; } RDI_U32_GlobalVariables; -typedef struct RDI_U32_ThreadVariables { RDI_U32 v; } RDI_U32_ThreadVariables; -typedef struct RDI_U32_Constants { RDI_U32 v; } RDI_U32_Constants; -typedef struct RDI_U32_Procedures { RDI_U32 v; } RDI_U32_Procedures; -typedef struct RDI_U32_LocalVariables { RDI_U32 v; } RDI_U32_LocalVariables; -typedef struct RDI_U32_LocationsBytecodeData { RDI_U32 v; } RDI_U32_LocationsBytecodeData; -typedef struct RDI_U32_LocationsConstantData { RDI_U32 v; } RDI_U32_LocationsConstantData; -typedef struct RDI_U32_LocationsSetElements { RDI_U32 v; } RDI_U32_LocationsSetElements; -typedef struct RDI_U32_MD5Checksums { RDI_U32 v; } RDI_U32_MD5Checksums; -typedef struct RDI_U32_SHA1Checksums { RDI_U32 v; } RDI_U32_SHA1Checksums; -typedef struct RDI_U32_SHA256Checksums { RDI_U32 v; } RDI_U32_SHA256Checksums; -typedef struct RDI_U32_Timestamps { RDI_U32 v; } RDI_U32_Timestamps; -typedef struct RDI_U32_NameMaps { RDI_U32 v; } RDI_U32_NameMaps; -typedef struct RDI_U32_NameMapBuckets { RDI_U32 v; } RDI_U32_NameMapBuckets; -typedef struct RDI_U32_NameMapNodes { RDI_U32 v; } RDI_U32_NameMapNodes; -#else -typedef struct RDI_U32_Table { RDI_U32 v; } RDI_U32_Table; -typedef struct RDI_U64_Table { RDI_U64 v; } RDI_U64_Table; -typedef RDI_U32_Table RDI_U32_StringTable; -typedef RDI_U32_Table RDI_U32_IndexRuns; -typedef RDI_U32_Table RDI_U32_BinarySections; -typedef RDI_U32_Table RDI_U32_FilePathNodes; -typedef RDI_U32_Table RDI_U32_SourceFiles; -typedef RDI_U32_Table RDI_U32_LineTables; -typedef RDI_U32_Table RDI_U32_LineInfoVOffs; -typedef RDI_U32_Table RDI_U32_LineInfoLines; -typedef RDI_U32_Table RDI_U32_LineInfoColumns; -typedef RDI_U32_Table RDI_U32_SourceLineMaps; -typedef RDI_U32_Table RDI_U32_SourceLineMapNumbers; -typedef RDI_U32_Table RDI_U32_SourceLineMapRanges; -typedef RDI_U32_Table RDI_U32_SourceLineMapVOffs; -typedef RDI_U32_Table RDI_U32_Units; -typedef RDI_U32_Table RDI_U32_Namespaces; -typedef RDI_U32_Table RDI_U32_TypeNodes; -typedef RDI_U32_Table RDI_U32_UDTs; -typedef RDI_U32_Table RDI_U32_Members; -typedef RDI_U32_Table RDI_U32_EnumMembers; -typedef RDI_U32_Table RDI_U32_Scopes; -typedef RDI_U32_Table RDI_U32_ScopeVOffData; -typedef RDI_U32_Table RDI_U32_InlineSites; -typedef RDI_U32_Table RDI_U32_GlobalVariables; -typedef RDI_U32_Table RDI_U32_ThreadVariables; -typedef RDI_U32_Table RDI_U32_Constants; -typedef RDI_U32_Table RDI_U32_Procedures; -typedef RDI_U32_Table RDI_U32_LocalVariables; -typedef RDI_U32_Table RDI_U32_LocationsBytecodeData; -typedef RDI_U32_Table RDI_U32_LocationsConstantData; -typedef RDI_U32_Table RDI_U32_LocationsSetElements; -typedef RDI_U32_Table RDI_U32_MD5Checksums; -typedef RDI_U32_Table RDI_U32_SHA1Checksums; -typedef RDI_U32_Table RDI_U32_SHA256Checksums; -typedef RDI_U32_Table RDI_U32_Timestamps; -typedef RDI_U32_Table RDI_U32_NameMaps; -typedef RDI_U32_Table RDI_U32_NameMapBuckets; -typedef RDI_U32_Table RDI_U32_NameMapNodes; -#endif - -typedef RDI_U64 RDI_Location; -#define RDI_Location_KindMask 0xff00000000000000ull -#define RDI_Location_KindShift 56 -#define RDI_Location_OffMask 0x00ffffffffffffffull -#define RDI_Location_OffShift 0 -#define RDI_Location_SetFirstIndexMask 0x00000000ffffffffull -#define RDI_Location_SetFirstIndexShift 0 -#define RDI_Location_SetCountMask 0x00ffffff00000000ull -#define RDI_Location_SetCountShift 32 -#define RDI_Location_RegCodeMask 0x00ff000000000000ull -#define RDI_Location_RegCodeShift 48 -#define RDI_Location_RegOffMask 0x0000ffff00000000ull -#define RDI_Location_RegOffShift 32 -#define rdi_kind_from_location(l) ((((l) & RDI_Location_KindMask) >> RDI_Location_KindShift)) -#define rdi_regcode_from_location(l) ((rdi_kind_from_location(l) == RDI_LocationKind_AddrRegPlusOff || rdi_kind_from_location(l) == RDI_LocationKind_AddrAddrRegPlusOff || rdi_kind_from_location(l) == RDI_LocationKind_ValReg) ? (((l) & RDI_Location_RegCodeMask) >> RDI_Location_RegCodeShift) : 0) -#define rdi_regoff_from_location(l) (RDI_S64)(RDI_S32)(RDI_S16)((rdi_kind_from_location(l) == RDI_LocationKind_AddrRegPlusOff || rdi_kind_from_location(l) == RDI_LocationKind_AddrAddrRegPlusOff) ? (((l) & RDI_Location_RegOffMask) >> RDI_Location_RegOffShift) : 0) -#define rdi_voff_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_ModuleOff ? (((l) & RDI_Location_OffMask) >> RDI_Location_OffShift) : 0) -#define rdi_toff_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_TLSOff ? (((l) & RDI_Location_OffMask) >> RDI_Location_OffShift) : 0) -#define rdi_constant_data_off_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_ConstantDataOff ? (((l) & RDI_Location_OffMask) >> RDI_Location_OffShift) : 0) -#define rdi_bytecode_data_off_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_AddrBytecodeStream || rdi_kind_from_location(l) == RDI_LocationKind_ValBytecodeStream ? (((l) & RDI_Location_OffMask) >> RDI_Location_OffShift) : 0) -#define rdi_set_first_index_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_Set ? (((l) & RDI_Location_SetFirstIndexMask) >> RDI_Location_SetFirstIndexShift) : 0) -#define rdi_set_count_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_Set ? (((l) & RDI_Location_SetCountMask) >> RDI_Location_SetCountShift) : 0) -#define rdi_location_voff(voff) ((((RDI_U64)RDI_LocationKind_ModuleOff << RDI_Location_KindShift) & RDI_Location_KindMask) | ((voff) & ~RDI_Location_KindMask)) -#define rdi_location_toff(toff) ((((RDI_U64)RDI_LocationKind_TLSOff << RDI_Location_KindShift) & RDI_Location_KindMask) | ((toff) & ~RDI_Location_KindMask)) -#define rdi_location_constant_data_off(off) ((((RDI_U64)RDI_LocationKind_ConstantDataOff << RDI_Location_KindShift) & RDI_Location_KindMask) | ((off) & ~RDI_Location_KindMask)) -#define rdi_location_reg(kind, reg, off) ((((RDI_U64)(kind) << RDI_Location_KindShift) & RDI_Location_KindMask) | (((RDI_U64)(reg) << RDI_Location_RegCodeShift) & RDI_Location_RegCodeMask) | (((RDI_U64)(off) << RDI_Location_RegOffShift) & RDI_Location_RegOffMask)) -#define rdi_location_bytecode(kind, off) ((((RDI_U64)(kind) << RDI_Location_KindShift) & RDI_Location_KindMask) | (((RDI_U64)(off) << RDI_Location_OffShift) & RDI_Location_OffMask)) -#define RDI_EVAL_CTRLBITS(decodeN,popN,pushN) (((decodeN) << 8) | ((popN) << 4) | ((pushN) << 0)) -#define RDI_DECODEN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 8) & 0xff) -#define RDI_POPN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 4) & 0xf) -#define RDI_PUSHN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 0) & 0xf) -#define RDI_EncodeRegReadParam(reg,bytesize,bytepos) ((reg)|((bytesize)<<8)|((bytepos)<<16)) - -typedef struct RDI_Header RDI_Header; -struct RDI_Header -{ -RDI_U64 magic; -RDI_U32 encoding_version; -RDI_U32 data_section_off; -RDI_U32 data_section_count; -}; - -typedef struct RDI_Section RDI_Section; -struct RDI_Section -{ -RDI_SectionEncoding encoding; -RDI_U32 pad; -RDI_U64 off; -RDI_U64 encoded_size; -RDI_U64 unpacked_size; -}; - -typedef struct RDI_VMapEntry RDI_VMapEntry; -struct RDI_VMapEntry -{ -RDI_U64 voff; -RDI_U64 idx; -}; - -typedef struct RDI_TopLevelInfo RDI_TopLevelInfo; -struct RDI_TopLevelInfo -{ -RDI_Arch arch; -RDI_U32 exe_name_string_idx; -RDI_U64 exe_hash; -RDI_U64 voff_max; -RDI_GUID guid; -RDI_U32 producer_name_string_idx; -}; - -typedef struct RDI_BinarySection RDI_BinarySection; -struct RDI_BinarySection -{ -RDI_U32 name_string_idx; -RDI_BinarySectionFlags flags; -RDI_U64 voff_first; -RDI_U64 voff_opl; -RDI_U64 foff_first; -RDI_U64 foff_opl; -}; - -typedef struct RDI_FilePathNode RDI_FilePathNode; -struct RDI_FilePathNode -{ -RDI_U32 name_string_idx; -RDI_U32 parent_path_node; -RDI_U32 first_child; -RDI_U32 next_sibling; -RDI_U32 source_file_idx; -}; - -typedef struct RDI_SourceFile RDI_SourceFile; -struct RDI_SourceFile -{ -RDI_U32 file_path_node_idx; -RDI_U32 normal_full_path_string_idx; -RDI_U32 source_line_map_idx; -RDI_ChecksumKind checksum_kind; -RDI_U32 checksum_idx; -}; - -typedef struct RDI_Unit RDI_Unit; -struct RDI_Unit -{ -RDI_U32 unit_name_string_idx; -RDI_U32 compiler_name_string_idx; -RDI_U32 source_file_path_node; -RDI_U32 object_file_path_node; -RDI_U32 archive_file_path_node; -RDI_U32 build_path_node; -RDI_Language language; -RDI_U32 line_table_idx; -RDI_U32 procedures_first_idx; -RDI_U32 procedures_count; -RDI_U32 global_variables_first_idx; -RDI_U32 global_variables_count; -RDI_U32 thread_variables_first_idx; -RDI_U32 thread_variables_count; -RDI_U32 constants_first_idx; -RDI_U32 constants_count; -}; - -typedef struct RDI_LineTable RDI_LineTable; -struct RDI_LineTable -{ -RDI_U32 voffs_base_idx; -RDI_U32 lines_base_idx; -RDI_U32 cols_base_idx; -RDI_U32 lines_count; -RDI_U32 cols_count; -}; - -typedef struct RDI_Line RDI_Line; -struct RDI_Line -{ -RDI_U32 file_idx; -RDI_U32 line_num; -}; - -typedef struct RDI_Column RDI_Column; -struct RDI_Column -{ -RDI_U16 col_first; -RDI_U16 col_opl; -}; - -typedef struct RDI_SourceLineMap RDI_SourceLineMap; -struct RDI_SourceLineMap -{ -RDI_U32 line_count; -RDI_U32 voff_count; -RDI_U32 line_map_nums_base_idx; -RDI_U32 line_map_range_base_idx; -RDI_U32 line_map_voff_base_idx; -}; - -typedef struct RDI_TypeNode RDI_TypeNode; -struct RDI_TypeNode -{ -RDI_TypeKind kind; -RDI_U16 flags; -RDI_U32 byte_size; - - union - { - // kind is 'built-in' - struct - { - RDI_U32 name_string_idx; - } built_in; - - // kind is 'constructed' - struct - { - RDI_U32 direct_type_idx; - RDI_U32 count; - union - { - // when kind is 'Function' or 'Method' - RDI_U32 param_idx_run_first; - // when kind is 'MemberPtr' - RDI_U32 owner_type_idx; - }; - } - constructed; - - // kind is 'user defined' - struct - { - RDI_U32 name_string_idx; - RDI_U32 direct_type_idx; - RDI_U32 udt_idx; - } - user_defined; - - // (kind = Bitfield) - struct - { - RDI_U32 direct_type_idx; - RDI_U32 off; - RDI_U32 size; - } - bitfield; - } - ; -}; - -typedef struct RDI_UDT RDI_UDT; -struct RDI_UDT -{ -RDI_U32 self_type_idx; -RDI_UDTFlags flags; -RDI_ContainerFlags container_flags; -RDI_U16 reserved_0; -RDI_U32 member_first; -RDI_U32 member_count; -RDI_U32 file_idx; -RDI_U32 line; -RDI_U32 col; -RDI_U32 container_idx; -}; - -typedef struct RDI_Member RDI_Member; -struct RDI_Member -{ -RDI_MemberKind kind; -RDI_U16 pad; -RDI_U32 name_string_idx; -RDI_U32 type_idx; -RDI_U32 off; -}; - -typedef struct RDI_EnumMember RDI_EnumMember; -struct RDI_EnumMember -{ -RDI_U32 name_string_idx; -RDI_U32 pad; -RDI_U64 val; -}; - -typedef struct RDI_Namespace RDI_Namespace; -struct RDI_Namespace -{ -RDI_U32 name_string_idx; -RDI_ContainerFlags container_flags; -RDI_U8 padding_0; -RDI_U16 padding_1; -RDI_U32 container_idx; -}; - -typedef struct RDI_Symbol RDI_Symbol; -struct RDI_Symbol -{ -RDI_U32 name_string_idx; -RDI_SymbolFlags symbol_flags; -RDI_ContainerFlags container_flags; -RDI_U16 reserved_0; -RDI_Location location; -RDI_U32 container_idx; -RDI_U32 type_idx; -RDI_U32 root_scope_idx; -RDI_U32 link_name_string_idx; -}; - -typedef struct RDI_Scope RDI_Scope; -struct RDI_Scope -{ -RDI_U32 proc_idx; -RDI_U32 parent_scope_idx; -RDI_U32 first_child_scope_idx; -RDI_U32 next_sibling_scope_idx; -RDI_U32 voff_range_first; -RDI_U32 voff_range_opl; -RDI_U32 local_first; -RDI_U32 local_count; -RDI_U32 inline_site_idx; -}; - -typedef struct RDI_InlineSite RDI_InlineSite; -struct RDI_InlineSite -{ -RDI_U32 name_string_idx; -RDI_U32 type_idx; -RDI_U32 owner_type_idx; -RDI_U32 line_table_idx; -}; - -typedef struct RDI_LocationSetElement RDI_LocationSetElement; -struct RDI_LocationSetElement -{ -RDI_U64 voff_first; -RDI_U64 voff_opl; -RDI_Location location; -}; - -typedef struct RDI_NameMap RDI_NameMap; -struct RDI_NameMap -{ -RDI_U32 bucket_base_idx; -RDI_U32 node_base_idx; -RDI_U32 bucket_count; -RDI_U32 node_count; -}; - -typedef struct RDI_NameMapBucket RDI_NameMapBucket; -struct RDI_NameMapBucket -{ -RDI_U32 first_node; -RDI_U32 node_count; -}; - -typedef struct RDI_NameMapNode RDI_NameMapNode; -struct RDI_NameMapNode -{ -RDI_U32 string_idx; -RDI_U32 match_count; -RDI_U32 match_idx_or_idx_run_first; -}; - -typedef RDI_TopLevelInfo RDI_SectionElementType_TopLevelInfo; -typedef RDI_U8 RDI_SectionElementType_StringData; -typedef RDI_U32 RDI_SectionElementType_StringTable; -typedef RDI_U32 RDI_SectionElementType_IndexRuns; -typedef RDI_BinarySection RDI_SectionElementType_BinarySections; -typedef RDI_FilePathNode RDI_SectionElementType_FilePathNodes; -typedef RDI_SourceFile RDI_SectionElementType_SourceFiles; -typedef RDI_LineTable RDI_SectionElementType_LineTables; -typedef RDI_U64 RDI_SectionElementType_LineInfoVOffs; -typedef RDI_Line RDI_SectionElementType_LineInfoLines; -typedef RDI_Column RDI_SectionElementType_LineInfoColumns; -typedef RDI_SourceLineMap RDI_SectionElementType_SourceLineMaps; -typedef RDI_U32 RDI_SectionElementType_SourceLineMapNumbers; -typedef RDI_U32 RDI_SectionElementType_SourceLineMapRanges; -typedef RDI_U64 RDI_SectionElementType_SourceLineMapVOffs; -typedef RDI_Unit RDI_SectionElementType_Units; -typedef RDI_VMapEntry RDI_SectionElementType_UnitVMap; -typedef RDI_Namespace RDI_SectionElementType_Namespaces; -typedef RDI_TypeNode RDI_SectionElementType_TypeNodes; -typedef RDI_UDT RDI_SectionElementType_UDTs; -typedef RDI_Member RDI_SectionElementType_Members; -typedef RDI_EnumMember RDI_SectionElementType_EnumMembers; -typedef RDI_Scope RDI_SectionElementType_Scopes; -typedef RDI_U64 RDI_SectionElementType_ScopeVOffData; -typedef RDI_VMapEntry RDI_SectionElementType_ScopeVMap; -typedef RDI_InlineSite RDI_SectionElementType_InlineSites; -typedef RDI_Symbol RDI_SectionElementType_GlobalVariables; -typedef RDI_VMapEntry RDI_SectionElementType_GlobalVMap; -typedef RDI_Symbol RDI_SectionElementType_ThreadVariables; -typedef RDI_Symbol RDI_SectionElementType_Constants; -typedef RDI_Symbol RDI_SectionElementType_Procedures; -typedef RDI_Symbol RDI_SectionElementType_LocalVariables; -typedef RDI_U8 RDI_SectionElementType_LocationsBytecodeData; -typedef RDI_U8 RDI_SectionElementType_LocationsConstantData; -typedef RDI_LocationSetElement RDI_SectionElementType_LocationsSetElements; -typedef RDI_MD5 RDI_SectionElementType_MD5Checksums; -typedef RDI_SHA1 RDI_SectionElementType_SHA1Checksums; -typedef RDI_SHA256 RDI_SectionElementType_SHA256Checksums; -typedef RDI_U64 RDI_SectionElementType_Timestamps; -typedef RDI_NameMap RDI_SectionElementType_NameMaps; -typedef RDI_NameMapBucket RDI_SectionElementType_NameMapBuckets; -typedef RDI_NameMapNode RDI_SectionElementType_NameMapNodes; - -RDI_PROC RDI_U64 rdi_hash(RDI_U8 *ptr, RDI_U64 size); -RDI_PROC RDI_U8 *rdi_string_from_type_kind(RDI_TypeKind kind, RDI_U64 *size_out); -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_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_U16 rdi_section_element_size_table[44]; -extern RDI_U16 rdi_eval_op_ctrlbits_table[54]; - -#endif // RDI_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//////////////////////////////////////////////////////////////// +//~ (R)AD (D)ebug (I)nfo Format Library +// +// Defines standard RDI debug information format types and +// functions. + +#ifndef RDI_H +#define RDI_H + +//////////////////////////////////////////////////////////////// +//~ Overridable Procedure Decoration + +#if !defined(RDI_PROC) +# define RDI_PROC static +#endif + +//////////////////////////////////////////////////////////////// +//~ Overridable Basic Integer Types + +#if !defined(RDI_U8) +# define RDI_U8 RDI_U8 +# define RDI_U16 RDI_U16 +# define RDI_U32 RDI_U32 +# define RDI_U64 RDI_U64 +# define RDI_S8 RDI_S8 +# define RDI_S16 RDI_S16 +# define RDI_S32 RDI_S32 +# define RDI_S64 RDI_S64 +#include +typedef uint8_t RDI_U8; +typedef uint16_t RDI_U16; +typedef uint32_t RDI_U32; +typedef uint64_t RDI_U64; +typedef int8_t RDI_S8; +typedef int16_t RDI_S16; +typedef int32_t RDI_S32; +typedef int64_t RDI_S64; +#endif + +//////////////////////////////////////////////////////////////// +//~ Checksum Types + +typedef union RDI_MD5 RDI_MD5; +union RDI_MD5 {RDI_U8 u8[16]; RDI_U64 u64[2];}; + +typedef union RDI_SHA1 RDI_SHA1; +union RDI_SHA1 {RDI_U8 u8[20];}; + +typedef union RDI_SHA256 RDI_SHA256; +union RDI_SHA256 {RDI_U8 u8[32]; RDI_U64 u64[4];}; + +typedef union RDI_GUID RDI_GUID; +union RDI_GUID {RDI_U8 u8[16]; RDI_U64 u64[2];}; + +//////////////////////////////////////////////////////////////// +//~ Overridable Enabling/Disabling Of Table Index Typechecking + +#if !defined(RDI_DISABLE_TABLE_INDEX_TYPECHECKING) +# define RDI_DISABLE_TABLE_INDEX_TYPECHECKING 0 +#endif + +//////////////////////////////////////////////////////////////// +//~ Format Constants + +// "raddbg\0\0" +#define RDI_MAGIC_CONSTANT 0x0000676264646172 +#define RDI_ENCODING_VERSION 22 + +//////////////////////////////////////////////////////////////// +//~ Format Types & Functions + +typedef RDI_U32 RDI_SectionKind; +typedef enum RDI_SectionKindEnum +{ +RDI_SectionKind_NULL = 0x0000, +RDI_SectionKind_TopLevelInfo = 0x0001, +RDI_SectionKind_StringData = 0x0002, +RDI_SectionKind_StringTable = 0x0003, +RDI_SectionKind_IndexRuns = 0x0004, +RDI_SectionKind_BinarySections = 0x0005, +RDI_SectionKind_FilePathNodes = 0x0006, +RDI_SectionKind_SourceFiles = 0x0007, +RDI_SectionKind_LineTables = 0x0008, +RDI_SectionKind_LineInfoVOffs = 0x0009, +RDI_SectionKind_LineInfoLines = 0x000A, +RDI_SectionKind_LineInfoColumns = 0x000B, +RDI_SectionKind_SourceLineMaps = 0x000C, +RDI_SectionKind_SourceLineMapNumbers = 0x000D, +RDI_SectionKind_SourceLineMapRanges = 0x000E, +RDI_SectionKind_SourceLineMapVOffs = 0x000F, +RDI_SectionKind_Units = 0x0010, +RDI_SectionKind_UnitVMap = 0x0011, +RDI_SectionKind_Namespaces = 0x0012, +RDI_SectionKind_TypeNodes = 0x0013, +RDI_SectionKind_UDTs = 0x0014, +RDI_SectionKind_Members = 0x0015, +RDI_SectionKind_EnumMembers = 0x0016, +RDI_SectionKind_Scopes = 0x0017, +RDI_SectionKind_ScopeVOffData = 0x0018, +RDI_SectionKind_ScopeVMap = 0x0019, +RDI_SectionKind_InlineSites = 0x001A, +RDI_SectionKind_GlobalVariables = 0x001B, +RDI_SectionKind_GlobalVMap = 0x001C, +RDI_SectionKind_ThreadVariables = 0x001D, +RDI_SectionKind_Constants = 0x001E, +RDI_SectionKind_Procedures = 0x001F, +RDI_SectionKind_LocalVariables = 0x0020, +RDI_SectionKind_LocationsBytecodeData = 0x0021, +RDI_SectionKind_LocationsConstantData = 0x0022, +RDI_SectionKind_LocationsSetElements = 0x0023, +RDI_SectionKind_MD5Checksums = 0x0024, +RDI_SectionKind_SHA1Checksums = 0x0025, +RDI_SectionKind_SHA256Checksums = 0x0026, +RDI_SectionKind_Timestamps = 0x0027, +RDI_SectionKind_NameMaps = 0x0028, +RDI_SectionKind_NameMapBuckets = 0x0029, +RDI_SectionKind_NameMapNodes = 0x002A, +RDI_SectionKind_COUNT = 0x002B, +} RDI_SectionKindEnum; + +typedef RDI_U32 RDI_SectionEncoding; +typedef enum RDI_SectionEncodingEnum +{ +RDI_SectionEncoding_Unpacked = 0, +RDI_SectionEncoding_LZB = 1, +} RDI_SectionEncodingEnum; + +typedef RDI_U32 RDI_Arch; +typedef enum RDI_ArchEnum +{ +RDI_Arch_NULL = 0, +RDI_Arch_X64 = 1, +RDI_Arch_X86 = 2, +} RDI_ArchEnum; + +typedef RDI_U8 RDI_RegCode; +typedef enum RDI_RegCodeEnum +{ +RDI_RegCode_nil, +} RDI_RegCodeEnum; + +typedef RDI_U8 RDI_RegCodeX64; +typedef enum RDI_RegCodeX64Enum +{ +RDI_RegCodeX64_nil = 0, +RDI_RegCodeX64_rax = 1, +RDI_RegCodeX64_rcx = 2, +RDI_RegCodeX64_rdx = 3, +RDI_RegCodeX64_rbx = 4, +RDI_RegCodeX64_rsp = 5, +RDI_RegCodeX64_rbp = 6, +RDI_RegCodeX64_rsi = 7, +RDI_RegCodeX64_rdi = 8, +RDI_RegCodeX64_r8 = 9, +RDI_RegCodeX64_r9 = 10, +RDI_RegCodeX64_r10 = 11, +RDI_RegCodeX64_r11 = 12, +RDI_RegCodeX64_r12 = 13, +RDI_RegCodeX64_r13 = 14, +RDI_RegCodeX64_r14 = 15, +RDI_RegCodeX64_r15 = 16, +RDI_RegCodeX64_es = 17, +RDI_RegCodeX64_cs = 18, +RDI_RegCodeX64_ss = 19, +RDI_RegCodeX64_ds = 20, +RDI_RegCodeX64_fs = 21, +RDI_RegCodeX64_gs = 22, +RDI_RegCodeX64_rip = 23, +RDI_RegCodeX64_rflags = 24, +RDI_RegCodeX64_dr0 = 25, +RDI_RegCodeX64_dr1 = 26, +RDI_RegCodeX64_dr2 = 27, +RDI_RegCodeX64_dr3 = 28, +RDI_RegCodeX64_dr4 = 29, +RDI_RegCodeX64_dr5 = 30, +RDI_RegCodeX64_dr6 = 31, +RDI_RegCodeX64_dr7 = 32, +RDI_RegCodeX64_st0 = 33, +RDI_RegCodeX64_st1 = 34, +RDI_RegCodeX64_st2 = 35, +RDI_RegCodeX64_st3 = 36, +RDI_RegCodeX64_st4 = 37, +RDI_RegCodeX64_st5 = 38, +RDI_RegCodeX64_st6 = 39, +RDI_RegCodeX64_st7 = 40, +RDI_RegCodeX64_zmm0 = 41, +RDI_RegCodeX64_zmm1 = 42, +RDI_RegCodeX64_zmm2 = 43, +RDI_RegCodeX64_zmm3 = 44, +RDI_RegCodeX64_zmm4 = 45, +RDI_RegCodeX64_zmm5 = 46, +RDI_RegCodeX64_zmm6 = 47, +RDI_RegCodeX64_zmm7 = 48, +RDI_RegCodeX64_zmm8 = 49, +RDI_RegCodeX64_zmm9 = 50, +RDI_RegCodeX64_zmm10 = 51, +RDI_RegCodeX64_zmm11 = 52, +RDI_RegCodeX64_zmm12 = 53, +RDI_RegCodeX64_zmm13 = 54, +RDI_RegCodeX64_zmm14 = 55, +RDI_RegCodeX64_zmm15 = 56, +RDI_RegCodeX64_zmm16 = 57, +RDI_RegCodeX64_zmm17 = 58, +RDI_RegCodeX64_zmm18 = 59, +RDI_RegCodeX64_zmm19 = 60, +RDI_RegCodeX64_zmm20 = 61, +RDI_RegCodeX64_zmm21 = 62, +RDI_RegCodeX64_zmm22 = 63, +RDI_RegCodeX64_zmm23 = 64, +RDI_RegCodeX64_zmm24 = 65, +RDI_RegCodeX64_zmm25 = 66, +RDI_RegCodeX64_zmm26 = 67, +RDI_RegCodeX64_zmm27 = 68, +RDI_RegCodeX64_zmm28 = 69, +RDI_RegCodeX64_zmm29 = 70, +RDI_RegCodeX64_zmm30 = 71, +RDI_RegCodeX64_zmm31 = 72, +RDI_RegCodeX64_k0 = 73, +RDI_RegCodeX64_k1 = 74, +RDI_RegCodeX64_k2 = 75, +RDI_RegCodeX64_k3 = 76, +RDI_RegCodeX64_k4 = 77, +RDI_RegCodeX64_k5 = 78, +RDI_RegCodeX64_k6 = 79, +RDI_RegCodeX64_k7 = 80, +RDI_RegCodeX64_mxcsr = 81, +RDI_RegCodeX64_fsbase = 82, +RDI_RegCodeX64_gsbase = 83, +RDI_RegCodeX64_fcw = 84, +RDI_RegCodeX64_fsw = 85, +RDI_RegCodeX64_ftw = 86, +RDI_RegCodeX64_fop = 87, +RDI_RegCodeX64_fcs = 88, +RDI_RegCodeX64_fds = 89, +RDI_RegCodeX64_fip = 90, +RDI_RegCodeX64_fdp = 91, +RDI_RegCodeX64_mxcsr_mask = 92, +RDI_RegCodeX64_cetmsr = 93, +RDI_RegCodeX64_cetssp = 94, +} RDI_RegCodeX64Enum; + +typedef RDI_U32 RDI_BinarySectionFlags; +typedef enum RDI_BinarySectionFlagsEnum +{ +RDI_BinarySectionFlag_Read = 1<<0, +RDI_BinarySectionFlag_Write = 1<<1, +RDI_BinarySectionFlag_Execute = 1<<2, +} RDI_BinarySectionFlagsEnum; + +typedef RDI_U32 RDI_ChecksumKind; +typedef enum RDI_ChecksumKindEnum +{ +RDI_ChecksumKind_NULL = 0, +RDI_ChecksumKind_MD5 = 1, +RDI_ChecksumKind_SHA1 = 2, +RDI_ChecksumKind_SHA256 = 3, +RDI_ChecksumKind_Timestamp = 4, +RDI_ChecksumKind_COUNT = 5, +} RDI_ChecksumKindEnum; + +typedef RDI_U32 RDI_Language; +typedef enum RDI_LanguageEnum +{ +RDI_Language_NULL = 0, +RDI_Language_C = 1, +RDI_Language_CPlusPlus = 2, +RDI_Language_Masm = 3, +RDI_Language_COUNT = 4, +} RDI_LanguageEnum; + +typedef RDI_U16 RDI_TypeKind; +typedef enum RDI_TypeKindEnum +{ +RDI_TypeKind_NULL = 0x0000, +RDI_TypeKind_Void = 0x0001, +RDI_TypeKind_Handle = 0x0002, +RDI_TypeKind_HResult = 0x0003, +RDI_TypeKind_Char8 = 0x0004, +RDI_TypeKind_Char16 = 0x0005, +RDI_TypeKind_Char32 = 0x0006, +RDI_TypeKind_UChar8 = 0x0007, +RDI_TypeKind_UChar16 = 0x0008, +RDI_TypeKind_UChar32 = 0x0009, +RDI_TypeKind_U8 = 0x000A, +RDI_TypeKind_U16 = 0x000B, +RDI_TypeKind_U32 = 0x000C, +RDI_TypeKind_U64 = 0x000D, +RDI_TypeKind_U128 = 0x000E, +RDI_TypeKind_U256 = 0x000F, +RDI_TypeKind_U512 = 0x0010, +RDI_TypeKind_S8 = 0x0011, +RDI_TypeKind_S16 = 0x0012, +RDI_TypeKind_S32 = 0x0013, +RDI_TypeKind_S64 = 0x0014, +RDI_TypeKind_S128 = 0x0015, +RDI_TypeKind_S256 = 0x0016, +RDI_TypeKind_S512 = 0x0017, +RDI_TypeKind_Bool = 0x0018, +RDI_TypeKind_BF16 = 0x0019, +RDI_TypeKind_F16 = 0x001A, +RDI_TypeKind_F32 = 0x001B, +RDI_TypeKind_F32PP = 0x001C, +RDI_TypeKind_F48 = 0x001D, +RDI_TypeKind_F64 = 0x001E, +RDI_TypeKind_F80 = 0x001F, +RDI_TypeKind_F96 = 0x0020, +RDI_TypeKind_F128 = 0x0021, +RDI_TypeKind_ComplexF32 = 0x0022, +RDI_TypeKind_ComplexF64 = 0x0023, +RDI_TypeKind_ComplexF80 = 0x0024, +RDI_TypeKind_ComplexF128 = 0x0025, +RDI_TypeKind_Decimal32 = 0x0026, +RDI_TypeKind_Decimal64 = 0x0027, +RDI_TypeKind_Decimal128 = 0x0028, +RDI_TypeKind_Variadic = 0x0029, +RDI_TypeKind_Modifier = 0x1000, +RDI_TypeKind_Ptr = 0x1001, +RDI_TypeKind_LRef = 0x1002, +RDI_TypeKind_RRef = 0x1003, +RDI_TypeKind_Array = 0x1004, +RDI_TypeKind_Function = 0x1005, +RDI_TypeKind_Method = 0x1006, +RDI_TypeKind_MemberPtr = 0x1007, +RDI_TypeKind_Struct = 0x2000, +RDI_TypeKind_Class = 0x2001, +RDI_TypeKind_Union = 0x2002, +RDI_TypeKind_Enum = 0x2003, +RDI_TypeKind_Alias = 0x2004, +RDI_TypeKind_IncompleteStruct = 0x2005, +RDI_TypeKind_IncompleteUnion = 0x2006, +RDI_TypeKind_IncompleteClass = 0x2007, +RDI_TypeKind_IncompleteEnum = 0x2008, +RDI_TypeKind_Bitfield = 0xF000, +RDI_TypeKind_COUNT = 0xF002, +RDI_TypeKind_FirstBuiltIn = RDI_TypeKind_Void, +RDI_TypeKind_LastBuiltIn = RDI_TypeKind_Variadic, +RDI_TypeKind_FirstConstructed = RDI_TypeKind_Modifier, +RDI_TypeKind_LastConstructed = RDI_TypeKind_MemberPtr, +RDI_TypeKind_FirstUserDefined = RDI_TypeKind_Struct, +RDI_TypeKind_LastRecord = RDI_TypeKind_Union, +RDI_TypeKind_FirstIncomplete = RDI_TypeKind_IncompleteStruct, +RDI_TypeKind_LastIncomplete = RDI_TypeKind_IncompleteEnum, +RDI_TypeKind_FirstRecord = RDI_TypeKind_Struct, +RDI_TypeKind_LastUserDefined = RDI_TypeKind_IncompleteEnum, +} RDI_TypeKindEnum; + +typedef RDI_U16 RDI_TypeModifierFlags; +typedef enum RDI_TypeModifierFlagsEnum +{ +RDI_TypeModifierFlag_Const = 1<<0, +RDI_TypeModifierFlag_Volatile = 1<<1, +RDI_TypeModifierFlag_Restrict = 1<<2, +} RDI_TypeModifierFlagsEnum; + +typedef RDI_U8 RDI_UDTFlags; +typedef enum RDI_UDTFlagsEnum +{ +RDI_UDTFlag_EnumMembers = 1<<0, +} RDI_UDTFlagsEnum; + +typedef RDI_U16 RDI_MemberKind; +typedef enum RDI_MemberKindEnum +{ +RDI_MemberKind_NULL = 0x0000, +RDI_MemberKind_DataField = 0x0001, +RDI_MemberKind_StaticData = 0x0002, +RDI_MemberKind_Method = 0x0100, +RDI_MemberKind_StaticMethod = 0x0101, +RDI_MemberKind_VirtualMethod = 0x0102, +RDI_MemberKind_VTablePtr = 0x0200, +RDI_MemberKind_Base = 0x0201, +RDI_MemberKind_VirtualBase = 0x0202, +RDI_MemberKind_NestedType = 0x0300, +} RDI_MemberKindEnum; + +typedef RDI_U8 RDI_ContainerKind; +typedef enum RDI_ContainerKindEnum +{ +RDI_ContainerKind_NULL = 0x0, +RDI_ContainerKind_Type = 0x1, +RDI_ContainerKind_Scope = 0x2, +RDI_ContainerKind_Namespace = 0x3, +} RDI_ContainerKindEnum; + +typedef RDI_U8 RDI_ContainerFlags; +typedef enum RDI_ContainerFlagsEnum +{ +RDI_ContainerFlag_External = 1u<<7, +RDI_ContainerFlag_KindMask = 0x7f, +} RDI_ContainerFlagsEnum; + +typedef RDI_U8 RDI_SymbolFlags; +typedef enum RDI_SymbolFlagsEnum +{ +RDI_SymbolFlag_IsParam = 0x1, +} RDI_SymbolFlagsEnum; + +typedef RDI_U8 RDI_LocationKind; +typedef enum RDI_LocationKindEnum +{ +RDI_LocationKind_NULL = 0x0, +RDI_LocationKind_AddrBytecodeStream = 0x1, +RDI_LocationKind_ValBytecodeStream = 0x2, +RDI_LocationKind_AddrRegPlusOff = 0x3, +RDI_LocationKind_AddrAddrRegPlusOff = 0x4, +RDI_LocationKind_ValReg = 0x5, +RDI_LocationKind_ModuleOff = 0x6, +RDI_LocationKind_TLSOff = 0x7, +RDI_LocationKind_ConstantDataOff = 0x8, +RDI_LocationKind_Set = 0x9, +} RDI_LocationKindEnum; + +typedef RDI_U8 RDI_EvalOp; +typedef enum RDI_EvalOpEnum +{ +RDI_EvalOp_Stop = 0, +RDI_EvalOp_Noop = 1, +RDI_EvalOp_Cond = 2, +RDI_EvalOp_Skip = 3, +RDI_EvalOp_MemRead = 4, +RDI_EvalOp_RegRead = 5, +RDI_EvalOp_RegReadDyn = 6, +RDI_EvalOp_FrameOff = 7, +RDI_EvalOp_ModuleOff = 8, +RDI_EvalOp_TLSOff = 9, +RDI_EvalOp_ObjectOff = 10, +RDI_EvalOp_CFA = 11, +RDI_EvalOp_ConstU8 = 12, +RDI_EvalOp_ConstU16 = 13, +RDI_EvalOp_ConstU32 = 14, +RDI_EvalOp_ConstU64 = 15, +RDI_EvalOp_ConstU128 = 16, +RDI_EvalOp_ConstString = 17, +RDI_EvalOp_Abs = 18, +RDI_EvalOp_Neg = 19, +RDI_EvalOp_Add = 20, +RDI_EvalOp_Sub = 21, +RDI_EvalOp_Mul = 22, +RDI_EvalOp_Div = 23, +RDI_EvalOp_Mod = 24, +RDI_EvalOp_LShift = 25, +RDI_EvalOp_RShift = 26, +RDI_EvalOp_BitAnd = 27, +RDI_EvalOp_BitOr = 28, +RDI_EvalOp_BitXor = 29, +RDI_EvalOp_BitNot = 30, +RDI_EvalOp_LogAnd = 31, +RDI_EvalOp_LogOr = 32, +RDI_EvalOp_LogNot = 33, +RDI_EvalOp_EqEq = 34, +RDI_EvalOp_NtEq = 35, +RDI_EvalOp_LsEq = 36, +RDI_EvalOp_GrEq = 37, +RDI_EvalOp_Less = 38, +RDI_EvalOp_Grtr = 39, +RDI_EvalOp_Trunc = 40, +RDI_EvalOp_TruncSigned = 41, +RDI_EvalOp_Convert = 42, +RDI_EvalOp_Pick = 43, +RDI_EvalOp_Pop = 44, +RDI_EvalOp_Insert = 45, +RDI_EvalOp_ValueRead = 46, +RDI_EvalOp_ByteSwap = 47, +RDI_EvalOp_CallSiteValue = 48, +RDI_EvalOp_PartialValue = 49, +RDI_EvalOp_PartialValueBit = 50, +RDI_EvalOp_Swap = 51, +RDI_EvalOp_PushCfa = 52, +RDI_EvalOp_COUNT = 53, +} RDI_EvalOpEnum; + +typedef RDI_U8 RDI_EvalTypeGroup; +typedef enum RDI_EvalTypeGroupEnum +{ +RDI_EvalTypeGroup_Other = 0, +RDI_EvalTypeGroup_U = 1, +RDI_EvalTypeGroup_S = 2, +RDI_EvalTypeGroup_F32 = 3, +RDI_EvalTypeGroup_F64 = 4, +RDI_EvalTypeGroup_F80 = 5, +RDI_EvalTypeGroup_F128 = 6, +RDI_EvalTypeGroup_COUNT = 7, +} RDI_EvalTypeGroupEnum; + +typedef RDI_U8 RDI_EvalConversionKind; +typedef enum RDI_EvalConversionKindEnum +{ +RDI_EvalConversionKind_Noop = 0, +RDI_EvalConversionKind_Legal = 1, +RDI_EvalConversionKind_OtherToOther = 2, +RDI_EvalConversionKind_ToOther = 3, +RDI_EvalConversionKind_FromOther = 4, +RDI_EvalConversionKind_COUNT = 5, +} RDI_EvalConversionKindEnum; + +typedef RDI_U32 RDI_NameMapKind; +typedef enum RDI_NameMapKindEnum +{ +RDI_NameMapKind_NULL = 0, +RDI_NameMapKind_GlobalVariables = 1, +RDI_NameMapKind_ThreadVariables = 2, +RDI_NameMapKind_Constants = 3, +RDI_NameMapKind_Procedures = 4, +RDI_NameMapKind_Types = 5, +RDI_NameMapKind_LinkNameProcedures = 6, +RDI_NameMapKind_NormalSourcePaths = 7, +RDI_NameMapKind_COUNT = 8, +} RDI_NameMapKindEnum; + +#define RDI_Header_XList \ +X(RDI_U64, magic)\ +X(RDI_U32, encoding_version)\ +X(RDI_U32, data_section_off)\ +X(RDI_U32, data_section_count)\ + +#define RDI_SectionKind_XList \ +X(NULL, null, RDI_U8)\ +X(TopLevelInfo, top_level_info, RDI_TopLevelInfo)\ +X(StringData, string_data, RDI_U8)\ +X(StringTable, string_table, RDI_U32)\ +X(IndexRuns, index_runs, RDI_U32)\ +X(BinarySections, binary_sections, RDI_BinarySection)\ +X(FilePathNodes, file_path_nodes, RDI_FilePathNode)\ +X(SourceFiles, source_files, RDI_SourceFile)\ +X(LineTables, line_tables, RDI_LineTable)\ +X(LineInfoVOffs, line_info_voffs, RDI_U64)\ +X(LineInfoLines, line_info_lines, RDI_Line)\ +X(LineInfoColumns, line_info_columns, RDI_Column)\ +X(SourceLineMaps, source_line_maps, RDI_SourceLineMap)\ +X(SourceLineMapNumbers, source_line_map_numbers, RDI_U32)\ +X(SourceLineMapRanges, source_line_map_ranges, RDI_U32)\ +X(SourceLineMapVOffs, source_line_map_voffs, RDI_U64)\ +X(Units, units, RDI_Unit)\ +X(UnitVMap, unit_vmap, RDI_VMapEntry)\ +X(Namespaces, namespaces, RDI_Namespace)\ +X(TypeNodes, type_nodes, RDI_TypeNode)\ +X(UDTs, udts, RDI_UDT)\ +X(Members, members, RDI_Member)\ +X(EnumMembers, enum_members, RDI_EnumMember)\ +X(Scopes, scopes, RDI_Scope)\ +X(ScopeVOffData, scope_voff_data, RDI_U64)\ +X(ScopeVMap, scope_vmap, RDI_VMapEntry)\ +X(InlineSites, inline_sites, RDI_InlineSite)\ +X(GlobalVariables, global_variables, RDI_Symbol)\ +X(GlobalVMap, global_vmap, RDI_VMapEntry)\ +X(ThreadVariables, thread_variables, RDI_Symbol)\ +X(Constants, constants, RDI_Symbol)\ +X(Procedures, procedures, RDI_Symbol)\ +X(LocalVariables, local_variables, RDI_Symbol)\ +X(LocationsBytecodeData, locations_bytecode_data, RDI_U8)\ +X(LocationsConstantData, locations_constant_data, RDI_U8)\ +X(LocationsSetElements, locations_set_elements, RDI_LocationSetElement)\ +X(MD5Checksums, md5_checksums, RDI_MD5)\ +X(SHA1Checksums, sha1_checksums, RDI_SHA1)\ +X(SHA256Checksums, sha256_checksums, RDI_SHA256)\ +X(Timestamps, timestamps, RDI_U64)\ +X(NameMaps, name_maps, RDI_NameMap)\ +X(NameMapBuckets, name_map_buckets, RDI_NameMapBucket)\ +X(NameMapNodes, name_map_nodes, RDI_NameMapNode)\ + +#define RDI_SectionEncoding_XList \ +X(Unpacked)\ +X(LZB)\ + +#define RDI_Section_XList \ +X(RDI_SectionEncoding, encoding)\ +X(RDI_U32, pad)\ +X(RDI_U64, off)\ +X(RDI_U64, encoded_size)\ +X(RDI_U64, unpacked_size)\ + +#define RDI_VMapEntry_XList \ +X(RDI_U64, voff)\ +X(RDI_U64, idx)\ + +#define RDI_Arch_XList \ +X(NULL)\ +X(X64)\ +X(X86)\ + +#define RDI_RegCodeX64_XList \ +X(nil, 0)\ +X(rax, 1)\ +X(rcx, 2)\ +X(rdx, 3)\ +X(rbx, 4)\ +X(rsp, 5)\ +X(rbp, 6)\ +X(rsi, 7)\ +X(rdi, 8)\ +X(r8, 9)\ +X(r9, 10)\ +X(r10, 11)\ +X(r11, 12)\ +X(r12, 13)\ +X(r13, 14)\ +X(r14, 15)\ +X(r15, 16)\ +X(es, 17)\ +X(cs, 18)\ +X(ss, 19)\ +X(ds, 20)\ +X(fs, 21)\ +X(gs, 22)\ +X(rip, 23)\ +X(rflags, 24)\ +X(dr0, 25)\ +X(dr1, 26)\ +X(dr2, 27)\ +X(dr3, 28)\ +X(dr4, 29)\ +X(dr5, 30)\ +X(dr6, 31)\ +X(dr7, 32)\ +X(st0, 33)\ +X(st1, 34)\ +X(st2, 35)\ +X(st3, 36)\ +X(st4, 37)\ +X(st5, 38)\ +X(st6, 39)\ +X(st7, 40)\ +X(zmm0, 41)\ +X(zmm1, 42)\ +X(zmm2, 43)\ +X(zmm3, 44)\ +X(zmm4, 45)\ +X(zmm5, 46)\ +X(zmm6, 47)\ +X(zmm7, 48)\ +X(zmm8, 49)\ +X(zmm9, 50)\ +X(zmm10, 51)\ +X(zmm11, 52)\ +X(zmm12, 53)\ +X(zmm13, 54)\ +X(zmm14, 55)\ +X(zmm15, 56)\ +X(zmm16, 57)\ +X(zmm17, 58)\ +X(zmm18, 59)\ +X(zmm19, 60)\ +X(zmm20, 61)\ +X(zmm21, 62)\ +X(zmm22, 63)\ +X(zmm23, 64)\ +X(zmm24, 65)\ +X(zmm25, 66)\ +X(zmm26, 67)\ +X(zmm27, 68)\ +X(zmm28, 69)\ +X(zmm29, 70)\ +X(zmm30, 71)\ +X(zmm31, 72)\ +X(k0, 73)\ +X(k1, 74)\ +X(k2, 75)\ +X(k3, 76)\ +X(k4, 77)\ +X(k5, 78)\ +X(k6, 79)\ +X(k7, 80)\ +X(mxcsr, 81)\ +X(fsbase, 82)\ +X(gsbase, 83)\ +X(fcw, 84)\ +X(fsw, 85)\ +X(ftw, 86)\ +X(fop, 87)\ +X(fcs, 88)\ +X(fds, 89)\ +X(fip, 90)\ +X(fdp, 91)\ +X(mxcsr_mask, 92)\ +X(cetmsr, 93)\ +X(cetssp, 94)\ + +#define RDI_TopLevelInfo_XList \ +X(RDI_Arch, arch)\ +X(RDI_U32, exe_name_string_idx)\ +X(RDI_U64, exe_hash)\ +X(RDI_U64, voff_max)\ +X(RDI_GUID, guid)\ +X(RDI_U32, producer_name_string_idx)\ + +#define RDI_BinarySectionFlags_XList \ +X(Read)\ +X(Write)\ +X(Execute)\ + +#define RDI_BinarySection_XList \ +X(RDI_U32, name_string_idx)\ +X(RDI_BinarySectionFlags, flags)\ +X(RDI_U64, voff_first)\ +X(RDI_U64, voff_opl)\ +X(RDI_U64, foff_first)\ +X(RDI_U64, foff_opl)\ + +#define RDI_ChecksumKind_XList \ +X(NULL, NULL)\ +X(MD5, MD5Checksums)\ +X(SHA1, SHA1Checksums)\ +X(SHA256, SHA256Checksums)\ +X(Timestamp, Timestamps)\ +X(COUNT, NULL)\ + +#define RDI_FilePathNode_XList \ +X(RDI_U32, name_string_idx)\ +X(RDI_U32, parent_path_node)\ +X(RDI_U32, first_child)\ +X(RDI_U32, next_sibling)\ +X(RDI_U32, source_file_idx)\ + +#define RDI_SourceFile_XList \ +X(RDI_U32, file_path_node_idx)\ +X(RDI_U32, normal_full_path_string_idx)\ +X(RDI_U32, source_line_map_idx)\ +X(RDI_ChecksumKind, checksum_kind)\ +X(RDI_U32, checksum_idx)\ + +#define RDI_Unit_XList \ +X(RDI_U32, unit_name_string_idx)\ +X(RDI_U32, compiler_name_string_idx)\ +X(RDI_U32, source_file_path_node)\ +X(RDI_U32, object_file_path_node)\ +X(RDI_U32, archive_file_path_node)\ +X(RDI_U32, build_path_node)\ +X(RDI_Language, language)\ +X(RDI_U32, line_table_idx)\ +X(RDI_U32, procedures_first_idx)\ +X(RDI_U32, procedures_count)\ +X(RDI_U32, global_variables_first_idx)\ +X(RDI_U32, global_variables_count)\ +X(RDI_U32, thread_variables_first_idx)\ +X(RDI_U32, thread_variables_count)\ +X(RDI_U32, constants_first_idx)\ +X(RDI_U32, constants_count)\ + +#define RDI_LineTable_XList \ +X(RDI_U32, voffs_base_idx)\ +X(RDI_U32, lines_base_idx)\ +X(RDI_U32, cols_base_idx)\ +X(RDI_U32, lines_count)\ +X(RDI_U32, cols_count)\ + +#define RDI_Line_XList \ +X(RDI_U32, file_idx)\ +X(RDI_U32, line_num)\ + +#define RDI_Column_XList \ +X(RDI_U16, col_first)\ +X(RDI_U16, col_opl)\ + +#define RDI_SourceLineMapMemberTable \ +X(RDI_U32, line_count)\ +X(RDI_U32, voff_count)\ +X(RDI_U32, line_map_nums_base_idx)\ +X(RDI_U32, line_map_range_base_idx)\ +X(RDI_U32, line_map_voff_base_idx)\ + +#define RDI_Language_XList \ +X(NULL)\ +X(C)\ +X(CPlusPlus)\ +X(Masm)\ +X(COUNT)\ + +#define RDI_TypeKind_XList \ +X(NULL)\ +X(Void)\ +X(Handle)\ +X(HResult)\ +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(BF16)\ +X(F16)\ +X(F32)\ +X(F32PP)\ +X(F48)\ +X(F64)\ +X(F80)\ +X(F96)\ +X(F128)\ +X(ComplexF32)\ +X(ComplexF64)\ +X(ComplexF80)\ +X(ComplexF128)\ +X(Decimal32)\ +X(Decimal64)\ +X(Decimal128)\ +X(Variadic)\ +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(COUNT)\ + +#define RDI_TypeModifierFlags_XList \ +X(Const)\ +X(Volatile)\ +X(Restrict)\ + +#define RDI_TypeNode_XList \ +X(RDI_TypeKind, kind)\ +X(RDI_U16, flags)\ +X(RDI_U32, byte_size)\ + +#define RDI_UDTFlags_XList \ +X(EnumMembers)\ + +#define RDI_UDT_XList \ +X(RDI_U32, self_type_idx)\ +X(RDI_UDTFlags, flags)\ +X(RDI_ContainerFlags, container_flags)\ +X(RDI_U16, reserved_0)\ +X(RDI_U32, member_first)\ +X(RDI_U32, member_count)\ +X(RDI_U32, file_idx)\ +X(RDI_U32, line)\ +X(RDI_U32, col)\ +X(RDI_U32, container_idx)\ + +#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_Member_XList \ +X(RDI_MemberKind, kind)\ +X(RDI_U16, pad)\ +X(RDI_U32, name_string_idx)\ +X(RDI_U32, type_idx)\ +X(RDI_U32, off)\ + +#define RDI_EnumMember_XList \ +X(RDI_U32, name_string_idx)\ +X(RDI_U32, pad)\ +X(RDI_U64, val)\ + +#define RDI_LinkFlags_XList \ +X($(a.name != COUNT -> a.name))\ + +#define RDI_LocationKind_XList \ +X(NULL)\ +X(AddrBytecodeStream)\ +X(ValBytecodeStream)\ +X(AddrRegPlusOff)\ +X(AddrAddrRegPlusOff)\ +X(ValReg)\ +X(ModuleOff)\ +X(TLSOff)\ +X(ConstantDataOff)\ +X(Set)\ + +#define RDI_Namespace_XList \ +X(RDI_U32, name_string_idx)\ +X(RDI_ContainerFlags, container_flags)\ +X(RDI_U8, padding_0)\ +X(RDI_U16, padding_1)\ +X(RDI_U32, container_idx)\ + +#define RDI_Symbol_XList \ +X(RDI_U32, name_string_idx)\ +X(RDI_SymbolFlags, symbol_flags)\ +X(RDI_ContainerFlags, container_flags)\ +X(RDI_U16, reserved_0)\ +X(RDI_Location, location)\ +X(RDI_U32, container_idx)\ +X(RDI_U32, type_idx)\ +X(RDI_U32, root_scope_idx)\ +X(RDI_U32, link_name_string_idx)\ + +#define RDI_Scope_XList \ +X(RDI_U32, proc_idx)\ +X(RDI_U32, parent_scope_idx)\ +X(RDI_U32, first_child_scope_idx)\ +X(RDI_U32, next_sibling_scope_idx)\ +X(RDI_U32, voff_range_first)\ +X(RDI_U32, voff_range_opl)\ +X(RDI_U32, local_first)\ +X(RDI_U32, local_count)\ +X(RDI_U32, inline_site_idx)\ + +#define RDI_InlineSite_XList \ +X(RDI_U32, name_string_idx)\ +X(RDI_U32, type_idx)\ +X(RDI_U32, owner_type_idx)\ +X(RDI_U32, line_table_idx)\ + +#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(ConstU128)\ +X(ConstString)\ +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(ValueRead)\ +X(ByteSwap)\ +X(CallSiteValue)\ +X(PartialValue)\ +X(PartialValueBit)\ +X(Swap)\ +X(PushCfa)\ + +#define RDI_EvalTypeGroup_XList \ +X(Other)\ +X(U)\ +X(S)\ +X(F32)\ +X(F64)\ +X(F80)\ +X(F128)\ + +#define RDI_EvalConversionKind_XList \ +X(Noop)\ +X(Legal)\ +X(OtherToOther)\ +X(ToOther)\ +X(FromOther)\ + +#define RDI_NameMapKind_XList \ +X(NULL)\ +X(GlobalVariables)\ +X(ThreadVariables)\ +X(Constants)\ +X(Procedures)\ +X(Types)\ +X(LinkNameProcedures)\ +X(NormalSourcePaths)\ + +#define RDI_NameMap_XList \ +X(RDI_U32, bucket_base_idx)\ +X(RDI_U32, node_base_idx)\ +X(RDI_U32, bucket_count)\ +X(RDI_U32, node_count)\ + +#define RDI_NameMapBucket_XList \ +X(RDI_U32, first_node)\ +X(RDI_U32, node_count)\ + +#define RDI_NameMapNode_XList \ +X(RDI_U32, string_idx)\ +X(RDI_U32, match_count)\ +X(RDI_U32, match_idx_or_idx_run_first)\ + +#if !RDI_DISABLE_TABLE_INDEX_TYPECHECKING +typedef struct RDI_U32_StringTable { RDI_U32 v; } RDI_U32_StringTable; +typedef struct RDI_U32_IndexRuns { RDI_U32 v; } RDI_U32_IndexRuns; +typedef struct RDI_U32_BinarySections { RDI_U32 v; } RDI_U32_BinarySections; +typedef struct RDI_U32_FilePathNodes { RDI_U32 v; } RDI_U32_FilePathNodes; +typedef struct RDI_U32_SourceFiles { RDI_U32 v; } RDI_U32_SourceFiles; +typedef struct RDI_U32_LineTables { RDI_U32 v; } RDI_U32_LineTables; +typedef struct RDI_U32_LineInfoVOffs { RDI_U32 v; } RDI_U32_LineInfoVOffs; +typedef struct RDI_U32_LineInfoLines { RDI_U32 v; } RDI_U32_LineInfoLines; +typedef struct RDI_U32_LineInfoColumns { RDI_U32 v; } RDI_U32_LineInfoColumns; +typedef struct RDI_U32_SourceLineMaps { RDI_U32 v; } RDI_U32_SourceLineMaps; +typedef struct RDI_U32_SourceLineMapNumbers { RDI_U32 v; } RDI_U32_SourceLineMapNumbers; +typedef struct RDI_U32_SourceLineMapRanges { RDI_U32 v; } RDI_U32_SourceLineMapRanges; +typedef struct RDI_U32_SourceLineMapVOffs { RDI_U32 v; } RDI_U32_SourceLineMapVOffs; +typedef struct RDI_U32_Units { RDI_U32 v; } RDI_U32_Units; +typedef struct RDI_U32_Namespaces { RDI_U32 v; } RDI_U32_Namespaces; +typedef struct RDI_U32_TypeNodes { RDI_U32 v; } RDI_U32_TypeNodes; +typedef struct RDI_U32_UDTs { RDI_U32 v; } RDI_U32_UDTs; +typedef struct RDI_U32_Members { RDI_U32 v; } RDI_U32_Members; +typedef struct RDI_U32_EnumMembers { RDI_U32 v; } RDI_U32_EnumMembers; +typedef struct RDI_U32_Scopes { RDI_U32 v; } RDI_U32_Scopes; +typedef struct RDI_U32_ScopeVOffData { RDI_U32 v; } RDI_U32_ScopeVOffData; +typedef struct RDI_U32_InlineSites { RDI_U32 v; } RDI_U32_InlineSites; +typedef struct RDI_U32_GlobalVariables { RDI_U32 v; } RDI_U32_GlobalVariables; +typedef struct RDI_U32_ThreadVariables { RDI_U32 v; } RDI_U32_ThreadVariables; +typedef struct RDI_U32_Constants { RDI_U32 v; } RDI_U32_Constants; +typedef struct RDI_U32_Procedures { RDI_U32 v; } RDI_U32_Procedures; +typedef struct RDI_U32_LocalVariables { RDI_U32 v; } RDI_U32_LocalVariables; +typedef struct RDI_U32_LocationsBytecodeData { RDI_U32 v; } RDI_U32_LocationsBytecodeData; +typedef struct RDI_U32_LocationsConstantData { RDI_U32 v; } RDI_U32_LocationsConstantData; +typedef struct RDI_U32_LocationsSetElements { RDI_U32 v; } RDI_U32_LocationsSetElements; +typedef struct RDI_U32_MD5Checksums { RDI_U32 v; } RDI_U32_MD5Checksums; +typedef struct RDI_U32_SHA1Checksums { RDI_U32 v; } RDI_U32_SHA1Checksums; +typedef struct RDI_U32_SHA256Checksums { RDI_U32 v; } RDI_U32_SHA256Checksums; +typedef struct RDI_U32_Timestamps { RDI_U32 v; } RDI_U32_Timestamps; +typedef struct RDI_U32_NameMaps { RDI_U32 v; } RDI_U32_NameMaps; +typedef struct RDI_U32_NameMapBuckets { RDI_U32 v; } RDI_U32_NameMapBuckets; +typedef struct RDI_U32_NameMapNodes { RDI_U32 v; } RDI_U32_NameMapNodes; +#else +typedef struct RDI_U32_Table { RDI_U32 v; } RDI_U32_Table; +typedef struct RDI_U64_Table { RDI_U64 v; } RDI_U64_Table; +typedef RDI_U32_Table RDI_U32_StringTable; +typedef RDI_U32_Table RDI_U32_IndexRuns; +typedef RDI_U32_Table RDI_U32_BinarySections; +typedef RDI_U32_Table RDI_U32_FilePathNodes; +typedef RDI_U32_Table RDI_U32_SourceFiles; +typedef RDI_U32_Table RDI_U32_LineTables; +typedef RDI_U32_Table RDI_U32_LineInfoVOffs; +typedef RDI_U32_Table RDI_U32_LineInfoLines; +typedef RDI_U32_Table RDI_U32_LineInfoColumns; +typedef RDI_U32_Table RDI_U32_SourceLineMaps; +typedef RDI_U32_Table RDI_U32_SourceLineMapNumbers; +typedef RDI_U32_Table RDI_U32_SourceLineMapRanges; +typedef RDI_U32_Table RDI_U32_SourceLineMapVOffs; +typedef RDI_U32_Table RDI_U32_Units; +typedef RDI_U32_Table RDI_U32_Namespaces; +typedef RDI_U32_Table RDI_U32_TypeNodes; +typedef RDI_U32_Table RDI_U32_UDTs; +typedef RDI_U32_Table RDI_U32_Members; +typedef RDI_U32_Table RDI_U32_EnumMembers; +typedef RDI_U32_Table RDI_U32_Scopes; +typedef RDI_U32_Table RDI_U32_ScopeVOffData; +typedef RDI_U32_Table RDI_U32_InlineSites; +typedef RDI_U32_Table RDI_U32_GlobalVariables; +typedef RDI_U32_Table RDI_U32_ThreadVariables; +typedef RDI_U32_Table RDI_U32_Constants; +typedef RDI_U32_Table RDI_U32_Procedures; +typedef RDI_U32_Table RDI_U32_LocalVariables; +typedef RDI_U32_Table RDI_U32_LocationsBytecodeData; +typedef RDI_U32_Table RDI_U32_LocationsConstantData; +typedef RDI_U32_Table RDI_U32_LocationsSetElements; +typedef RDI_U32_Table RDI_U32_MD5Checksums; +typedef RDI_U32_Table RDI_U32_SHA1Checksums; +typedef RDI_U32_Table RDI_U32_SHA256Checksums; +typedef RDI_U32_Table RDI_U32_Timestamps; +typedef RDI_U32_Table RDI_U32_NameMaps; +typedef RDI_U32_Table RDI_U32_NameMapBuckets; +typedef RDI_U32_Table RDI_U32_NameMapNodes; +#endif + +typedef RDI_U64 RDI_Location; +#define RDI_Location_KindMask 0xff00000000000000ull +#define RDI_Location_KindShift 56 +#define RDI_Location_OffMask 0x00ffffffffffffffull +#define RDI_Location_OffShift 0 +#define RDI_Location_SetFirstIndexMask 0x00000000ffffffffull +#define RDI_Location_SetFirstIndexShift 0 +#define RDI_Location_SetCountMask 0x00ffffff00000000ull +#define RDI_Location_SetCountShift 32 +#define RDI_Location_RegCodeMask 0x00ff000000000000ull +#define RDI_Location_RegCodeShift 48 +#define RDI_Location_RegOffMask 0x0000ffff00000000ull +#define RDI_Location_RegOffShift 32 +#define rdi_kind_from_location(l) ((((l) & RDI_Location_KindMask) >> RDI_Location_KindShift)) +#define rdi_regcode_from_location(l) ((rdi_kind_from_location(l) == RDI_LocationKind_AddrRegPlusOff || rdi_kind_from_location(l) == RDI_LocationKind_AddrAddrRegPlusOff || rdi_kind_from_location(l) == RDI_LocationKind_ValReg) ? (((l) & RDI_Location_RegCodeMask) >> RDI_Location_RegCodeShift) : 0) +#define rdi_regoff_from_location(l) (RDI_S64)(RDI_S32)(RDI_S16)((rdi_kind_from_location(l) == RDI_LocationKind_AddrRegPlusOff || rdi_kind_from_location(l) == RDI_LocationKind_AddrAddrRegPlusOff) ? (((l) & RDI_Location_RegOffMask) >> RDI_Location_RegOffShift) : 0) +#define rdi_voff_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_ModuleOff ? (((l) & RDI_Location_OffMask) >> RDI_Location_OffShift) : 0) +#define rdi_toff_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_TLSOff ? (((l) & RDI_Location_OffMask) >> RDI_Location_OffShift) : 0) +#define rdi_constant_data_off_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_ConstantDataOff ? (((l) & RDI_Location_OffMask) >> RDI_Location_OffShift) : 0) +#define rdi_bytecode_data_off_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_AddrBytecodeStream || rdi_kind_from_location(l) == RDI_LocationKind_ValBytecodeStream ? (((l) & RDI_Location_OffMask) >> RDI_Location_OffShift) : 0) +#define rdi_set_first_index_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_Set ? (((l) & RDI_Location_SetFirstIndexMask) >> RDI_Location_SetFirstIndexShift) : 0) +#define rdi_set_count_from_location(l) (rdi_kind_from_location(l) == RDI_LocationKind_Set ? (((l) & RDI_Location_SetCountMask) >> RDI_Location_SetCountShift) : 0) +#define rdi_location_voff(voff) ((((RDI_U64)RDI_LocationKind_ModuleOff << RDI_Location_KindShift) & RDI_Location_KindMask) | ((voff) & ~RDI_Location_KindMask)) +#define rdi_location_toff(toff) ((((RDI_U64)RDI_LocationKind_TLSOff << RDI_Location_KindShift) & RDI_Location_KindMask) | ((toff) & ~RDI_Location_KindMask)) +#define rdi_location_constant_data_off(off) ((((RDI_U64)RDI_LocationKind_ConstantDataOff << RDI_Location_KindShift) & RDI_Location_KindMask) | ((off) & ~RDI_Location_KindMask)) +#define rdi_location_reg(kind, reg, off) ((((RDI_U64)(kind) << RDI_Location_KindShift) & RDI_Location_KindMask) | (((RDI_U64)(reg) << RDI_Location_RegCodeShift) & RDI_Location_RegCodeMask) | (((RDI_U64)(off) << RDI_Location_RegOffShift) & RDI_Location_RegOffMask)) +#define rdi_location_bytecode(kind, off) ((((RDI_U64)(kind) << RDI_Location_KindShift) & RDI_Location_KindMask) | (((RDI_U64)(off) << RDI_Location_OffShift) & RDI_Location_OffMask)) +#define RDI_EVAL_CTRLBITS(decodeN,popN,pushN) (((decodeN) << 8) | ((popN) << 4) | ((pushN) << 0)) +#define RDI_DECODEN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 8) & 0xff) +#define RDI_POPN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 4) & 0xf) +#define RDI_PUSHN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 0) & 0xf) +#define RDI_EncodeRegReadParam(reg,bytesize,bytepos) ((reg)|((bytesize)<<8)|((bytepos)<<16)) + +typedef struct RDI_Header RDI_Header; +struct RDI_Header +{ +RDI_U64 magic; +RDI_U32 encoding_version; +RDI_U32 data_section_off; +RDI_U32 data_section_count; +}; + +typedef struct RDI_Section RDI_Section; +struct RDI_Section +{ +RDI_SectionEncoding encoding; +RDI_U32 pad; +RDI_U64 off; +RDI_U64 encoded_size; +RDI_U64 unpacked_size; +}; + +typedef struct RDI_VMapEntry RDI_VMapEntry; +struct RDI_VMapEntry +{ +RDI_U64 voff; +RDI_U64 idx; +}; + +typedef struct RDI_TopLevelInfo RDI_TopLevelInfo; +struct RDI_TopLevelInfo +{ +RDI_Arch arch; +RDI_U32 exe_name_string_idx; +RDI_U64 exe_hash; +RDI_U64 voff_max; +RDI_GUID guid; +RDI_U32 producer_name_string_idx; +}; + +typedef struct RDI_BinarySection RDI_BinarySection; +struct RDI_BinarySection +{ +RDI_U32 name_string_idx; +RDI_BinarySectionFlags flags; +RDI_U64 voff_first; +RDI_U64 voff_opl; +RDI_U64 foff_first; +RDI_U64 foff_opl; +}; + +typedef struct RDI_FilePathNode RDI_FilePathNode; +struct RDI_FilePathNode +{ +RDI_U32 name_string_idx; +RDI_U32 parent_path_node; +RDI_U32 first_child; +RDI_U32 next_sibling; +RDI_U32 source_file_idx; +}; + +typedef struct RDI_SourceFile RDI_SourceFile; +struct RDI_SourceFile +{ +RDI_U32 file_path_node_idx; +RDI_U32 normal_full_path_string_idx; +RDI_U32 source_line_map_idx; +RDI_ChecksumKind checksum_kind; +RDI_U32 checksum_idx; +}; + +typedef struct RDI_Unit RDI_Unit; +struct RDI_Unit +{ +RDI_U32 unit_name_string_idx; +RDI_U32 compiler_name_string_idx; +RDI_U32 source_file_path_node; +RDI_U32 object_file_path_node; +RDI_U32 archive_file_path_node; +RDI_U32 build_path_node; +RDI_Language language; +RDI_U32 line_table_idx; +RDI_U32 procedures_first_idx; +RDI_U32 procedures_count; +RDI_U32 global_variables_first_idx; +RDI_U32 global_variables_count; +RDI_U32 thread_variables_first_idx; +RDI_U32 thread_variables_count; +RDI_U32 constants_first_idx; +RDI_U32 constants_count; +}; + +typedef struct RDI_LineTable RDI_LineTable; +struct RDI_LineTable +{ +RDI_U32 voffs_base_idx; +RDI_U32 lines_base_idx; +RDI_U32 cols_base_idx; +RDI_U32 lines_count; +RDI_U32 cols_count; +}; + +typedef struct RDI_Line RDI_Line; +struct RDI_Line +{ +RDI_U32 file_idx; +RDI_U32 line_num; +}; + +typedef struct RDI_Column RDI_Column; +struct RDI_Column +{ +RDI_U16 col_first; +RDI_U16 col_opl; +}; + +typedef struct RDI_SourceLineMap RDI_SourceLineMap; +struct RDI_SourceLineMap +{ +RDI_U32 line_count; +RDI_U32 voff_count; +RDI_U32 line_map_nums_base_idx; +RDI_U32 line_map_range_base_idx; +RDI_U32 line_map_voff_base_idx; +}; + +typedef struct RDI_TypeNode RDI_TypeNode; +struct RDI_TypeNode +{ +RDI_TypeKind kind; +RDI_U16 flags; +RDI_U32 byte_size; + + union + { + // kind is 'built-in' + struct + { + RDI_U32 name_string_idx; + } built_in; + + // kind is 'constructed' + struct + { + RDI_U32 direct_type_idx; + RDI_U32 count; + union + { + // when kind is 'Function' or 'Method' + RDI_U32 param_idx_run_first; + // when kind is 'MemberPtr' + RDI_U32 owner_type_idx; + }; + } + constructed; + + // kind is 'user defined' + struct + { + RDI_U32 name_string_idx; + RDI_U32 direct_type_idx; + RDI_U32 udt_idx; + } + user_defined; + + // (kind = Bitfield) + struct + { + RDI_U32 direct_type_idx; + RDI_U32 off; + RDI_U32 size; + } + bitfield; + } + ; +}; + +typedef struct RDI_UDT RDI_UDT; +struct RDI_UDT +{ +RDI_U32 self_type_idx; +RDI_UDTFlags flags; +RDI_ContainerFlags container_flags; +RDI_U16 reserved_0; +RDI_U32 member_first; +RDI_U32 member_count; +RDI_U32 file_idx; +RDI_U32 line; +RDI_U32 col; +RDI_U32 container_idx; +}; + +typedef struct RDI_Member RDI_Member; +struct RDI_Member +{ +RDI_MemberKind kind; +RDI_U16 pad; +RDI_U32 name_string_idx; +RDI_U32 type_idx; +RDI_U32 off; +}; + +typedef struct RDI_EnumMember RDI_EnumMember; +struct RDI_EnumMember +{ +RDI_U32 name_string_idx; +RDI_U32 pad; +RDI_U64 val; +}; + +typedef struct RDI_Namespace RDI_Namespace; +struct RDI_Namespace +{ +RDI_U32 name_string_idx; +RDI_ContainerFlags container_flags; +RDI_U8 padding_0; +RDI_U16 padding_1; +RDI_U32 container_idx; +}; + +typedef struct RDI_Symbol RDI_Symbol; +struct RDI_Symbol +{ +RDI_U32 name_string_idx; +RDI_SymbolFlags symbol_flags; +RDI_ContainerFlags container_flags; +RDI_U16 reserved_0; +RDI_Location location; +RDI_U32 container_idx; +RDI_U32 type_idx; +RDI_U32 root_scope_idx; +RDI_U32 link_name_string_idx; +}; + +typedef struct RDI_Scope RDI_Scope; +struct RDI_Scope +{ +RDI_U32 proc_idx; +RDI_U32 parent_scope_idx; +RDI_U32 first_child_scope_idx; +RDI_U32 next_sibling_scope_idx; +RDI_U32 voff_range_first; +RDI_U32 voff_range_opl; +RDI_U32 local_first; +RDI_U32 local_count; +RDI_U32 inline_site_idx; +}; + +typedef struct RDI_InlineSite RDI_InlineSite; +struct RDI_InlineSite +{ +RDI_U32 name_string_idx; +RDI_U32 type_idx; +RDI_U32 owner_type_idx; +RDI_U32 line_table_idx; +}; + +typedef struct RDI_LocationSetElement RDI_LocationSetElement; +struct RDI_LocationSetElement +{ +RDI_U64 voff_first; +RDI_U64 voff_opl; +RDI_Location location; +}; + +typedef struct RDI_NameMap RDI_NameMap; +struct RDI_NameMap +{ +RDI_U32 bucket_base_idx; +RDI_U32 node_base_idx; +RDI_U32 bucket_count; +RDI_U32 node_count; +}; + +typedef struct RDI_NameMapBucket RDI_NameMapBucket; +struct RDI_NameMapBucket +{ +RDI_U32 first_node; +RDI_U32 node_count; +}; + +typedef struct RDI_NameMapNode RDI_NameMapNode; +struct RDI_NameMapNode +{ +RDI_U32 string_idx; +RDI_U32 match_count; +RDI_U32 match_idx_or_idx_run_first; +}; + +typedef RDI_TopLevelInfo RDI_SectionElementType_TopLevelInfo; +typedef RDI_U8 RDI_SectionElementType_StringData; +typedef RDI_U32 RDI_SectionElementType_StringTable; +typedef RDI_U32 RDI_SectionElementType_IndexRuns; +typedef RDI_BinarySection RDI_SectionElementType_BinarySections; +typedef RDI_FilePathNode RDI_SectionElementType_FilePathNodes; +typedef RDI_SourceFile RDI_SectionElementType_SourceFiles; +typedef RDI_LineTable RDI_SectionElementType_LineTables; +typedef RDI_U64 RDI_SectionElementType_LineInfoVOffs; +typedef RDI_Line RDI_SectionElementType_LineInfoLines; +typedef RDI_Column RDI_SectionElementType_LineInfoColumns; +typedef RDI_SourceLineMap RDI_SectionElementType_SourceLineMaps; +typedef RDI_U32 RDI_SectionElementType_SourceLineMapNumbers; +typedef RDI_U32 RDI_SectionElementType_SourceLineMapRanges; +typedef RDI_U64 RDI_SectionElementType_SourceLineMapVOffs; +typedef RDI_Unit RDI_SectionElementType_Units; +typedef RDI_VMapEntry RDI_SectionElementType_UnitVMap; +typedef RDI_Namespace RDI_SectionElementType_Namespaces; +typedef RDI_TypeNode RDI_SectionElementType_TypeNodes; +typedef RDI_UDT RDI_SectionElementType_UDTs; +typedef RDI_Member RDI_SectionElementType_Members; +typedef RDI_EnumMember RDI_SectionElementType_EnumMembers; +typedef RDI_Scope RDI_SectionElementType_Scopes; +typedef RDI_U64 RDI_SectionElementType_ScopeVOffData; +typedef RDI_VMapEntry RDI_SectionElementType_ScopeVMap; +typedef RDI_InlineSite RDI_SectionElementType_InlineSites; +typedef RDI_Symbol RDI_SectionElementType_GlobalVariables; +typedef RDI_VMapEntry RDI_SectionElementType_GlobalVMap; +typedef RDI_Symbol RDI_SectionElementType_ThreadVariables; +typedef RDI_Symbol RDI_SectionElementType_Constants; +typedef RDI_Symbol RDI_SectionElementType_Procedures; +typedef RDI_Symbol RDI_SectionElementType_LocalVariables; +typedef RDI_U8 RDI_SectionElementType_LocationsBytecodeData; +typedef RDI_U8 RDI_SectionElementType_LocationsConstantData; +typedef RDI_LocationSetElement RDI_SectionElementType_LocationsSetElements; +typedef RDI_MD5 RDI_SectionElementType_MD5Checksums; +typedef RDI_SHA1 RDI_SectionElementType_SHA1Checksums; +typedef RDI_SHA256 RDI_SectionElementType_SHA256Checksums; +typedef RDI_U64 RDI_SectionElementType_Timestamps; +typedef RDI_NameMap RDI_SectionElementType_NameMaps; +typedef RDI_NameMapBucket RDI_SectionElementType_NameMapBuckets; +typedef RDI_NameMapNode RDI_SectionElementType_NameMapNodes; + +RDI_PROC RDI_U64 rdi_hash(RDI_U8 *ptr, RDI_U64 size); +RDI_PROC RDI_U8 *rdi_string_from_type_kind(RDI_TypeKind kind, RDI_U64 *size_out); +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_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_U16 rdi_section_element_size_table[44]; +extern RDI_U16 rdi_eval_op_ctrlbits_table[54]; + +#endif // RDI_H diff --git a/src/radbin/generated/radbin.meta.c b/src/radbin/generated/radbin.meta.c index 11d620e7..022956eb 100644 --- a/src/radbin/generated/radbin.meta.c +++ b/src/radbin/generated/radbin.meta.c @@ -1,22 +1,22 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -C_LINKAGE_BEGIN -String8 rb_file_format_display_name_table[10] = -{ -{0}, -str8_lit_comp("PDB"), -str8_lit_comp("PE"), -str8_lit_comp("COFF (OBJ)"), -str8_lit_comp("COFF (Big OBJ)"), -str8_lit_comp("COFF (Archive)"), -str8_lit_comp("COFF (Thin Archive)"), -str8_lit_comp("ELF32"), -str8_lit_comp("ELF64"), -str8_lit_comp("RDI"), -}; - -C_LINKAGE_END - +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +C_LINKAGE_BEGIN +String8 rb_file_format_display_name_table[10] = +{ +{0}, +str8_lit_comp("PDB"), +str8_lit_comp("PE"), +str8_lit_comp("COFF (OBJ)"), +str8_lit_comp("COFF (Big OBJ)"), +str8_lit_comp("COFF (Archive)"), +str8_lit_comp("COFF (Thin Archive)"), +str8_lit_comp("ELF32"), +str8_lit_comp("ELF64"), +str8_lit_comp("RDI"), +}; + +C_LINKAGE_END + diff --git a/src/radbin/generated/radbin.meta.h b/src/radbin/generated/radbin.meta.h index 8f8260de..bcfda7d1 100644 --- a/src/radbin/generated/radbin.meta.h +++ b/src/radbin/generated/radbin.meta.h @@ -1,29 +1,29 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef RADBIN_META_H -#define RADBIN_META_H - -typedef enum RB_FileFormat -{ -RB_FileFormat_Null, -RB_FileFormat_PDB, -RB_FileFormat_PE, -RB_FileFormat_COFF_OBJ, -RB_FileFormat_COFF_BigOBJ, -RB_FileFormat_COFF_Archive, -RB_FileFormat_COFF_ThinArchive, -RB_FileFormat_ELF32, -RB_FileFormat_ELF64, -RB_FileFormat_RDI, -RB_FileFormat_COUNT, -} RB_FileFormat; - -C_LINKAGE_BEGIN -extern String8 rb_file_format_display_name_table[10]; - -C_LINKAGE_END - -#endif // RADBIN_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef RADBIN_META_H +#define RADBIN_META_H + +typedef enum RB_FileFormat +{ +RB_FileFormat_Null, +RB_FileFormat_PDB, +RB_FileFormat_PE, +RB_FileFormat_COFF_OBJ, +RB_FileFormat_COFF_BigOBJ, +RB_FileFormat_COFF_Archive, +RB_FileFormat_COFF_ThinArchive, +RB_FileFormat_ELF32, +RB_FileFormat_ELF64, +RB_FileFormat_RDI, +RB_FileFormat_COUNT, +} RB_FileFormat; + +C_LINKAGE_BEGIN +extern String8 rb_file_format_display_name_table[10]; + +C_LINKAGE_END + +#endif // RADBIN_META_H diff --git a/src/render/d3d11/generated/render_d3d11.meta.c b/src/render/d3d11/generated/render_d3d11.meta.c index e6393a68..2b5ce20c 100644 --- a/src/render/d3d11/generated/render_d3d11.meta.c +++ b/src/render/d3d11/generated/render_d3d11.meta.c @@ -1,69 +1,69 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -C_LINKAGE_BEGIN -String8* r_d3d11_g_vshad_kind_source_table[5] = -{ -&r_d3d11_g_rect_shader_src, -&r_d3d11_g_blur_shader_src, -&r_d3d11_g_mesh_shader_src, -&r_d3d11_g_geo3dcomposite_shader_src, -&r_d3d11_g_finalize_shader_src, -}; - -String8 r_d3d11_g_vshad_kind_source_name_table[5] = -{ -str8_lit_comp("r_d3d11_g_rect_shader_src"), -str8_lit_comp("r_d3d11_g_blur_shader_src"), -str8_lit_comp("r_d3d11_g_mesh_shader_src"), -str8_lit_comp("r_d3d11_g_geo3dcomposite_shader_src"), -str8_lit_comp("r_d3d11_g_finalize_shader_src"), -}; - -D3D11_INPUT_ELEMENT_DESC * r_d3d11_g_vshad_kind_elements_ptr_table[5] = -{ -r_d3d11_g_rect_ilay_elements, -0, -r_d3d11_g_mesh_ilay_elements, -0, -0, -}; - -U64 r_d3d11_g_vshad_kind_elements_count_table[5] = -{ -ArrayCount(r_d3d11_g_rect_ilay_elements) , - 0, -ArrayCount(r_d3d11_g_mesh_ilay_elements) , - 0, - 0, -}; - -String8* r_d3d11_g_pshad_kind_source_table[5] = -{ -&r_d3d11_g_rect_shader_src, -&r_d3d11_g_blur_shader_src, -&r_d3d11_g_mesh_shader_src, -&r_d3d11_g_geo3dcomposite_shader_src, -&r_d3d11_g_finalize_shader_src, -}; - -String8 r_d3d11_g_pshad_kind_source_name_table[5] = -{ -str8_lit_comp("r_d3d11_g_rect_shader_src"), -str8_lit_comp("r_d3d11_g_blur_shader_src"), -str8_lit_comp("r_d3d11_g_mesh_shader_src"), -str8_lit_comp("r_d3d11_g_geo3dcomposite_shader_src"), -str8_lit_comp("r_d3d11_g_finalize_shader_src"), -}; - -U64 r_d3d11_g_uniform_type_kind_size_table[3] = -{ -sizeof(R_D3D11_Uniforms_Rect), -sizeof(R_D3D11_Uniforms_Blur), -sizeof(R_D3D11_Uniforms_Mesh), -}; - -C_LINKAGE_END - +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +C_LINKAGE_BEGIN +String8* r_d3d11_g_vshad_kind_source_table[5] = +{ +&r_d3d11_g_rect_shader_src, +&r_d3d11_g_blur_shader_src, +&r_d3d11_g_mesh_shader_src, +&r_d3d11_g_geo3dcomposite_shader_src, +&r_d3d11_g_finalize_shader_src, +}; + +String8 r_d3d11_g_vshad_kind_source_name_table[5] = +{ +str8_lit_comp("r_d3d11_g_rect_shader_src"), +str8_lit_comp("r_d3d11_g_blur_shader_src"), +str8_lit_comp("r_d3d11_g_mesh_shader_src"), +str8_lit_comp("r_d3d11_g_geo3dcomposite_shader_src"), +str8_lit_comp("r_d3d11_g_finalize_shader_src"), +}; + +D3D11_INPUT_ELEMENT_DESC * r_d3d11_g_vshad_kind_elements_ptr_table[5] = +{ +r_d3d11_g_rect_ilay_elements, +0, +r_d3d11_g_mesh_ilay_elements, +0, +0, +}; + +U64 r_d3d11_g_vshad_kind_elements_count_table[5] = +{ +ArrayCount(r_d3d11_g_rect_ilay_elements) , + 0, +ArrayCount(r_d3d11_g_mesh_ilay_elements) , + 0, + 0, +}; + +String8* r_d3d11_g_pshad_kind_source_table[5] = +{ +&r_d3d11_g_rect_shader_src, +&r_d3d11_g_blur_shader_src, +&r_d3d11_g_mesh_shader_src, +&r_d3d11_g_geo3dcomposite_shader_src, +&r_d3d11_g_finalize_shader_src, +}; + +String8 r_d3d11_g_pshad_kind_source_name_table[5] = +{ +str8_lit_comp("r_d3d11_g_rect_shader_src"), +str8_lit_comp("r_d3d11_g_blur_shader_src"), +str8_lit_comp("r_d3d11_g_mesh_shader_src"), +str8_lit_comp("r_d3d11_g_geo3dcomposite_shader_src"), +str8_lit_comp("r_d3d11_g_finalize_shader_src"), +}; + +U64 r_d3d11_g_uniform_type_kind_size_table[3] = +{ +sizeof(R_D3D11_Uniforms_Rect), +sizeof(R_D3D11_Uniforms_Blur), +sizeof(R_D3D11_Uniforms_Mesh), +}; + +C_LINKAGE_END + diff --git a/src/render/d3d11/generated/render_d3d11.meta.h b/src/render/d3d11/generated/render_d3d11.meta.h index 9855582f..ff65e632 100644 --- a/src/render/d3d11/generated/render_d3d11.meta.h +++ b/src/render/d3d11/generated/render_d3d11.meta.h @@ -1,483 +1,483 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef RENDER_D3D11_META_H -#define RENDER_D3D11_META_H - -typedef enum R_D3D11_VShadKind -{ -R_D3D11_VShadKind_Rect, -R_D3D11_VShadKind_Blur, -R_D3D11_VShadKind_Mesh, -R_D3D11_VShadKind_Geo3DComposite, -R_D3D11_VShadKind_Finalize, -R_D3D11_VShadKind_COUNT, -} R_D3D11_VShadKind; - -typedef enum R_D3D11_PShadKind -{ -R_D3D11_PShadKind_Rect, -R_D3D11_PShadKind_Blur, -R_D3D11_PShadKind_Mesh, -R_D3D11_PShadKind_Geo3DComposite, -R_D3D11_PShadKind_Finalize, -R_D3D11_PShadKind_COUNT, -} R_D3D11_PShadKind; - -typedef enum R_D3D11_UniformTypeKind -{ -R_D3D11_UniformTypeKind_Rect, -R_D3D11_UniformTypeKind_Blur, -R_D3D11_UniformTypeKind_Mesh, -R_D3D11_UniformTypeKind_COUNT, -} R_D3D11_UniformTypeKind; - -C_LINKAGE_BEGIN -read_only global String8 r_d3d11_g_rect_shader_src = -str8_lit_comp( -"" -"\n" -"cbuffer Globals : register(b0)\n" -"{\n" -" float2 viewport_size_px;\n" -" float opacity;\n" -" row_major float4x4 texture_sample_channel_map;\n" -" float2 texture_t2d_size_px;\n" -" row_major float3x3 xform;\n" -" float2 xform_scale;\n" -"}\n" -"\n" -"struct CPU2Vertex\n" -"{\n" -" float4 dst_rect_px : POS;\n" -" float4 src_rect_px : TEX;\n" -" float4 color00 : COL0;\n" -" float4 color01 : COL1;\n" -" float4 color10 : COL2;\n" -" float4 color11 : COL3;\n" -" float4 corner_radii_px : CRAD;\n" -" float4 style_params : STY; // x: border_thickness_px, y: softness_px, z: omit_texture, w: shear\n" -" uint vertex_id : SV_VertexID;\n" -"};\n" -"\n" -"struct Vertex2Pixel\n" -"{\n" -" float4 position : SV_POSITION;\n" -" nointerpolation float2 rect_half_size_px : PSIZE;\n" -" float2 texcoord_pct : TEX;\n" -" float2 sdf_sample_pos : SDF;\n" -" float4 tint : TINT;\n" -" float corner_radius_px : CRAD;\n" -" nointerpolation float border_thickness_px : BTHC;\n" -" nointerpolation float softness_px : SFT;\n" -" nointerpolation float omit_texture : OTX;\n" -"};\n" -"\n" -"Texture2D main_t2d : register(t0);\n" -"SamplerState main_sampler : register(s0);\n" -"\n" -"float rect_sdf(float2 sample_pos, float2 rect_half_size, float r)\n" -"{\n" -" return length(max(abs(sample_pos) - rect_half_size + r, 0.0)) - r;\n" -"}\n" -"\n" -"float linear_from_srgb_f32(float x)\n" -"{\n" -" return x < 0.0404482362771082 ? x / 12.92 : pow((x + 0.055) / 1.055, 2.4);\n" -"}\n" -"\n" -"float4 linear_from_srgba(float4 v)\n" -"{\n" -" float4 result = float4(linear_from_srgb_f32(v.x),\n" -" linear_from_srgb_f32(v.y),\n" -" linear_from_srgb_f32(v.z),\n" -" v.w);\n" -" return result;\n" -"}\n" -"\n" -"//- rjf: vertex shader\n" -"\n" -"Vertex2Pixel\n" -"vs_main(CPU2Vertex cpu2vertex)\n" -"{\n" -" //- rjf: unpack & xform rectangle src/dst vertices\n" -" float2 dst_p0_px = cpu2vertex.dst_rect_px.xy;\n" -" float2 dst_p1_px = cpu2vertex.dst_rect_px.zw;\n" -" float2 src_p0_px = cpu2vertex.src_rect_px.xy;\n" -" float2 src_p1_px = cpu2vertex.src_rect_px.zw;\n" -" float2 dst_size_px = abs(dst_p1_px - dst_p0_px);\n" -" \n" -" //- rjf: unpack style params\n" -" float border_thickness_px = cpu2vertex.style_params.x;\n" -" float softness_px = cpu2vertex.style_params.y;\n" -" float omit_texture = cpu2vertex.style_params.z;\n" -" float shear_px = cpu2vertex.style_params.w;\n" -" \n" -" //- rjf: prep per-vertex arrays to sample from (p: position, t: texcoord, c: colorcoord, r: cornerradius)\n" -" float2 dst_p_verts_px[] =\n" -" {\n" -" float2(dst_p0_px.x, dst_p1_px.y),\n" -" float2(dst_p0_px.x, dst_p0_px.y),\n" -" float2(dst_p1_px.x, dst_p1_px.y + shear_px),\n" -" float2(dst_p1_px.x, dst_p0_px.y + shear_px),\n" -" };\n" -" float2 src_p_verts_px[] =\n" -" {\n" -" float2(src_p0_px.x, src_p1_px.y),\n" -" float2(src_p0_px.x, src_p0_px.y),\n" -" float2(src_p1_px.x, src_p1_px.y),\n" -" float2(src_p1_px.x, src_p0_px.y),\n" -" };\n" -" float dst_r_verts_px[] =\n" -" {\n" -" cpu2vertex.corner_radii_px.y,\n" -" cpu2vertex.corner_radii_px.x,\n" -" cpu2vertex.corner_radii_px.w,\n" -" cpu2vertex.corner_radii_px.z,\n" -" };\n" -" float4 src_color[] =\n" -" {\n" -" cpu2vertex.color01,\n" -" cpu2vertex.color00,\n" -" cpu2vertex.color11,\n" -" cpu2vertex.color10,\n" -" };\n" -" float2 dst_verts_pct = float2((cpu2vertex.vertex_id >> 1) ? 1.f : 0.f,\n" -" (cpu2vertex.vertex_id & 1) ? 0.f : 1.f);\n" -" \n" -" // rjf: fill vertex -> pixel data\n" -" Vertex2Pixel vertex2pixel;\n" -" {\n" -" float2 xformed_pos = mul(xform, float3(dst_p_verts_px[cpu2vertex.vertex_id], 1.f)).xy;\n" -" xformed_pos.y = viewport_size_px.y - xformed_pos.y;\n" -" vertex2pixel.position.xy = 2.f * xformed_pos/viewport_size_px - 1.f;\n" -" vertex2pixel.position.z = 0.f;\n" -" vertex2pixel.position.w = 1.f;\n" -" vertex2pixel.rect_half_size_px = dst_size_px / 2.f * xform_scale;\n" -" vertex2pixel.texcoord_pct = src_p_verts_px[cpu2vertex.vertex_id] / texture_t2d_size_px;\n" -" vertex2pixel.sdf_sample_pos = (2.f * dst_verts_pct - 1.f) * vertex2pixel.rect_half_size_px;\n" -" vertex2pixel.tint = src_color[cpu2vertex.vertex_id];\n" -" vertex2pixel.corner_radius_px = dst_r_verts_px[cpu2vertex.vertex_id];\n" -" vertex2pixel.border_thickness_px = border_thickness_px;\n" -" vertex2pixel.softness_px = softness_px;\n" -" vertex2pixel.omit_texture = omit_texture;\n" -" }\n" -" return vertex2pixel;\n" -"}\n" -"\n" -"//- rjf: pixel shader\n" -"\n" -"float4\n" -"ps_main(Vertex2Pixel vertex2pixel) : SV_TARGET\n" -"{\n" -" // rjf: blend corner colors to produce final tint\n" -" float4 tint = vertex2pixel.tint;\n" -" \n" -" // rjf: sample texture\n" -" float4 albedo_sample = float4(1, 1, 1, 1);\n" -" if(vertex2pixel.omit_texture < 1)\n" -" {\n" -" albedo_sample = mul(main_t2d.Sample(main_sampler, vertex2pixel.texcoord_pct), texture_sample_channel_map);\n" -" albedo_sample = linear_from_srgba(albedo_sample);\n" -" }\n" -" \n" -" // rjf: determine SDF sample position\n" -" float2 sdf_sample_pos = vertex2pixel.sdf_sample_pos;\n" -" \n" -" // rjf: sample for borders\n" -" float border_sdf_t = 1;\n" -" if(vertex2pixel.border_thickness_px > 0)\n" -" {\n" -" float border_sdf_s = rect_sdf(sdf_sample_pos,\n" -" vertex2pixel.rect_half_size_px - float2(vertex2pixel.softness_px*2.f, vertex2pixel.softness_px*2.f) - vertex2pixel.border_thickness_px,\n" -" max(vertex2pixel.corner_radius_px-vertex2pixel.border_thickness_px, 0));\n" -" border_sdf_t = smoothstep(0, 2*vertex2pixel.softness_px, border_sdf_s);\n" -" }\n" -" if(border_sdf_t < 0.001f)\n" -" {\n" -" discard;\n" -" }\n" -" \n" -" // rjf: sample for corners\n" -" float corner_sdf_t = 1;\n" -" if(vertex2pixel.corner_radius_px > 0 || vertex2pixel.softness_px > 0.75f)\n" -" {\n" -" float corner_sdf_s = rect_sdf(sdf_sample_pos,\n" -" vertex2pixel.rect_half_size_px - float2(vertex2pixel.softness_px*2.f, vertex2pixel.softness_px*2.f),\n" -" vertex2pixel.corner_radius_px);\n" -" corner_sdf_t = 1-smoothstep(0, 2*vertex2pixel.softness_px, corner_sdf_s);\n" -" }\n" -" \n" -" // rjf: form+return final color\n" -" float4 final_color = albedo_sample;\n" -" final_color *= tint;\n" -" final_color.a *= opacity;\n" -" final_color.a *= corner_sdf_t;\n" -" final_color.a *= border_sdf_t;\n" -" return final_color;\n" -"}\n" -"" -); - -read_only global String8 r_d3d11_g_blur_shader_src = -str8_lit_comp( -"" -"\n" -"cbuffer Globals : register(b0)\n" -"{\n" -" float4 rect;\n" -" float4 corner_radii_px;\n" -" float2 direction;\n" -" float2 viewport_size;\n" -" uint blur_count;\n" -"}\n" -"\n" -"cbuffer Kernel : register(b1)\n" -"{\n" -" float4 kernel[32];\n" -"}\n" -"\n" -"struct CPU2Vertex\n" -"{\n" -" uint vertex_id : SV_VertexID;\n" -"};\n" -"\n" -"struct Vertex2Pixel\n" -"{\n" -" float4 position : SV_POSITION;\n" -" float2 texcoord : TEX;\n" -" float2 sdf_sample_pos : SDF;\n" -" nointerpolation float2 rect_half_size : RHS;\n" -" float corner_radius : RAD;\n" -"};\n" -"\n" -"Texture2D stage_t2d : register(t0);\n" -"SamplerState stage_sampler : register(s0);\n" -"\n" -"float rect_sdf(float2 sample_pos, float2 rect_half_size, float r)\n" -"{\n" -" return length(max(abs(sample_pos) - rect_half_size + r, 0.0)) - r;\n" -"}\n" -"\n" -"//- rjf: vertex shader\n" -"\n" -"Vertex2Pixel\n" -"vs_main(CPU2Vertex c2v)\n" -"{\n" -" float2 vertex_positions__scrn[] =\n" -" {\n" -" rect.xw,\n" -" rect.xy,\n" -" rect.zw,\n" -" rect.zy,\n" -" };\n" -" float corner_radii__px[] =\n" -" {\n" -" corner_radii_px.y,\n" -" corner_radii_px.x,\n" -" corner_radii_px.w,\n" -" corner_radii_px.z,\n" -" };\n" -" float2 cornercoords__pct = float2((c2v.vertex_id >> 1) ? 1.f : 0.f,\n" -" (c2v.vertex_id & 1) ? 0.f : 1.f);\n" -" \n" -" float2 vertex_position__pct = vertex_positions__scrn[c2v.vertex_id] / viewport_size;\n" -" float2 vertex_position__scr = 2.f * vertex_position__pct - 1.f;\n" -" \n" -" float2 rect_half_size = float2((rect.z-rect.x)/2, (rect.w-rect.y)/2);\n" -" \n" -" Vertex2Pixel v2p;\n" -" {\n" -" v2p.position = float4(vertex_position__scr.x, -vertex_position__scr.y, 0.f, 1.f);\n" -" v2p.texcoord = vertex_position__pct;\n" -" v2p.sdf_sample_pos = (2.f * cornercoords__pct - 1.f) * rect_half_size;\n" -" v2p.rect_half_size = rect_half_size - 2.f;\n" -" v2p.corner_radius = corner_radii__px[c2v.vertex_id];\n" -" }\n" -" return v2p;\n" -"}\n" -"\n" -"//- rjf: pixel shader\n" -"\n" -"float4\n" -"ps_main(Vertex2Pixel v2p) : SV_TARGET\n" -"{\n" -" // rjf: blend weighted texture samples into color\n" -" float3 color = kernel[0].x * stage_t2d.Sample(stage_sampler, v2p.texcoord).rgb;\n" -" for(uint i = 1; i < blur_count; i += 1)\n" -" {\n" -" float weight = kernel[i].x;\n" -" float offset = kernel[i].y;\n" -" color += weight * stage_t2d.Sample(stage_sampler, v2p.texcoord - offset * direction).rgb;\n" -" color += weight * stage_t2d.Sample(stage_sampler, v2p.texcoord + offset * direction).rgb;\n" -" }\n" -" \n" -" // rjf: sample for corners\n" -" float corner_sdf_s = rect_sdf(v2p.sdf_sample_pos, v2p.rect_half_size, v2p.corner_radius);\n" -" float corner_sdf_t = 1-smoothstep(0, 2, corner_sdf_s);\n" -" \n" -" // rjf: weight output color by sdf\n" -" // this is doing alpha testing, leave blurring only where mostly opaque pixels are\n" -" if(corner_sdf_t < 0.9f)\n" -" {\n" -" discard;\n" -" }\n" -" \n" -" return float4(color, 1.f);\n" -"}\n" -"" -); - -read_only global String8 r_d3d11_g_mesh_shader_src = -str8_lit_comp( -"" -"\n" -"cbuffer Uniforms : register(b0)\n" -"{\n" -" row_major float4x4 xform;\n" -"}\n" -"\n" -"struct CPU2Vertex\n" -"{\n" -" float3 position : POS;\n" -" float3 normal : NOR;\n" -" float2 texcoord : TEX;\n" -" float3 color : COL;\n" -"};\n" -"\n" -"struct Vertex2Pixel\n" -"{\n" -" float4 position : SV_POSITION;\n" -" float2 texcoord : TEX;\n" -" float4 color : COL;\n" -"};\n" -"\n" -"Vertex2Pixel vs_main(CPU2Vertex c2v)\n" -"{\n" -" Vertex2Pixel v2p;\n" -" v2p.position = mul(float4(c2v.position, 1.f), xform);\n" -" v2p.texcoord = c2v.texcoord;\n" -" v2p.color = float4(c2v.color, 1.f);\n" -" return v2p;\n" -"}\n" -"\n" -"float4 ps_main(Vertex2Pixel v2p) : SV_TARGET\n" -"{\n" -" return v2p.color;\n" -"}\n" -"" -); - -read_only global String8 r_d3d11_g_geo3dcomposite_shader_src = -str8_lit_comp( -"" -"\n" -"struct CPU2Vertex\n" -"{\n" -" uint vertex_id : SV_VertexID;\n" -"};\n" -"\n" -"struct Vertex2Pixel\n" -"{\n" -" float4 position : SV_POSITION;\n" -" float2 texcoord : TEX;\n" -"};\n" -"\n" -"Texture2D stage_t2d : register(t0);\n" -"SamplerState stage_sampler : register(s0);\n" -"\n" -"//- rjf: vertex shader\n" -"\n" -"Vertex2Pixel\n" -"vs_main(CPU2Vertex c2v)\n" -"{\n" -" float4 vertex_positions__modl[] =\n" -" {\n" -" float4(0, 0, 0, 1),\n" -" float4(0, 1, 0, 1),\n" -" float4(1, 0, 0, 1),\n" -" float4(1, 1, 0, 1),\n" -" };\n" -" float4 vertex_position__modl = vertex_positions__modl[c2v.vertex_id];\n" -" float4 vertex_position__clip = float4(2*vertex_position__modl.x - 1, 2*vertex_position__modl.y - 1, 0, 1);\n" -" float2 texcoord = float2(vertex_position__modl.x, vertex_position__modl.y);\n" -" texcoord.y = 1-texcoord.y;\n" -" Vertex2Pixel v2p;\n" -" {\n" -" v2p.position = vertex_position__clip;\n" -" v2p.texcoord = texcoord;\n" -" }\n" -" return v2p;\n" -"}\n" -"\n" -"//- rjf: pixel shader\n" -"\n" -"float4\n" -"ps_main(Vertex2Pixel v2p) : SV_TARGET\n" -"{\n" -" float4 final_color = stage_t2d.Sample(stage_sampler, v2p.texcoord);\n" -" return final_color;\n" -"}\n" -"" -); - -read_only global String8 r_d3d11_g_finalize_shader_src = -str8_lit_comp( -"" -"\n" -"struct CPU2Vertex\n" -"{\n" -" uint vertex_id : SV_VertexID;\n" -"};\n" -"\n" -"struct Vertex2Pixel\n" -"{\n" -" float4 position : SV_POSITION;\n" -" float2 texcoord : TEX;\n" -"};\n" -"\n" -"Texture2D stage_t2d : register(t0);\n" -"SamplerState stage_sampler : register(s0);\n" -"\n" -"//- rjf: vertex shader\n" -"\n" -"Vertex2Pixel\n" -"vs_main(CPU2Vertex c2v)\n" -"{\n" -" float4 vertex_positions__modl[] =\n" -" {\n" -" float4(0, 0, 0, 1),\n" -" float4(0, 1, 0, 1),\n" -" float4(1, 0, 0, 1),\n" -" float4(1, 1, 0, 1),\n" -" };\n" -" float4 vertex_position__modl = vertex_positions__modl[c2v.vertex_id];\n" -" float4 vertex_position__clip = float4(2*vertex_position__modl.x - 1, 2*vertex_position__modl.y - 1, 0, 1);\n" -" float2 texcoord = float2(vertex_position__modl.x, vertex_position__modl.y);\n" -" texcoord.y = 1-texcoord.y;\n" -" Vertex2Pixel v2p;\n" -" {\n" -" v2p.position = vertex_position__clip;\n" -" v2p.texcoord = texcoord;\n" -" }\n" -" return v2p;\n" -"}\n" -"\n" -"//- rjf: pixel shader\n" -"\n" -"float4\n" -"ps_main(Vertex2Pixel v2p) : SV_TARGET\n" -"{\n" -" float4 final_color = stage_t2d.Sample(stage_sampler, v2p.texcoord);\n" -" final_color.a = 1;\n" -" return final_color;\n" -"}\n" -"" -); - - -C_LINKAGE_END - -#endif // RENDER_D3D11_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef RENDER_D3D11_META_H +#define RENDER_D3D11_META_H + +typedef enum R_D3D11_VShadKind +{ +R_D3D11_VShadKind_Rect, +R_D3D11_VShadKind_Blur, +R_D3D11_VShadKind_Mesh, +R_D3D11_VShadKind_Geo3DComposite, +R_D3D11_VShadKind_Finalize, +R_D3D11_VShadKind_COUNT, +} R_D3D11_VShadKind; + +typedef enum R_D3D11_PShadKind +{ +R_D3D11_PShadKind_Rect, +R_D3D11_PShadKind_Blur, +R_D3D11_PShadKind_Mesh, +R_D3D11_PShadKind_Geo3DComposite, +R_D3D11_PShadKind_Finalize, +R_D3D11_PShadKind_COUNT, +} R_D3D11_PShadKind; + +typedef enum R_D3D11_UniformTypeKind +{ +R_D3D11_UniformTypeKind_Rect, +R_D3D11_UniformTypeKind_Blur, +R_D3D11_UniformTypeKind_Mesh, +R_D3D11_UniformTypeKind_COUNT, +} R_D3D11_UniformTypeKind; + +C_LINKAGE_BEGIN +read_only global String8 r_d3d11_g_rect_shader_src = +str8_lit_comp( +"" +"\n" +"cbuffer Globals : register(b0)\n" +"{\n" +" float2 viewport_size_px;\n" +" float opacity;\n" +" row_major float4x4 texture_sample_channel_map;\n" +" float2 texture_t2d_size_px;\n" +" row_major float3x3 xform;\n" +" float2 xform_scale;\n" +"}\n" +"\n" +"struct CPU2Vertex\n" +"{\n" +" float4 dst_rect_px : POS;\n" +" float4 src_rect_px : TEX;\n" +" float4 color00 : COL0;\n" +" float4 color01 : COL1;\n" +" float4 color10 : COL2;\n" +" float4 color11 : COL3;\n" +" float4 corner_radii_px : CRAD;\n" +" float4 style_params : STY; // x: border_thickness_px, y: softness_px, z: omit_texture, w: shear\n" +" uint vertex_id : SV_VertexID;\n" +"};\n" +"\n" +"struct Vertex2Pixel\n" +"{\n" +" float4 position : SV_POSITION;\n" +" nointerpolation float2 rect_half_size_px : PSIZE;\n" +" float2 texcoord_pct : TEX;\n" +" float2 sdf_sample_pos : SDF;\n" +" float4 tint : TINT;\n" +" float corner_radius_px : CRAD;\n" +" nointerpolation float border_thickness_px : BTHC;\n" +" nointerpolation float softness_px : SFT;\n" +" nointerpolation float omit_texture : OTX;\n" +"};\n" +"\n" +"Texture2D main_t2d : register(t0);\n" +"SamplerState main_sampler : register(s0);\n" +"\n" +"float rect_sdf(float2 sample_pos, float2 rect_half_size, float r)\n" +"{\n" +" return length(max(abs(sample_pos) - rect_half_size + r, 0.0)) - r;\n" +"}\n" +"\n" +"float linear_from_srgb_f32(float x)\n" +"{\n" +" return x < 0.0404482362771082 ? x / 12.92 : pow((x + 0.055) / 1.055, 2.4);\n" +"}\n" +"\n" +"float4 linear_from_srgba(float4 v)\n" +"{\n" +" float4 result = float4(linear_from_srgb_f32(v.x),\n" +" linear_from_srgb_f32(v.y),\n" +" linear_from_srgb_f32(v.z),\n" +" v.w);\n" +" return result;\n" +"}\n" +"\n" +"//- rjf: vertex shader\n" +"\n" +"Vertex2Pixel\n" +"vs_main(CPU2Vertex cpu2vertex)\n" +"{\n" +" //- rjf: unpack & xform rectangle src/dst vertices\n" +" float2 dst_p0_px = cpu2vertex.dst_rect_px.xy;\n" +" float2 dst_p1_px = cpu2vertex.dst_rect_px.zw;\n" +" float2 src_p0_px = cpu2vertex.src_rect_px.xy;\n" +" float2 src_p1_px = cpu2vertex.src_rect_px.zw;\n" +" float2 dst_size_px = abs(dst_p1_px - dst_p0_px);\n" +" \n" +" //- rjf: unpack style params\n" +" float border_thickness_px = cpu2vertex.style_params.x;\n" +" float softness_px = cpu2vertex.style_params.y;\n" +" float omit_texture = cpu2vertex.style_params.z;\n" +" float shear_px = cpu2vertex.style_params.w;\n" +" \n" +" //- rjf: prep per-vertex arrays to sample from (p: position, t: texcoord, c: colorcoord, r: cornerradius)\n" +" float2 dst_p_verts_px[] =\n" +" {\n" +" float2(dst_p0_px.x, dst_p1_px.y),\n" +" float2(dst_p0_px.x, dst_p0_px.y),\n" +" float2(dst_p1_px.x, dst_p1_px.y + shear_px),\n" +" float2(dst_p1_px.x, dst_p0_px.y + shear_px),\n" +" };\n" +" float2 src_p_verts_px[] =\n" +" {\n" +" float2(src_p0_px.x, src_p1_px.y),\n" +" float2(src_p0_px.x, src_p0_px.y),\n" +" float2(src_p1_px.x, src_p1_px.y),\n" +" float2(src_p1_px.x, src_p0_px.y),\n" +" };\n" +" float dst_r_verts_px[] =\n" +" {\n" +" cpu2vertex.corner_radii_px.y,\n" +" cpu2vertex.corner_radii_px.x,\n" +" cpu2vertex.corner_radii_px.w,\n" +" cpu2vertex.corner_radii_px.z,\n" +" };\n" +" float4 src_color[] =\n" +" {\n" +" cpu2vertex.color01,\n" +" cpu2vertex.color00,\n" +" cpu2vertex.color11,\n" +" cpu2vertex.color10,\n" +" };\n" +" float2 dst_verts_pct = float2((cpu2vertex.vertex_id >> 1) ? 1.f : 0.f,\n" +" (cpu2vertex.vertex_id & 1) ? 0.f : 1.f);\n" +" \n" +" // rjf: fill vertex -> pixel data\n" +" Vertex2Pixel vertex2pixel;\n" +" {\n" +" float2 xformed_pos = mul(xform, float3(dst_p_verts_px[cpu2vertex.vertex_id], 1.f)).xy;\n" +" xformed_pos.y = viewport_size_px.y - xformed_pos.y;\n" +" vertex2pixel.position.xy = 2.f * xformed_pos/viewport_size_px - 1.f;\n" +" vertex2pixel.position.z = 0.f;\n" +" vertex2pixel.position.w = 1.f;\n" +" vertex2pixel.rect_half_size_px = dst_size_px / 2.f * xform_scale;\n" +" vertex2pixel.texcoord_pct = src_p_verts_px[cpu2vertex.vertex_id] / texture_t2d_size_px;\n" +" vertex2pixel.sdf_sample_pos = (2.f * dst_verts_pct - 1.f) * vertex2pixel.rect_half_size_px;\n" +" vertex2pixel.tint = src_color[cpu2vertex.vertex_id];\n" +" vertex2pixel.corner_radius_px = dst_r_verts_px[cpu2vertex.vertex_id];\n" +" vertex2pixel.border_thickness_px = border_thickness_px;\n" +" vertex2pixel.softness_px = softness_px;\n" +" vertex2pixel.omit_texture = omit_texture;\n" +" }\n" +" return vertex2pixel;\n" +"}\n" +"\n" +"//- rjf: pixel shader\n" +"\n" +"float4\n" +"ps_main(Vertex2Pixel vertex2pixel) : SV_TARGET\n" +"{\n" +" // rjf: blend corner colors to produce final tint\n" +" float4 tint = vertex2pixel.tint;\n" +" \n" +" // rjf: sample texture\n" +" float4 albedo_sample = float4(1, 1, 1, 1);\n" +" if(vertex2pixel.omit_texture < 1)\n" +" {\n" +" albedo_sample = mul(main_t2d.Sample(main_sampler, vertex2pixel.texcoord_pct), texture_sample_channel_map);\n" +" albedo_sample = linear_from_srgba(albedo_sample);\n" +" }\n" +" \n" +" // rjf: determine SDF sample position\n" +" float2 sdf_sample_pos = vertex2pixel.sdf_sample_pos;\n" +" \n" +" // rjf: sample for borders\n" +" float border_sdf_t = 1;\n" +" if(vertex2pixel.border_thickness_px > 0)\n" +" {\n" +" float border_sdf_s = rect_sdf(sdf_sample_pos,\n" +" vertex2pixel.rect_half_size_px - float2(vertex2pixel.softness_px*2.f, vertex2pixel.softness_px*2.f) - vertex2pixel.border_thickness_px,\n" +" max(vertex2pixel.corner_radius_px-vertex2pixel.border_thickness_px, 0));\n" +" border_sdf_t = smoothstep(0, 2*vertex2pixel.softness_px, border_sdf_s);\n" +" }\n" +" if(border_sdf_t < 0.001f)\n" +" {\n" +" discard;\n" +" }\n" +" \n" +" // rjf: sample for corners\n" +" float corner_sdf_t = 1;\n" +" if(vertex2pixel.corner_radius_px > 0 || vertex2pixel.softness_px > 0.75f)\n" +" {\n" +" float corner_sdf_s = rect_sdf(sdf_sample_pos,\n" +" vertex2pixel.rect_half_size_px - float2(vertex2pixel.softness_px*2.f, vertex2pixel.softness_px*2.f),\n" +" vertex2pixel.corner_radius_px);\n" +" corner_sdf_t = 1-smoothstep(0, 2*vertex2pixel.softness_px, corner_sdf_s);\n" +" }\n" +" \n" +" // rjf: form+return final color\n" +" float4 final_color = albedo_sample;\n" +" final_color *= tint;\n" +" final_color.a *= opacity;\n" +" final_color.a *= corner_sdf_t;\n" +" final_color.a *= border_sdf_t;\n" +" return final_color;\n" +"}\n" +"" +); + +read_only global String8 r_d3d11_g_blur_shader_src = +str8_lit_comp( +"" +"\n" +"cbuffer Globals : register(b0)\n" +"{\n" +" float4 rect;\n" +" float4 corner_radii_px;\n" +" float2 direction;\n" +" float2 viewport_size;\n" +" uint blur_count;\n" +"}\n" +"\n" +"cbuffer Kernel : register(b1)\n" +"{\n" +" float4 kernel[32];\n" +"}\n" +"\n" +"struct CPU2Vertex\n" +"{\n" +" uint vertex_id : SV_VertexID;\n" +"};\n" +"\n" +"struct Vertex2Pixel\n" +"{\n" +" float4 position : SV_POSITION;\n" +" float2 texcoord : TEX;\n" +" float2 sdf_sample_pos : SDF;\n" +" nointerpolation float2 rect_half_size : RHS;\n" +" float corner_radius : RAD;\n" +"};\n" +"\n" +"Texture2D stage_t2d : register(t0);\n" +"SamplerState stage_sampler : register(s0);\n" +"\n" +"float rect_sdf(float2 sample_pos, float2 rect_half_size, float r)\n" +"{\n" +" return length(max(abs(sample_pos) - rect_half_size + r, 0.0)) - r;\n" +"}\n" +"\n" +"//- rjf: vertex shader\n" +"\n" +"Vertex2Pixel\n" +"vs_main(CPU2Vertex c2v)\n" +"{\n" +" float2 vertex_positions__scrn[] =\n" +" {\n" +" rect.xw,\n" +" rect.xy,\n" +" rect.zw,\n" +" rect.zy,\n" +" };\n" +" float corner_radii__px[] =\n" +" {\n" +" corner_radii_px.y,\n" +" corner_radii_px.x,\n" +" corner_radii_px.w,\n" +" corner_radii_px.z,\n" +" };\n" +" float2 cornercoords__pct = float2((c2v.vertex_id >> 1) ? 1.f : 0.f,\n" +" (c2v.vertex_id & 1) ? 0.f : 1.f);\n" +" \n" +" float2 vertex_position__pct = vertex_positions__scrn[c2v.vertex_id] / viewport_size;\n" +" float2 vertex_position__scr = 2.f * vertex_position__pct - 1.f;\n" +" \n" +" float2 rect_half_size = float2((rect.z-rect.x)/2, (rect.w-rect.y)/2);\n" +" \n" +" Vertex2Pixel v2p;\n" +" {\n" +" v2p.position = float4(vertex_position__scr.x, -vertex_position__scr.y, 0.f, 1.f);\n" +" v2p.texcoord = vertex_position__pct;\n" +" v2p.sdf_sample_pos = (2.f * cornercoords__pct - 1.f) * rect_half_size;\n" +" v2p.rect_half_size = rect_half_size - 2.f;\n" +" v2p.corner_radius = corner_radii__px[c2v.vertex_id];\n" +" }\n" +" return v2p;\n" +"}\n" +"\n" +"//- rjf: pixel shader\n" +"\n" +"float4\n" +"ps_main(Vertex2Pixel v2p) : SV_TARGET\n" +"{\n" +" // rjf: blend weighted texture samples into color\n" +" float3 color = kernel[0].x * stage_t2d.Sample(stage_sampler, v2p.texcoord).rgb;\n" +" for(uint i = 1; i < blur_count; i += 1)\n" +" {\n" +" float weight = kernel[i].x;\n" +" float offset = kernel[i].y;\n" +" color += weight * stage_t2d.Sample(stage_sampler, v2p.texcoord - offset * direction).rgb;\n" +" color += weight * stage_t2d.Sample(stage_sampler, v2p.texcoord + offset * direction).rgb;\n" +" }\n" +" \n" +" // rjf: sample for corners\n" +" float corner_sdf_s = rect_sdf(v2p.sdf_sample_pos, v2p.rect_half_size, v2p.corner_radius);\n" +" float corner_sdf_t = 1-smoothstep(0, 2, corner_sdf_s);\n" +" \n" +" // rjf: weight output color by sdf\n" +" // this is doing alpha testing, leave blurring only where mostly opaque pixels are\n" +" if(corner_sdf_t < 0.9f)\n" +" {\n" +" discard;\n" +" }\n" +" \n" +" return float4(color, 1.f);\n" +"}\n" +"" +); + +read_only global String8 r_d3d11_g_mesh_shader_src = +str8_lit_comp( +"" +"\n" +"cbuffer Uniforms : register(b0)\n" +"{\n" +" row_major float4x4 xform;\n" +"}\n" +"\n" +"struct CPU2Vertex\n" +"{\n" +" float3 position : POS;\n" +" float3 normal : NOR;\n" +" float2 texcoord : TEX;\n" +" float3 color : COL;\n" +"};\n" +"\n" +"struct Vertex2Pixel\n" +"{\n" +" float4 position : SV_POSITION;\n" +" float2 texcoord : TEX;\n" +" float4 color : COL;\n" +"};\n" +"\n" +"Vertex2Pixel vs_main(CPU2Vertex c2v)\n" +"{\n" +" Vertex2Pixel v2p;\n" +" v2p.position = mul(float4(c2v.position, 1.f), xform);\n" +" v2p.texcoord = c2v.texcoord;\n" +" v2p.color = float4(c2v.color, 1.f);\n" +" return v2p;\n" +"}\n" +"\n" +"float4 ps_main(Vertex2Pixel v2p) : SV_TARGET\n" +"{\n" +" return v2p.color;\n" +"}\n" +"" +); + +read_only global String8 r_d3d11_g_geo3dcomposite_shader_src = +str8_lit_comp( +"" +"\n" +"struct CPU2Vertex\n" +"{\n" +" uint vertex_id : SV_VertexID;\n" +"};\n" +"\n" +"struct Vertex2Pixel\n" +"{\n" +" float4 position : SV_POSITION;\n" +" float2 texcoord : TEX;\n" +"};\n" +"\n" +"Texture2D stage_t2d : register(t0);\n" +"SamplerState stage_sampler : register(s0);\n" +"\n" +"//- rjf: vertex shader\n" +"\n" +"Vertex2Pixel\n" +"vs_main(CPU2Vertex c2v)\n" +"{\n" +" float4 vertex_positions__modl[] =\n" +" {\n" +" float4(0, 0, 0, 1),\n" +" float4(0, 1, 0, 1),\n" +" float4(1, 0, 0, 1),\n" +" float4(1, 1, 0, 1),\n" +" };\n" +" float4 vertex_position__modl = vertex_positions__modl[c2v.vertex_id];\n" +" float4 vertex_position__clip = float4(2*vertex_position__modl.x - 1, 2*vertex_position__modl.y - 1, 0, 1);\n" +" float2 texcoord = float2(vertex_position__modl.x, vertex_position__modl.y);\n" +" texcoord.y = 1-texcoord.y;\n" +" Vertex2Pixel v2p;\n" +" {\n" +" v2p.position = vertex_position__clip;\n" +" v2p.texcoord = texcoord;\n" +" }\n" +" return v2p;\n" +"}\n" +"\n" +"//- rjf: pixel shader\n" +"\n" +"float4\n" +"ps_main(Vertex2Pixel v2p) : SV_TARGET\n" +"{\n" +" float4 final_color = stage_t2d.Sample(stage_sampler, v2p.texcoord);\n" +" return final_color;\n" +"}\n" +"" +); + +read_only global String8 r_d3d11_g_finalize_shader_src = +str8_lit_comp( +"" +"\n" +"struct CPU2Vertex\n" +"{\n" +" uint vertex_id : SV_VertexID;\n" +"};\n" +"\n" +"struct Vertex2Pixel\n" +"{\n" +" float4 position : SV_POSITION;\n" +" float2 texcoord : TEX;\n" +"};\n" +"\n" +"Texture2D stage_t2d : register(t0);\n" +"SamplerState stage_sampler : register(s0);\n" +"\n" +"//- rjf: vertex shader\n" +"\n" +"Vertex2Pixel\n" +"vs_main(CPU2Vertex c2v)\n" +"{\n" +" float4 vertex_positions__modl[] =\n" +" {\n" +" float4(0, 0, 0, 1),\n" +" float4(0, 1, 0, 1),\n" +" float4(1, 0, 0, 1),\n" +" float4(1, 1, 0, 1),\n" +" };\n" +" float4 vertex_position__modl = vertex_positions__modl[c2v.vertex_id];\n" +" float4 vertex_position__clip = float4(2*vertex_position__modl.x - 1, 2*vertex_position__modl.y - 1, 0, 1);\n" +" float2 texcoord = float2(vertex_position__modl.x, vertex_position__modl.y);\n" +" texcoord.y = 1-texcoord.y;\n" +" Vertex2Pixel v2p;\n" +" {\n" +" v2p.position = vertex_position__clip;\n" +" v2p.texcoord = texcoord;\n" +" }\n" +" return v2p;\n" +"}\n" +"\n" +"//- rjf: pixel shader\n" +"\n" +"float4\n" +"ps_main(Vertex2Pixel v2p) : SV_TARGET\n" +"{\n" +" float4 final_color = stage_t2d.Sample(stage_sampler, v2p.texcoord);\n" +" final_color.a = 1;\n" +" return final_color;\n" +"}\n" +"" +); + + +C_LINKAGE_END + +#endif // RENDER_D3D11_META_H diff --git a/src/render/generated/render.meta.c b/src/render/generated/render.meta.c index c1897062..d2225d54 100644 --- a/src/render/generated/render.meta.c +++ b/src/render/generated/render.meta.c @@ -1,68 +1,68 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -C_LINKAGE_BEGIN -String8 r_tex2d_format_display_string_table[9] = -{ -str8_lit_comp("R8"), -str8_lit_comp("RG8"), -str8_lit_comp("RGBA8"), -str8_lit_comp("BGRA8"), -str8_lit_comp("R16"), -str8_lit_comp("RGBA16"), -str8_lit_comp("R32"), -str8_lit_comp("RG32"), -str8_lit_comp("RGBA32"), -}; - -U8 r_tex2d_format_bytes_per_pixel_table[9] = -{ -1, -2, -4, -4, -2, -8, -4, -8, -16, -}; - -String8 r_resource_kind_display_string_table[3] = -{ -str8_lit_comp("Static"), -str8_lit_comp("Dynamic"), -str8_lit_comp("Stream "), -}; - -String8 r_tex2d_sample_kind_display_string_table[2] = -{ -str8_lit_comp("Nearest"), -str8_lit_comp("Linear"), -}; - -String8 r_pass_kind_display_string_table[3] = -{ -str8_lit_comp("UI"), -str8_lit_comp("Blur"), -str8_lit_comp("Geo3D"), -}; - -U8 r_pass_kind_batch_table[3] = -{ -1, -0, -1, -}; - -U64 r_pass_kind_params_size_table[3] = -{ -sizeof(R_PassParams_UI), -sizeof(R_PassParams_Blur), -sizeof(R_PassParams_Geo3D), -}; - -C_LINKAGE_END - +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +C_LINKAGE_BEGIN +String8 r_tex2d_format_display_string_table[9] = +{ +str8_lit_comp("R8"), +str8_lit_comp("RG8"), +str8_lit_comp("RGBA8"), +str8_lit_comp("BGRA8"), +str8_lit_comp("R16"), +str8_lit_comp("RGBA16"), +str8_lit_comp("R32"), +str8_lit_comp("RG32"), +str8_lit_comp("RGBA32"), +}; + +U8 r_tex2d_format_bytes_per_pixel_table[9] = +{ +1, +2, +4, +4, +2, +8, +4, +8, +16, +}; + +String8 r_resource_kind_display_string_table[3] = +{ +str8_lit_comp("Static"), +str8_lit_comp("Dynamic"), +str8_lit_comp("Stream "), +}; + +String8 r_tex2d_sample_kind_display_string_table[2] = +{ +str8_lit_comp("Nearest"), +str8_lit_comp("Linear"), +}; + +String8 r_pass_kind_display_string_table[3] = +{ +str8_lit_comp("UI"), +str8_lit_comp("Blur"), +str8_lit_comp("Geo3D"), +}; + +U8 r_pass_kind_batch_table[3] = +{ +1, +0, +1, +}; + +U64 r_pass_kind_params_size_table[3] = +{ +sizeof(R_PassParams_UI), +sizeof(R_PassParams_Blur), +sizeof(R_PassParams_Geo3D), +}; + +C_LINKAGE_END + diff --git a/src/render/generated/render.meta.h b/src/render/generated/render.meta.h index e7b65c2b..454181d2 100644 --- a/src/render/generated/render.meta.h +++ b/src/render/generated/render.meta.h @@ -1,65 +1,65 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef RENDER_META_H -#define RENDER_META_H - -typedef enum R_Tex2DFormat -{ -R_Tex2DFormat_R8, -R_Tex2DFormat_RG8, -R_Tex2DFormat_RGBA8, -R_Tex2DFormat_BGRA8, -R_Tex2DFormat_R16, -R_Tex2DFormat_RGBA16, -R_Tex2DFormat_R32, -R_Tex2DFormat_RG32, -R_Tex2DFormat_RGBA32, -R_Tex2DFormat_COUNT, -} R_Tex2DFormat; - -typedef enum R_ResourceKind -{ -R_ResourceKind_Static, -R_ResourceKind_Dynamic, -R_ResourceKind_Stream, -R_ResourceKind_COUNT, -} R_ResourceKind; - -typedef enum R_Tex2DSampleKind -{ -R_Tex2DSampleKind_Nearest, -R_Tex2DSampleKind_Linear, -R_Tex2DSampleKind_COUNT, -} R_Tex2DSampleKind; - -typedef enum R_GeoTopologyKind -{ -R_GeoTopologyKind_Lines, -R_GeoTopologyKind_LineStrip, -R_GeoTopologyKind_Triangles, -R_GeoTopologyKind_TriangleStrip, -R_GeoTopologyKind_COUNT, -} R_GeoTopologyKind; - -typedef enum R_PassKind -{ -R_PassKind_UI, -R_PassKind_Blur, -R_PassKind_Geo3D, -R_PassKind_COUNT, -} R_PassKind; - -C_LINKAGE_BEGIN -extern String8 r_tex2d_format_display_string_table[9]; -extern U8 r_tex2d_format_bytes_per_pixel_table[9]; -extern String8 r_resource_kind_display_string_table[3]; -extern String8 r_tex2d_sample_kind_display_string_table[2]; -extern String8 r_pass_kind_display_string_table[3]; -extern U8 r_pass_kind_batch_table[3]; - -C_LINKAGE_END - -#endif // RENDER_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef RENDER_META_H +#define RENDER_META_H + +typedef enum R_Tex2DFormat +{ +R_Tex2DFormat_R8, +R_Tex2DFormat_RG8, +R_Tex2DFormat_RGBA8, +R_Tex2DFormat_BGRA8, +R_Tex2DFormat_R16, +R_Tex2DFormat_RGBA16, +R_Tex2DFormat_R32, +R_Tex2DFormat_RG32, +R_Tex2DFormat_RGBA32, +R_Tex2DFormat_COUNT, +} R_Tex2DFormat; + +typedef enum R_ResourceKind +{ +R_ResourceKind_Static, +R_ResourceKind_Dynamic, +R_ResourceKind_Stream, +R_ResourceKind_COUNT, +} R_ResourceKind; + +typedef enum R_Tex2DSampleKind +{ +R_Tex2DSampleKind_Nearest, +R_Tex2DSampleKind_Linear, +R_Tex2DSampleKind_COUNT, +} R_Tex2DSampleKind; + +typedef enum R_GeoTopologyKind +{ +R_GeoTopologyKind_Lines, +R_GeoTopologyKind_LineStrip, +R_GeoTopologyKind_Triangles, +R_GeoTopologyKind_TriangleStrip, +R_GeoTopologyKind_COUNT, +} R_GeoTopologyKind; + +typedef enum R_PassKind +{ +R_PassKind_UI, +R_PassKind_Blur, +R_PassKind_Geo3D, +R_PassKind_COUNT, +} R_PassKind; + +C_LINKAGE_BEGIN +extern String8 r_tex2d_format_display_string_table[9]; +extern U8 r_tex2d_format_bytes_per_pixel_table[9]; +extern String8 r_resource_kind_display_string_table[3]; +extern String8 r_tex2d_sample_kind_display_string_table[2]; +extern String8 r_pass_kind_display_string_table[3]; +extern U8 r_pass_kind_batch_table[3]; + +C_LINKAGE_END + +#endif // RENDER_META_H diff --git a/src/render/opengl/generated/render_opengl.meta.c b/src/render/opengl/generated/render_opengl.meta.c index 228b658d..73c41e60 100644 --- a/src/render/opengl/generated/render_opengl.meta.c +++ b/src/render/opengl/generated/render_opengl.meta.c @@ -1,38 +1,38 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -C_LINKAGE_BEGIN -String8 r_ogl_shader_kind_name_table[2] = -{ -str8_lit_comp("rect"), -str8_lit_comp("blur"), -}; - -String8 * r_ogl_shader_kind_vshad_src_table[2] = -{ -&r_ogl_rect_vshad_src, -&r_ogl_blur_vshad_src, -}; - -String8 * r_ogl_shader_kind_pshad_src_table[2] = -{ -&r_ogl_rect_pshad_src, -&r_ogl_blur_pshad_src, -}; - -R_OGL_AttributeArray r_ogl_shader_kind_input_attributes_table[2] = -{ -{ r_ogl_rect_input_attributes, ArrayCount(r_ogl_rect_input_attributes) }, -{ 0, }, -}; - -R_OGL_AttributeArray r_ogl_shader_kind_output_attributes_table[2] = -{ -{ r_ogl_single_color_output_attributes, ArrayCount(r_ogl_single_color_output_attributes) }, -{ r_ogl_single_color_output_attributes, ArrayCount(r_ogl_single_color_output_attributes) }, -}; - -C_LINKAGE_END - +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +C_LINKAGE_BEGIN +String8 r_ogl_shader_kind_name_table[2] = +{ +str8_lit_comp("rect"), +str8_lit_comp("blur"), +}; + +String8 * r_ogl_shader_kind_vshad_src_table[2] = +{ +&r_ogl_rect_vshad_src, +&r_ogl_blur_vshad_src, +}; + +String8 * r_ogl_shader_kind_pshad_src_table[2] = +{ +&r_ogl_rect_pshad_src, +&r_ogl_blur_pshad_src, +}; + +R_OGL_AttributeArray r_ogl_shader_kind_input_attributes_table[2] = +{ +{ r_ogl_rect_input_attributes, ArrayCount(r_ogl_rect_input_attributes) }, +{ 0, }, +}; + +R_OGL_AttributeArray r_ogl_shader_kind_output_attributes_table[2] = +{ +{ r_ogl_single_color_output_attributes, ArrayCount(r_ogl_single_color_output_attributes) }, +{ r_ogl_single_color_output_attributes, ArrayCount(r_ogl_single_color_output_attributes) }, +}; + +C_LINKAGE_END + diff --git a/src/render/opengl/generated/render_opengl.meta.h b/src/render/opengl/generated/render_opengl.meta.h index b8c2117b..b59412d9 100644 --- a/src/render/opengl/generated/render_opengl.meta.h +++ b/src/render/opengl/generated/render_opengl.meta.h @@ -1,280 +1,281 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef RENDER_OPENGL_META_H -#define RENDER_OPENGL_META_H - -typedef enum R_OGL_ShaderKind -{ -R_OGL_ShaderKind_Rect, -R_OGL_ShaderKind_Blur, -R_OGL_ShaderKind_COUNT, -} R_OGL_ShaderKind; - -C_LINKAGE_BEGIN -extern String8 r_ogl_shader_kind_name_table[2]; -extern String8 * r_ogl_shader_kind_vshad_src_table[2]; -extern String8 * r_ogl_shader_kind_pshad_src_table[2]; -extern R_OGL_AttributeArray r_ogl_shader_kind_input_attributes_table[2]; -extern R_OGL_AttributeArray r_ogl_shader_kind_output_attributes_table[2]; -read_only global String8 r_ogl_rect_vshad_src = -str8_lit_comp( -"" -"\n" -"#version 330 core\n" -"\n" -"in vec4 c2v_dst_rect;\n" -"in vec4 c2v_src_rect;\n" -"in vec4 c2v_colors_0;\n" -"in vec4 c2v_colors_1;\n" -"in vec4 c2v_colors_2;\n" -"in vec4 c2v_colors_3;\n" -"in vec4 c2v_corner_radii;\n" -"in vec4 c2v_style; // x: border_thickness_px, y: softness_px, z: omit_texture, w: shear\n" -"\n" -"out vec2 v2p_sdf_sample_pos;\n" -"out vec2 v2p_texcoord_pct;\n" -"out vec2 v2p_rect_half_size_px;\n" -"out vec4 v2p_tint;\n" -"out float v2p_corner_radius;\n" -"out float v2p_border_thickness;\n" -"out float v2p_softness;\n" -"out float v2p_omit_texture;\n" -"\n" -"uniform mat3 u_xform;\n" -"uniform sampler2D u_tex_color;\n" -"uniform vec2 u_viewport_size_px;\n" -"\n" -"void main(void)\n" -"{\n" -" // rjf: constants\n" -" vec2 vertices[] = vec2[](vec2(-1, -1), vec2(-1, +1), vec2(+1, -1), vec2(+1, +1));\n" -" \n" -" // rjf: unpack shears\n" -" float shears[] = float[](0, 0, c2v_style.w, c2v_style.w);\n" -" \n" -" // rjf: find dst position\n" -" vec2 dst_half_size = (c2v_dst_rect.zw - c2v_dst_rect.xy) / 2;\n" -" vec2 dst_center = (c2v_dst_rect.zw + c2v_dst_rect.xy) / 2;\n" -" vec2 dst_position = vertices[gl_VertexID] * dst_half_size + dst_center;\n" -" dst_position.y += shears[gl_VertexID];\n" -" dst_position = (u_xform * vec3(dst_position.x, dst_position.y, 1)).xy;\n" -" \n" -" // rjf: find src position\n" -" vec2 src_half_size = (c2v_src_rect.zw - c2v_src_rect.xy) / 2;\n" -" vec2 src_center = (c2v_src_rect.zw + c2v_src_rect.xy) / 2;\n" -" vec2 src_position = vertices[gl_VertexID] * src_half_size + src_center;\n" -" \n" -" // rjf: find color\n" -" vec4 colors[] = vec4[](c2v_colors_0, c2v_colors_1, c2v_colors_2, c2v_colors_3);\n" -" vec4 color = colors[gl_VertexID];\n" -" \n" -" // rjf: find corner radius\n" -" float corner_radii[] = float[](c2v_corner_radii.x, c2v_corner_radii.y, c2v_corner_radii.z, c2v_corner_radii.w);\n" -" float corner_radius = corner_radii[gl_VertexID];\n" -" \n" -" // rjf: fill outputs\n" -" vec2 dst_verts_pct = vec2(((gl_VertexID >> 1) != 1) ? 1.f : 0.f,\n" -" ((gl_VertexID & 1) != 0) ? 0.f : 1.f);\n" -" ivec2 u_tex_color_size_i = textureSize(u_tex_color, 0);\n" -" vec2 u_tex_color_size = vec2(float(u_tex_color_size_i.x), float(u_tex_color_size_i.y));\n" -" {\n" -" gl_Position = vec4(2 * dst_position.x / u_viewport_size_px.x - 1,\n" -" 2 * (1 - dst_position.y / u_viewport_size_px.y) - 1,\n" -" 0.0, 1.0);\n" -" v2p_sdf_sample_pos = (2.f * dst_verts_pct - 1.f) * dst_half_size;\n" -" v2p_texcoord_pct = src_position / u_tex_color_size;\n" -" v2p_rect_half_size_px = dst_half_size;\n" -" v2p_tint = color;\n" -" v2p_corner_radius = corner_radius;\n" -" v2p_border_thickness = c2v_style.x;\n" -" v2p_softness = c2v_style.y;\n" -" v2p_omit_texture = c2v_style.z;\n" -" }\n" -"}\n" -"" -); - -read_only global String8 r_ogl_rect_pshad_src = -str8_lit_comp( -"" -"\n" -"#version 330 core\n" -"\n" -"in vec2 v2p_sdf_sample_pos;\n" -"in vec2 v2p_texcoord_pct;\n" -"in vec2 v2p_rect_half_size_px;\n" -"in vec4 v2p_tint;\n" -"in float v2p_corner_radius;\n" -"in float v2p_border_thickness;\n" -"in float v2p_softness;\n" -"in float v2p_omit_texture;\n" -"\n" -"out vec4 final_color;\n" -"\n" -"uniform float u_opacity;\n" -"uniform sampler2D u_tex_color;\n" -"uniform mat4 u_texture_sample_channel_map;\n" -"\n" -"float rect_sdf(vec2 sample_pos, vec2 rect_half_size, float r)\n" -"{\n" -" return length(max(abs(sample_pos) - rect_half_size + r, 0.0)) - r;\n" -"}\n" -"\n" -"float linear_from_srgb_f32(float x)\n" -"{\n" -" return x < 0.0404482362771082 ? x / 12.92 : pow((x + 0.055) / 1.055, 2.4);\n" -"}\n" -"\n" -"vec4 linear_from_srgba(vec4 v)\n" -"{\n" -" vec4 result = vec4(linear_from_srgb_f32(v.x),\n" -" linear_from_srgb_f32(v.y),\n" -" linear_from_srgb_f32(v.z),\n" -" v.w);\n" -" return result;\n" -"}\n" -"\n" -"void main(void)\n" -"{\n" -" // rjf: sample texture\n" -" vec4 albedo_sample = vec4(1, 1, 1, 1);\n" -" if(v2p_omit_texture < 1)\n" -" {\n" -" albedo_sample = u_texture_sample_channel_map * texture(u_tex_color, v2p_texcoord_pct);\n" -" albedo_sample = linear_from_srgba(albedo_sample);\n" -" }\n" -" \n" -" // rjf: sample for borders\n" -" float border_sdf_t = 1;\n" -" if(v2p_border_thickness > 0)\n" -" {\n" -" float border_sdf_s = rect_sdf(v2p_sdf_sample_pos,\n" -" v2p_rect_half_size_px - vec2(v2p_softness*2.f, v2p_softness*2.f) - v2p_border_thickness,\n" -" max(v2p_corner_radius-v2p_border_thickness, 0));\n" -" border_sdf_t = smoothstep(0, 2*v2p_softness, border_sdf_s);\n" -" }\n" -" if(border_sdf_t < 0.001f)\n" -" {\n" -" discard;\n" -" }\n" -" \n" -" // rjf: sample for corners\n" -" float corner_sdf_t = 1;\n" -" if(v2p_corner_radius > 0 || v2p_softness > 0.75f)\n" -" {\n" -" float corner_sdf_s = rect_sdf(v2p_sdf_sample_pos,\n" -" v2p_rect_half_size_px - vec2(v2p_softness*2.f, v2p_softness*2.f),\n" -" v2p_corner_radius);\n" -" corner_sdf_t = 1-smoothstep(0, 2*v2p_softness, corner_sdf_s);\n" -" }\n" -" \n" -" // rjf: form+return final color\n" -" final_color = albedo_sample;\n" -" final_color *= v2p_tint;\n" -" final_color.a *= u_opacity;\n" -" final_color.a *= corner_sdf_t;\n" -" final_color.a *= border_sdf_t;\n" -"}\n" -"" -); - -read_only global String8 r_ogl_blur_vshad_src = -str8_lit_comp( -"" -"\n" -"#version 330 core\n" -"\n" -"uniform vec4 rect;\n" -"uniform vec4 corner_radii_px;\n" -"uniform vec2 viewport_size;\n" -"\n" -"out vec2 texcoord;\n" -"out vec2 sdf_sample_pos;\n" -"out vec2 rect_half_size;\n" -"out float corner_radius;\n" -"\n" -"void main(void)\n" -"{\n" -" vec2 vertex_positions_scrn[] = vec2[](rect.xw,\n" -" rect.xy,\n" -" rect.zw,\n" -" rect.zy);\n" -" float corner_radii[] = float[](corner_radii_px.y,\n" -" corner_radii_px.x,\n" -" corner_radii_px.w,\n" -" corner_radii_px.z);\n" -" vec2 cornercoords_pct = vec2((gl_VertexID >> 1) != 0 ? 1.f : 0.f,\n" -" (gl_VertexID & 1) != 0 ? 0.f : 1.f);\n" -" \n" -" vec2 vertex_position_pct = vertex_positions_scrn[gl_VertexID] / viewport_size;\n" -" vec2 vertex_position_scr = 2.f * vertex_position_pct - 1.f;\n" -" \n" -" vec2 rect_half_size_local = vec2((rect.z-rect.x)/2, (rect.w-rect.y)/2);\n" -" \n" -" gl_Position = vec4(vertex_position_scr.x, -vertex_position_scr.y, 0.f, 1.f);\n" -" texcoord = vec2(vertex_position_pct.x, 1-vertex_position_pct.y);\n" -" sdf_sample_pos = (2.f * cornercoords_pct - 1.f) * rect_half_size_local;\n" -" rect_half_size = rect_half_size_local - 2.f;\n" -" corner_radius = corner_radii[gl_VertexID];\n" -"}\n" -"" -); - -read_only global String8 r_ogl_blur_pshad_src = -str8_lit_comp( -"" -"\n" -"#version 330 core\n" -"\n" -"uniform sampler2D tex;\n" -"uniform vec4 kernel[32];\n" -"uniform int blur_count;\n" -"uniform vec2 direction;\n" -"\n" -"in vec2 texcoord;\n" -"in vec2 sdf_sample_pos;\n" -"in vec2 rect_half_size;\n" -"in float corner_radius;\n" -"\n" -"out vec4 final_color;\n" -"\n" -"float rect_sdf(vec2 sample_pos, vec2 rect_half_size, float r)\n" -"{\n" -" return length(max(abs(sample_pos) - rect_half_size + r, 0.0)) - r;\n" -"}\n" -"\n" -"void main(void)\n" -"{\n" -" // rjf: blend weighted texture samples into color\n" -" vec3 color = kernel[0].x * texture(tex, texcoord).rgb;\n" -" for(int i = 1; i < blur_count; i += 1)\n" -" {\n" -" float weight = kernel[i].x;\n" -" float offset = kernel[i].y;\n" -" color += weight * texture(tex, texcoord - offset * direction).rgb;\n" -" color += weight * texture(tex, texcoord + offset * direction).rgb;\n" -" }\n" -" \n" -" // rjf: sample for corners\n" -" float corner_sdf_s = rect_sdf(sdf_sample_pos, rect_half_size, corner_radius);\n" -" float corner_sdf_t = smoothstep(0, 2, corner_sdf_s);\n" -" \n" -" // rjf: weight output color by sdf\n" -" // this is doing alpha testing, leave blurring only where mostly opaque pixels are\n" -" if(corner_sdf_t < 0.9f)\n" -" {\n" -" discard;\n" -" }\n" -" \n" -" final_color = vec4(color, 1.f);\n" -"}\n" -"" -); - - -C_LINKAGE_END - -#endif // RENDER_OPENGL_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef RENDER_OPENGL_META_H +#define RENDER_OPENGL_META_H + +typedef enum R_OGL_ShaderKind +{ +R_OGL_ShaderKind_Rect, +R_OGL_ShaderKind_Blur, +R_OGL_ShaderKind_COUNT, +} R_OGL_ShaderKind; + +C_LINKAGE_BEGIN +extern String8 r_ogl_shader_kind_name_table[2]; +extern String8 * r_ogl_shader_kind_vshad_src_table[2]; +extern String8 * r_ogl_shader_kind_pshad_src_table[2]; +extern R_OGL_AttributeArray r_ogl_shader_kind_input_attributes_table[2]; +extern R_OGL_AttributeArray r_ogl_shader_kind_output_attributes_table[2]; +read_only global String8 r_ogl_rect_vshad_src = +str8_lit_comp( +"" +"\n" +"#version 330 core\n" +"\n" +"in vec4 c2v_dst_rect;\n" +"in vec4 c2v_src_rect;\n" +"in vec4 c2v_colors_0;\n" +"in vec4 c2v_colors_1;\n" +"in vec4 c2v_colors_2;\n" +"in vec4 c2v_colors_3;\n" +"in vec4 c2v_corner_radii;\n" +"in vec4 c2v_style; // x: border_thickness_px, y: softness_px, z: omit_texture, w: shear\n" +"\n" +"out vec2 v2p_sdf_sample_pos;\n" +"out vec2 v2p_texcoord_pct;\n" +"out vec2 v2p_rect_half_size_px;\n" +"out vec4 v2p_tint;\n" +"out float v2p_corner_radius;\n" +"out float v2p_border_thickness;\n" +"out float v2p_softness;\n" +"out float v2p_omit_texture;\n" +"\n" +"uniform mat3 u_xform;\n" +"uniform sampler2D u_tex_color;\n" +"uniform vec2 u_viewport_size_px;\n" +"\n" +"void main(void)\n" +"{\n" +" // rjf: constants\n" +" vec2 vertices[] = vec2[](vec2(-1, -1), vec2(-1, +1), vec2(+1, -1), vec2(+1, +1));\n" +" \n" +" // rjf: unpack shears\n" +" float shears[] = float[](0, 0, c2v_style.w, c2v_style.w);\n" +" \n" +" // rjf: find dst position\n" +" vec2 dst_half_size = (c2v_dst_rect.zw - c2v_dst_rect.xy) / 2;\n" +" vec2 dst_center = (c2v_dst_rect.zw + c2v_dst_rect.xy) / 2;\n" +" vec2 dst_position = vertices[gl_VertexID] * dst_half_size + dst_center;\n" +" dst_position.y += shears[gl_VertexID];\n" +" dst_position = (u_xform * vec3(dst_position.x, dst_position.y, 1)).xy;\n" +" \n" +" // rjf: find src position\n" +" vec2 src_half_size = (c2v_src_rect.zw - c2v_src_rect.xy) / 2;\n" +" vec2 src_center = (c2v_src_rect.zw + c2v_src_rect.xy) / 2;\n" +" vec2 src_position = vertices[gl_VertexID] * src_half_size + src_center;\n" +" \n" +" // rjf: find color\n" +" vec4 colors[] = vec4[](c2v_colors_0, c2v_colors_1, c2v_colors_2, c2v_colors_3);\n" +" vec4 color = colors[gl_VertexID];\n" +" \n" +" // rjf: find corner radius\n" +" float corner_radii[] = float[](c2v_corner_radii.x, c2v_corner_radii.y, c2v_corner_radii.z, c2v_corner_radii.w);\n" +" float corner_radius = corner_radii[gl_VertexID];\n" +" \n" +" // rjf: fill outputs\n" +" vec2 dst_verts_pct = vec2(((gl_VertexID >> 1) != 1) ? 1.f : 0.f,\n" +" ((gl_VertexID & 1) != 0) ? 0.f : 1.f);\n" +" ivec2 u_tex_color_size_i = textureSize(u_tex_color, 0);\n" +" vec2 u_tex_color_size = vec2(float(u_tex_color_size_i.x), float(u_tex_color_size_i.y));\n" +" {\n" +" gl_Position = vec4(2 * dst_position.x / u_viewport_size_px.x - 1,\n" +" 2 * (1 - dst_position.y / u_viewport_size_px.y) - 1,\n" +" 0.0, 1.0);\n" +" v2p_sdf_sample_pos = (2.f * dst_verts_pct - 1.f) * dst_half_size;\n" +" v2p_texcoord_pct = src_position / u_tex_color_size;\n" +" v2p_rect_half_size_px = dst_half_size;\n" +" v2p_tint = color;\n" +" v2p_corner_radius = corner_radius;\n" +" v2p_border_thickness = c2v_style.x;\n" +" v2p_softness = c2v_style.y;\n" +" v2p_omit_texture = c2v_style.z;\n" +" }\n" +"}\n" +"" +); + +read_only global String8 r_ogl_rect_pshad_src = +str8_lit_comp( +"" +"\n" +"#version 330 core\n" +"\n" +"in vec2 v2p_sdf_sample_pos;\n" +"in vec2 v2p_texcoord_pct;\n" +"in vec2 v2p_rect_half_size_px;\n" +"in vec4 v2p_tint;\n" +"in float v2p_corner_radius;\n" +"in float v2p_border_thickness;\n" +"in float v2p_softness;\n" +"in float v2p_omit_texture;\n" +"\n" +"out vec4 final_color;\n" +"\n" +"uniform float u_opacity;\n" +"uniform sampler2D u_tex_color;\n" +"uniform mat4 u_texture_sample_channel_map;\n" +"\n" +"float rect_sdf(vec2 sample_pos, vec2 rect_half_size, float r)\n" +"{\n" +" return length(max(abs(sample_pos) - rect_half_size + r, 0.0)) - r;\n" +"}\n" +"\n" +"float linear_from_srgb_f32(float x)\n" +"{\n" +" return x < 0.0404482362771082 ? x / 12.92 : pow((x + 0.055) / 1.055, 2.4);\n" +"}\n" +"\n" +"vec4 linear_from_srgba(vec4 v)\n" +"{\n" +" vec4 result = vec4(linear_from_srgb_f32(v.x),\n" +" linear_from_srgb_f32(v.y),\n" +" linear_from_srgb_f32(v.z),\n" +" v.w);\n" +" return result;\n" +"}\n" +"\n" +"void main(void)\n" +"{\n" +" // rjf: sample texture\n" +" vec4 albedo_sample = vec4(1, 1, 1, 1);\n" +" if(v2p_omit_texture < 1)\n" +" {\n" +" albedo_sample = u_texture_sample_channel_map * texture(u_tex_color, v2p_texcoord_pct);\n" +" albedo_sample = linear_from_srgba(albedo_sample);\n" +" }\n" +" \n" +" // rjf: sample for borders\n" +" float border_sdf_t = 1;\n" +" if(v2p_border_thickness > 0)\n" +" {\n" +" float border_sdf_s = rect_sdf(v2p_sdf_sample_pos,\n" +" v2p_rect_half_size_px - vec2(v2p_softness*2.f, v2p_softness*2.f) - v2p_border_thickness,\n" +" max(v2p_corner_radius-v2p_border_thickness, 0));\n" +" border_sdf_t = smoothstep(0, 2*v2p_softness, border_sdf_s);\n" +" }\n" +" if(border_sdf_t < 0.001f)\n" +" {\n" +" discard;\n" +" }\n" +" \n" +" // rjf: sample for corners\n" +" float corner_sdf_t = 1;\n" +" if(v2p_corner_radius > 0 || v2p_softness > 0.75f)\n" +" {\n" +" float corner_sdf_s = rect_sdf(v2p_sdf_sample_pos,\n" +" v2p_rect_half_size_px - vec2(v2p_softness*2.f, v2p_softness*2.f),\n" +" v2p_corner_radius);\n" +" corner_sdf_t = 1-smoothstep(0, 2*v2p_softness, corner_sdf_s);\n" +" }\n" +" \n" +" // rjf: form+return final color\n" +" final_color = albedo_sample;\n" +" final_color *= v2p_tint;\n" +" final_color.a *= u_opacity;\n" +" final_color.a *= corner_sdf_t;\n" +" final_color.a *= border_sdf_t;\n" +"}\n" +"" +); + +read_only global String8 r_ogl_blur_vshad_src = +str8_lit_comp( +"" +"\n" +"#version 330 core\n" +"\n" +"uniform vec4 rect;\n" +"uniform vec4 corner_radii_px;\n" +"uniform vec2 viewport_size;\n" +"uniform uint blur_count;\n" +"\n" +"out vec2 texcoord;\n" +"out vec2 sdf_sample_pos;\n" +"out vec2 rect_half_size;\n" +"out float corner_radius;\n" +"\n" +"void main(void)\n" +"{\n" +" vec2 vertex_positions_scrn[] = vec2[](rect.xw,\n" +" rect.xy,\n" +" rect.zw,\n" +" rect.zy);\n" +" float corner_radii[] = float[](corner_radii_px.y,\n" +" corner_radii_px.x,\n" +" corner_radii_px.w,\n" +" corner_radii_px.z);\n" +" vec2 cornercoords_pct = vec2((gl_VertexID >> 1) != 0 ? 1.f : 0.f,\n" +" (gl_VertexID & 1) != 0 ? 0.f : 1.f);\n" +" \n" +" vec2 vertex_position_pct = vertex_positions_scrn[gl_VertexID] / viewport_size;\n" +" vec2 vertex_position_scr = 2.f * vertex_position_pct - 1.f;\n" +" \n" +" vec2 rect_half_size_local = vec2((rect.z-rect.x)/2, (rect.w-rect.y)/2);\n" +" \n" +" gl_Position = vec4(vertex_position_scr.x, -vertex_position_scr.y, 0.f, 1.f);\n" +" texcoord = vec2(vertex_position_pct.x, 1-vertex_position_pct.y);\n" +" sdf_sample_pos = (2.f * cornercoords_pct - 1.f) * rect_half_size_local;\n" +" rect_half_size = rect_half_size_local - 2.f;\n" +" corner_radius = corner_radii[gl_VertexID];\n" +"}\n" +"" +); + +read_only global String8 r_ogl_blur_pshad_src = +str8_lit_comp( +"" +"\n" +"#version 330 core\n" +"\n" +"uniform sampler2D tex;\n" +"uniform vec4 kernel[32];\n" +"uniform int blur_count;\n" +"uniform vec2 direction;\n" +"\n" +"in vec2 texcoord;\n" +"in vec2 sdf_sample_pos;\n" +"in vec2 rect_half_size;\n" +"in float corner_radius;\n" +"\n" +"out vec4 final_color;\n" +"\n" +"float rect_sdf(vec2 sample_pos, vec2 rect_half_size, float r)\n" +"{\n" +" return length(max(abs(sample_pos) - rect_half_size + r, 0.0)) - r;\n" +"}\n" +"\n" +"void main(void)\n" +"{\n" +" // rjf: blend weighted texture samples into color\n" +" vec3 color = kernel[0].x * texture(tex, texcoord).rgb;\n" +" for(int i = 1; i < blur_count; i += 1)\n" +" {\n" +" float weight = kernel[i].x;\n" +" float offset = kernel[i].y;\n" +" color += weight * texture(tex, texcoord - offset * direction).rgb;\n" +" color += weight * texture(tex, texcoord + offset * direction).rgb;\n" +" }\n" +" \n" +" // rjf: sample for corners\n" +" float corner_sdf_s = rect_sdf(sdf_sample_pos, rect_half_size, corner_radius);\n" +" float corner_sdf_t = smoothstep(0, 2, corner_sdf_s);\n" +" \n" +" // rjf: weight output color by sdf\n" +" // this is doing alpha testing, leave blurring only where mostly opaque pixels are\n" +" if(corner_sdf_t < 0.9f)\n" +" {\n" +" discard;\n" +" }\n" +" \n" +" final_color = vec4(color, 1.f);\n" +"}\n" +"" +); + + +C_LINKAGE_END + +#endif // RENDER_OPENGL_META_H diff --git a/src/text/generated/text.meta.c b/src/text/generated/text.meta.c index bb00c67a..e826c980 100644 --- a/src/text/generated/text.meta.c +++ b/src/text/generated/text.meta.c @@ -1,458 +1,458 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -C_LINKAGE_BEGIN -String8 txt_lang_kind_ext_table[8] = -{ -str8_lit_comp("null"), -str8_lit_comp("c"), -str8_lit_comp("cpp"), -str8_lit_comp("odin"), -str8_lit_comp("jai"), -str8_lit_comp("zig"), -str8_lit_comp("rs"), -str8_lit_comp("disasm_x64_intel"), -}; - -struct {String8 ext; TXT_LangKind kind;} txt_ext_lang_kind_table[24] = -{ -{str8_lit_comp("null"), TXT_LangKind_Null}, -{str8_lit_comp("c"), TXT_LangKind_C}, -{str8_lit_comp("cpp"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("odin"), TXT_LangKind_Odin}, -{str8_lit_comp("jai"), TXT_LangKind_Jai}, -{str8_lit_comp("zig"), TXT_LangKind_Zig}, -{str8_lit_comp("rs"), TXT_LangKind_Rust}, -{str8_lit_comp("disasm_x64_intel"), TXT_LangKind_DisasmX64Intel}, -{str8_lit_comp("h"), TXT_LangKind_C}, -{str8_lit_comp("cxx"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("cc"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("c++"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("ixx"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("cxxm"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("c++m"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("ccm"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("cppm"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("mpp"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("C"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("hpp"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("hxx"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("hh"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("h++"), TXT_LangKind_CPlusPlus}, -{str8_lit_comp("H"), TXT_LangKind_CPlusPlus}, -}; - -String8Array txt_keywords_from_lang_kind_table[8] = -{ -{txt_keywords__null, ArrayCount(txt_keywords__null)}, -{txt_keywords__c, ArrayCount(txt_keywords__c)}, -{txt_keywords__cpp, ArrayCount(txt_keywords__cpp)}, -{txt_keywords__odin, ArrayCount(txt_keywords__odin)}, -{txt_keywords__jai, ArrayCount(txt_keywords__jai)}, -{txt_keywords__zig, ArrayCount(txt_keywords__zig)}, -{txt_keywords__rust, ArrayCount(txt_keywords__rust)}, -{txt_keywords__null, ArrayCount(txt_keywords__null)}, -}; - -String8Array txt_multichar_symbols_from_lang_kind_table[8] = -{ -{txt_multichar_symbols__null, ArrayCount(txt_multichar_symbols__null)}, -{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, -{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, -{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, -{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, -{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, -{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, -{txt_multichar_symbols__null, ArrayCount(txt_multichar_symbols__null)}, -}; - -TXT_TokenizerRuleArray txt_tokenizer_rules_from_lang_kind_table[8] = -{ -{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, -{txt_tokenizer_rules__c, ArrayCount(txt_tokenizer_rules__c)}, -{txt_tokenizer_rules__c, ArrayCount(txt_tokenizer_rules__c)}, -{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, -{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, -{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, -{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, -{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, -}; - -String8 txt_keywords__null[1] = -{ -{0}, -}; - -String8 txt_multichar_symbols__null[1] = -{ -{0}, -}; - -TXT_TokenizerRule txt_tokenizer_rules__null[1] = -{ -{TXT_TokenKind_Null}, -}; - -String8 txt_keywords__c[32] = -{ -str8_lit_comp("auto"), -str8_lit_comp("break"), -str8_lit_comp("case"), -str8_lit_comp("char"), -str8_lit_comp("const"), -str8_lit_comp("continue"), -str8_lit_comp("default"), -str8_lit_comp("do"), -str8_lit_comp("double"), -str8_lit_comp("else"), -str8_lit_comp("enum"), -str8_lit_comp("extern"), -str8_lit_comp("float"), -str8_lit_comp("for"), -str8_lit_comp("goto"), -str8_lit_comp("if"), -str8_lit_comp("int"), -str8_lit_comp("long"), -str8_lit_comp("register"), -str8_lit_comp("return"), -str8_lit_comp("short"), -str8_lit_comp("signed"), -str8_lit_comp("sizeof"), -str8_lit_comp("static"), -str8_lit_comp("struct"), -str8_lit_comp("switch"), -str8_lit_comp("typedef"), -str8_lit_comp("union"), -str8_lit_comp("unsigned"), -str8_lit_comp("void"), -str8_lit_comp("volatile"), -str8_lit_comp("while"), -}; - -String8 txt_multichar_symbols__c[20] = -{ -str8_lit_comp("<<"), -str8_lit_comp(">>"), -str8_lit_comp("<="), -str8_lit_comp(">="), -str8_lit_comp("=="), -str8_lit_comp("!="), -str8_lit_comp("&&"), -str8_lit_comp("||"), -str8_lit_comp("|="), -str8_lit_comp("&="), -str8_lit_comp("^="), -str8_lit_comp("~="), -str8_lit_comp("+="), -str8_lit_comp("-="), -str8_lit_comp("*="), -str8_lit_comp("/="), -str8_lit_comp("%="), -str8_lit_comp("<<="), -str8_lit_comp(">>="), -str8_lit_comp("->"), -}; - -TXT_TokenizerRule txt_tokenizer_rules__c[7] = -{ -{TXT_TokenKind_Comment, str8_lit_comp("//"), str8_lit_comp("\n"), 0, 0, 1, 0}, -{TXT_TokenKind_Comment, str8_lit_comp("/*"), str8_lit_comp("*/"), 2, 0, 0, 0}, -{TXT_TokenKind_Meta, str8_lit_comp("#"), str8_lit_comp("\n"), 0, 0, 1, 0}, -{TXT_TokenKind_String, str8_lit_comp("\""), str8_lit_comp("\""), 1, 0, 1, 0}, -{TXT_TokenKind_String, str8_lit_comp("'"), str8_lit_comp("'"), 1, 0, 1, 0}, -{TXT_TokenKind_String, str8_lit_comp("\""), str8_lit_comp("\""), 1, 0, 1, 3}, -{TXT_TokenKind_String, str8_lit_comp("<"), str8_lit_comp(">"), 1, 0, 1, 3}, -}; - -String8 txt_keywords__cpp[97] = -{ -str8_lit_comp("alignas"), -str8_lit_comp("alignof"), -str8_lit_comp("and"), -str8_lit_comp("and_eq"), -str8_lit_comp("asm"), -str8_lit_comp("atomic_cancel"), -str8_lit_comp("atomic_commit"), -str8_lit_comp("atomic_noexcept"), -str8_lit_comp("auto"), -str8_lit_comp("bitand"), -str8_lit_comp("bitor"), -str8_lit_comp("bool"), -str8_lit_comp("break"), -str8_lit_comp("case"), -str8_lit_comp("catch"), -str8_lit_comp("char"), -str8_lit_comp("char8_t"), -str8_lit_comp("char16_t"), -str8_lit_comp("char32_t"), -str8_lit_comp("class"), -str8_lit_comp("compl"), -str8_lit_comp("concept"), -str8_lit_comp("const"), -str8_lit_comp("consteval"), -str8_lit_comp("constexpr"), -str8_lit_comp("constinit"), -str8_lit_comp("const_cast"), -str8_lit_comp("continue"), -str8_lit_comp("co_await"), -str8_lit_comp("co_return"), -str8_lit_comp("co_yield"), -str8_lit_comp("decltype"), -str8_lit_comp("default"), -str8_lit_comp("delete"), -str8_lit_comp("do"), -str8_lit_comp("double"), -str8_lit_comp("dynamic_cast"), -str8_lit_comp("else"), -str8_lit_comp("enum"), -str8_lit_comp("explicit"), -str8_lit_comp("export"), -str8_lit_comp("extern"), -str8_lit_comp("false"), -str8_lit_comp("float"), -str8_lit_comp("for"), -str8_lit_comp("friend"), -str8_lit_comp("goto"), -str8_lit_comp("if"), -str8_lit_comp("inline"), -str8_lit_comp("int"), -str8_lit_comp("long"), -str8_lit_comp("mutable"), -str8_lit_comp("namespace"), -str8_lit_comp("new"), -str8_lit_comp("noexcept"), -str8_lit_comp("not"), -str8_lit_comp("not_eq"), -str8_lit_comp("nullptr"), -str8_lit_comp("operator"), -str8_lit_comp("or"), -str8_lit_comp("or_eq"), -str8_lit_comp("private"), -str8_lit_comp("protected"), -str8_lit_comp("public"), -str8_lit_comp("reflexpr"), -str8_lit_comp("register"), -str8_lit_comp("reinterpret_cast"), -str8_lit_comp("requires"), -str8_lit_comp("return"), -str8_lit_comp("short"), -str8_lit_comp("signed"), -str8_lit_comp("sizeof"), -str8_lit_comp("static"), -str8_lit_comp("static_assert"), -str8_lit_comp("static_cast"), -str8_lit_comp("struct"), -str8_lit_comp("switch"), -str8_lit_comp("synchronized"), -str8_lit_comp("template"), -str8_lit_comp("this"), -str8_lit_comp("thread_local"), -str8_lit_comp("throw"), -str8_lit_comp("true"), -str8_lit_comp("try"), -str8_lit_comp("typedef"), -str8_lit_comp("typeid"), -str8_lit_comp("typename"), -str8_lit_comp("union"), -str8_lit_comp("unsigned"), -str8_lit_comp("using"), -str8_lit_comp("virtual"), -str8_lit_comp("void"), -str8_lit_comp("volatile"), -str8_lit_comp("wchar_t"), -str8_lit_comp("while"), -str8_lit_comp("xor"), -str8_lit_comp("xor_eq"), -}; - -String8 txt_keywords__odin[40] = -{ -str8_lit_comp("align_of"), -str8_lit_comp("asm"), -str8_lit_comp("auto_cast"), -str8_lit_comp("bit_set"), -str8_lit_comp("break"), -str8_lit_comp("case"), -str8_lit_comp("cast"), -str8_lit_comp("context"), -str8_lit_comp("continue"), -str8_lit_comp("defer"), -str8_lit_comp("distinct"), -str8_lit_comp("do"), -str8_lit_comp("dynamic"), -str8_lit_comp("else"), -str8_lit_comp("enum"), -str8_lit_comp("fallthrough"), -str8_lit_comp("for"), -str8_lit_comp("foreign"), -str8_lit_comp("if"), -str8_lit_comp("in"), -str8_lit_comp("map"), -str8_lit_comp("matrix"), -str8_lit_comp("not_in"), -str8_lit_comp("or_break"), -str8_lit_comp("or_continue"), -str8_lit_comp("or_else"), -str8_lit_comp("or_return"), -str8_lit_comp("package"), -str8_lit_comp("proc"), -str8_lit_comp("return"), -str8_lit_comp("size_of"), -str8_lit_comp("struct"), -str8_lit_comp("switch"), -str8_lit_comp("transmute"), -str8_lit_comp("typeid"), -str8_lit_comp("union"), -str8_lit_comp("using"), -str8_lit_comp("when"), -str8_lit_comp("where"), -str8_lit_comp("import"), -}; - -String8 txt_keywords__jai[39] = -{ -str8_lit_comp("bool"), -str8_lit_comp("true"), -str8_lit_comp("false"), -str8_lit_comp("int"), -str8_lit_comp("s8"), -str8_lit_comp("u8"), -str8_lit_comp("s16"), -str8_lit_comp("u16"), -str8_lit_comp("s32"), -str8_lit_comp("u32"), -str8_lit_comp("s64"), -str8_lit_comp("u64"), -str8_lit_comp("s128"), -str8_lit_comp("u128"), -str8_lit_comp("float"), -str8_lit_comp("float32"), -str8_lit_comp("float64"), -str8_lit_comp("void"), -str8_lit_comp("enum"), -str8_lit_comp("enum_flags"), -str8_lit_comp("size_of"), -str8_lit_comp("string"), -str8_lit_comp("type_of"), -str8_lit_comp("cast"), -str8_lit_comp("if"), -str8_lit_comp("ifs"), -str8_lit_comp("then"), -str8_lit_comp("else"), -str8_lit_comp("case"), -str8_lit_comp("for"), -str8_lit_comp("while"), -str8_lit_comp("break"), -str8_lit_comp("continue"), -str8_lit_comp("remove"), -str8_lit_comp("return"), -str8_lit_comp("inline"), -str8_lit_comp("null"), -str8_lit_comp("defer"), -str8_lit_comp("xx"), -}; - -String8 txt_keywords__zig[49] = -{ -str8_lit_comp("addrspace"), -str8_lit_comp("align"), -str8_lit_comp("allowzero"), -str8_lit_comp("and"), -str8_lit_comp("anyframe"), -str8_lit_comp("anytype"), -str8_lit_comp("asm"), -str8_lit_comp("async"), -str8_lit_comp("await"), -str8_lit_comp("break"), -str8_lit_comp("callconv"), -str8_lit_comp("catch"), -str8_lit_comp("comptime"), -str8_lit_comp("const"), -str8_lit_comp("continue"), -str8_lit_comp("defer"), -str8_lit_comp("else"), -str8_lit_comp("enum"), -str8_lit_comp("errdefer"), -str8_lit_comp("error"), -str8_lit_comp("export"), -str8_lit_comp("extern"), -str8_lit_comp("fn"), -str8_lit_comp("for"), -str8_lit_comp("if"), -str8_lit_comp("inline"), -str8_lit_comp("noalias"), -str8_lit_comp("nosuspend"), -str8_lit_comp("noinline"), -str8_lit_comp("opaque"), -str8_lit_comp("or"), -str8_lit_comp("orelse"), -str8_lit_comp("packed"), -str8_lit_comp("pub"), -str8_lit_comp("resume"), -str8_lit_comp("return"), -str8_lit_comp("linksection"), -str8_lit_comp("struct"), -str8_lit_comp("suspend"), -str8_lit_comp("switch"), -str8_lit_comp("test"), -str8_lit_comp("threadlocal"), -str8_lit_comp("try"), -str8_lit_comp("union"), -str8_lit_comp("unreachable"), -str8_lit_comp("usingnamespace"), -str8_lit_comp("var"), -str8_lit_comp("volatile"), -str8_lit_comp("while"), -}; - -String8 txt_keywords__rust[43] = -{ -str8_lit_comp("as"), -str8_lit_comp("break"), -str8_lit_comp("const"), -str8_lit_comp("continue"), -str8_lit_comp("crate"), -str8_lit_comp("else"), -str8_lit_comp("enum"), -str8_lit_comp("extern"), -str8_lit_comp("false"), -str8_lit_comp("fn"), -str8_lit_comp("for"), -str8_lit_comp("if"), -str8_lit_comp("impl"), -str8_lit_comp("in"), -str8_lit_comp("let"), -str8_lit_comp("loop"), -str8_lit_comp("match"), -str8_lit_comp("mod"), -str8_lit_comp("move"), -str8_lit_comp("mut"), -str8_lit_comp("pub"), -str8_lit_comp("ref"), -str8_lit_comp("return"), -str8_lit_comp("self"), -str8_lit_comp("Self"), -str8_lit_comp("static"), -str8_lit_comp("struct"), -str8_lit_comp("super"), -str8_lit_comp("trait"), -str8_lit_comp("true"), -str8_lit_comp("type"), -str8_lit_comp("unsafe"), -str8_lit_comp("use"), -str8_lit_comp("where"), -str8_lit_comp("while"), -str8_lit_comp("yield"), -str8_lit_comp("async"), -str8_lit_comp("await"), -str8_lit_comp("dyn"), -str8_lit_comp("macro_rules"), -str8_lit_comp("raw"), -str8_lit_comp("safe"), -str8_lit_comp("union"), -}; - -C_LINKAGE_END - +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +C_LINKAGE_BEGIN +String8 txt_lang_kind_ext_table[8] = +{ +str8_lit_comp("null"), +str8_lit_comp("c"), +str8_lit_comp("cpp"), +str8_lit_comp("odin"), +str8_lit_comp("jai"), +str8_lit_comp("zig"), +str8_lit_comp("rs"), +str8_lit_comp("disasm_x64_intel"), +}; + +struct {String8 ext; TXT_LangKind kind;} txt_ext_lang_kind_table[24] = +{ +{str8_lit_comp("null"), TXT_LangKind_Null}, +{str8_lit_comp("c"), TXT_LangKind_C}, +{str8_lit_comp("cpp"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("odin"), TXT_LangKind_Odin}, +{str8_lit_comp("jai"), TXT_LangKind_Jai}, +{str8_lit_comp("zig"), TXT_LangKind_Zig}, +{str8_lit_comp("rs"), TXT_LangKind_Rust}, +{str8_lit_comp("disasm_x64_intel"), TXT_LangKind_DisasmX64Intel}, +{str8_lit_comp("h"), TXT_LangKind_C}, +{str8_lit_comp("cxx"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("cc"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("c++"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("ixx"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("cxxm"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("c++m"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("ccm"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("cppm"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("mpp"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("C"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("hpp"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("hxx"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("hh"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("h++"), TXT_LangKind_CPlusPlus}, +{str8_lit_comp("H"), TXT_LangKind_CPlusPlus}, +}; + +String8Array txt_keywords_from_lang_kind_table[8] = +{ +{txt_keywords__null, ArrayCount(txt_keywords__null)}, +{txt_keywords__c, ArrayCount(txt_keywords__c)}, +{txt_keywords__cpp, ArrayCount(txt_keywords__cpp)}, +{txt_keywords__odin, ArrayCount(txt_keywords__odin)}, +{txt_keywords__jai, ArrayCount(txt_keywords__jai)}, +{txt_keywords__zig, ArrayCount(txt_keywords__zig)}, +{txt_keywords__rust, ArrayCount(txt_keywords__rust)}, +{txt_keywords__null, ArrayCount(txt_keywords__null)}, +}; + +String8Array txt_multichar_symbols_from_lang_kind_table[8] = +{ +{txt_multichar_symbols__null, ArrayCount(txt_multichar_symbols__null)}, +{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, +{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, +{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, +{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, +{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, +{txt_multichar_symbols__c, ArrayCount(txt_multichar_symbols__c)}, +{txt_multichar_symbols__null, ArrayCount(txt_multichar_symbols__null)}, +}; + +TXT_TokenizerRuleArray txt_tokenizer_rules_from_lang_kind_table[8] = +{ +{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, +{txt_tokenizer_rules__c, ArrayCount(txt_tokenizer_rules__c)}, +{txt_tokenizer_rules__c, ArrayCount(txt_tokenizer_rules__c)}, +{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, +{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, +{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, +{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, +{txt_tokenizer_rules__null, ArrayCount(txt_tokenizer_rules__null)}, +}; + +String8 txt_keywords__null[1] = +{ +{0}, +}; + +String8 txt_multichar_symbols__null[1] = +{ +{0}, +}; + +TXT_TokenizerRule txt_tokenizer_rules__null[1] = +{ +{TXT_TokenKind_Null}, +}; + +String8 txt_keywords__c[32] = +{ +str8_lit_comp("auto"), +str8_lit_comp("break"), +str8_lit_comp("case"), +str8_lit_comp("char"), +str8_lit_comp("const"), +str8_lit_comp("continue"), +str8_lit_comp("default"), +str8_lit_comp("do"), +str8_lit_comp("double"), +str8_lit_comp("else"), +str8_lit_comp("enum"), +str8_lit_comp("extern"), +str8_lit_comp("float"), +str8_lit_comp("for"), +str8_lit_comp("goto"), +str8_lit_comp("if"), +str8_lit_comp("int"), +str8_lit_comp("long"), +str8_lit_comp("register"), +str8_lit_comp("return"), +str8_lit_comp("short"), +str8_lit_comp("signed"), +str8_lit_comp("sizeof"), +str8_lit_comp("static"), +str8_lit_comp("struct"), +str8_lit_comp("switch"), +str8_lit_comp("typedef"), +str8_lit_comp("union"), +str8_lit_comp("unsigned"), +str8_lit_comp("void"), +str8_lit_comp("volatile"), +str8_lit_comp("while"), +}; + +String8 txt_multichar_symbols__c[20] = +{ +str8_lit_comp("<<"), +str8_lit_comp(">>"), +str8_lit_comp("<="), +str8_lit_comp(">="), +str8_lit_comp("=="), +str8_lit_comp("!="), +str8_lit_comp("&&"), +str8_lit_comp("||"), +str8_lit_comp("|="), +str8_lit_comp("&="), +str8_lit_comp("^="), +str8_lit_comp("~="), +str8_lit_comp("+="), +str8_lit_comp("-="), +str8_lit_comp("*="), +str8_lit_comp("/="), +str8_lit_comp("%="), +str8_lit_comp("<<="), +str8_lit_comp(">>="), +str8_lit_comp("->"), +}; + +TXT_TokenizerRule txt_tokenizer_rules__c[7] = +{ +{TXT_TokenKind_Comment, str8_lit_comp("//"), str8_lit_comp("\n"), 0, 0, 1, 0}, +{TXT_TokenKind_Comment, str8_lit_comp("/*"), str8_lit_comp("*/"), 2, 0, 0, 0}, +{TXT_TokenKind_Meta, str8_lit_comp("#"), str8_lit_comp("\n"), 0, 0, 1, 0}, +{TXT_TokenKind_String, str8_lit_comp("\""), str8_lit_comp("\""), 1, 0, 1, 0}, +{TXT_TokenKind_String, str8_lit_comp("'"), str8_lit_comp("'"), 1, 0, 1, 0}, +{TXT_TokenKind_String, str8_lit_comp("\""), str8_lit_comp("\""), 1, 0, 1, 3}, +{TXT_TokenKind_String, str8_lit_comp("<"), str8_lit_comp(">"), 1, 0, 1, 3}, +}; + +String8 txt_keywords__cpp[97] = +{ +str8_lit_comp("alignas"), +str8_lit_comp("alignof"), +str8_lit_comp("and"), +str8_lit_comp("and_eq"), +str8_lit_comp("asm"), +str8_lit_comp("atomic_cancel"), +str8_lit_comp("atomic_commit"), +str8_lit_comp("atomic_noexcept"), +str8_lit_comp("auto"), +str8_lit_comp("bitand"), +str8_lit_comp("bitor"), +str8_lit_comp("bool"), +str8_lit_comp("break"), +str8_lit_comp("case"), +str8_lit_comp("catch"), +str8_lit_comp("char"), +str8_lit_comp("char8_t"), +str8_lit_comp("char16_t"), +str8_lit_comp("char32_t"), +str8_lit_comp("class"), +str8_lit_comp("compl"), +str8_lit_comp("concept"), +str8_lit_comp("const"), +str8_lit_comp("consteval"), +str8_lit_comp("constexpr"), +str8_lit_comp("constinit"), +str8_lit_comp("const_cast"), +str8_lit_comp("continue"), +str8_lit_comp("co_await"), +str8_lit_comp("co_return"), +str8_lit_comp("co_yield"), +str8_lit_comp("decltype"), +str8_lit_comp("default"), +str8_lit_comp("delete"), +str8_lit_comp("do"), +str8_lit_comp("double"), +str8_lit_comp("dynamic_cast"), +str8_lit_comp("else"), +str8_lit_comp("enum"), +str8_lit_comp("explicit"), +str8_lit_comp("export"), +str8_lit_comp("extern"), +str8_lit_comp("false"), +str8_lit_comp("float"), +str8_lit_comp("for"), +str8_lit_comp("friend"), +str8_lit_comp("goto"), +str8_lit_comp("if"), +str8_lit_comp("inline"), +str8_lit_comp("int"), +str8_lit_comp("long"), +str8_lit_comp("mutable"), +str8_lit_comp("namespace"), +str8_lit_comp("new"), +str8_lit_comp("noexcept"), +str8_lit_comp("not"), +str8_lit_comp("not_eq"), +str8_lit_comp("nullptr"), +str8_lit_comp("operator"), +str8_lit_comp("or"), +str8_lit_comp("or_eq"), +str8_lit_comp("private"), +str8_lit_comp("protected"), +str8_lit_comp("public"), +str8_lit_comp("reflexpr"), +str8_lit_comp("register"), +str8_lit_comp("reinterpret_cast"), +str8_lit_comp("requires"), +str8_lit_comp("return"), +str8_lit_comp("short"), +str8_lit_comp("signed"), +str8_lit_comp("sizeof"), +str8_lit_comp("static"), +str8_lit_comp("static_assert"), +str8_lit_comp("static_cast"), +str8_lit_comp("struct"), +str8_lit_comp("switch"), +str8_lit_comp("synchronized"), +str8_lit_comp("template"), +str8_lit_comp("this"), +str8_lit_comp("thread_local"), +str8_lit_comp("throw"), +str8_lit_comp("true"), +str8_lit_comp("try"), +str8_lit_comp("typedef"), +str8_lit_comp("typeid"), +str8_lit_comp("typename"), +str8_lit_comp("union"), +str8_lit_comp("unsigned"), +str8_lit_comp("using"), +str8_lit_comp("virtual"), +str8_lit_comp("void"), +str8_lit_comp("volatile"), +str8_lit_comp("wchar_t"), +str8_lit_comp("while"), +str8_lit_comp("xor"), +str8_lit_comp("xor_eq"), +}; + +String8 txt_keywords__odin[40] = +{ +str8_lit_comp("align_of"), +str8_lit_comp("asm"), +str8_lit_comp("auto_cast"), +str8_lit_comp("bit_set"), +str8_lit_comp("break"), +str8_lit_comp("case"), +str8_lit_comp("cast"), +str8_lit_comp("context"), +str8_lit_comp("continue"), +str8_lit_comp("defer"), +str8_lit_comp("distinct"), +str8_lit_comp("do"), +str8_lit_comp("dynamic"), +str8_lit_comp("else"), +str8_lit_comp("enum"), +str8_lit_comp("fallthrough"), +str8_lit_comp("for"), +str8_lit_comp("foreign"), +str8_lit_comp("if"), +str8_lit_comp("in"), +str8_lit_comp("map"), +str8_lit_comp("matrix"), +str8_lit_comp("not_in"), +str8_lit_comp("or_break"), +str8_lit_comp("or_continue"), +str8_lit_comp("or_else"), +str8_lit_comp("or_return"), +str8_lit_comp("package"), +str8_lit_comp("proc"), +str8_lit_comp("return"), +str8_lit_comp("size_of"), +str8_lit_comp("struct"), +str8_lit_comp("switch"), +str8_lit_comp("transmute"), +str8_lit_comp("typeid"), +str8_lit_comp("union"), +str8_lit_comp("using"), +str8_lit_comp("when"), +str8_lit_comp("where"), +str8_lit_comp("import"), +}; + +String8 txt_keywords__jai[39] = +{ +str8_lit_comp("bool"), +str8_lit_comp("true"), +str8_lit_comp("false"), +str8_lit_comp("int"), +str8_lit_comp("s8"), +str8_lit_comp("u8"), +str8_lit_comp("s16"), +str8_lit_comp("u16"), +str8_lit_comp("s32"), +str8_lit_comp("u32"), +str8_lit_comp("s64"), +str8_lit_comp("u64"), +str8_lit_comp("s128"), +str8_lit_comp("u128"), +str8_lit_comp("float"), +str8_lit_comp("float32"), +str8_lit_comp("float64"), +str8_lit_comp("void"), +str8_lit_comp("enum"), +str8_lit_comp("enum_flags"), +str8_lit_comp("size_of"), +str8_lit_comp("string"), +str8_lit_comp("type_of"), +str8_lit_comp("cast"), +str8_lit_comp("if"), +str8_lit_comp("ifs"), +str8_lit_comp("then"), +str8_lit_comp("else"), +str8_lit_comp("case"), +str8_lit_comp("for"), +str8_lit_comp("while"), +str8_lit_comp("break"), +str8_lit_comp("continue"), +str8_lit_comp("remove"), +str8_lit_comp("return"), +str8_lit_comp("inline"), +str8_lit_comp("null"), +str8_lit_comp("defer"), +str8_lit_comp("xx"), +}; + +String8 txt_keywords__zig[49] = +{ +str8_lit_comp("addrspace"), +str8_lit_comp("align"), +str8_lit_comp("allowzero"), +str8_lit_comp("and"), +str8_lit_comp("anyframe"), +str8_lit_comp("anytype"), +str8_lit_comp("asm"), +str8_lit_comp("async"), +str8_lit_comp("await"), +str8_lit_comp("break"), +str8_lit_comp("callconv"), +str8_lit_comp("catch"), +str8_lit_comp("comptime"), +str8_lit_comp("const"), +str8_lit_comp("continue"), +str8_lit_comp("defer"), +str8_lit_comp("else"), +str8_lit_comp("enum"), +str8_lit_comp("errdefer"), +str8_lit_comp("error"), +str8_lit_comp("export"), +str8_lit_comp("extern"), +str8_lit_comp("fn"), +str8_lit_comp("for"), +str8_lit_comp("if"), +str8_lit_comp("inline"), +str8_lit_comp("noalias"), +str8_lit_comp("nosuspend"), +str8_lit_comp("noinline"), +str8_lit_comp("opaque"), +str8_lit_comp("or"), +str8_lit_comp("orelse"), +str8_lit_comp("packed"), +str8_lit_comp("pub"), +str8_lit_comp("resume"), +str8_lit_comp("return"), +str8_lit_comp("linksection"), +str8_lit_comp("struct"), +str8_lit_comp("suspend"), +str8_lit_comp("switch"), +str8_lit_comp("test"), +str8_lit_comp("threadlocal"), +str8_lit_comp("try"), +str8_lit_comp("union"), +str8_lit_comp("unreachable"), +str8_lit_comp("usingnamespace"), +str8_lit_comp("var"), +str8_lit_comp("volatile"), +str8_lit_comp("while"), +}; + +String8 txt_keywords__rust[43] = +{ +str8_lit_comp("as"), +str8_lit_comp("break"), +str8_lit_comp("const"), +str8_lit_comp("continue"), +str8_lit_comp("crate"), +str8_lit_comp("else"), +str8_lit_comp("enum"), +str8_lit_comp("extern"), +str8_lit_comp("false"), +str8_lit_comp("fn"), +str8_lit_comp("for"), +str8_lit_comp("if"), +str8_lit_comp("impl"), +str8_lit_comp("in"), +str8_lit_comp("let"), +str8_lit_comp("loop"), +str8_lit_comp("match"), +str8_lit_comp("mod"), +str8_lit_comp("move"), +str8_lit_comp("mut"), +str8_lit_comp("pub"), +str8_lit_comp("ref"), +str8_lit_comp("return"), +str8_lit_comp("self"), +str8_lit_comp("Self"), +str8_lit_comp("static"), +str8_lit_comp("struct"), +str8_lit_comp("super"), +str8_lit_comp("trait"), +str8_lit_comp("true"), +str8_lit_comp("type"), +str8_lit_comp("unsafe"), +str8_lit_comp("use"), +str8_lit_comp("where"), +str8_lit_comp("while"), +str8_lit_comp("yield"), +str8_lit_comp("async"), +str8_lit_comp("await"), +str8_lit_comp("dyn"), +str8_lit_comp("macro_rules"), +str8_lit_comp("raw"), +str8_lit_comp("safe"), +str8_lit_comp("union"), +}; + +C_LINKAGE_END + diff --git a/src/text/generated/text.meta.h b/src/text/generated/text.meta.h index f4cc1eab..23db1766 100644 --- a/src/text/generated/text.meta.h +++ b/src/text/generated/text.meta.h @@ -1,41 +1,41 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef TEXT_META_H -#define TEXT_META_H - -typedef enum TXT_LangKind -{ -TXT_LangKind_Null, -TXT_LangKind_C, -TXT_LangKind_CPlusPlus, -TXT_LangKind_Odin, -TXT_LangKind_Jai, -TXT_LangKind_Zig, -TXT_LangKind_Rust, -TXT_LangKind_DisasmX64Intel, -TXT_LangKind_COUNT, -} TXT_LangKind; - -C_LINKAGE_BEGIN -extern String8 txt_lang_kind_ext_table[8]; -extern String8Array txt_keywords_from_lang_kind_table[8]; -extern String8Array txt_multichar_symbols_from_lang_kind_table[8]; -extern TXT_TokenizerRuleArray txt_tokenizer_rules_from_lang_kind_table[8]; -extern String8 txt_keywords__null[1]; -extern String8 txt_multichar_symbols__null[1]; -extern TXT_TokenizerRule txt_tokenizer_rules__null[1]; -extern String8 txt_keywords__c[32]; -extern String8 txt_multichar_symbols__c[20]; -extern TXT_TokenizerRule txt_tokenizer_rules__c[7]; -extern String8 txt_keywords__cpp[97]; -extern String8 txt_keywords__odin[40]; -extern String8 txt_keywords__jai[39]; -extern String8 txt_keywords__zig[49]; -extern String8 txt_keywords__rust[43]; - -C_LINKAGE_END - -#endif // TEXT_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef TEXT_META_H +#define TEXT_META_H + +typedef enum TXT_LangKind +{ +TXT_LangKind_Null, +TXT_LangKind_C, +TXT_LangKind_CPlusPlus, +TXT_LangKind_Odin, +TXT_LangKind_Jai, +TXT_LangKind_Zig, +TXT_LangKind_Rust, +TXT_LangKind_DisasmX64Intel, +TXT_LangKind_COUNT, +} TXT_LangKind; + +C_LINKAGE_BEGIN +extern String8 txt_lang_kind_ext_table[8]; +extern String8Array txt_keywords_from_lang_kind_table[8]; +extern String8Array txt_multichar_symbols_from_lang_kind_table[8]; +extern TXT_TokenizerRuleArray txt_tokenizer_rules_from_lang_kind_table[8]; +extern String8 txt_keywords__null[1]; +extern String8 txt_multichar_symbols__null[1]; +extern TXT_TokenizerRule txt_tokenizer_rules__null[1]; +extern String8 txt_keywords__c[32]; +extern String8 txt_multichar_symbols__c[20]; +extern TXT_TokenizerRule txt_tokenizer_rules__c[7]; +extern String8 txt_keywords__cpp[97]; +extern String8 txt_keywords__odin[40]; +extern String8 txt_keywords__jai[39]; +extern String8 txt_keywords__zig[49]; +extern String8 txt_keywords__rust[43]; + +C_LINKAGE_END + +#endif // TEXT_META_H diff --git a/src/ui/generated/ui.meta.c b/src/ui/generated/ui.meta.c index 96ea8755..790b5877 100644 --- a/src/ui/generated/ui.meta.c +++ b/src/ui/generated/ui.meta.c @@ -1,212 +1,212 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#if 0 -#define UI_Parent(v) DeferLoop(ui_push_parent(v), ui_pop_parent()) -#define UI_ChildLayoutAxis(v) DeferLoop(ui_push_child_layout_axis(v), ui_pop_child_layout_axis()) -#define UI_FixedX(v) DeferLoop(ui_push_fixed_x(v), ui_pop_fixed_x()) -#define UI_FixedY(v) DeferLoop(ui_push_fixed_y(v), ui_pop_fixed_y()) -#define UI_FixedWidth(v) DeferLoop(ui_push_fixed_width(v), ui_pop_fixed_width()) -#define UI_FixedHeight(v) DeferLoop(ui_push_fixed_height(v), ui_pop_fixed_height()) -#define UI_PrefWidth(v) DeferLoop(ui_push_pref_width(v), ui_pop_pref_width()) -#define UI_PrefHeight(v) DeferLoop(ui_push_pref_height(v), ui_pop_pref_height()) -#define UI_MinWidth(v) DeferLoop(ui_push_min_width(v), ui_pop_min_width()) -#define UI_MinHeight(v) DeferLoop(ui_push_min_height(v), ui_pop_min_height()) -#define UI_PermissionFlags(v) DeferLoop(ui_push_permission_flags(v), ui_pop_permission_flags()) -#define UI_Flags(v) DeferLoop(ui_push_flags(v), ui_pop_flags()) -#define UI_OmitFlags(v) DeferLoop(ui_push_omit_flags(v), ui_pop_omit_flags()) -#define UI_FocusHot(v) DeferLoop(ui_push_focus_hot(v), ui_pop_focus_hot()) -#define UI_FocusActive(v) DeferLoop(ui_push_focus_active(v), ui_pop_focus_active()) -#define UI_FastpathCodepoint(v) DeferLoop(ui_push_fastpath_codepoint(v), ui_pop_fastpath_codepoint()) -#define UI_GroupKey(v) DeferLoop(ui_push_group_key(v), ui_pop_group_key()) -#define UI_Transparency(v) DeferLoop(ui_push_transparency(v), ui_pop_transparency()) -#define UI_Tag(v) DeferLoop(ui_push_tag(v), ui_pop_tag()) -#define UI_BackgroundColor(v) DeferLoop(ui_push_background_color(v), ui_pop_background_color()) -#define UI_TextColor(v) DeferLoop(ui_push_text_color(v), ui_pop_text_color()) -#define UI_BorderColor(v) DeferLoop(ui_push_border_color(v), ui_pop_border_color()) -#define UI_Squish(v) DeferLoop(ui_push_squish(v), ui_pop_squish()) -#define UI_HoverCursor(v) DeferLoop(ui_push_hover_cursor(v), ui_pop_hover_cursor()) -#define UI_Font(v) DeferLoop(ui_push_font(v), ui_pop_font()) -#define UI_FontSize(v) DeferLoop(ui_push_font_size(v), ui_pop_font_size()) -#define UI_TextRasterFlags(v) DeferLoop(ui_push_text_raster_flags(v), ui_pop_text_raster_flags()) -#define UI_TabSize(v) DeferLoop(ui_push_tab_size(v), ui_pop_tab_size()) -#define UI_CornerRadius00(v) DeferLoop(ui_push_corner_radius_00(v), ui_pop_corner_radius_00()) -#define UI_CornerRadius01(v) DeferLoop(ui_push_corner_radius_01(v), ui_pop_corner_radius_01()) -#define UI_CornerRadius10(v) DeferLoop(ui_push_corner_radius_10(v), ui_pop_corner_radius_10()) -#define UI_CornerRadius11(v) DeferLoop(ui_push_corner_radius_11(v), ui_pop_corner_radius_11()) -#define UI_BlurSize(v) DeferLoop(ui_push_blur_size(v), ui_pop_blur_size()) -#define UI_TextPadding(v) DeferLoop(ui_push_text_padding(v), ui_pop_text_padding()) -#define UI_TextAlignment(v) DeferLoop(ui_push_text_alignment(v), ui_pop_text_alignment()) -#endif -internal UI_Box * ui_top_parent(void) { UI_StackTopImpl(ui_state, Parent, parent) } -internal Axis2 ui_top_child_layout_axis(void) { UI_StackTopImpl(ui_state, ChildLayoutAxis, child_layout_axis) } -internal F32 ui_top_fixed_x(void) { UI_StackTopImpl(ui_state, FixedX, fixed_x) } -internal F32 ui_top_fixed_y(void) { UI_StackTopImpl(ui_state, FixedY, fixed_y) } -internal F32 ui_top_fixed_width(void) { UI_StackTopImpl(ui_state, FixedWidth, fixed_width) } -internal F32 ui_top_fixed_height(void) { UI_StackTopImpl(ui_state, FixedHeight, fixed_height) } -internal UI_Size ui_top_pref_width(void) { UI_StackTopImpl(ui_state, PrefWidth, pref_width) } -internal UI_Size ui_top_pref_height(void) { UI_StackTopImpl(ui_state, PrefHeight, pref_height) } -internal F32 ui_top_min_width(void) { UI_StackTopImpl(ui_state, MinWidth, min_width) } -internal F32 ui_top_min_height(void) { UI_StackTopImpl(ui_state, MinHeight, min_height) } -internal UI_PermissionFlags ui_top_permission_flags(void) { UI_StackTopImpl(ui_state, PermissionFlags, permission_flags) } -internal UI_BoxFlags ui_top_flags(void) { UI_StackTopImpl(ui_state, Flags, flags) } -internal UI_BoxFlags ui_top_omit_flags(void) { UI_StackTopImpl(ui_state, OmitFlags, omit_flags) } -internal UI_FocusKind ui_top_focus_hot(void) { UI_StackTopImpl(ui_state, FocusHot, focus_hot) } -internal UI_FocusKind ui_top_focus_active(void) { UI_StackTopImpl(ui_state, FocusActive, focus_active) } -internal U32 ui_top_fastpath_codepoint(void) { UI_StackTopImpl(ui_state, FastpathCodepoint, fastpath_codepoint) } -internal UI_Key ui_top_group_key(void) { UI_StackTopImpl(ui_state, GroupKey, group_key) } -internal F32 ui_top_transparency(void) { UI_StackTopImpl(ui_state, Transparency, transparency) } -internal Vec4F32 ui_top_background_color(void) { UI_StackTopImpl(ui_state, BackgroundColor, background_color) } -internal Vec4F32 ui_top_text_color(void) { UI_StackTopImpl(ui_state, TextColor, text_color) } -internal Vec4F32 ui_top_border_color(void) { UI_StackTopImpl(ui_state, BorderColor, border_color) } -internal F32 ui_top_squish(void) { UI_StackTopImpl(ui_state, Squish, squish) } -internal WM_Cursor ui_top_hover_cursor(void) { UI_StackTopImpl(ui_state, HoverCursor, hover_cursor) } -internal FNT_Tag ui_top_font(void) { UI_StackTopImpl(ui_state, Font, font) } -internal F32 ui_top_font_size(void) { UI_StackTopImpl(ui_state, FontSize, font_size) } -internal FNT_RasterFlags ui_top_text_raster_flags(void) { UI_StackTopImpl(ui_state, TextRasterFlags, text_raster_flags) } -internal F32 ui_top_tab_size(void) { UI_StackTopImpl(ui_state, TabSize, tab_size) } -internal F32 ui_top_corner_radius_00(void) { UI_StackTopImpl(ui_state, CornerRadius00, corner_radius_00) } -internal F32 ui_top_corner_radius_01(void) { UI_StackTopImpl(ui_state, CornerRadius01, corner_radius_01) } -internal F32 ui_top_corner_radius_10(void) { UI_StackTopImpl(ui_state, CornerRadius10, corner_radius_10) } -internal F32 ui_top_corner_radius_11(void) { UI_StackTopImpl(ui_state, CornerRadius11, corner_radius_11) } -internal F32 ui_top_blur_size(void) { UI_StackTopImpl(ui_state, BlurSize, blur_size) } -internal F32 ui_top_text_padding(void) { UI_StackTopImpl(ui_state, TextPadding, text_padding) } -internal UI_TextAlign ui_top_text_alignment(void) { UI_StackTopImpl(ui_state, TextAlignment, text_alignment) } -internal UI_Box * ui_bottom_parent(void) { UI_StackBottomImpl(ui_state, Parent, parent) } -internal Axis2 ui_bottom_child_layout_axis(void) { UI_StackBottomImpl(ui_state, ChildLayoutAxis, child_layout_axis) } -internal F32 ui_bottom_fixed_x(void) { UI_StackBottomImpl(ui_state, FixedX, fixed_x) } -internal F32 ui_bottom_fixed_y(void) { UI_StackBottomImpl(ui_state, FixedY, fixed_y) } -internal F32 ui_bottom_fixed_width(void) { UI_StackBottomImpl(ui_state, FixedWidth, fixed_width) } -internal F32 ui_bottom_fixed_height(void) { UI_StackBottomImpl(ui_state, FixedHeight, fixed_height) } -internal UI_Size ui_bottom_pref_width(void) { UI_StackBottomImpl(ui_state, PrefWidth, pref_width) } -internal UI_Size ui_bottom_pref_height(void) { UI_StackBottomImpl(ui_state, PrefHeight, pref_height) } -internal F32 ui_bottom_min_width(void) { UI_StackBottomImpl(ui_state, MinWidth, min_width) } -internal F32 ui_bottom_min_height(void) { UI_StackBottomImpl(ui_state, MinHeight, min_height) } -internal UI_PermissionFlags ui_bottom_permission_flags(void) { UI_StackBottomImpl(ui_state, PermissionFlags, permission_flags) } -internal UI_BoxFlags ui_bottom_flags(void) { UI_StackBottomImpl(ui_state, Flags, flags) } -internal UI_BoxFlags ui_bottom_omit_flags(void) { UI_StackBottomImpl(ui_state, OmitFlags, omit_flags) } -internal UI_FocusKind ui_bottom_focus_hot(void) { UI_StackBottomImpl(ui_state, FocusHot, focus_hot) } -internal UI_FocusKind ui_bottom_focus_active(void) { UI_StackBottomImpl(ui_state, FocusActive, focus_active) } -internal U32 ui_bottom_fastpath_codepoint(void) { UI_StackBottomImpl(ui_state, FastpathCodepoint, fastpath_codepoint) } -internal UI_Key ui_bottom_group_key(void) { UI_StackBottomImpl(ui_state, GroupKey, group_key) } -internal F32 ui_bottom_transparency(void) { UI_StackBottomImpl(ui_state, Transparency, transparency) } -internal Vec4F32 ui_bottom_background_color(void) { UI_StackBottomImpl(ui_state, BackgroundColor, background_color) } -internal Vec4F32 ui_bottom_text_color(void) { UI_StackBottomImpl(ui_state, TextColor, text_color) } -internal Vec4F32 ui_bottom_border_color(void) { UI_StackBottomImpl(ui_state, BorderColor, border_color) } -internal F32 ui_bottom_squish(void) { UI_StackBottomImpl(ui_state, Squish, squish) } -internal WM_Cursor ui_bottom_hover_cursor(void) { UI_StackBottomImpl(ui_state, HoverCursor, hover_cursor) } -internal FNT_Tag ui_bottom_font(void) { UI_StackBottomImpl(ui_state, Font, font) } -internal F32 ui_bottom_font_size(void) { UI_StackBottomImpl(ui_state, FontSize, font_size) } -internal FNT_RasterFlags ui_bottom_text_raster_flags(void) { UI_StackBottomImpl(ui_state, TextRasterFlags, text_raster_flags) } -internal F32 ui_bottom_tab_size(void) { UI_StackBottomImpl(ui_state, TabSize, tab_size) } -internal F32 ui_bottom_corner_radius_00(void) { UI_StackBottomImpl(ui_state, CornerRadius00, corner_radius_00) } -internal F32 ui_bottom_corner_radius_01(void) { UI_StackBottomImpl(ui_state, CornerRadius01, corner_radius_01) } -internal F32 ui_bottom_corner_radius_10(void) { UI_StackBottomImpl(ui_state, CornerRadius10, corner_radius_10) } -internal F32 ui_bottom_corner_radius_11(void) { UI_StackBottomImpl(ui_state, CornerRadius11, corner_radius_11) } -internal F32 ui_bottom_blur_size(void) { UI_StackBottomImpl(ui_state, BlurSize, blur_size) } -internal F32 ui_bottom_text_padding(void) { UI_StackBottomImpl(ui_state, TextPadding, text_padding) } -internal UI_TextAlign ui_bottom_text_alignment(void) { UI_StackBottomImpl(ui_state, TextAlignment, text_alignment) } -internal UI_Box * ui_push_parent(UI_Box * v) { UI_StackPushImpl(ui_state, Parent, parent, UI_Box *, v) } -internal Axis2 ui_push_child_layout_axis(Axis2 v) { UI_StackPushImpl(ui_state, ChildLayoutAxis, child_layout_axis, Axis2, v) } -internal F32 ui_push_fixed_x(F32 v) { UI_StackPushImpl(ui_state, FixedX, fixed_x, F32, v) } -internal F32 ui_push_fixed_y(F32 v) { UI_StackPushImpl(ui_state, FixedY, fixed_y, F32, v) } -internal F32 ui_push_fixed_width(F32 v) { UI_StackPushImpl(ui_state, FixedWidth, fixed_width, F32, v) } -internal F32 ui_push_fixed_height(F32 v) { UI_StackPushImpl(ui_state, FixedHeight, fixed_height, F32, v) } -internal UI_Size ui_push_pref_width(UI_Size v) { UI_StackPushImpl(ui_state, PrefWidth, pref_width, UI_Size, v) } -internal UI_Size ui_push_pref_height(UI_Size v) { UI_StackPushImpl(ui_state, PrefHeight, pref_height, UI_Size, v) } -internal F32 ui_push_min_width(F32 v) { UI_StackPushImpl(ui_state, MinWidth, min_width, F32, v) } -internal F32 ui_push_min_height(F32 v) { UI_StackPushImpl(ui_state, MinHeight, min_height, F32, v) } -internal UI_PermissionFlags ui_push_permission_flags(UI_PermissionFlags v) { UI_StackPushImpl(ui_state, PermissionFlags, permission_flags, UI_PermissionFlags, v) } -internal UI_BoxFlags ui_push_flags(UI_BoxFlags v) { UI_StackPushImpl(ui_state, Flags, flags, UI_BoxFlags, v) } -internal UI_BoxFlags ui_push_omit_flags(UI_BoxFlags v) { UI_StackPushImpl(ui_state, OmitFlags, omit_flags, UI_BoxFlags, v) } -internal UI_FocusKind ui_push_focus_hot(UI_FocusKind v) { UI_StackPushImpl(ui_state, FocusHot, focus_hot, UI_FocusKind, v) } -internal UI_FocusKind ui_push_focus_active(UI_FocusKind v) { UI_StackPushImpl(ui_state, FocusActive, focus_active, UI_FocusKind, v) } -internal U32 ui_push_fastpath_codepoint(U32 v) { UI_StackPushImpl(ui_state, FastpathCodepoint, fastpath_codepoint, U32, v) } -internal UI_Key ui_push_group_key(UI_Key v) { UI_StackPushImpl(ui_state, GroupKey, group_key, UI_Key, v) } -internal F32 ui_push_transparency(F32 v) { UI_StackPushImpl(ui_state, Transparency, transparency, F32, v) } -internal Vec4F32 ui_push_background_color(Vec4F32 v) { UI_StackPushImpl(ui_state, BackgroundColor, background_color, Vec4F32, v) } -internal Vec4F32 ui_push_text_color(Vec4F32 v) { UI_StackPushImpl(ui_state, TextColor, text_color, Vec4F32, v) } -internal Vec4F32 ui_push_border_color(Vec4F32 v) { UI_StackPushImpl(ui_state, BorderColor, border_color, Vec4F32, v) } -internal F32 ui_push_squish(F32 v) { UI_StackPushImpl(ui_state, Squish, squish, F32, v) } -internal WM_Cursor ui_push_hover_cursor(WM_Cursor v) { UI_StackPushImpl(ui_state, HoverCursor, hover_cursor, WM_Cursor, v) } -internal FNT_Tag ui_push_font(FNT_Tag v) { UI_StackPushImpl(ui_state, Font, font, FNT_Tag, v) } -internal F32 ui_push_font_size(F32 v) { UI_StackPushImpl(ui_state, FontSize, font_size, F32, v) } -internal FNT_RasterFlags ui_push_text_raster_flags(FNT_RasterFlags v) { UI_StackPushImpl(ui_state, TextRasterFlags, text_raster_flags, FNT_RasterFlags, v) } -internal F32 ui_push_tab_size(F32 v) { UI_StackPushImpl(ui_state, TabSize, tab_size, F32, v) } -internal F32 ui_push_corner_radius_00(F32 v) { UI_StackPushImpl(ui_state, CornerRadius00, corner_radius_00, F32, v) } -internal F32 ui_push_corner_radius_01(F32 v) { UI_StackPushImpl(ui_state, CornerRadius01, corner_radius_01, F32, v) } -internal F32 ui_push_corner_radius_10(F32 v) { UI_StackPushImpl(ui_state, CornerRadius10, corner_radius_10, F32, v) } -internal F32 ui_push_corner_radius_11(F32 v) { UI_StackPushImpl(ui_state, CornerRadius11, corner_radius_11, F32, v) } -internal F32 ui_push_blur_size(F32 v) { UI_StackPushImpl(ui_state, BlurSize, blur_size, F32, v) } -internal F32 ui_push_text_padding(F32 v) { UI_StackPushImpl(ui_state, TextPadding, text_padding, F32, v) } -internal UI_TextAlign ui_push_text_alignment(UI_TextAlign v) { UI_StackPushImpl(ui_state, TextAlignment, text_alignment, UI_TextAlign, v) } -internal UI_Box * ui_pop_parent(void) { UI_StackPopImpl(ui_state, Parent, parent) } -internal Axis2 ui_pop_child_layout_axis(void) { UI_StackPopImpl(ui_state, ChildLayoutAxis, child_layout_axis) } -internal F32 ui_pop_fixed_x(void) { UI_StackPopImpl(ui_state, FixedX, fixed_x) } -internal F32 ui_pop_fixed_y(void) { UI_StackPopImpl(ui_state, FixedY, fixed_y) } -internal F32 ui_pop_fixed_width(void) { UI_StackPopImpl(ui_state, FixedWidth, fixed_width) } -internal F32 ui_pop_fixed_height(void) { UI_StackPopImpl(ui_state, FixedHeight, fixed_height) } -internal UI_Size ui_pop_pref_width(void) { UI_StackPopImpl(ui_state, PrefWidth, pref_width) } -internal UI_Size ui_pop_pref_height(void) { UI_StackPopImpl(ui_state, PrefHeight, pref_height) } -internal F32 ui_pop_min_width(void) { UI_StackPopImpl(ui_state, MinWidth, min_width) } -internal F32 ui_pop_min_height(void) { UI_StackPopImpl(ui_state, MinHeight, min_height) } -internal UI_PermissionFlags ui_pop_permission_flags(void) { UI_StackPopImpl(ui_state, PermissionFlags, permission_flags) } -internal UI_BoxFlags ui_pop_flags(void) { UI_StackPopImpl(ui_state, Flags, flags) } -internal UI_BoxFlags ui_pop_omit_flags(void) { UI_StackPopImpl(ui_state, OmitFlags, omit_flags) } -internal UI_FocusKind ui_pop_focus_hot(void) { UI_StackPopImpl(ui_state, FocusHot, focus_hot) } -internal UI_FocusKind ui_pop_focus_active(void) { UI_StackPopImpl(ui_state, FocusActive, focus_active) } -internal U32 ui_pop_fastpath_codepoint(void) { UI_StackPopImpl(ui_state, FastpathCodepoint, fastpath_codepoint) } -internal UI_Key ui_pop_group_key(void) { UI_StackPopImpl(ui_state, GroupKey, group_key) } -internal F32 ui_pop_transparency(void) { UI_StackPopImpl(ui_state, Transparency, transparency) } -internal Vec4F32 ui_pop_background_color(void) { UI_StackPopImpl(ui_state, BackgroundColor, background_color) } -internal Vec4F32 ui_pop_text_color(void) { UI_StackPopImpl(ui_state, TextColor, text_color) } -internal Vec4F32 ui_pop_border_color(void) { UI_StackPopImpl(ui_state, BorderColor, border_color) } -internal F32 ui_pop_squish(void) { UI_StackPopImpl(ui_state, Squish, squish) } -internal WM_Cursor ui_pop_hover_cursor(void) { UI_StackPopImpl(ui_state, HoverCursor, hover_cursor) } -internal FNT_Tag ui_pop_font(void) { UI_StackPopImpl(ui_state, Font, font) } -internal F32 ui_pop_font_size(void) { UI_StackPopImpl(ui_state, FontSize, font_size) } -internal FNT_RasterFlags ui_pop_text_raster_flags(void) { UI_StackPopImpl(ui_state, TextRasterFlags, text_raster_flags) } -internal F32 ui_pop_tab_size(void) { UI_StackPopImpl(ui_state, TabSize, tab_size) } -internal F32 ui_pop_corner_radius_00(void) { UI_StackPopImpl(ui_state, CornerRadius00, corner_radius_00) } -internal F32 ui_pop_corner_radius_01(void) { UI_StackPopImpl(ui_state, CornerRadius01, corner_radius_01) } -internal F32 ui_pop_corner_radius_10(void) { UI_StackPopImpl(ui_state, CornerRadius10, corner_radius_10) } -internal F32 ui_pop_corner_radius_11(void) { UI_StackPopImpl(ui_state, CornerRadius11, corner_radius_11) } -internal F32 ui_pop_blur_size(void) { UI_StackPopImpl(ui_state, BlurSize, blur_size) } -internal F32 ui_pop_text_padding(void) { UI_StackPopImpl(ui_state, TextPadding, text_padding) } -internal UI_TextAlign ui_pop_text_alignment(void) { UI_StackPopImpl(ui_state, TextAlignment, text_alignment) } -internal UI_Box * ui_set_next_parent(UI_Box * v) { UI_StackSetNextImpl(ui_state, Parent, parent, UI_Box *, v) } -internal Axis2 ui_set_next_child_layout_axis(Axis2 v) { UI_StackSetNextImpl(ui_state, ChildLayoutAxis, child_layout_axis, Axis2, v) } -internal F32 ui_set_next_fixed_x(F32 v) { UI_StackSetNextImpl(ui_state, FixedX, fixed_x, F32, v) } -internal F32 ui_set_next_fixed_y(F32 v) { UI_StackSetNextImpl(ui_state, FixedY, fixed_y, F32, v) } -internal F32 ui_set_next_fixed_width(F32 v) { UI_StackSetNextImpl(ui_state, FixedWidth, fixed_width, F32, v) } -internal F32 ui_set_next_fixed_height(F32 v) { UI_StackSetNextImpl(ui_state, FixedHeight, fixed_height, F32, v) } -internal UI_Size ui_set_next_pref_width(UI_Size v) { UI_StackSetNextImpl(ui_state, PrefWidth, pref_width, UI_Size, v) } -internal UI_Size ui_set_next_pref_height(UI_Size v) { UI_StackSetNextImpl(ui_state, PrefHeight, pref_height, UI_Size, v) } -internal F32 ui_set_next_min_width(F32 v) { UI_StackSetNextImpl(ui_state, MinWidth, min_width, F32, v) } -internal F32 ui_set_next_min_height(F32 v) { UI_StackSetNextImpl(ui_state, MinHeight, min_height, F32, v) } -internal UI_PermissionFlags ui_set_next_permission_flags(UI_PermissionFlags v) { UI_StackSetNextImpl(ui_state, PermissionFlags, permission_flags, UI_PermissionFlags, v) } -internal UI_BoxFlags ui_set_next_flags(UI_BoxFlags v) { UI_StackSetNextImpl(ui_state, Flags, flags, UI_BoxFlags, v) } -internal UI_BoxFlags ui_set_next_omit_flags(UI_BoxFlags v) { UI_StackSetNextImpl(ui_state, OmitFlags, omit_flags, UI_BoxFlags, v) } -internal UI_FocusKind ui_set_next_focus_hot(UI_FocusKind v) { UI_StackSetNextImpl(ui_state, FocusHot, focus_hot, UI_FocusKind, v) } -internal UI_FocusKind ui_set_next_focus_active(UI_FocusKind v) { UI_StackSetNextImpl(ui_state, FocusActive, focus_active, UI_FocusKind, v) } -internal U32 ui_set_next_fastpath_codepoint(U32 v) { UI_StackSetNextImpl(ui_state, FastpathCodepoint, fastpath_codepoint, U32, v) } -internal UI_Key ui_set_next_group_key(UI_Key v) { UI_StackSetNextImpl(ui_state, GroupKey, group_key, UI_Key, v) } -internal F32 ui_set_next_transparency(F32 v) { UI_StackSetNextImpl(ui_state, Transparency, transparency, F32, v) } -internal Vec4F32 ui_set_next_background_color(Vec4F32 v) { UI_StackSetNextImpl(ui_state, BackgroundColor, background_color, Vec4F32, v) } -internal Vec4F32 ui_set_next_text_color(Vec4F32 v) { UI_StackSetNextImpl(ui_state, TextColor, text_color, Vec4F32, v) } -internal Vec4F32 ui_set_next_border_color(Vec4F32 v) { UI_StackSetNextImpl(ui_state, BorderColor, border_color, Vec4F32, v) } -internal F32 ui_set_next_squish(F32 v) { UI_StackSetNextImpl(ui_state, Squish, squish, F32, v) } -internal WM_Cursor ui_set_next_hover_cursor(WM_Cursor v) { UI_StackSetNextImpl(ui_state, HoverCursor, hover_cursor, WM_Cursor, v) } -internal FNT_Tag ui_set_next_font(FNT_Tag v) { UI_StackSetNextImpl(ui_state, Font, font, FNT_Tag, v) } -internal F32 ui_set_next_font_size(F32 v) { UI_StackSetNextImpl(ui_state, FontSize, font_size, F32, v) } -internal FNT_RasterFlags ui_set_next_text_raster_flags(FNT_RasterFlags v) { UI_StackSetNextImpl(ui_state, TextRasterFlags, text_raster_flags, FNT_RasterFlags, v) } -internal F32 ui_set_next_tab_size(F32 v) { UI_StackSetNextImpl(ui_state, TabSize, tab_size, F32, v) } -internal F32 ui_set_next_corner_radius_00(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius00, corner_radius_00, F32, v) } -internal F32 ui_set_next_corner_radius_01(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius01, corner_radius_01, F32, v) } -internal F32 ui_set_next_corner_radius_10(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius10, corner_radius_10, F32, v) } -internal F32 ui_set_next_corner_radius_11(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius11, corner_radius_11, F32, v) } -internal F32 ui_set_next_blur_size(F32 v) { UI_StackSetNextImpl(ui_state, BlurSize, blur_size, F32, v) } -internal F32 ui_set_next_text_padding(F32 v) { UI_StackSetNextImpl(ui_state, TextPadding, text_padding, F32, v) } -internal UI_TextAlign ui_set_next_text_alignment(UI_TextAlign v) { UI_StackSetNextImpl(ui_state, TextAlignment, text_alignment, UI_TextAlign, v) } +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#if 0 +#define UI_Parent(v) DeferLoop(ui_push_parent(v), ui_pop_parent()) +#define UI_ChildLayoutAxis(v) DeferLoop(ui_push_child_layout_axis(v), ui_pop_child_layout_axis()) +#define UI_FixedX(v) DeferLoop(ui_push_fixed_x(v), ui_pop_fixed_x()) +#define UI_FixedY(v) DeferLoop(ui_push_fixed_y(v), ui_pop_fixed_y()) +#define UI_FixedWidth(v) DeferLoop(ui_push_fixed_width(v), ui_pop_fixed_width()) +#define UI_FixedHeight(v) DeferLoop(ui_push_fixed_height(v), ui_pop_fixed_height()) +#define UI_PrefWidth(v) DeferLoop(ui_push_pref_width(v), ui_pop_pref_width()) +#define UI_PrefHeight(v) DeferLoop(ui_push_pref_height(v), ui_pop_pref_height()) +#define UI_MinWidth(v) DeferLoop(ui_push_min_width(v), ui_pop_min_width()) +#define UI_MinHeight(v) DeferLoop(ui_push_min_height(v), ui_pop_min_height()) +#define UI_PermissionFlags(v) DeferLoop(ui_push_permission_flags(v), ui_pop_permission_flags()) +#define UI_Flags(v) DeferLoop(ui_push_flags(v), ui_pop_flags()) +#define UI_OmitFlags(v) DeferLoop(ui_push_omit_flags(v), ui_pop_omit_flags()) +#define UI_FocusHot(v) DeferLoop(ui_push_focus_hot(v), ui_pop_focus_hot()) +#define UI_FocusActive(v) DeferLoop(ui_push_focus_active(v), ui_pop_focus_active()) +#define UI_FastpathCodepoint(v) DeferLoop(ui_push_fastpath_codepoint(v), ui_pop_fastpath_codepoint()) +#define UI_GroupKey(v) DeferLoop(ui_push_group_key(v), ui_pop_group_key()) +#define UI_Transparency(v) DeferLoop(ui_push_transparency(v), ui_pop_transparency()) +#define UI_Tag(v) DeferLoop(ui_push_tag(v), ui_pop_tag()) +#define UI_BackgroundColor(v) DeferLoop(ui_push_background_color(v), ui_pop_background_color()) +#define UI_TextColor(v) DeferLoop(ui_push_text_color(v), ui_pop_text_color()) +#define UI_BorderColor(v) DeferLoop(ui_push_border_color(v), ui_pop_border_color()) +#define UI_Squish(v) DeferLoop(ui_push_squish(v), ui_pop_squish()) +#define UI_HoverCursor(v) DeferLoop(ui_push_hover_cursor(v), ui_pop_hover_cursor()) +#define UI_Font(v) DeferLoop(ui_push_font(v), ui_pop_font()) +#define UI_FontSize(v) DeferLoop(ui_push_font_size(v), ui_pop_font_size()) +#define UI_TextRasterFlags(v) DeferLoop(ui_push_text_raster_flags(v), ui_pop_text_raster_flags()) +#define UI_TabSize(v) DeferLoop(ui_push_tab_size(v), ui_pop_tab_size()) +#define UI_CornerRadius00(v) DeferLoop(ui_push_corner_radius_00(v), ui_pop_corner_radius_00()) +#define UI_CornerRadius01(v) DeferLoop(ui_push_corner_radius_01(v), ui_pop_corner_radius_01()) +#define UI_CornerRadius10(v) DeferLoop(ui_push_corner_radius_10(v), ui_pop_corner_radius_10()) +#define UI_CornerRadius11(v) DeferLoop(ui_push_corner_radius_11(v), ui_pop_corner_radius_11()) +#define UI_BlurSize(v) DeferLoop(ui_push_blur_size(v), ui_pop_blur_size()) +#define UI_TextPadding(v) DeferLoop(ui_push_text_padding(v), ui_pop_text_padding()) +#define UI_TextAlignment(v) DeferLoop(ui_push_text_alignment(v), ui_pop_text_alignment()) +#endif +internal UI_Box * ui_top_parent(void) { UI_StackTopImpl(ui_state, Parent, parent) } +internal Axis2 ui_top_child_layout_axis(void) { UI_StackTopImpl(ui_state, ChildLayoutAxis, child_layout_axis) } +internal F32 ui_top_fixed_x(void) { UI_StackTopImpl(ui_state, FixedX, fixed_x) } +internal F32 ui_top_fixed_y(void) { UI_StackTopImpl(ui_state, FixedY, fixed_y) } +internal F32 ui_top_fixed_width(void) { UI_StackTopImpl(ui_state, FixedWidth, fixed_width) } +internal F32 ui_top_fixed_height(void) { UI_StackTopImpl(ui_state, FixedHeight, fixed_height) } +internal UI_Size ui_top_pref_width(void) { UI_StackTopImpl(ui_state, PrefWidth, pref_width) } +internal UI_Size ui_top_pref_height(void) { UI_StackTopImpl(ui_state, PrefHeight, pref_height) } +internal F32 ui_top_min_width(void) { UI_StackTopImpl(ui_state, MinWidth, min_width) } +internal F32 ui_top_min_height(void) { UI_StackTopImpl(ui_state, MinHeight, min_height) } +internal UI_PermissionFlags ui_top_permission_flags(void) { UI_StackTopImpl(ui_state, PermissionFlags, permission_flags) } +internal UI_BoxFlags ui_top_flags(void) { UI_StackTopImpl(ui_state, Flags, flags) } +internal UI_BoxFlags ui_top_omit_flags(void) { UI_StackTopImpl(ui_state, OmitFlags, omit_flags) } +internal UI_FocusKind ui_top_focus_hot(void) { UI_StackTopImpl(ui_state, FocusHot, focus_hot) } +internal UI_FocusKind ui_top_focus_active(void) { UI_StackTopImpl(ui_state, FocusActive, focus_active) } +internal U32 ui_top_fastpath_codepoint(void) { UI_StackTopImpl(ui_state, FastpathCodepoint, fastpath_codepoint) } +internal UI_Key ui_top_group_key(void) { UI_StackTopImpl(ui_state, GroupKey, group_key) } +internal F32 ui_top_transparency(void) { UI_StackTopImpl(ui_state, Transparency, transparency) } +internal Vec4F32 ui_top_background_color(void) { UI_StackTopImpl(ui_state, BackgroundColor, background_color) } +internal Vec4F32 ui_top_text_color(void) { UI_StackTopImpl(ui_state, TextColor, text_color) } +internal Vec4F32 ui_top_border_color(void) { UI_StackTopImpl(ui_state, BorderColor, border_color) } +internal F32 ui_top_squish(void) { UI_StackTopImpl(ui_state, Squish, squish) } +internal WM_Cursor ui_top_hover_cursor(void) { UI_StackTopImpl(ui_state, HoverCursor, hover_cursor) } +internal FNT_Tag ui_top_font(void) { UI_StackTopImpl(ui_state, Font, font) } +internal F32 ui_top_font_size(void) { UI_StackTopImpl(ui_state, FontSize, font_size) } +internal FNT_RasterFlags ui_top_text_raster_flags(void) { UI_StackTopImpl(ui_state, TextRasterFlags, text_raster_flags) } +internal F32 ui_top_tab_size(void) { UI_StackTopImpl(ui_state, TabSize, tab_size) } +internal F32 ui_top_corner_radius_00(void) { UI_StackTopImpl(ui_state, CornerRadius00, corner_radius_00) } +internal F32 ui_top_corner_radius_01(void) { UI_StackTopImpl(ui_state, CornerRadius01, corner_radius_01) } +internal F32 ui_top_corner_radius_10(void) { UI_StackTopImpl(ui_state, CornerRadius10, corner_radius_10) } +internal F32 ui_top_corner_radius_11(void) { UI_StackTopImpl(ui_state, CornerRadius11, corner_radius_11) } +internal F32 ui_top_blur_size(void) { UI_StackTopImpl(ui_state, BlurSize, blur_size) } +internal F32 ui_top_text_padding(void) { UI_StackTopImpl(ui_state, TextPadding, text_padding) } +internal UI_TextAlign ui_top_text_alignment(void) { UI_StackTopImpl(ui_state, TextAlignment, text_alignment) } +internal UI_Box * ui_bottom_parent(void) { UI_StackBottomImpl(ui_state, Parent, parent) } +internal Axis2 ui_bottom_child_layout_axis(void) { UI_StackBottomImpl(ui_state, ChildLayoutAxis, child_layout_axis) } +internal F32 ui_bottom_fixed_x(void) { UI_StackBottomImpl(ui_state, FixedX, fixed_x) } +internal F32 ui_bottom_fixed_y(void) { UI_StackBottomImpl(ui_state, FixedY, fixed_y) } +internal F32 ui_bottom_fixed_width(void) { UI_StackBottomImpl(ui_state, FixedWidth, fixed_width) } +internal F32 ui_bottom_fixed_height(void) { UI_StackBottomImpl(ui_state, FixedHeight, fixed_height) } +internal UI_Size ui_bottom_pref_width(void) { UI_StackBottomImpl(ui_state, PrefWidth, pref_width) } +internal UI_Size ui_bottom_pref_height(void) { UI_StackBottomImpl(ui_state, PrefHeight, pref_height) } +internal F32 ui_bottom_min_width(void) { UI_StackBottomImpl(ui_state, MinWidth, min_width) } +internal F32 ui_bottom_min_height(void) { UI_StackBottomImpl(ui_state, MinHeight, min_height) } +internal UI_PermissionFlags ui_bottom_permission_flags(void) { UI_StackBottomImpl(ui_state, PermissionFlags, permission_flags) } +internal UI_BoxFlags ui_bottom_flags(void) { UI_StackBottomImpl(ui_state, Flags, flags) } +internal UI_BoxFlags ui_bottom_omit_flags(void) { UI_StackBottomImpl(ui_state, OmitFlags, omit_flags) } +internal UI_FocusKind ui_bottom_focus_hot(void) { UI_StackBottomImpl(ui_state, FocusHot, focus_hot) } +internal UI_FocusKind ui_bottom_focus_active(void) { UI_StackBottomImpl(ui_state, FocusActive, focus_active) } +internal U32 ui_bottom_fastpath_codepoint(void) { UI_StackBottomImpl(ui_state, FastpathCodepoint, fastpath_codepoint) } +internal UI_Key ui_bottom_group_key(void) { UI_StackBottomImpl(ui_state, GroupKey, group_key) } +internal F32 ui_bottom_transparency(void) { UI_StackBottomImpl(ui_state, Transparency, transparency) } +internal Vec4F32 ui_bottom_background_color(void) { UI_StackBottomImpl(ui_state, BackgroundColor, background_color) } +internal Vec4F32 ui_bottom_text_color(void) { UI_StackBottomImpl(ui_state, TextColor, text_color) } +internal Vec4F32 ui_bottom_border_color(void) { UI_StackBottomImpl(ui_state, BorderColor, border_color) } +internal F32 ui_bottom_squish(void) { UI_StackBottomImpl(ui_state, Squish, squish) } +internal WM_Cursor ui_bottom_hover_cursor(void) { UI_StackBottomImpl(ui_state, HoverCursor, hover_cursor) } +internal FNT_Tag ui_bottom_font(void) { UI_StackBottomImpl(ui_state, Font, font) } +internal F32 ui_bottom_font_size(void) { UI_StackBottomImpl(ui_state, FontSize, font_size) } +internal FNT_RasterFlags ui_bottom_text_raster_flags(void) { UI_StackBottomImpl(ui_state, TextRasterFlags, text_raster_flags) } +internal F32 ui_bottom_tab_size(void) { UI_StackBottomImpl(ui_state, TabSize, tab_size) } +internal F32 ui_bottom_corner_radius_00(void) { UI_StackBottomImpl(ui_state, CornerRadius00, corner_radius_00) } +internal F32 ui_bottom_corner_radius_01(void) { UI_StackBottomImpl(ui_state, CornerRadius01, corner_radius_01) } +internal F32 ui_bottom_corner_radius_10(void) { UI_StackBottomImpl(ui_state, CornerRadius10, corner_radius_10) } +internal F32 ui_bottom_corner_radius_11(void) { UI_StackBottomImpl(ui_state, CornerRadius11, corner_radius_11) } +internal F32 ui_bottom_blur_size(void) { UI_StackBottomImpl(ui_state, BlurSize, blur_size) } +internal F32 ui_bottom_text_padding(void) { UI_StackBottomImpl(ui_state, TextPadding, text_padding) } +internal UI_TextAlign ui_bottom_text_alignment(void) { UI_StackBottomImpl(ui_state, TextAlignment, text_alignment) } +internal UI_Box * ui_push_parent(UI_Box * v) { UI_StackPushImpl(ui_state, Parent, parent, UI_Box *, v) } +internal Axis2 ui_push_child_layout_axis(Axis2 v) { UI_StackPushImpl(ui_state, ChildLayoutAxis, child_layout_axis, Axis2, v) } +internal F32 ui_push_fixed_x(F32 v) { UI_StackPushImpl(ui_state, FixedX, fixed_x, F32, v) } +internal F32 ui_push_fixed_y(F32 v) { UI_StackPushImpl(ui_state, FixedY, fixed_y, F32, v) } +internal F32 ui_push_fixed_width(F32 v) { UI_StackPushImpl(ui_state, FixedWidth, fixed_width, F32, v) } +internal F32 ui_push_fixed_height(F32 v) { UI_StackPushImpl(ui_state, FixedHeight, fixed_height, F32, v) } +internal UI_Size ui_push_pref_width(UI_Size v) { UI_StackPushImpl(ui_state, PrefWidth, pref_width, UI_Size, v) } +internal UI_Size ui_push_pref_height(UI_Size v) { UI_StackPushImpl(ui_state, PrefHeight, pref_height, UI_Size, v) } +internal F32 ui_push_min_width(F32 v) { UI_StackPushImpl(ui_state, MinWidth, min_width, F32, v) } +internal F32 ui_push_min_height(F32 v) { UI_StackPushImpl(ui_state, MinHeight, min_height, F32, v) } +internal UI_PermissionFlags ui_push_permission_flags(UI_PermissionFlags v) { UI_StackPushImpl(ui_state, PermissionFlags, permission_flags, UI_PermissionFlags, v) } +internal UI_BoxFlags ui_push_flags(UI_BoxFlags v) { UI_StackPushImpl(ui_state, Flags, flags, UI_BoxFlags, v) } +internal UI_BoxFlags ui_push_omit_flags(UI_BoxFlags v) { UI_StackPushImpl(ui_state, OmitFlags, omit_flags, UI_BoxFlags, v) } +internal UI_FocusKind ui_push_focus_hot(UI_FocusKind v) { UI_StackPushImpl(ui_state, FocusHot, focus_hot, UI_FocusKind, v) } +internal UI_FocusKind ui_push_focus_active(UI_FocusKind v) { UI_StackPushImpl(ui_state, FocusActive, focus_active, UI_FocusKind, v) } +internal U32 ui_push_fastpath_codepoint(U32 v) { UI_StackPushImpl(ui_state, FastpathCodepoint, fastpath_codepoint, U32, v) } +internal UI_Key ui_push_group_key(UI_Key v) { UI_StackPushImpl(ui_state, GroupKey, group_key, UI_Key, v) } +internal F32 ui_push_transparency(F32 v) { UI_StackPushImpl(ui_state, Transparency, transparency, F32, v) } +internal Vec4F32 ui_push_background_color(Vec4F32 v) { UI_StackPushImpl(ui_state, BackgroundColor, background_color, Vec4F32, v) } +internal Vec4F32 ui_push_text_color(Vec4F32 v) { UI_StackPushImpl(ui_state, TextColor, text_color, Vec4F32, v) } +internal Vec4F32 ui_push_border_color(Vec4F32 v) { UI_StackPushImpl(ui_state, BorderColor, border_color, Vec4F32, v) } +internal F32 ui_push_squish(F32 v) { UI_StackPushImpl(ui_state, Squish, squish, F32, v) } +internal WM_Cursor ui_push_hover_cursor(WM_Cursor v) { UI_StackPushImpl(ui_state, HoverCursor, hover_cursor, WM_Cursor, v) } +internal FNT_Tag ui_push_font(FNT_Tag v) { UI_StackPushImpl(ui_state, Font, font, FNT_Tag, v) } +internal F32 ui_push_font_size(F32 v) { UI_StackPushImpl(ui_state, FontSize, font_size, F32, v) } +internal FNT_RasterFlags ui_push_text_raster_flags(FNT_RasterFlags v) { UI_StackPushImpl(ui_state, TextRasterFlags, text_raster_flags, FNT_RasterFlags, v) } +internal F32 ui_push_tab_size(F32 v) { UI_StackPushImpl(ui_state, TabSize, tab_size, F32, v) } +internal F32 ui_push_corner_radius_00(F32 v) { UI_StackPushImpl(ui_state, CornerRadius00, corner_radius_00, F32, v) } +internal F32 ui_push_corner_radius_01(F32 v) { UI_StackPushImpl(ui_state, CornerRadius01, corner_radius_01, F32, v) } +internal F32 ui_push_corner_radius_10(F32 v) { UI_StackPushImpl(ui_state, CornerRadius10, corner_radius_10, F32, v) } +internal F32 ui_push_corner_radius_11(F32 v) { UI_StackPushImpl(ui_state, CornerRadius11, corner_radius_11, F32, v) } +internal F32 ui_push_blur_size(F32 v) { UI_StackPushImpl(ui_state, BlurSize, blur_size, F32, v) } +internal F32 ui_push_text_padding(F32 v) { UI_StackPushImpl(ui_state, TextPadding, text_padding, F32, v) } +internal UI_TextAlign ui_push_text_alignment(UI_TextAlign v) { UI_StackPushImpl(ui_state, TextAlignment, text_alignment, UI_TextAlign, v) } +internal UI_Box * ui_pop_parent(void) { UI_StackPopImpl(ui_state, Parent, parent) } +internal Axis2 ui_pop_child_layout_axis(void) { UI_StackPopImpl(ui_state, ChildLayoutAxis, child_layout_axis) } +internal F32 ui_pop_fixed_x(void) { UI_StackPopImpl(ui_state, FixedX, fixed_x) } +internal F32 ui_pop_fixed_y(void) { UI_StackPopImpl(ui_state, FixedY, fixed_y) } +internal F32 ui_pop_fixed_width(void) { UI_StackPopImpl(ui_state, FixedWidth, fixed_width) } +internal F32 ui_pop_fixed_height(void) { UI_StackPopImpl(ui_state, FixedHeight, fixed_height) } +internal UI_Size ui_pop_pref_width(void) { UI_StackPopImpl(ui_state, PrefWidth, pref_width) } +internal UI_Size ui_pop_pref_height(void) { UI_StackPopImpl(ui_state, PrefHeight, pref_height) } +internal F32 ui_pop_min_width(void) { UI_StackPopImpl(ui_state, MinWidth, min_width) } +internal F32 ui_pop_min_height(void) { UI_StackPopImpl(ui_state, MinHeight, min_height) } +internal UI_PermissionFlags ui_pop_permission_flags(void) { UI_StackPopImpl(ui_state, PermissionFlags, permission_flags) } +internal UI_BoxFlags ui_pop_flags(void) { UI_StackPopImpl(ui_state, Flags, flags) } +internal UI_BoxFlags ui_pop_omit_flags(void) { UI_StackPopImpl(ui_state, OmitFlags, omit_flags) } +internal UI_FocusKind ui_pop_focus_hot(void) { UI_StackPopImpl(ui_state, FocusHot, focus_hot) } +internal UI_FocusKind ui_pop_focus_active(void) { UI_StackPopImpl(ui_state, FocusActive, focus_active) } +internal U32 ui_pop_fastpath_codepoint(void) { UI_StackPopImpl(ui_state, FastpathCodepoint, fastpath_codepoint) } +internal UI_Key ui_pop_group_key(void) { UI_StackPopImpl(ui_state, GroupKey, group_key) } +internal F32 ui_pop_transparency(void) { UI_StackPopImpl(ui_state, Transparency, transparency) } +internal Vec4F32 ui_pop_background_color(void) { UI_StackPopImpl(ui_state, BackgroundColor, background_color) } +internal Vec4F32 ui_pop_text_color(void) { UI_StackPopImpl(ui_state, TextColor, text_color) } +internal Vec4F32 ui_pop_border_color(void) { UI_StackPopImpl(ui_state, BorderColor, border_color) } +internal F32 ui_pop_squish(void) { UI_StackPopImpl(ui_state, Squish, squish) } +internal WM_Cursor ui_pop_hover_cursor(void) { UI_StackPopImpl(ui_state, HoverCursor, hover_cursor) } +internal FNT_Tag ui_pop_font(void) { UI_StackPopImpl(ui_state, Font, font) } +internal F32 ui_pop_font_size(void) { UI_StackPopImpl(ui_state, FontSize, font_size) } +internal FNT_RasterFlags ui_pop_text_raster_flags(void) { UI_StackPopImpl(ui_state, TextRasterFlags, text_raster_flags) } +internal F32 ui_pop_tab_size(void) { UI_StackPopImpl(ui_state, TabSize, tab_size) } +internal F32 ui_pop_corner_radius_00(void) { UI_StackPopImpl(ui_state, CornerRadius00, corner_radius_00) } +internal F32 ui_pop_corner_radius_01(void) { UI_StackPopImpl(ui_state, CornerRadius01, corner_radius_01) } +internal F32 ui_pop_corner_radius_10(void) { UI_StackPopImpl(ui_state, CornerRadius10, corner_radius_10) } +internal F32 ui_pop_corner_radius_11(void) { UI_StackPopImpl(ui_state, CornerRadius11, corner_radius_11) } +internal F32 ui_pop_blur_size(void) { UI_StackPopImpl(ui_state, BlurSize, blur_size) } +internal F32 ui_pop_text_padding(void) { UI_StackPopImpl(ui_state, TextPadding, text_padding) } +internal UI_TextAlign ui_pop_text_alignment(void) { UI_StackPopImpl(ui_state, TextAlignment, text_alignment) } +internal UI_Box * ui_set_next_parent(UI_Box * v) { UI_StackSetNextImpl(ui_state, Parent, parent, UI_Box *, v) } +internal Axis2 ui_set_next_child_layout_axis(Axis2 v) { UI_StackSetNextImpl(ui_state, ChildLayoutAxis, child_layout_axis, Axis2, v) } +internal F32 ui_set_next_fixed_x(F32 v) { UI_StackSetNextImpl(ui_state, FixedX, fixed_x, F32, v) } +internal F32 ui_set_next_fixed_y(F32 v) { UI_StackSetNextImpl(ui_state, FixedY, fixed_y, F32, v) } +internal F32 ui_set_next_fixed_width(F32 v) { UI_StackSetNextImpl(ui_state, FixedWidth, fixed_width, F32, v) } +internal F32 ui_set_next_fixed_height(F32 v) { UI_StackSetNextImpl(ui_state, FixedHeight, fixed_height, F32, v) } +internal UI_Size ui_set_next_pref_width(UI_Size v) { UI_StackSetNextImpl(ui_state, PrefWidth, pref_width, UI_Size, v) } +internal UI_Size ui_set_next_pref_height(UI_Size v) { UI_StackSetNextImpl(ui_state, PrefHeight, pref_height, UI_Size, v) } +internal F32 ui_set_next_min_width(F32 v) { UI_StackSetNextImpl(ui_state, MinWidth, min_width, F32, v) } +internal F32 ui_set_next_min_height(F32 v) { UI_StackSetNextImpl(ui_state, MinHeight, min_height, F32, v) } +internal UI_PermissionFlags ui_set_next_permission_flags(UI_PermissionFlags v) { UI_StackSetNextImpl(ui_state, PermissionFlags, permission_flags, UI_PermissionFlags, v) } +internal UI_BoxFlags ui_set_next_flags(UI_BoxFlags v) { UI_StackSetNextImpl(ui_state, Flags, flags, UI_BoxFlags, v) } +internal UI_BoxFlags ui_set_next_omit_flags(UI_BoxFlags v) { UI_StackSetNextImpl(ui_state, OmitFlags, omit_flags, UI_BoxFlags, v) } +internal UI_FocusKind ui_set_next_focus_hot(UI_FocusKind v) { UI_StackSetNextImpl(ui_state, FocusHot, focus_hot, UI_FocusKind, v) } +internal UI_FocusKind ui_set_next_focus_active(UI_FocusKind v) { UI_StackSetNextImpl(ui_state, FocusActive, focus_active, UI_FocusKind, v) } +internal U32 ui_set_next_fastpath_codepoint(U32 v) { UI_StackSetNextImpl(ui_state, FastpathCodepoint, fastpath_codepoint, U32, v) } +internal UI_Key ui_set_next_group_key(UI_Key v) { UI_StackSetNextImpl(ui_state, GroupKey, group_key, UI_Key, v) } +internal F32 ui_set_next_transparency(F32 v) { UI_StackSetNextImpl(ui_state, Transparency, transparency, F32, v) } +internal Vec4F32 ui_set_next_background_color(Vec4F32 v) { UI_StackSetNextImpl(ui_state, BackgroundColor, background_color, Vec4F32, v) } +internal Vec4F32 ui_set_next_text_color(Vec4F32 v) { UI_StackSetNextImpl(ui_state, TextColor, text_color, Vec4F32, v) } +internal Vec4F32 ui_set_next_border_color(Vec4F32 v) { UI_StackSetNextImpl(ui_state, BorderColor, border_color, Vec4F32, v) } +internal F32 ui_set_next_squish(F32 v) { UI_StackSetNextImpl(ui_state, Squish, squish, F32, v) } +internal WM_Cursor ui_set_next_hover_cursor(WM_Cursor v) { UI_StackSetNextImpl(ui_state, HoverCursor, hover_cursor, WM_Cursor, v) } +internal FNT_Tag ui_set_next_font(FNT_Tag v) { UI_StackSetNextImpl(ui_state, Font, font, FNT_Tag, v) } +internal F32 ui_set_next_font_size(F32 v) { UI_StackSetNextImpl(ui_state, FontSize, font_size, F32, v) } +internal FNT_RasterFlags ui_set_next_text_raster_flags(FNT_RasterFlags v) { UI_StackSetNextImpl(ui_state, TextRasterFlags, text_raster_flags, FNT_RasterFlags, v) } +internal F32 ui_set_next_tab_size(F32 v) { UI_StackSetNextImpl(ui_state, TabSize, tab_size, F32, v) } +internal F32 ui_set_next_corner_radius_00(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius00, corner_radius_00, F32, v) } +internal F32 ui_set_next_corner_radius_01(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius01, corner_radius_01, F32, v) } +internal F32 ui_set_next_corner_radius_10(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius10, corner_radius_10, F32, v) } +internal F32 ui_set_next_corner_radius_11(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius11, corner_radius_11, F32, v) } +internal F32 ui_set_next_blur_size(F32 v) { UI_StackSetNextImpl(ui_state, BlurSize, blur_size, F32, v) } +internal F32 ui_set_next_text_padding(F32 v) { UI_StackSetNextImpl(ui_state, TextPadding, text_padding, F32, v) } +internal UI_TextAlign ui_set_next_text_alignment(UI_TextAlign v) { UI_StackSetNextImpl(ui_state, TextAlignment, text_alignment, UI_TextAlign, v) } diff --git a/src/ui/generated/ui.meta.h b/src/ui/generated/ui.meta.h index 852fbe0c..fbed7a1a 100644 --- a/src/ui/generated/ui.meta.h +++ b/src/ui/generated/ui.meta.h @@ -1,408 +1,408 @@ -// Copyright (c) Epic Games Tools -// Licensed under the MIT license (https://opensource.org/license/mit/) - -//- GENERATED CODE - -#ifndef UI_META_H -#define UI_META_H - -typedef struct UI_ParentNode UI_ParentNode; struct UI_ParentNode{UI_ParentNode *next; UI_Box * v;}; -typedef struct UI_ChildLayoutAxisNode UI_ChildLayoutAxisNode; struct UI_ChildLayoutAxisNode{UI_ChildLayoutAxisNode *next; Axis2 v;}; -typedef struct UI_FixedXNode UI_FixedXNode; struct UI_FixedXNode{UI_FixedXNode *next; F32 v;}; -typedef struct UI_FixedYNode UI_FixedYNode; struct UI_FixedYNode{UI_FixedYNode *next; F32 v;}; -typedef struct UI_FixedWidthNode UI_FixedWidthNode; struct UI_FixedWidthNode{UI_FixedWidthNode *next; F32 v;}; -typedef struct UI_FixedHeightNode UI_FixedHeightNode; struct UI_FixedHeightNode{UI_FixedHeightNode *next; F32 v;}; -typedef struct UI_PrefWidthNode UI_PrefWidthNode; struct UI_PrefWidthNode{UI_PrefWidthNode *next; UI_Size v;}; -typedef struct UI_PrefHeightNode UI_PrefHeightNode; struct UI_PrefHeightNode{UI_PrefHeightNode *next; UI_Size v;}; -typedef struct UI_MinWidthNode UI_MinWidthNode; struct UI_MinWidthNode{UI_MinWidthNode *next; F32 v;}; -typedef struct UI_MinHeightNode UI_MinHeightNode; struct UI_MinHeightNode{UI_MinHeightNode *next; F32 v;}; -typedef struct UI_PermissionFlagsNode UI_PermissionFlagsNode; struct UI_PermissionFlagsNode{UI_PermissionFlagsNode *next; UI_PermissionFlags v;}; -typedef struct UI_FlagsNode UI_FlagsNode; struct UI_FlagsNode{UI_FlagsNode *next; UI_BoxFlags v;}; -typedef struct UI_OmitFlagsNode UI_OmitFlagsNode; struct UI_OmitFlagsNode{UI_OmitFlagsNode *next; UI_BoxFlags v;}; -typedef struct UI_FocusHotNode UI_FocusHotNode; struct UI_FocusHotNode{UI_FocusHotNode *next; UI_FocusKind v;}; -typedef struct UI_FocusActiveNode UI_FocusActiveNode; struct UI_FocusActiveNode{UI_FocusActiveNode *next; UI_FocusKind v;}; -typedef struct UI_FastpathCodepointNode UI_FastpathCodepointNode; struct UI_FastpathCodepointNode{UI_FastpathCodepointNode *next; U32 v;}; -typedef struct UI_GroupKeyNode UI_GroupKeyNode; struct UI_GroupKeyNode{UI_GroupKeyNode *next; UI_Key v;}; -typedef struct UI_TransparencyNode UI_TransparencyNode; struct UI_TransparencyNode{UI_TransparencyNode *next; F32 v;}; -typedef struct UI_TagNode UI_TagNode; struct UI_TagNode{UI_TagNode *next; String8 v;}; -typedef struct UI_BackgroundColorNode UI_BackgroundColorNode; struct UI_BackgroundColorNode{UI_BackgroundColorNode *next; Vec4F32 v;}; -typedef struct UI_TextColorNode UI_TextColorNode; struct UI_TextColorNode{UI_TextColorNode *next; Vec4F32 v;}; -typedef struct UI_BorderColorNode UI_BorderColorNode; struct UI_BorderColorNode{UI_BorderColorNode *next; Vec4F32 v;}; -typedef struct UI_SquishNode UI_SquishNode; struct UI_SquishNode{UI_SquishNode *next; F32 v;}; -typedef struct UI_HoverCursorNode UI_HoverCursorNode; struct UI_HoverCursorNode{UI_HoverCursorNode *next; WM_Cursor v;}; -typedef struct UI_FontNode UI_FontNode; struct UI_FontNode{UI_FontNode *next; FNT_Tag v;}; -typedef struct UI_FontSizeNode UI_FontSizeNode; struct UI_FontSizeNode{UI_FontSizeNode *next; F32 v;}; -typedef struct UI_TextRasterFlagsNode UI_TextRasterFlagsNode; struct UI_TextRasterFlagsNode{UI_TextRasterFlagsNode *next; FNT_RasterFlags v;}; -typedef struct UI_TabSizeNode UI_TabSizeNode; struct UI_TabSizeNode{UI_TabSizeNode *next; F32 v;}; -typedef struct UI_CornerRadius00Node UI_CornerRadius00Node; struct UI_CornerRadius00Node{UI_CornerRadius00Node *next; F32 v;}; -typedef struct UI_CornerRadius01Node UI_CornerRadius01Node; struct UI_CornerRadius01Node{UI_CornerRadius01Node *next; F32 v;}; -typedef struct UI_CornerRadius10Node UI_CornerRadius10Node; struct UI_CornerRadius10Node{UI_CornerRadius10Node *next; F32 v;}; -typedef struct UI_CornerRadius11Node UI_CornerRadius11Node; struct UI_CornerRadius11Node{UI_CornerRadius11Node *next; F32 v;}; -typedef struct UI_BlurSizeNode UI_BlurSizeNode; struct UI_BlurSizeNode{UI_BlurSizeNode *next; F32 v;}; -typedef struct UI_TextPaddingNode UI_TextPaddingNode; struct UI_TextPaddingNode{UI_TextPaddingNode *next; F32 v;}; -typedef struct UI_TextAlignmentNode UI_TextAlignmentNode; struct UI_TextAlignmentNode{UI_TextAlignmentNode *next; UI_TextAlign v;}; -#define UI_DeclStackNils \ -struct\ -{\ -UI_ParentNode parent_nil_stack_top;\ -UI_ChildLayoutAxisNode child_layout_axis_nil_stack_top;\ -UI_FixedXNode fixed_x_nil_stack_top;\ -UI_FixedYNode fixed_y_nil_stack_top;\ -UI_FixedWidthNode fixed_width_nil_stack_top;\ -UI_FixedHeightNode fixed_height_nil_stack_top;\ -UI_PrefWidthNode pref_width_nil_stack_top;\ -UI_PrefHeightNode pref_height_nil_stack_top;\ -UI_MinWidthNode min_width_nil_stack_top;\ -UI_MinHeightNode min_height_nil_stack_top;\ -UI_PermissionFlagsNode permission_flags_nil_stack_top;\ -UI_FlagsNode flags_nil_stack_top;\ -UI_OmitFlagsNode omit_flags_nil_stack_top;\ -UI_FocusHotNode focus_hot_nil_stack_top;\ -UI_FocusActiveNode focus_active_nil_stack_top;\ -UI_FastpathCodepointNode fastpath_codepoint_nil_stack_top;\ -UI_GroupKeyNode group_key_nil_stack_top;\ -UI_TransparencyNode transparency_nil_stack_top;\ -UI_TagNode tag_nil_stack_top;\ -UI_BackgroundColorNode background_color_nil_stack_top;\ -UI_TextColorNode text_color_nil_stack_top;\ -UI_BorderColorNode border_color_nil_stack_top;\ -UI_SquishNode squish_nil_stack_top;\ -UI_HoverCursorNode hover_cursor_nil_stack_top;\ -UI_FontNode font_nil_stack_top;\ -UI_FontSizeNode font_size_nil_stack_top;\ -UI_TextRasterFlagsNode text_raster_flags_nil_stack_top;\ -UI_TabSizeNode tab_size_nil_stack_top;\ -UI_CornerRadius00Node corner_radius_00_nil_stack_top;\ -UI_CornerRadius01Node corner_radius_01_nil_stack_top;\ -UI_CornerRadius10Node corner_radius_10_nil_stack_top;\ -UI_CornerRadius11Node corner_radius_11_nil_stack_top;\ -UI_BlurSizeNode blur_size_nil_stack_top;\ -UI_TextPaddingNode text_padding_nil_stack_top;\ -UI_TextAlignmentNode text_alignment_nil_stack_top;\ -} -#define UI_InitStackNils(state) \ -state->parent_nil_stack_top.v = &ui_nil_box;\ -state->child_layout_axis_nil_stack_top.v = Axis2_X;\ -state->fixed_x_nil_stack_top.v = 0;\ -state->fixed_y_nil_stack_top.v = 0;\ -state->fixed_width_nil_stack_top.v = 0;\ -state->fixed_height_nil_stack_top.v = 0;\ -state->pref_width_nil_stack_top.v = ui_px(250.f, 1.f);\ -state->pref_height_nil_stack_top.v = ui_px(30.f, 1.f);\ -state->min_width_nil_stack_top.v = 0;\ -state->min_height_nil_stack_top.v = 0;\ -state->permission_flags_nil_stack_top.v = UI_PermissionFlag_All;\ -state->flags_nil_stack_top.v = 0;\ -state->omit_flags_nil_stack_top.v = 0;\ -state->focus_hot_nil_stack_top.v = UI_FocusKind_Null;\ -state->focus_active_nil_stack_top.v = UI_FocusKind_Null;\ -state->fastpath_codepoint_nil_stack_top.v = 0;\ -state->group_key_nil_stack_top.v = ui_key_zero();\ -state->transparency_nil_stack_top.v = 0;\ -state->tag_nil_stack_top.v = str8_lit("");\ -state->background_color_nil_stack_top.v = v4f32(0, 0, 0, 0);\ -state->text_color_nil_stack_top.v = v4f32(0, 0, 0, 0);\ -state->border_color_nil_stack_top.v = v4f32(0, 0, 0, 0);\ -state->squish_nil_stack_top.v = 0;\ -state->hover_cursor_nil_stack_top.v = WM_Cursor_Pointer;\ -state->font_nil_stack_top.v = fnt_tag_zero();\ -state->font_size_nil_stack_top.v = 24.f;\ -state->text_raster_flags_nil_stack_top.v = FNT_RasterFlag_Hinted;\ -state->tab_size_nil_stack_top.v = 24.f*4.f;\ -state->corner_radius_00_nil_stack_top.v = 0;\ -state->corner_radius_01_nil_stack_top.v = 0;\ -state->corner_radius_10_nil_stack_top.v = 0;\ -state->corner_radius_11_nil_stack_top.v = 0;\ -state->blur_size_nil_stack_top.v = 0;\ -state->text_padding_nil_stack_top.v = 0;\ -state->text_alignment_nil_stack_top.v = UI_TextAlign_Left;\ - -#define UI_DeclStacks \ -struct\ -{\ -struct { UI_ParentNode *top; UI_Box * bottom_val; UI_ParentNode *free; U64 gen; B32 auto_pop; } parent_stack;\ -struct { UI_ChildLayoutAxisNode *top; Axis2 bottom_val; UI_ChildLayoutAxisNode *free; U64 gen; B32 auto_pop; } child_layout_axis_stack;\ -struct { UI_FixedXNode *top; F32 bottom_val; UI_FixedXNode *free; U64 gen; B32 auto_pop; } fixed_x_stack;\ -struct { UI_FixedYNode *top; F32 bottom_val; UI_FixedYNode *free; U64 gen; B32 auto_pop; } fixed_y_stack;\ -struct { UI_FixedWidthNode *top; F32 bottom_val; UI_FixedWidthNode *free; U64 gen; B32 auto_pop; } fixed_width_stack;\ -struct { UI_FixedHeightNode *top; F32 bottom_val; UI_FixedHeightNode *free; U64 gen; B32 auto_pop; } fixed_height_stack;\ -struct { UI_PrefWidthNode *top; UI_Size bottom_val; UI_PrefWidthNode *free; U64 gen; B32 auto_pop; } pref_width_stack;\ -struct { UI_PrefHeightNode *top; UI_Size bottom_val; UI_PrefHeightNode *free; U64 gen; B32 auto_pop; } pref_height_stack;\ -struct { UI_MinWidthNode *top; F32 bottom_val; UI_MinWidthNode *free; U64 gen; B32 auto_pop; } min_width_stack;\ -struct { UI_MinHeightNode *top; F32 bottom_val; UI_MinHeightNode *free; U64 gen; B32 auto_pop; } min_height_stack;\ -struct { UI_PermissionFlagsNode *top; UI_PermissionFlags bottom_val; UI_PermissionFlagsNode *free; U64 gen; B32 auto_pop; } permission_flags_stack;\ -struct { UI_FlagsNode *top; UI_BoxFlags bottom_val; UI_FlagsNode *free; U64 gen; B32 auto_pop; } flags_stack;\ -struct { UI_OmitFlagsNode *top; UI_BoxFlags bottom_val; UI_OmitFlagsNode *free; U64 gen; B32 auto_pop; } omit_flags_stack;\ -struct { UI_FocusHotNode *top; UI_FocusKind bottom_val; UI_FocusHotNode *free; U64 gen; B32 auto_pop; } focus_hot_stack;\ -struct { UI_FocusActiveNode *top; UI_FocusKind bottom_val; UI_FocusActiveNode *free; U64 gen; B32 auto_pop; } focus_active_stack;\ -struct { UI_FastpathCodepointNode *top; U32 bottom_val; UI_FastpathCodepointNode *free; U64 gen; B32 auto_pop; } fastpath_codepoint_stack;\ -struct { UI_GroupKeyNode *top; UI_Key bottom_val; UI_GroupKeyNode *free; U64 gen; B32 auto_pop; } group_key_stack;\ -struct { UI_TransparencyNode *top; F32 bottom_val; UI_TransparencyNode *free; U64 gen; B32 auto_pop; } transparency_stack;\ -struct { UI_TagNode *top; String8 bottom_val; UI_TagNode *free; U64 gen; B32 auto_pop; } tag_stack;\ -struct { UI_BackgroundColorNode *top; Vec4F32 bottom_val; UI_BackgroundColorNode *free; U64 gen; B32 auto_pop; } background_color_stack;\ -struct { UI_TextColorNode *top; Vec4F32 bottom_val; UI_TextColorNode *free; U64 gen; B32 auto_pop; } text_color_stack;\ -struct { UI_BorderColorNode *top; Vec4F32 bottom_val; UI_BorderColorNode *free; U64 gen; B32 auto_pop; } border_color_stack;\ -struct { UI_SquishNode *top; F32 bottom_val; UI_SquishNode *free; U64 gen; B32 auto_pop; } squish_stack;\ -struct { UI_HoverCursorNode *top; WM_Cursor bottom_val; UI_HoverCursorNode *free; U64 gen; B32 auto_pop; } hover_cursor_stack;\ -struct { UI_FontNode *top; FNT_Tag bottom_val; UI_FontNode *free; U64 gen; B32 auto_pop; } font_stack;\ -struct { UI_FontSizeNode *top; F32 bottom_val; UI_FontSizeNode *free; U64 gen; B32 auto_pop; } font_size_stack;\ -struct { UI_TextRasterFlagsNode *top; FNT_RasterFlags bottom_val; UI_TextRasterFlagsNode *free; U64 gen; B32 auto_pop; } text_raster_flags_stack;\ -struct { UI_TabSizeNode *top; F32 bottom_val; UI_TabSizeNode *free; U64 gen; B32 auto_pop; } tab_size_stack;\ -struct { UI_CornerRadius00Node *top; F32 bottom_val; UI_CornerRadius00Node *free; U64 gen; B32 auto_pop; } corner_radius_00_stack;\ -struct { UI_CornerRadius01Node *top; F32 bottom_val; UI_CornerRadius01Node *free; U64 gen; B32 auto_pop; } corner_radius_01_stack;\ -struct { UI_CornerRadius10Node *top; F32 bottom_val; UI_CornerRadius10Node *free; U64 gen; B32 auto_pop; } corner_radius_10_stack;\ -struct { UI_CornerRadius11Node *top; F32 bottom_val; UI_CornerRadius11Node *free; U64 gen; B32 auto_pop; } corner_radius_11_stack;\ -struct { UI_BlurSizeNode *top; F32 bottom_val; UI_BlurSizeNode *free; U64 gen; B32 auto_pop; } blur_size_stack;\ -struct { UI_TextPaddingNode *top; F32 bottom_val; UI_TextPaddingNode *free; U64 gen; B32 auto_pop; } text_padding_stack;\ -struct { UI_TextAlignmentNode *top; UI_TextAlign bottom_val; UI_TextAlignmentNode *free; U64 gen; B32 auto_pop; } text_alignment_stack;\ -} -#define UI_InitStacks(state) \ -state->parent_stack.top = &state->parent_nil_stack_top; state->parent_stack.bottom_val = &ui_nil_box; state->parent_stack.free = 0; state->parent_stack.auto_pop = 0;\ -state->child_layout_axis_stack.top = &state->child_layout_axis_nil_stack_top; state->child_layout_axis_stack.bottom_val = Axis2_X; state->child_layout_axis_stack.free = 0; state->child_layout_axis_stack.auto_pop = 0;\ -state->fixed_x_stack.top = &state->fixed_x_nil_stack_top; state->fixed_x_stack.bottom_val = 0; state->fixed_x_stack.free = 0; state->fixed_x_stack.auto_pop = 0;\ -state->fixed_y_stack.top = &state->fixed_y_nil_stack_top; state->fixed_y_stack.bottom_val = 0; state->fixed_y_stack.free = 0; state->fixed_y_stack.auto_pop = 0;\ -state->fixed_width_stack.top = &state->fixed_width_nil_stack_top; state->fixed_width_stack.bottom_val = 0; state->fixed_width_stack.free = 0; state->fixed_width_stack.auto_pop = 0;\ -state->fixed_height_stack.top = &state->fixed_height_nil_stack_top; state->fixed_height_stack.bottom_val = 0; state->fixed_height_stack.free = 0; state->fixed_height_stack.auto_pop = 0;\ -state->pref_width_stack.top = &state->pref_width_nil_stack_top; state->pref_width_stack.bottom_val = ui_px(250.f, 1.f); state->pref_width_stack.free = 0; state->pref_width_stack.auto_pop = 0;\ -state->pref_height_stack.top = &state->pref_height_nil_stack_top; state->pref_height_stack.bottom_val = ui_px(30.f, 1.f); state->pref_height_stack.free = 0; state->pref_height_stack.auto_pop = 0;\ -state->min_width_stack.top = &state->min_width_nil_stack_top; state->min_width_stack.bottom_val = 0; state->min_width_stack.free = 0; state->min_width_stack.auto_pop = 0;\ -state->min_height_stack.top = &state->min_height_nil_stack_top; state->min_height_stack.bottom_val = 0; state->min_height_stack.free = 0; state->min_height_stack.auto_pop = 0;\ -state->permission_flags_stack.top = &state->permission_flags_nil_stack_top; state->permission_flags_stack.bottom_val = UI_PermissionFlag_All; state->permission_flags_stack.free = 0; state->permission_flags_stack.auto_pop = 0;\ -state->flags_stack.top = &state->flags_nil_stack_top; state->flags_stack.bottom_val = 0; state->flags_stack.free = 0; state->flags_stack.auto_pop = 0;\ -state->omit_flags_stack.top = &state->omit_flags_nil_stack_top; state->omit_flags_stack.bottom_val = 0; state->omit_flags_stack.free = 0; state->omit_flags_stack.auto_pop = 0;\ -state->focus_hot_stack.top = &state->focus_hot_nil_stack_top; state->focus_hot_stack.bottom_val = UI_FocusKind_Null; state->focus_hot_stack.free = 0; state->focus_hot_stack.auto_pop = 0;\ -state->focus_active_stack.top = &state->focus_active_nil_stack_top; state->focus_active_stack.bottom_val = UI_FocusKind_Null; state->focus_active_stack.free = 0; state->focus_active_stack.auto_pop = 0;\ -state->fastpath_codepoint_stack.top = &state->fastpath_codepoint_nil_stack_top; state->fastpath_codepoint_stack.bottom_val = 0; state->fastpath_codepoint_stack.free = 0; state->fastpath_codepoint_stack.auto_pop = 0;\ -state->group_key_stack.top = &state->group_key_nil_stack_top; state->group_key_stack.bottom_val = ui_key_zero(); state->group_key_stack.free = 0; state->group_key_stack.auto_pop = 0;\ -state->transparency_stack.top = &state->transparency_nil_stack_top; state->transparency_stack.bottom_val = 0; state->transparency_stack.free = 0; state->transparency_stack.auto_pop = 0;\ -state->tag_stack.top = &state->tag_nil_stack_top; state->tag_stack.bottom_val = str8_lit(""); state->tag_stack.free = 0; state->tag_stack.auto_pop = 0;\ -state->background_color_stack.top = &state->background_color_nil_stack_top; state->background_color_stack.bottom_val = v4f32(0, 0, 0, 0); state->background_color_stack.free = 0; state->background_color_stack.auto_pop = 0;\ -state->text_color_stack.top = &state->text_color_nil_stack_top; state->text_color_stack.bottom_val = v4f32(0, 0, 0, 0); state->text_color_stack.free = 0; state->text_color_stack.auto_pop = 0;\ -state->border_color_stack.top = &state->border_color_nil_stack_top; state->border_color_stack.bottom_val = v4f32(0, 0, 0, 0); state->border_color_stack.free = 0; state->border_color_stack.auto_pop = 0;\ -state->squish_stack.top = &state->squish_nil_stack_top; state->squish_stack.bottom_val = 0; state->squish_stack.free = 0; state->squish_stack.auto_pop = 0;\ -state->hover_cursor_stack.top = &state->hover_cursor_nil_stack_top; state->hover_cursor_stack.bottom_val = WM_Cursor_Pointer; state->hover_cursor_stack.free = 0; state->hover_cursor_stack.auto_pop = 0;\ -state->font_stack.top = &state->font_nil_stack_top; state->font_stack.bottom_val = fnt_tag_zero(); state->font_stack.free = 0; state->font_stack.auto_pop = 0;\ -state->font_size_stack.top = &state->font_size_nil_stack_top; state->font_size_stack.bottom_val = 24.f; state->font_size_stack.free = 0; state->font_size_stack.auto_pop = 0;\ -state->text_raster_flags_stack.top = &state->text_raster_flags_nil_stack_top; state->text_raster_flags_stack.bottom_val = FNT_RasterFlag_Hinted; state->text_raster_flags_stack.free = 0; state->text_raster_flags_stack.auto_pop = 0;\ -state->tab_size_stack.top = &state->tab_size_nil_stack_top; state->tab_size_stack.bottom_val = 24.f*4.f; state->tab_size_stack.free = 0; state->tab_size_stack.auto_pop = 0;\ -state->corner_radius_00_stack.top = &state->corner_radius_00_nil_stack_top; state->corner_radius_00_stack.bottom_val = 0; state->corner_radius_00_stack.free = 0; state->corner_radius_00_stack.auto_pop = 0;\ -state->corner_radius_01_stack.top = &state->corner_radius_01_nil_stack_top; state->corner_radius_01_stack.bottom_val = 0; state->corner_radius_01_stack.free = 0; state->corner_radius_01_stack.auto_pop = 0;\ -state->corner_radius_10_stack.top = &state->corner_radius_10_nil_stack_top; state->corner_radius_10_stack.bottom_val = 0; state->corner_radius_10_stack.free = 0; state->corner_radius_10_stack.auto_pop = 0;\ -state->corner_radius_11_stack.top = &state->corner_radius_11_nil_stack_top; state->corner_radius_11_stack.bottom_val = 0; state->corner_radius_11_stack.free = 0; state->corner_radius_11_stack.auto_pop = 0;\ -state->blur_size_stack.top = &state->blur_size_nil_stack_top; state->blur_size_stack.bottom_val = 0; state->blur_size_stack.free = 0; state->blur_size_stack.auto_pop = 0;\ -state->text_padding_stack.top = &state->text_padding_nil_stack_top; state->text_padding_stack.bottom_val = 0; state->text_padding_stack.free = 0; state->text_padding_stack.auto_pop = 0;\ -state->text_alignment_stack.top = &state->text_alignment_nil_stack_top; state->text_alignment_stack.bottom_val = UI_TextAlign_Left; state->text_alignment_stack.free = 0; state->text_alignment_stack.auto_pop = 0;\ - -#define UI_AutoPopStacks(state) \ -if(state->parent_stack.auto_pop) { ui_pop_parent(); state->parent_stack.auto_pop = 0; }\ -if(state->child_layout_axis_stack.auto_pop) { ui_pop_child_layout_axis(); state->child_layout_axis_stack.auto_pop = 0; }\ -if(state->fixed_x_stack.auto_pop) { ui_pop_fixed_x(); state->fixed_x_stack.auto_pop = 0; }\ -if(state->fixed_y_stack.auto_pop) { ui_pop_fixed_y(); state->fixed_y_stack.auto_pop = 0; }\ -if(state->fixed_width_stack.auto_pop) { ui_pop_fixed_width(); state->fixed_width_stack.auto_pop = 0; }\ -if(state->fixed_height_stack.auto_pop) { ui_pop_fixed_height(); state->fixed_height_stack.auto_pop = 0; }\ -if(state->pref_width_stack.auto_pop) { ui_pop_pref_width(); state->pref_width_stack.auto_pop = 0; }\ -if(state->pref_height_stack.auto_pop) { ui_pop_pref_height(); state->pref_height_stack.auto_pop = 0; }\ -if(state->min_width_stack.auto_pop) { ui_pop_min_width(); state->min_width_stack.auto_pop = 0; }\ -if(state->min_height_stack.auto_pop) { ui_pop_min_height(); state->min_height_stack.auto_pop = 0; }\ -if(state->permission_flags_stack.auto_pop) { ui_pop_permission_flags(); state->permission_flags_stack.auto_pop = 0; }\ -if(state->flags_stack.auto_pop) { ui_pop_flags(); state->flags_stack.auto_pop = 0; }\ -if(state->omit_flags_stack.auto_pop) { ui_pop_omit_flags(); state->omit_flags_stack.auto_pop = 0; }\ -if(state->focus_hot_stack.auto_pop) { ui_pop_focus_hot(); state->focus_hot_stack.auto_pop = 0; }\ -if(state->focus_active_stack.auto_pop) { ui_pop_focus_active(); state->focus_active_stack.auto_pop = 0; }\ -if(state->fastpath_codepoint_stack.auto_pop) { ui_pop_fastpath_codepoint(); state->fastpath_codepoint_stack.auto_pop = 0; }\ -if(state->group_key_stack.auto_pop) { ui_pop_group_key(); state->group_key_stack.auto_pop = 0; }\ -if(state->transparency_stack.auto_pop) { ui_pop_transparency(); state->transparency_stack.auto_pop = 0; }\ -if(state->tag_stack.auto_pop) { ui_pop_tag(); state->tag_stack.auto_pop = 0; }\ -if(state->background_color_stack.auto_pop) { ui_pop_background_color(); state->background_color_stack.auto_pop = 0; }\ -if(state->text_color_stack.auto_pop) { ui_pop_text_color(); state->text_color_stack.auto_pop = 0; }\ -if(state->border_color_stack.auto_pop) { ui_pop_border_color(); state->border_color_stack.auto_pop = 0; }\ -if(state->squish_stack.auto_pop) { ui_pop_squish(); state->squish_stack.auto_pop = 0; }\ -if(state->hover_cursor_stack.auto_pop) { ui_pop_hover_cursor(); state->hover_cursor_stack.auto_pop = 0; }\ -if(state->font_stack.auto_pop) { ui_pop_font(); state->font_stack.auto_pop = 0; }\ -if(state->font_size_stack.auto_pop) { ui_pop_font_size(); state->font_size_stack.auto_pop = 0; }\ -if(state->text_raster_flags_stack.auto_pop) { ui_pop_text_raster_flags(); state->text_raster_flags_stack.auto_pop = 0; }\ -if(state->tab_size_stack.auto_pop) { ui_pop_tab_size(); state->tab_size_stack.auto_pop = 0; }\ -if(state->corner_radius_00_stack.auto_pop) { ui_pop_corner_radius_00(); state->corner_radius_00_stack.auto_pop = 0; }\ -if(state->corner_radius_01_stack.auto_pop) { ui_pop_corner_radius_01(); state->corner_radius_01_stack.auto_pop = 0; }\ -if(state->corner_radius_10_stack.auto_pop) { ui_pop_corner_radius_10(); state->corner_radius_10_stack.auto_pop = 0; }\ -if(state->corner_radius_11_stack.auto_pop) { ui_pop_corner_radius_11(); state->corner_radius_11_stack.auto_pop = 0; }\ -if(state->blur_size_stack.auto_pop) { ui_pop_blur_size(); state->blur_size_stack.auto_pop = 0; }\ -if(state->text_padding_stack.auto_pop) { ui_pop_text_padding(); state->text_padding_stack.auto_pop = 0; }\ -if(state->text_alignment_stack.auto_pop) { ui_pop_text_alignment(); state->text_alignment_stack.auto_pop = 0; }\ - -internal UI_Box * ui_top_parent(void); -internal Axis2 ui_top_child_layout_axis(void); -internal F32 ui_top_fixed_x(void); -internal F32 ui_top_fixed_y(void); -internal F32 ui_top_fixed_width(void); -internal F32 ui_top_fixed_height(void); -internal UI_Size ui_top_pref_width(void); -internal UI_Size ui_top_pref_height(void); -internal F32 ui_top_min_width(void); -internal F32 ui_top_min_height(void); -internal UI_PermissionFlags ui_top_permission_flags(void); -internal UI_BoxFlags ui_top_flags(void); -internal UI_BoxFlags ui_top_omit_flags(void); -internal UI_FocusKind ui_top_focus_hot(void); -internal UI_FocusKind ui_top_focus_active(void); -internal U32 ui_top_fastpath_codepoint(void); -internal UI_Key ui_top_group_key(void); -internal F32 ui_top_transparency(void); -internal String8 ui_top_tag(void); -internal Vec4F32 ui_top_background_color(void); -internal Vec4F32 ui_top_text_color(void); -internal Vec4F32 ui_top_border_color(void); -internal F32 ui_top_squish(void); -internal WM_Cursor ui_top_hover_cursor(void); -internal FNT_Tag ui_top_font(void); -internal F32 ui_top_font_size(void); -internal FNT_RasterFlags ui_top_text_raster_flags(void); -internal F32 ui_top_tab_size(void); -internal F32 ui_top_corner_radius_00(void); -internal F32 ui_top_corner_radius_01(void); -internal F32 ui_top_corner_radius_10(void); -internal F32 ui_top_corner_radius_11(void); -internal F32 ui_top_blur_size(void); -internal F32 ui_top_text_padding(void); -internal UI_TextAlign ui_top_text_alignment(void); -internal UI_Box * ui_bottom_parent(void); -internal Axis2 ui_bottom_child_layout_axis(void); -internal F32 ui_bottom_fixed_x(void); -internal F32 ui_bottom_fixed_y(void); -internal F32 ui_bottom_fixed_width(void); -internal F32 ui_bottom_fixed_height(void); -internal UI_Size ui_bottom_pref_width(void); -internal UI_Size ui_bottom_pref_height(void); -internal F32 ui_bottom_min_width(void); -internal F32 ui_bottom_min_height(void); -internal UI_PermissionFlags ui_bottom_permission_flags(void); -internal UI_BoxFlags ui_bottom_flags(void); -internal UI_BoxFlags ui_bottom_omit_flags(void); -internal UI_FocusKind ui_bottom_focus_hot(void); -internal UI_FocusKind ui_bottom_focus_active(void); -internal U32 ui_bottom_fastpath_codepoint(void); -internal UI_Key ui_bottom_group_key(void); -internal F32 ui_bottom_transparency(void); -internal String8 ui_bottom_tag(void); -internal Vec4F32 ui_bottom_background_color(void); -internal Vec4F32 ui_bottom_text_color(void); -internal Vec4F32 ui_bottom_border_color(void); -internal F32 ui_bottom_squish(void); -internal WM_Cursor ui_bottom_hover_cursor(void); -internal FNT_Tag ui_bottom_font(void); -internal F32 ui_bottom_font_size(void); -internal FNT_RasterFlags ui_bottom_text_raster_flags(void); -internal F32 ui_bottom_tab_size(void); -internal F32 ui_bottom_corner_radius_00(void); -internal F32 ui_bottom_corner_radius_01(void); -internal F32 ui_bottom_corner_radius_10(void); -internal F32 ui_bottom_corner_radius_11(void); -internal F32 ui_bottom_blur_size(void); -internal F32 ui_bottom_text_padding(void); -internal UI_TextAlign ui_bottom_text_alignment(void); -internal UI_Box * ui_push_parent(UI_Box * v); -internal Axis2 ui_push_child_layout_axis(Axis2 v); -internal F32 ui_push_fixed_x(F32 v); -internal F32 ui_push_fixed_y(F32 v); -internal F32 ui_push_fixed_width(F32 v); -internal F32 ui_push_fixed_height(F32 v); -internal UI_Size ui_push_pref_width(UI_Size v); -internal UI_Size ui_push_pref_height(UI_Size v); -internal F32 ui_push_min_width(F32 v); -internal F32 ui_push_min_height(F32 v); -internal UI_PermissionFlags ui_push_permission_flags(UI_PermissionFlags v); -internal UI_BoxFlags ui_push_flags(UI_BoxFlags v); -internal UI_BoxFlags ui_push_omit_flags(UI_BoxFlags v); -internal UI_FocusKind ui_push_focus_hot(UI_FocusKind v); -internal UI_FocusKind ui_push_focus_active(UI_FocusKind v); -internal U32 ui_push_fastpath_codepoint(U32 v); -internal UI_Key ui_push_group_key(UI_Key v); -internal F32 ui_push_transparency(F32 v); -internal String8 ui_push_tag(String8 v); -internal Vec4F32 ui_push_background_color(Vec4F32 v); -internal Vec4F32 ui_push_text_color(Vec4F32 v); -internal Vec4F32 ui_push_border_color(Vec4F32 v); -internal F32 ui_push_squish(F32 v); -internal WM_Cursor ui_push_hover_cursor(WM_Cursor v); -internal FNT_Tag ui_push_font(FNT_Tag v); -internal F32 ui_push_font_size(F32 v); -internal FNT_RasterFlags ui_push_text_raster_flags(FNT_RasterFlags v); -internal F32 ui_push_tab_size(F32 v); -internal F32 ui_push_corner_radius_00(F32 v); -internal F32 ui_push_corner_radius_01(F32 v); -internal F32 ui_push_corner_radius_10(F32 v); -internal F32 ui_push_corner_radius_11(F32 v); -internal F32 ui_push_blur_size(F32 v); -internal F32 ui_push_text_padding(F32 v); -internal UI_TextAlign ui_push_text_alignment(UI_TextAlign v); -internal UI_Box * ui_pop_parent(void); -internal Axis2 ui_pop_child_layout_axis(void); -internal F32 ui_pop_fixed_x(void); -internal F32 ui_pop_fixed_y(void); -internal F32 ui_pop_fixed_width(void); -internal F32 ui_pop_fixed_height(void); -internal UI_Size ui_pop_pref_width(void); -internal UI_Size ui_pop_pref_height(void); -internal F32 ui_pop_min_width(void); -internal F32 ui_pop_min_height(void); -internal UI_PermissionFlags ui_pop_permission_flags(void); -internal UI_BoxFlags ui_pop_flags(void); -internal UI_BoxFlags ui_pop_omit_flags(void); -internal UI_FocusKind ui_pop_focus_hot(void); -internal UI_FocusKind ui_pop_focus_active(void); -internal U32 ui_pop_fastpath_codepoint(void); -internal UI_Key ui_pop_group_key(void); -internal F32 ui_pop_transparency(void); -internal String8 ui_pop_tag(void); -internal Vec4F32 ui_pop_background_color(void); -internal Vec4F32 ui_pop_text_color(void); -internal Vec4F32 ui_pop_border_color(void); -internal F32 ui_pop_squish(void); -internal WM_Cursor ui_pop_hover_cursor(void); -internal FNT_Tag ui_pop_font(void); -internal F32 ui_pop_font_size(void); -internal FNT_RasterFlags ui_pop_text_raster_flags(void); -internal F32 ui_pop_tab_size(void); -internal F32 ui_pop_corner_radius_00(void); -internal F32 ui_pop_corner_radius_01(void); -internal F32 ui_pop_corner_radius_10(void); -internal F32 ui_pop_corner_radius_11(void); -internal F32 ui_pop_blur_size(void); -internal F32 ui_pop_text_padding(void); -internal UI_TextAlign ui_pop_text_alignment(void); -internal UI_Box * ui_set_next_parent(UI_Box * v); -internal Axis2 ui_set_next_child_layout_axis(Axis2 v); -internal F32 ui_set_next_fixed_x(F32 v); -internal F32 ui_set_next_fixed_y(F32 v); -internal F32 ui_set_next_fixed_width(F32 v); -internal F32 ui_set_next_fixed_height(F32 v); -internal UI_Size ui_set_next_pref_width(UI_Size v); -internal UI_Size ui_set_next_pref_height(UI_Size v); -internal F32 ui_set_next_min_width(F32 v); -internal F32 ui_set_next_min_height(F32 v); -internal UI_PermissionFlags ui_set_next_permission_flags(UI_PermissionFlags v); -internal UI_BoxFlags ui_set_next_flags(UI_BoxFlags v); -internal UI_BoxFlags ui_set_next_omit_flags(UI_BoxFlags v); -internal UI_FocusKind ui_set_next_focus_hot(UI_FocusKind v); -internal UI_FocusKind ui_set_next_focus_active(UI_FocusKind v); -internal U32 ui_set_next_fastpath_codepoint(U32 v); -internal UI_Key ui_set_next_group_key(UI_Key v); -internal F32 ui_set_next_transparency(F32 v); -internal String8 ui_set_next_tag(String8 v); -internal Vec4F32 ui_set_next_background_color(Vec4F32 v); -internal Vec4F32 ui_set_next_text_color(Vec4F32 v); -internal Vec4F32 ui_set_next_border_color(Vec4F32 v); -internal F32 ui_set_next_squish(F32 v); -internal WM_Cursor ui_set_next_hover_cursor(WM_Cursor v); -internal FNT_Tag ui_set_next_font(FNT_Tag v); -internal F32 ui_set_next_font_size(F32 v); -internal FNT_RasterFlags ui_set_next_text_raster_flags(FNT_RasterFlags v); -internal F32 ui_set_next_tab_size(F32 v); -internal F32 ui_set_next_corner_radius_00(F32 v); -internal F32 ui_set_next_corner_radius_01(F32 v); -internal F32 ui_set_next_corner_radius_10(F32 v); -internal F32 ui_set_next_corner_radius_11(F32 v); -internal F32 ui_set_next_blur_size(F32 v); -internal F32 ui_set_next_text_padding(F32 v); -internal UI_TextAlign ui_set_next_text_alignment(UI_TextAlign v); -#endif // UI_META_H +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//- GENERATED CODE + +#ifndef UI_META_H +#define UI_META_H + +typedef struct UI_ParentNode UI_ParentNode; struct UI_ParentNode{UI_ParentNode *next; UI_Box * v;}; +typedef struct UI_ChildLayoutAxisNode UI_ChildLayoutAxisNode; struct UI_ChildLayoutAxisNode{UI_ChildLayoutAxisNode *next; Axis2 v;}; +typedef struct UI_FixedXNode UI_FixedXNode; struct UI_FixedXNode{UI_FixedXNode *next; F32 v;}; +typedef struct UI_FixedYNode UI_FixedYNode; struct UI_FixedYNode{UI_FixedYNode *next; F32 v;}; +typedef struct UI_FixedWidthNode UI_FixedWidthNode; struct UI_FixedWidthNode{UI_FixedWidthNode *next; F32 v;}; +typedef struct UI_FixedHeightNode UI_FixedHeightNode; struct UI_FixedHeightNode{UI_FixedHeightNode *next; F32 v;}; +typedef struct UI_PrefWidthNode UI_PrefWidthNode; struct UI_PrefWidthNode{UI_PrefWidthNode *next; UI_Size v;}; +typedef struct UI_PrefHeightNode UI_PrefHeightNode; struct UI_PrefHeightNode{UI_PrefHeightNode *next; UI_Size v;}; +typedef struct UI_MinWidthNode UI_MinWidthNode; struct UI_MinWidthNode{UI_MinWidthNode *next; F32 v;}; +typedef struct UI_MinHeightNode UI_MinHeightNode; struct UI_MinHeightNode{UI_MinHeightNode *next; F32 v;}; +typedef struct UI_PermissionFlagsNode UI_PermissionFlagsNode; struct UI_PermissionFlagsNode{UI_PermissionFlagsNode *next; UI_PermissionFlags v;}; +typedef struct UI_FlagsNode UI_FlagsNode; struct UI_FlagsNode{UI_FlagsNode *next; UI_BoxFlags v;}; +typedef struct UI_OmitFlagsNode UI_OmitFlagsNode; struct UI_OmitFlagsNode{UI_OmitFlagsNode *next; UI_BoxFlags v;}; +typedef struct UI_FocusHotNode UI_FocusHotNode; struct UI_FocusHotNode{UI_FocusHotNode *next; UI_FocusKind v;}; +typedef struct UI_FocusActiveNode UI_FocusActiveNode; struct UI_FocusActiveNode{UI_FocusActiveNode *next; UI_FocusKind v;}; +typedef struct UI_FastpathCodepointNode UI_FastpathCodepointNode; struct UI_FastpathCodepointNode{UI_FastpathCodepointNode *next; U32 v;}; +typedef struct UI_GroupKeyNode UI_GroupKeyNode; struct UI_GroupKeyNode{UI_GroupKeyNode *next; UI_Key v;}; +typedef struct UI_TransparencyNode UI_TransparencyNode; struct UI_TransparencyNode{UI_TransparencyNode *next; F32 v;}; +typedef struct UI_TagNode UI_TagNode; struct UI_TagNode{UI_TagNode *next; String8 v;}; +typedef struct UI_BackgroundColorNode UI_BackgroundColorNode; struct UI_BackgroundColorNode{UI_BackgroundColorNode *next; Vec4F32 v;}; +typedef struct UI_TextColorNode UI_TextColorNode; struct UI_TextColorNode{UI_TextColorNode *next; Vec4F32 v;}; +typedef struct UI_BorderColorNode UI_BorderColorNode; struct UI_BorderColorNode{UI_BorderColorNode *next; Vec4F32 v;}; +typedef struct UI_SquishNode UI_SquishNode; struct UI_SquishNode{UI_SquishNode *next; F32 v;}; +typedef struct UI_HoverCursorNode UI_HoverCursorNode; struct UI_HoverCursorNode{UI_HoverCursorNode *next; WM_Cursor v;}; +typedef struct UI_FontNode UI_FontNode; struct UI_FontNode{UI_FontNode *next; FNT_Tag v;}; +typedef struct UI_FontSizeNode UI_FontSizeNode; struct UI_FontSizeNode{UI_FontSizeNode *next; F32 v;}; +typedef struct UI_TextRasterFlagsNode UI_TextRasterFlagsNode; struct UI_TextRasterFlagsNode{UI_TextRasterFlagsNode *next; FNT_RasterFlags v;}; +typedef struct UI_TabSizeNode UI_TabSizeNode; struct UI_TabSizeNode{UI_TabSizeNode *next; F32 v;}; +typedef struct UI_CornerRadius00Node UI_CornerRadius00Node; struct UI_CornerRadius00Node{UI_CornerRadius00Node *next; F32 v;}; +typedef struct UI_CornerRadius01Node UI_CornerRadius01Node; struct UI_CornerRadius01Node{UI_CornerRadius01Node *next; F32 v;}; +typedef struct UI_CornerRadius10Node UI_CornerRadius10Node; struct UI_CornerRadius10Node{UI_CornerRadius10Node *next; F32 v;}; +typedef struct UI_CornerRadius11Node UI_CornerRadius11Node; struct UI_CornerRadius11Node{UI_CornerRadius11Node *next; F32 v;}; +typedef struct UI_BlurSizeNode UI_BlurSizeNode; struct UI_BlurSizeNode{UI_BlurSizeNode *next; F32 v;}; +typedef struct UI_TextPaddingNode UI_TextPaddingNode; struct UI_TextPaddingNode{UI_TextPaddingNode *next; F32 v;}; +typedef struct UI_TextAlignmentNode UI_TextAlignmentNode; struct UI_TextAlignmentNode{UI_TextAlignmentNode *next; UI_TextAlign v;}; +#define UI_DeclStackNils \ +struct\ +{\ +UI_ParentNode parent_nil_stack_top;\ +UI_ChildLayoutAxisNode child_layout_axis_nil_stack_top;\ +UI_FixedXNode fixed_x_nil_stack_top;\ +UI_FixedYNode fixed_y_nil_stack_top;\ +UI_FixedWidthNode fixed_width_nil_stack_top;\ +UI_FixedHeightNode fixed_height_nil_stack_top;\ +UI_PrefWidthNode pref_width_nil_stack_top;\ +UI_PrefHeightNode pref_height_nil_stack_top;\ +UI_MinWidthNode min_width_nil_stack_top;\ +UI_MinHeightNode min_height_nil_stack_top;\ +UI_PermissionFlagsNode permission_flags_nil_stack_top;\ +UI_FlagsNode flags_nil_stack_top;\ +UI_OmitFlagsNode omit_flags_nil_stack_top;\ +UI_FocusHotNode focus_hot_nil_stack_top;\ +UI_FocusActiveNode focus_active_nil_stack_top;\ +UI_FastpathCodepointNode fastpath_codepoint_nil_stack_top;\ +UI_GroupKeyNode group_key_nil_stack_top;\ +UI_TransparencyNode transparency_nil_stack_top;\ +UI_TagNode tag_nil_stack_top;\ +UI_BackgroundColorNode background_color_nil_stack_top;\ +UI_TextColorNode text_color_nil_stack_top;\ +UI_BorderColorNode border_color_nil_stack_top;\ +UI_SquishNode squish_nil_stack_top;\ +UI_HoverCursorNode hover_cursor_nil_stack_top;\ +UI_FontNode font_nil_stack_top;\ +UI_FontSizeNode font_size_nil_stack_top;\ +UI_TextRasterFlagsNode text_raster_flags_nil_stack_top;\ +UI_TabSizeNode tab_size_nil_stack_top;\ +UI_CornerRadius00Node corner_radius_00_nil_stack_top;\ +UI_CornerRadius01Node corner_radius_01_nil_stack_top;\ +UI_CornerRadius10Node corner_radius_10_nil_stack_top;\ +UI_CornerRadius11Node corner_radius_11_nil_stack_top;\ +UI_BlurSizeNode blur_size_nil_stack_top;\ +UI_TextPaddingNode text_padding_nil_stack_top;\ +UI_TextAlignmentNode text_alignment_nil_stack_top;\ +} +#define UI_InitStackNils(state) \ +state->parent_nil_stack_top.v = &ui_nil_box;\ +state->child_layout_axis_nil_stack_top.v = Axis2_X;\ +state->fixed_x_nil_stack_top.v = 0;\ +state->fixed_y_nil_stack_top.v = 0;\ +state->fixed_width_nil_stack_top.v = 0;\ +state->fixed_height_nil_stack_top.v = 0;\ +state->pref_width_nil_stack_top.v = ui_px(250.f, 1.f);\ +state->pref_height_nil_stack_top.v = ui_px(30.f, 1.f);\ +state->min_width_nil_stack_top.v = 0;\ +state->min_height_nil_stack_top.v = 0;\ +state->permission_flags_nil_stack_top.v = UI_PermissionFlag_All;\ +state->flags_nil_stack_top.v = 0;\ +state->omit_flags_nil_stack_top.v = 0;\ +state->focus_hot_nil_stack_top.v = UI_FocusKind_Null;\ +state->focus_active_nil_stack_top.v = UI_FocusKind_Null;\ +state->fastpath_codepoint_nil_stack_top.v = 0;\ +state->group_key_nil_stack_top.v = ui_key_zero();\ +state->transparency_nil_stack_top.v = 0;\ +state->tag_nil_stack_top.v = str8_lit("");\ +state->background_color_nil_stack_top.v = v4f32(0, 0, 0, 0);\ +state->text_color_nil_stack_top.v = v4f32(0, 0, 0, 0);\ +state->border_color_nil_stack_top.v = v4f32(0, 0, 0, 0);\ +state->squish_nil_stack_top.v = 0;\ +state->hover_cursor_nil_stack_top.v = WM_Cursor_Pointer;\ +state->font_nil_stack_top.v = fnt_tag_zero();\ +state->font_size_nil_stack_top.v = 24.f;\ +state->text_raster_flags_nil_stack_top.v = FNT_RasterFlag_Hinted;\ +state->tab_size_nil_stack_top.v = 24.f*4.f;\ +state->corner_radius_00_nil_stack_top.v = 0;\ +state->corner_radius_01_nil_stack_top.v = 0;\ +state->corner_radius_10_nil_stack_top.v = 0;\ +state->corner_radius_11_nil_stack_top.v = 0;\ +state->blur_size_nil_stack_top.v = 0;\ +state->text_padding_nil_stack_top.v = 0;\ +state->text_alignment_nil_stack_top.v = UI_TextAlign_Left;\ + +#define UI_DeclStacks \ +struct\ +{\ +struct { UI_ParentNode *top; UI_Box * bottom_val; UI_ParentNode *free; U64 gen; B32 auto_pop; } parent_stack;\ +struct { UI_ChildLayoutAxisNode *top; Axis2 bottom_val; UI_ChildLayoutAxisNode *free; U64 gen; B32 auto_pop; } child_layout_axis_stack;\ +struct { UI_FixedXNode *top; F32 bottom_val; UI_FixedXNode *free; U64 gen; B32 auto_pop; } fixed_x_stack;\ +struct { UI_FixedYNode *top; F32 bottom_val; UI_FixedYNode *free; U64 gen; B32 auto_pop; } fixed_y_stack;\ +struct { UI_FixedWidthNode *top; F32 bottom_val; UI_FixedWidthNode *free; U64 gen; B32 auto_pop; } fixed_width_stack;\ +struct { UI_FixedHeightNode *top; F32 bottom_val; UI_FixedHeightNode *free; U64 gen; B32 auto_pop; } fixed_height_stack;\ +struct { UI_PrefWidthNode *top; UI_Size bottom_val; UI_PrefWidthNode *free; U64 gen; B32 auto_pop; } pref_width_stack;\ +struct { UI_PrefHeightNode *top; UI_Size bottom_val; UI_PrefHeightNode *free; U64 gen; B32 auto_pop; } pref_height_stack;\ +struct { UI_MinWidthNode *top; F32 bottom_val; UI_MinWidthNode *free; U64 gen; B32 auto_pop; } min_width_stack;\ +struct { UI_MinHeightNode *top; F32 bottom_val; UI_MinHeightNode *free; U64 gen; B32 auto_pop; } min_height_stack;\ +struct { UI_PermissionFlagsNode *top; UI_PermissionFlags bottom_val; UI_PermissionFlagsNode *free; U64 gen; B32 auto_pop; } permission_flags_stack;\ +struct { UI_FlagsNode *top; UI_BoxFlags bottom_val; UI_FlagsNode *free; U64 gen; B32 auto_pop; } flags_stack;\ +struct { UI_OmitFlagsNode *top; UI_BoxFlags bottom_val; UI_OmitFlagsNode *free; U64 gen; B32 auto_pop; } omit_flags_stack;\ +struct { UI_FocusHotNode *top; UI_FocusKind bottom_val; UI_FocusHotNode *free; U64 gen; B32 auto_pop; } focus_hot_stack;\ +struct { UI_FocusActiveNode *top; UI_FocusKind bottom_val; UI_FocusActiveNode *free; U64 gen; B32 auto_pop; } focus_active_stack;\ +struct { UI_FastpathCodepointNode *top; U32 bottom_val; UI_FastpathCodepointNode *free; U64 gen; B32 auto_pop; } fastpath_codepoint_stack;\ +struct { UI_GroupKeyNode *top; UI_Key bottom_val; UI_GroupKeyNode *free; U64 gen; B32 auto_pop; } group_key_stack;\ +struct { UI_TransparencyNode *top; F32 bottom_val; UI_TransparencyNode *free; U64 gen; B32 auto_pop; } transparency_stack;\ +struct { UI_TagNode *top; String8 bottom_val; UI_TagNode *free; U64 gen; B32 auto_pop; } tag_stack;\ +struct { UI_BackgroundColorNode *top; Vec4F32 bottom_val; UI_BackgroundColorNode *free; U64 gen; B32 auto_pop; } background_color_stack;\ +struct { UI_TextColorNode *top; Vec4F32 bottom_val; UI_TextColorNode *free; U64 gen; B32 auto_pop; } text_color_stack;\ +struct { UI_BorderColorNode *top; Vec4F32 bottom_val; UI_BorderColorNode *free; U64 gen; B32 auto_pop; } border_color_stack;\ +struct { UI_SquishNode *top; F32 bottom_val; UI_SquishNode *free; U64 gen; B32 auto_pop; } squish_stack;\ +struct { UI_HoverCursorNode *top; WM_Cursor bottom_val; UI_HoverCursorNode *free; U64 gen; B32 auto_pop; } hover_cursor_stack;\ +struct { UI_FontNode *top; FNT_Tag bottom_val; UI_FontNode *free; U64 gen; B32 auto_pop; } font_stack;\ +struct { UI_FontSizeNode *top; F32 bottom_val; UI_FontSizeNode *free; U64 gen; B32 auto_pop; } font_size_stack;\ +struct { UI_TextRasterFlagsNode *top; FNT_RasterFlags bottom_val; UI_TextRasterFlagsNode *free; U64 gen; B32 auto_pop; } text_raster_flags_stack;\ +struct { UI_TabSizeNode *top; F32 bottom_val; UI_TabSizeNode *free; U64 gen; B32 auto_pop; } tab_size_stack;\ +struct { UI_CornerRadius00Node *top; F32 bottom_val; UI_CornerRadius00Node *free; U64 gen; B32 auto_pop; } corner_radius_00_stack;\ +struct { UI_CornerRadius01Node *top; F32 bottom_val; UI_CornerRadius01Node *free; U64 gen; B32 auto_pop; } corner_radius_01_stack;\ +struct { UI_CornerRadius10Node *top; F32 bottom_val; UI_CornerRadius10Node *free; U64 gen; B32 auto_pop; } corner_radius_10_stack;\ +struct { UI_CornerRadius11Node *top; F32 bottom_val; UI_CornerRadius11Node *free; U64 gen; B32 auto_pop; } corner_radius_11_stack;\ +struct { UI_BlurSizeNode *top; F32 bottom_val; UI_BlurSizeNode *free; U64 gen; B32 auto_pop; } blur_size_stack;\ +struct { UI_TextPaddingNode *top; F32 bottom_val; UI_TextPaddingNode *free; U64 gen; B32 auto_pop; } text_padding_stack;\ +struct { UI_TextAlignmentNode *top; UI_TextAlign bottom_val; UI_TextAlignmentNode *free; U64 gen; B32 auto_pop; } text_alignment_stack;\ +} +#define UI_InitStacks(state) \ +state->parent_stack.top = &state->parent_nil_stack_top; state->parent_stack.bottom_val = &ui_nil_box; state->parent_stack.free = 0; state->parent_stack.auto_pop = 0;\ +state->child_layout_axis_stack.top = &state->child_layout_axis_nil_stack_top; state->child_layout_axis_stack.bottom_val = Axis2_X; state->child_layout_axis_stack.free = 0; state->child_layout_axis_stack.auto_pop = 0;\ +state->fixed_x_stack.top = &state->fixed_x_nil_stack_top; state->fixed_x_stack.bottom_val = 0; state->fixed_x_stack.free = 0; state->fixed_x_stack.auto_pop = 0;\ +state->fixed_y_stack.top = &state->fixed_y_nil_stack_top; state->fixed_y_stack.bottom_val = 0; state->fixed_y_stack.free = 0; state->fixed_y_stack.auto_pop = 0;\ +state->fixed_width_stack.top = &state->fixed_width_nil_stack_top; state->fixed_width_stack.bottom_val = 0; state->fixed_width_stack.free = 0; state->fixed_width_stack.auto_pop = 0;\ +state->fixed_height_stack.top = &state->fixed_height_nil_stack_top; state->fixed_height_stack.bottom_val = 0; state->fixed_height_stack.free = 0; state->fixed_height_stack.auto_pop = 0;\ +state->pref_width_stack.top = &state->pref_width_nil_stack_top; state->pref_width_stack.bottom_val = ui_px(250.f, 1.f); state->pref_width_stack.free = 0; state->pref_width_stack.auto_pop = 0;\ +state->pref_height_stack.top = &state->pref_height_nil_stack_top; state->pref_height_stack.bottom_val = ui_px(30.f, 1.f); state->pref_height_stack.free = 0; state->pref_height_stack.auto_pop = 0;\ +state->min_width_stack.top = &state->min_width_nil_stack_top; state->min_width_stack.bottom_val = 0; state->min_width_stack.free = 0; state->min_width_stack.auto_pop = 0;\ +state->min_height_stack.top = &state->min_height_nil_stack_top; state->min_height_stack.bottom_val = 0; state->min_height_stack.free = 0; state->min_height_stack.auto_pop = 0;\ +state->permission_flags_stack.top = &state->permission_flags_nil_stack_top; state->permission_flags_stack.bottom_val = UI_PermissionFlag_All; state->permission_flags_stack.free = 0; state->permission_flags_stack.auto_pop = 0;\ +state->flags_stack.top = &state->flags_nil_stack_top; state->flags_stack.bottom_val = 0; state->flags_stack.free = 0; state->flags_stack.auto_pop = 0;\ +state->omit_flags_stack.top = &state->omit_flags_nil_stack_top; state->omit_flags_stack.bottom_val = 0; state->omit_flags_stack.free = 0; state->omit_flags_stack.auto_pop = 0;\ +state->focus_hot_stack.top = &state->focus_hot_nil_stack_top; state->focus_hot_stack.bottom_val = UI_FocusKind_Null; state->focus_hot_stack.free = 0; state->focus_hot_stack.auto_pop = 0;\ +state->focus_active_stack.top = &state->focus_active_nil_stack_top; state->focus_active_stack.bottom_val = UI_FocusKind_Null; state->focus_active_stack.free = 0; state->focus_active_stack.auto_pop = 0;\ +state->fastpath_codepoint_stack.top = &state->fastpath_codepoint_nil_stack_top; state->fastpath_codepoint_stack.bottom_val = 0; state->fastpath_codepoint_stack.free = 0; state->fastpath_codepoint_stack.auto_pop = 0;\ +state->group_key_stack.top = &state->group_key_nil_stack_top; state->group_key_stack.bottom_val = ui_key_zero(); state->group_key_stack.free = 0; state->group_key_stack.auto_pop = 0;\ +state->transparency_stack.top = &state->transparency_nil_stack_top; state->transparency_stack.bottom_val = 0; state->transparency_stack.free = 0; state->transparency_stack.auto_pop = 0;\ +state->tag_stack.top = &state->tag_nil_stack_top; state->tag_stack.bottom_val = str8_lit(""); state->tag_stack.free = 0; state->tag_stack.auto_pop = 0;\ +state->background_color_stack.top = &state->background_color_nil_stack_top; state->background_color_stack.bottom_val = v4f32(0, 0, 0, 0); state->background_color_stack.free = 0; state->background_color_stack.auto_pop = 0;\ +state->text_color_stack.top = &state->text_color_nil_stack_top; state->text_color_stack.bottom_val = v4f32(0, 0, 0, 0); state->text_color_stack.free = 0; state->text_color_stack.auto_pop = 0;\ +state->border_color_stack.top = &state->border_color_nil_stack_top; state->border_color_stack.bottom_val = v4f32(0, 0, 0, 0); state->border_color_stack.free = 0; state->border_color_stack.auto_pop = 0;\ +state->squish_stack.top = &state->squish_nil_stack_top; state->squish_stack.bottom_val = 0; state->squish_stack.free = 0; state->squish_stack.auto_pop = 0;\ +state->hover_cursor_stack.top = &state->hover_cursor_nil_stack_top; state->hover_cursor_stack.bottom_val = WM_Cursor_Pointer; state->hover_cursor_stack.free = 0; state->hover_cursor_stack.auto_pop = 0;\ +state->font_stack.top = &state->font_nil_stack_top; state->font_stack.bottom_val = fnt_tag_zero(); state->font_stack.free = 0; state->font_stack.auto_pop = 0;\ +state->font_size_stack.top = &state->font_size_nil_stack_top; state->font_size_stack.bottom_val = 24.f; state->font_size_stack.free = 0; state->font_size_stack.auto_pop = 0;\ +state->text_raster_flags_stack.top = &state->text_raster_flags_nil_stack_top; state->text_raster_flags_stack.bottom_val = FNT_RasterFlag_Hinted; state->text_raster_flags_stack.free = 0; state->text_raster_flags_stack.auto_pop = 0;\ +state->tab_size_stack.top = &state->tab_size_nil_stack_top; state->tab_size_stack.bottom_val = 24.f*4.f; state->tab_size_stack.free = 0; state->tab_size_stack.auto_pop = 0;\ +state->corner_radius_00_stack.top = &state->corner_radius_00_nil_stack_top; state->corner_radius_00_stack.bottom_val = 0; state->corner_radius_00_stack.free = 0; state->corner_radius_00_stack.auto_pop = 0;\ +state->corner_radius_01_stack.top = &state->corner_radius_01_nil_stack_top; state->corner_radius_01_stack.bottom_val = 0; state->corner_radius_01_stack.free = 0; state->corner_radius_01_stack.auto_pop = 0;\ +state->corner_radius_10_stack.top = &state->corner_radius_10_nil_stack_top; state->corner_radius_10_stack.bottom_val = 0; state->corner_radius_10_stack.free = 0; state->corner_radius_10_stack.auto_pop = 0;\ +state->corner_radius_11_stack.top = &state->corner_radius_11_nil_stack_top; state->corner_radius_11_stack.bottom_val = 0; state->corner_radius_11_stack.free = 0; state->corner_radius_11_stack.auto_pop = 0;\ +state->blur_size_stack.top = &state->blur_size_nil_stack_top; state->blur_size_stack.bottom_val = 0; state->blur_size_stack.free = 0; state->blur_size_stack.auto_pop = 0;\ +state->text_padding_stack.top = &state->text_padding_nil_stack_top; state->text_padding_stack.bottom_val = 0; state->text_padding_stack.free = 0; state->text_padding_stack.auto_pop = 0;\ +state->text_alignment_stack.top = &state->text_alignment_nil_stack_top; state->text_alignment_stack.bottom_val = UI_TextAlign_Left; state->text_alignment_stack.free = 0; state->text_alignment_stack.auto_pop = 0;\ + +#define UI_AutoPopStacks(state) \ +if(state->parent_stack.auto_pop) { ui_pop_parent(); state->parent_stack.auto_pop = 0; }\ +if(state->child_layout_axis_stack.auto_pop) { ui_pop_child_layout_axis(); state->child_layout_axis_stack.auto_pop = 0; }\ +if(state->fixed_x_stack.auto_pop) { ui_pop_fixed_x(); state->fixed_x_stack.auto_pop = 0; }\ +if(state->fixed_y_stack.auto_pop) { ui_pop_fixed_y(); state->fixed_y_stack.auto_pop = 0; }\ +if(state->fixed_width_stack.auto_pop) { ui_pop_fixed_width(); state->fixed_width_stack.auto_pop = 0; }\ +if(state->fixed_height_stack.auto_pop) { ui_pop_fixed_height(); state->fixed_height_stack.auto_pop = 0; }\ +if(state->pref_width_stack.auto_pop) { ui_pop_pref_width(); state->pref_width_stack.auto_pop = 0; }\ +if(state->pref_height_stack.auto_pop) { ui_pop_pref_height(); state->pref_height_stack.auto_pop = 0; }\ +if(state->min_width_stack.auto_pop) { ui_pop_min_width(); state->min_width_stack.auto_pop = 0; }\ +if(state->min_height_stack.auto_pop) { ui_pop_min_height(); state->min_height_stack.auto_pop = 0; }\ +if(state->permission_flags_stack.auto_pop) { ui_pop_permission_flags(); state->permission_flags_stack.auto_pop = 0; }\ +if(state->flags_stack.auto_pop) { ui_pop_flags(); state->flags_stack.auto_pop = 0; }\ +if(state->omit_flags_stack.auto_pop) { ui_pop_omit_flags(); state->omit_flags_stack.auto_pop = 0; }\ +if(state->focus_hot_stack.auto_pop) { ui_pop_focus_hot(); state->focus_hot_stack.auto_pop = 0; }\ +if(state->focus_active_stack.auto_pop) { ui_pop_focus_active(); state->focus_active_stack.auto_pop = 0; }\ +if(state->fastpath_codepoint_stack.auto_pop) { ui_pop_fastpath_codepoint(); state->fastpath_codepoint_stack.auto_pop = 0; }\ +if(state->group_key_stack.auto_pop) { ui_pop_group_key(); state->group_key_stack.auto_pop = 0; }\ +if(state->transparency_stack.auto_pop) { ui_pop_transparency(); state->transparency_stack.auto_pop = 0; }\ +if(state->tag_stack.auto_pop) { ui_pop_tag(); state->tag_stack.auto_pop = 0; }\ +if(state->background_color_stack.auto_pop) { ui_pop_background_color(); state->background_color_stack.auto_pop = 0; }\ +if(state->text_color_stack.auto_pop) { ui_pop_text_color(); state->text_color_stack.auto_pop = 0; }\ +if(state->border_color_stack.auto_pop) { ui_pop_border_color(); state->border_color_stack.auto_pop = 0; }\ +if(state->squish_stack.auto_pop) { ui_pop_squish(); state->squish_stack.auto_pop = 0; }\ +if(state->hover_cursor_stack.auto_pop) { ui_pop_hover_cursor(); state->hover_cursor_stack.auto_pop = 0; }\ +if(state->font_stack.auto_pop) { ui_pop_font(); state->font_stack.auto_pop = 0; }\ +if(state->font_size_stack.auto_pop) { ui_pop_font_size(); state->font_size_stack.auto_pop = 0; }\ +if(state->text_raster_flags_stack.auto_pop) { ui_pop_text_raster_flags(); state->text_raster_flags_stack.auto_pop = 0; }\ +if(state->tab_size_stack.auto_pop) { ui_pop_tab_size(); state->tab_size_stack.auto_pop = 0; }\ +if(state->corner_radius_00_stack.auto_pop) { ui_pop_corner_radius_00(); state->corner_radius_00_stack.auto_pop = 0; }\ +if(state->corner_radius_01_stack.auto_pop) { ui_pop_corner_radius_01(); state->corner_radius_01_stack.auto_pop = 0; }\ +if(state->corner_radius_10_stack.auto_pop) { ui_pop_corner_radius_10(); state->corner_radius_10_stack.auto_pop = 0; }\ +if(state->corner_radius_11_stack.auto_pop) { ui_pop_corner_radius_11(); state->corner_radius_11_stack.auto_pop = 0; }\ +if(state->blur_size_stack.auto_pop) { ui_pop_blur_size(); state->blur_size_stack.auto_pop = 0; }\ +if(state->text_padding_stack.auto_pop) { ui_pop_text_padding(); state->text_padding_stack.auto_pop = 0; }\ +if(state->text_alignment_stack.auto_pop) { ui_pop_text_alignment(); state->text_alignment_stack.auto_pop = 0; }\ + +internal UI_Box * ui_top_parent(void); +internal Axis2 ui_top_child_layout_axis(void); +internal F32 ui_top_fixed_x(void); +internal F32 ui_top_fixed_y(void); +internal F32 ui_top_fixed_width(void); +internal F32 ui_top_fixed_height(void); +internal UI_Size ui_top_pref_width(void); +internal UI_Size ui_top_pref_height(void); +internal F32 ui_top_min_width(void); +internal F32 ui_top_min_height(void); +internal UI_PermissionFlags ui_top_permission_flags(void); +internal UI_BoxFlags ui_top_flags(void); +internal UI_BoxFlags ui_top_omit_flags(void); +internal UI_FocusKind ui_top_focus_hot(void); +internal UI_FocusKind ui_top_focus_active(void); +internal U32 ui_top_fastpath_codepoint(void); +internal UI_Key ui_top_group_key(void); +internal F32 ui_top_transparency(void); +internal String8 ui_top_tag(void); +internal Vec4F32 ui_top_background_color(void); +internal Vec4F32 ui_top_text_color(void); +internal Vec4F32 ui_top_border_color(void); +internal F32 ui_top_squish(void); +internal WM_Cursor ui_top_hover_cursor(void); +internal FNT_Tag ui_top_font(void); +internal F32 ui_top_font_size(void); +internal FNT_RasterFlags ui_top_text_raster_flags(void); +internal F32 ui_top_tab_size(void); +internal F32 ui_top_corner_radius_00(void); +internal F32 ui_top_corner_radius_01(void); +internal F32 ui_top_corner_radius_10(void); +internal F32 ui_top_corner_radius_11(void); +internal F32 ui_top_blur_size(void); +internal F32 ui_top_text_padding(void); +internal UI_TextAlign ui_top_text_alignment(void); +internal UI_Box * ui_bottom_parent(void); +internal Axis2 ui_bottom_child_layout_axis(void); +internal F32 ui_bottom_fixed_x(void); +internal F32 ui_bottom_fixed_y(void); +internal F32 ui_bottom_fixed_width(void); +internal F32 ui_bottom_fixed_height(void); +internal UI_Size ui_bottom_pref_width(void); +internal UI_Size ui_bottom_pref_height(void); +internal F32 ui_bottom_min_width(void); +internal F32 ui_bottom_min_height(void); +internal UI_PermissionFlags ui_bottom_permission_flags(void); +internal UI_BoxFlags ui_bottom_flags(void); +internal UI_BoxFlags ui_bottom_omit_flags(void); +internal UI_FocusKind ui_bottom_focus_hot(void); +internal UI_FocusKind ui_bottom_focus_active(void); +internal U32 ui_bottom_fastpath_codepoint(void); +internal UI_Key ui_bottom_group_key(void); +internal F32 ui_bottom_transparency(void); +internal String8 ui_bottom_tag(void); +internal Vec4F32 ui_bottom_background_color(void); +internal Vec4F32 ui_bottom_text_color(void); +internal Vec4F32 ui_bottom_border_color(void); +internal F32 ui_bottom_squish(void); +internal WM_Cursor ui_bottom_hover_cursor(void); +internal FNT_Tag ui_bottom_font(void); +internal F32 ui_bottom_font_size(void); +internal FNT_RasterFlags ui_bottom_text_raster_flags(void); +internal F32 ui_bottom_tab_size(void); +internal F32 ui_bottom_corner_radius_00(void); +internal F32 ui_bottom_corner_radius_01(void); +internal F32 ui_bottom_corner_radius_10(void); +internal F32 ui_bottom_corner_radius_11(void); +internal F32 ui_bottom_blur_size(void); +internal F32 ui_bottom_text_padding(void); +internal UI_TextAlign ui_bottom_text_alignment(void); +internal UI_Box * ui_push_parent(UI_Box * v); +internal Axis2 ui_push_child_layout_axis(Axis2 v); +internal F32 ui_push_fixed_x(F32 v); +internal F32 ui_push_fixed_y(F32 v); +internal F32 ui_push_fixed_width(F32 v); +internal F32 ui_push_fixed_height(F32 v); +internal UI_Size ui_push_pref_width(UI_Size v); +internal UI_Size ui_push_pref_height(UI_Size v); +internal F32 ui_push_min_width(F32 v); +internal F32 ui_push_min_height(F32 v); +internal UI_PermissionFlags ui_push_permission_flags(UI_PermissionFlags v); +internal UI_BoxFlags ui_push_flags(UI_BoxFlags v); +internal UI_BoxFlags ui_push_omit_flags(UI_BoxFlags v); +internal UI_FocusKind ui_push_focus_hot(UI_FocusKind v); +internal UI_FocusKind ui_push_focus_active(UI_FocusKind v); +internal U32 ui_push_fastpath_codepoint(U32 v); +internal UI_Key ui_push_group_key(UI_Key v); +internal F32 ui_push_transparency(F32 v); +internal String8 ui_push_tag(String8 v); +internal Vec4F32 ui_push_background_color(Vec4F32 v); +internal Vec4F32 ui_push_text_color(Vec4F32 v); +internal Vec4F32 ui_push_border_color(Vec4F32 v); +internal F32 ui_push_squish(F32 v); +internal WM_Cursor ui_push_hover_cursor(WM_Cursor v); +internal FNT_Tag ui_push_font(FNT_Tag v); +internal F32 ui_push_font_size(F32 v); +internal FNT_RasterFlags ui_push_text_raster_flags(FNT_RasterFlags v); +internal F32 ui_push_tab_size(F32 v); +internal F32 ui_push_corner_radius_00(F32 v); +internal F32 ui_push_corner_radius_01(F32 v); +internal F32 ui_push_corner_radius_10(F32 v); +internal F32 ui_push_corner_radius_11(F32 v); +internal F32 ui_push_blur_size(F32 v); +internal F32 ui_push_text_padding(F32 v); +internal UI_TextAlign ui_push_text_alignment(UI_TextAlign v); +internal UI_Box * ui_pop_parent(void); +internal Axis2 ui_pop_child_layout_axis(void); +internal F32 ui_pop_fixed_x(void); +internal F32 ui_pop_fixed_y(void); +internal F32 ui_pop_fixed_width(void); +internal F32 ui_pop_fixed_height(void); +internal UI_Size ui_pop_pref_width(void); +internal UI_Size ui_pop_pref_height(void); +internal F32 ui_pop_min_width(void); +internal F32 ui_pop_min_height(void); +internal UI_PermissionFlags ui_pop_permission_flags(void); +internal UI_BoxFlags ui_pop_flags(void); +internal UI_BoxFlags ui_pop_omit_flags(void); +internal UI_FocusKind ui_pop_focus_hot(void); +internal UI_FocusKind ui_pop_focus_active(void); +internal U32 ui_pop_fastpath_codepoint(void); +internal UI_Key ui_pop_group_key(void); +internal F32 ui_pop_transparency(void); +internal String8 ui_pop_tag(void); +internal Vec4F32 ui_pop_background_color(void); +internal Vec4F32 ui_pop_text_color(void); +internal Vec4F32 ui_pop_border_color(void); +internal F32 ui_pop_squish(void); +internal WM_Cursor ui_pop_hover_cursor(void); +internal FNT_Tag ui_pop_font(void); +internal F32 ui_pop_font_size(void); +internal FNT_RasterFlags ui_pop_text_raster_flags(void); +internal F32 ui_pop_tab_size(void); +internal F32 ui_pop_corner_radius_00(void); +internal F32 ui_pop_corner_radius_01(void); +internal F32 ui_pop_corner_radius_10(void); +internal F32 ui_pop_corner_radius_11(void); +internal F32 ui_pop_blur_size(void); +internal F32 ui_pop_text_padding(void); +internal UI_TextAlign ui_pop_text_alignment(void); +internal UI_Box * ui_set_next_parent(UI_Box * v); +internal Axis2 ui_set_next_child_layout_axis(Axis2 v); +internal F32 ui_set_next_fixed_x(F32 v); +internal F32 ui_set_next_fixed_y(F32 v); +internal F32 ui_set_next_fixed_width(F32 v); +internal F32 ui_set_next_fixed_height(F32 v); +internal UI_Size ui_set_next_pref_width(UI_Size v); +internal UI_Size ui_set_next_pref_height(UI_Size v); +internal F32 ui_set_next_min_width(F32 v); +internal F32 ui_set_next_min_height(F32 v); +internal UI_PermissionFlags ui_set_next_permission_flags(UI_PermissionFlags v); +internal UI_BoxFlags ui_set_next_flags(UI_BoxFlags v); +internal UI_BoxFlags ui_set_next_omit_flags(UI_BoxFlags v); +internal UI_FocusKind ui_set_next_focus_hot(UI_FocusKind v); +internal UI_FocusKind ui_set_next_focus_active(UI_FocusKind v); +internal U32 ui_set_next_fastpath_codepoint(U32 v); +internal UI_Key ui_set_next_group_key(UI_Key v); +internal F32 ui_set_next_transparency(F32 v); +internal String8 ui_set_next_tag(String8 v); +internal Vec4F32 ui_set_next_background_color(Vec4F32 v); +internal Vec4F32 ui_set_next_text_color(Vec4F32 v); +internal Vec4F32 ui_set_next_border_color(Vec4F32 v); +internal F32 ui_set_next_squish(F32 v); +internal WM_Cursor ui_set_next_hover_cursor(WM_Cursor v); +internal FNT_Tag ui_set_next_font(FNT_Tag v); +internal F32 ui_set_next_font_size(F32 v); +internal FNT_RasterFlags ui_set_next_text_raster_flags(FNT_RasterFlags v); +internal F32 ui_set_next_tab_size(F32 v); +internal F32 ui_set_next_corner_radius_00(F32 v); +internal F32 ui_set_next_corner_radius_01(F32 v); +internal F32 ui_set_next_corner_radius_10(F32 v); +internal F32 ui_set_next_corner_radius_11(F32 v); +internal F32 ui_set_next_blur_size(F32 v); +internal F32 ui_set_next_text_padding(F32 v); +internal UI_TextAlign ui_set_next_text_alignment(UI_TextAlign v); +#endif // UI_META_H