From c1910026f052ffde65bb0d4fde1e8a327b69c79f Mon Sep 17 00:00:00 2001 From: nhmall Date: Wed, 6 Dec 2023 21:41:49 -0500 Subject: [PATCH] include some more enum dumps --- include/defsym.h | 71 ++++++++++++++++++++++++++++++++++---- src/allmain.c | 88 ++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 145 insertions(+), 14 deletions(-) diff --git a/include/defsym.h b/include/defsym.h index 8bef0c006..cda01dc0d 100644 --- a/include/defsym.h +++ b/include/defsym.h @@ -28,10 +28,15 @@ to #include defsym.h) - in win/share/tilemap.c for processing a tile file (define PCHAR_TILES prior to #include defsym.h). + - in src/allmain.c for setting up the dumping of several enums + (define DUMP_ENUMS_PCHAR, DUMP_ENUMS_MONSYS, DUMP_ENUMS_MONSYMS_DEFCHAR + DUMP_ENUMS_OBJCLASS_DEFCHARS, DUMP_ENUMS_OBJCLASS_DEFCHARS + DUMP_ENUMS_OBJCLASS_CLASSES, DUMP_ENUMS_OBJCLASS_SYMS) */ #if defined(PCHAR_S_ENUM) || defined(PCHAR_PARSE) \ - || defined(PCHAR_DRAWING) || defined(PCHAR_TILES) + || defined(PCHAR_DRAWING) || defined(PCHAR_TILES) \ + || defined(DUMP_ENUMS_PCHAR) /* PCHAR(idx, ch, sym, desc, clr) @@ -67,6 +72,13 @@ /* win/share/tilemap.c */ #define PCHAR(idx, ch, sym, desc, clr) { sym, desc, desc }, #define PCHAR2(idx, ch, sym, tilenm, desc, clr) { sym, tilenm, desc }, + +#elif defined(DUMP_ENUMS_PCHAR) +/* allmain.c */ +#define PCHAR(idx, ch, sym, desc, clr) { sym, #sym }, +#ifndef PCHAR2 +#define PCHAR2(idx, ch, sym, tilenm, desc, clr) { sym, #sym }, +#endif #endif /* PCHAR with extra arg */ @@ -229,10 +241,12 @@ PCHAR2(104, '/', S_expl_br, "explosion bottom right", "", CLR_ORANGE) #undef PCHAR #undef PCHAR2 -#endif /* PCHAR_S_ENUM || PCHAR_PARSE || PCHAR_DRAWING || PCHAR_TILES */ +#endif /* PCHAR_S_ENUM || PCHAR_PARSE || PCHAR_DRAWING || PCHAR_TILES + * || DUMP_ENUMS_PCHAR */ #if defined(MONSYMS_S_ENUM) || defined(MONSYMS_DEFCHAR_ENUM) \ - || defined(MONSYMS_PARSE) || defined(MONSYMS_DRAWING) + || defined(MONSYMS_PARSE) || defined(MONSYMS_DRAWING) \ + || defined(DUMP_ENUMS_MONSYMS) || defined(DUMP_ENUMS_MONSYMS_DEFCHAR) /* MONSYM(idx, ch, sym desc) @@ -258,6 +272,14 @@ #elif defined(MONSYMS_DRAWING) /* drawing.c */ #define MONSYM(idx, ch, basename, sym, desc) { DEF_##basename, "", desc }, + +/* allmain.c */ +#elif defined(DUMP_ENUMS_MONSYMS) +#define MONSYM(idx, ch, basename, sym, desc) { sym, #sym }, + +#elif defined(DUMP_ENUMS_MONSYMS_DEFCHAR) +#define MONSYM(idx, ch, basename, sym, desc) { DEF_##basename, "DEF_" #basename }, + #endif MONSYM( 1, 'a', ANT, S_ANT, "ant or other insect") @@ -335,11 +357,14 @@ #undef MONSYM #endif /* MONSYMS_S_ENUM || MONSYMS_DEFCHAR_ENUM || MONSYMS_PARSE - * || MONSYMS_DRAWING */ + * || MONSYMS_DRAWING || DUMP_ENUMS_MONSYMS) + * || DUMP_ENUMS_MONSYMS_DEFCHAR */ #if defined(OBJCLASS_S_ENUM) || defined(OBJCLASS_DEFCHAR_ENUM) \ || defined(OBJCLASS_CLASS_ENUM) || defined(OBJCLASS_PARSE) \ - || defined (OBJCLASS_DRAWING) + || defined(OBJCLASS_DRAWING) || defined(DUMP_ENUMS_OBJCLASS_DEFCHARS) \ + || defined(DUMP_ENUMS_OBJCLASS_CLASSES) \ + || defined(DUMP_ENUMS_OBJCLASS_SYMS) /* OBJCLASS(idx, ch, basename, sym, name, explain) @@ -387,6 +412,21 @@ /* drawing.c */ #define OBJCLASS(idx, ch, basename, sym, name, explain) \ { basename##_SYM, name, explain }, + +#elif defined(DUMP_ENUMS_OBJCLASS_DEFCHARS) +/* allmain.c */ +#define OBJCLASS(idx, ch, basename, sym, name, explain) \ + { basename##_SYM, #basename "_SYM" }, + +#elif defined(DUMP_ENUMS_OBJCLASS_CLASSES) +/* allmain.c */ +#define OBJCLASS(idx, ch, basename, sym, name, explain) \ + { basename##_CLASS, #basename "_CLASS" }, + +#elif defined(DUMP_ENUMS_OBJCLASS_SYMS) +/* allmain.c */ +#define OBJCLASS(idx, ch, basename, sym, name, explain) \ + { sym , #sym }, #endif /* OBJCLASS with extra arg */ @@ -396,6 +436,15 @@ #elif defined(OBJCLASS_DRAWING) #define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \ { sname, name, explain }, +#elif defined(DUMP_ENUMS_OBJCLASS_DEFCHARS) +#define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \ + { sname, #sname }, +#elif defined(DUMP_ENUMS_OBJCLASS_CLASSES) +#define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \ + { basename##_CLASS, #basename "_CLASS" }, +#elif defined(DUMP_ENUMS_OBJCLASS_SYMS) +#define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \ + { sym , #sym }, #else #define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \ OBJCLASS(idx, ch, basename, sym, name, explain) @@ -424,16 +473,24 @@ #undef OBJCLASS #undef OBJCLASS2 #endif /* OBJCLASS_S_ENUM || OBJCLASS_DEFCHAR_ENUM || OBJCLASS_CLASS_ENUM - * || OBJCLASS_PARSE || OBJCLASS_DRAWING */ + * || OBJCLASS_PARSE || OBJCLASS_DRAWING + * || DUMP_ENUMS_OBJCLASS_DEFCHARS || DUMP_ENUMS_OBJCLASS_CLASSES + * || DUMP_ENUMS_OBJCLASS_SYMS */ #ifdef DEBUG #if !defined(PCHAR_S_ENUM) && !defined(PCHAR_DRAWING) \ && !defined(PCHAR_PARSE) && !defined(PCHAR_TILES) \ + && !defined(DUMP_ENUMS_PCHAR) \ && !defined(MONSYMS_S_ENUM) && !defined(MONSYMS_DEFCHAR_ENUM) \ && !defined(MONSYMS_PARSE) && !defined(MONSYMS_DRAWING) \ + && !defined(DUMP_ENUMS_MONSYMS) \ + && !defined(DUMP_ENUMS_MONSYMS_DEFCHAR) \ && !defined(OBJCLASS_S_ENUM) && !defined(OBJCLASS_DEFCHAR_ENUM) \ && !defined(OBJCLASS_CLASS_ENUM) && !defined(OBJCLASS_PARSE) \ - && !defined (OBJCLASS_DRAWING) + && !defined (OBJCLASS_DRAWING) \ + && !defined(DUMP_ENUMS_OBJCLASS_DEFCHARS) \ + && !defined(DUMP_ENUMS_OBJCLASS_CLASSES) \ + && !defined(DUMP_ENUMS_OBJCLASS_SYMS) #error Non-productive inclusion of defsym.h #endif #endif /* DEBUG */ diff --git a/src/allmain.c b/src/allmain.c index 6f8c47856..dbe9b0fe7 100644 --- a/src/allmain.c +++ b/src/allmain.c @@ -1118,9 +1118,49 @@ struct enum_dump objdump[] = { #include "objects.h" { NUM_OBJECTS, "NUM_OBJECTS" }, }; + +#define DUMP_ENUMS_PCHAR +struct enum_dump defsym_cmap_dump[] = { +#include "defsym.h" + { MAXPCHARS, "MAXPCHARS" }, +}; +#undef DUMP_ENUMS_PCHAR + +#define DUMP_ENUMS_MONSYMS +struct enum_dump defsym_mon_syms_dump[] = { +#include "defsym.h" + { MAXMCLASSES, "MAXMCLASSES" }, +}; +#undef DUMP_ENUMS_MONSYMS + +#define DUMP_ENUMS_MONSYMS_DEFCHAR +struct enum_dump defsym_mon_defchars_dump[] = { +#include "defsym.h" +}; +#undef DUMP_ENUMS_MONSYMS_DEFCHAR + +#define DUMP_ENUMS_OBJCLASS_DEFCHARS +struct enum_dump objclass_defchars_dump[] = { +#include "defsym.h" +}; +#undef DUMP_ENUMS_OBJCLASS_DEFCHARS + +#define DUMP_ENUMS_OBJCLASS_CLASSES +struct enum_dump objclass_classes_dump[] = { +#include "defsym.h" +}; +#undef DUMP_ENUMS_OBJCLASS_CLASSES + +#define DUMP_ENUMS_OBJCLASS_SYMS +struct enum_dump objclass_syms_dump[] = { +#include "defsym.h" +}; +#undef DUMP_ENUMS_OBJCLASS_SYMS + #undef DUMP_ENUMS #ifndef NODUMPENUMS + static void dump_enums(void) { @@ -1128,10 +1168,19 @@ dump_enums(void) monsters_enum, objects_enum, objects_misc_enum, + defsym_cmap_enum, + defsym_mon_syms_enum, + defsym_mon_defchars_enum, + objclass_defchars_enum, + objclass_classes_enum, + objclass_syms_enum, NUM_ENUM_DUMPS }; static const char *const titles[NUM_ENUM_DUMPS] = { - "monnums", "objects_nums" , "misc_object_nums" + "monnums", "objects_nums" , "misc_object_nums", + "cmap_symbols", "mon_syms", "mon_defchars", + "objclass_defchars", "objclass_classes", + "objclass_syms", }; #define dump_om(om) { om, #om } static const struct enum_dump omdump[] = { @@ -1153,14 +1202,29 @@ dump_enums(void) }; #undef dump_om static const struct enum_dump *const ed[NUM_ENUM_DUMPS] = { - monsdump, objdump, omdump + monsdump, objdump, omdump, + defsym_cmap_dump, defsym_mon_syms_dump, + defsym_mon_defchars_dump, + objclass_defchars_dump, + objclass_classes_dump, + objclass_syms_dump, }; - static const char *const pfx[NUM_ENUM_DUMPS] = { "PM_", "", "" }; - static int szd[NUM_ENUM_DUMPS] = { - SIZE(monsdump), SIZE(objdump), SIZE(omdump) + static const char *const pfx[NUM_ENUM_DUMPS] = { "PM_", "", "", + "", "", "", "", + "", "" }; + /* 0 = dump numerically only, 1 = add 'char' comment */ + static const int dumpflgs[NUM_ENUM_DUMPS] = { 0, 0, 0, 0, 0, 1, 1, 0, 0}; + static int szd[NUM_ENUM_DUMPS] = { SIZE(monsdump), SIZE(objdump), + SIZE(omdump), SIZE(defsym_cmap_dump), + SIZE(defsym_mon_syms_dump), + SIZE(defsym_mon_defchars_dump), + SIZE(objclass_defchars_dump), + SIZE(objclass_classes_dump), + SIZE(objclass_syms_dump) }; const char *nmprefix; int i, j, nmwidth; + char comment[BUFSZ]; for (i = 0; i < NUM_ENUM_DUMPS; ++ i) { raw_printf("enum %s = {", titles[i]); @@ -1169,8 +1233,18 @@ dump_enums(void) nmprefix = (j >= szd[i] - unprefixed_count) ? "" : pfx[i]; /* "" or "PM_" */ nmwidth = 27 - (int) strlen(nmprefix); /* 27 or 24 */ - raw_printf(" %s%*s = %3d,", - nmprefix, -nmwidth, ed[i][j].nm, ed[i][j].val); + if (dumpflgs[i] > 0) { + Snprintf(comment, sizeof comment, + " /* '%c' */", + (ed[i][j].val >= 32 && ed[i][j].val <= 126) + ? ed[i][j].val : ' '); + } else { + comment[0] = '\0'; + } + raw_printf(" %s%*s = %3d,%s", + nmprefix, -nmwidth, + ed[i][j].nm, ed[i][j].val, + comment); } raw_print("};"); raw_print("");