From: Philippe Blain <levraiphilippeblain@xxxxxxxxx> Using a named enum allows casting an integer to the enum type in both GDB and LLDB: $ gdb -q -ex 'b wt-status.c:44' -ex r --args ./git status (gdb) p (enum color_wt_status) slot $1 = WT_STATUS_ONBRANCH $ lldb -o 'b wt-status.c:44' -o r -- ./git status (lldb) p (color_wt_status) slot (color_wt_status) $0 = WT_STATUS_ONBRANCH In LLDB, it's also required to cast in the reversed direction, i.e. cast an enum constant into its corresponding integer: (lldb) p (int) color_wt_status::WT_STATUS_ONBRANCH (int) $1 = 8 Name the enum listing the different RECURSE_SUBMODULES_* modes, to make debugging easier. For example, when stepping through a part of the code where an int is compared with a constant in this enum, it allows casting the int to the enum type or vice-versa, after quickly checking where the enum constant is declared and learning the enum name. As to not make this patch a debug-only change, convert the 'fetch_recurse' member of 'struct submodule' to use the newly named enum. Signed-off-by: Philippe Blain <levraiphilippeblain@xxxxxxxxx> --- submodule.h: use a named enum for RECURSE_SUBMODULES_* Changes since v1: * converted one user of the enum from an 'int' to the new enum type, so the patch is not debug-only, as suggested by Glen. * updated the commit message to use an 'int' as example of a local variable being compared with an enum constant, instead of using a struct member which is already of enum type, as pointed out by Junio * added a little bit more explanation in the commit message as to how this patch can help when debugging. Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1111%2Fphil-blain%2Fsubmodule-recurse-enum-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1111/phil-blain/submodule-recurse-enum-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/1111 Range-diff vs v1: 1: 4c787d4054e ! 1: e0b211b88f5 submodule.h: use a named enum for RECURSE_SUBMODULES_* @@ Commit message Using a named enum allows casting an integer to the enum type in both GDB and LLDB: - (gdb) p (enum diff_submodule_format) options->submodule_format - $1 = DIFF_SUBMODULE_LOG + $ gdb -q -ex 'b wt-status.c:44' -ex r --args ./git status + (gdb) p (enum color_wt_status) slot + $1 = WT_STATUS_ONBRANCH - (lldb) p (diff_submodule_format) options->submodule_format - (diff_submodule_format) $1 = DIFF_SUBMODULE_LOG + $ lldb -o 'b wt-status.c:44' -o r -- ./git status + (lldb) p (color_wt_status) slot + (color_wt_status) $0 = WT_STATUS_ONBRANCH In LLDB, it's also required to cast in the reversed direction, i.e. cast an enum constant into its corresponding integer: - (lldb) p (int) diff_submodule_format::DIFF_SUBMODULE_SHORT - (int) $0 = 0 + (lldb) p (int) color_wt_status::WT_STATUS_ONBRANCH + (int) $1 = 8 Name the enum listing the different RECURSE_SUBMODULES_* modes, to make - debugging easier. + debugging easier. For example, when stepping through a part of the code + where an int is compared with a constant in this enum, it allows casting + the int to the enum type or vice-versa, after quickly checking where the + enum constant is declared and learning the enum name. + + As to not make this patch a debug-only change, convert the + 'fetch_recurse' member of 'struct submodule' to use the newly named + enum. Signed-off-by: Philippe Blain <levraiphilippeblain@xxxxxxxxx> + ## submodule-config.h ## +@@ submodule-config.h: struct submodule { + const char *path; + const char *name; + const char *url; +- int fetch_recurse; ++ enum submodule_recurse_mode fetch_recurse; + const char *ignore; + const char *branch; + struct submodule_update_strategy update_strategy; + ## submodule.h ## @@ submodule.h: struct repository; struct string_list; submodule-config.h | 2 +- submodule.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodule-config.h b/submodule-config.h index 65875b94ea5..55a4c3e0bd5 100644 --- a/submodule-config.h +++ b/submodule-config.h @@ -37,7 +37,7 @@ struct submodule { const char *path; const char *name; const char *url; - int fetch_recurse; + enum submodule_recurse_mode fetch_recurse; const char *ignore; const char *branch; struct submodule_update_strategy update_strategy; diff --git a/submodule.h b/submodule.h index 6bd2c99fd99..55cf6f01d0c 100644 --- a/submodule.h +++ b/submodule.h @@ -13,7 +13,7 @@ struct repository; struct string_list; struct strbuf; -enum { +enum submodule_recurse_mode { RECURSE_SUBMODULES_ONLY = -5, RECURSE_SUBMODULES_CHECK = -4, RECURSE_SUBMODULES_ERROR = -3, base-commit: 2ae0a9cb8298185a94e5998086f380a355dd8907 -- gitgitgadget