From: Simon Marchi Date: Wed, 10 Nov 2021 15:17:41 +0000 (-0500) Subject: Fix: add missing cases in enum-to-string functions X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=00dff0ec100dfdf9769819da6a5f5d29f464dede Fix: add missing cases in enum-to-string functions Change the enum-to-string functions to not use a default case, such that the compiler will give a -Wswitch warning if an enumerator is not handled. Add some missing ones found by such warnings. Put a bt_common_abort call after each switch (rather than returning "(unknown)", because there's no way in theory that we can reach that. Having anything else would be a bug we would want to fix in babeltrace. Change-Id: I2cfae112386aede4844062be51dba009a1e9a056 Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/6693 Reviewed-by: Philippe Proulx Tested-by: jenkins --- diff --git a/src/common/common.h b/src/common/common.h index 19f4c128..2cad3076 100644 --- a/src/common/common.h +++ b/src/common/common.h @@ -485,14 +485,20 @@ const char *bt_common_field_class_type_string(enum bt_field_class_type class_typ return "BOOL"; case BT_FIELD_CLASS_TYPE_BIT_ARRAY: return "BIT_ARRAY"; + case BT_FIELD_CLASS_TYPE_INTEGER: + return "INTEGER"; case BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER: return "UNSIGNED_INTEGER"; case BT_FIELD_CLASS_TYPE_SIGNED_INTEGER: return "SIGNED_INTEGER"; + case BT_FIELD_CLASS_TYPE_ENUMERATION: + return "ENUMERATION"; case BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION: return "UNSIGNED_ENUMERATION"; case BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION: return "SIGNED_ENUMERATION"; + case BT_FIELD_CLASS_TYPE_REAL: + return "REAL"; case BT_FIELD_CLASS_TYPE_SINGLE_PRECISION_REAL: return "SINGLE_PRECISION_REAL"; case BT_FIELD_CLASS_TYPE_DOUBLE_PRECISION_REAL: @@ -501,29 +507,47 @@ const char *bt_common_field_class_type_string(enum bt_field_class_type class_typ return "STRING"; case BT_FIELD_CLASS_TYPE_STRUCTURE: return "STRUCTURE"; + case BT_FIELD_CLASS_TYPE_ARRAY: + return "ARRAY"; case BT_FIELD_CLASS_TYPE_STATIC_ARRAY: return "STATIC_ARRAY"; + case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY: + return "DYNAMIC_ARRAY"; case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD: return "DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD"; case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD: return "DYNAMIC_ARRAY_WITH_LENGTH_FIELD"; + case BT_FIELD_CLASS_TYPE_OPTION: + return "OPTION"; case BT_FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR_FIELD: return "OPTION_WITHOUT_SELECTOR_FIELD"; + case BT_FIELD_CLASS_TYPE_OPTION_WITH_SELECTOR_FIELD: + return "OPTION_WITH_SELECTOR_FIELD"; case BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR_FIELD: return "OPTION_WITH_BOOL_SELECTOR_FIELD"; + case BT_FIELD_CLASS_TYPE_OPTION_WITH_INTEGER_SELECTOR_FIELD: + return "OPTION_WITH_INTEGER_SELECTOR_FIELD"; case BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD: return "OPTION_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD"; case BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR_FIELD: return "OPTION_WITH_SIGNED_INTEGER_SELECTOR_FIELD"; + case BT_FIELD_CLASS_TYPE_VARIANT: + return "VARIANT"; case BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR_FIELD: return "VARIANT_WITHOUT_SELECTOR_FIELD"; + case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SELECTOR_FIELD: + return "VARIANT_WITH_SELECTOR_FIELD"; + case BT_FIELD_CLASS_TYPE_VARIANT_WITH_INTEGER_SELECTOR_FIELD: + return "VARIANT_WITH_INTEGER_SELECTOR_FIELD"; case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD: return "VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD"; case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR_FIELD: return "VARIANT_WITH_SIGNED_INTEGER_SELECTOR_FIELD"; - default: - return "(unknown)"; + case __BT_FIELD_CLASS_TYPE_BIG_VALUE: + bt_common_abort (); } + + bt_common_abort(); }; static inline @@ -538,9 +562,9 @@ const char *bt_common_field_class_integer_preferred_display_base_string(enum bt_ return "DECIMAL"; case BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_HEXADECIMAL: return "HEXADECIMAL"; - default: - return "(unknown)"; } + + bt_common_abort(); } static inline @@ -555,9 +579,9 @@ const char *bt_common_scope_string(enum bt_field_path_scope scope) return "EVENT_SPECIFIC_CONTEXT"; case BT_FIELD_PATH_SCOPE_EVENT_PAYLOAD: return "EVENT_PAYLOAD"; - default: - return "(unknown)"; } + + bt_common_abort(); } static inline @@ -595,9 +619,9 @@ const char *bt_common_event_class_log_level_string( return "DEBUG_LINE"; case BT_EVENT_CLASS_LOG_LEVEL_DEBUG: return "DEBUG"; - default: - return "(unknown)"; } + + bt_common_abort(); }; static inline @@ -608,6 +632,8 @@ const char *bt_common_value_type_string(enum bt_value_type type) return "NULL"; case BT_VALUE_TYPE_BOOL: return "BOOL"; + case BT_VALUE_TYPE_INTEGER: + return "INTEGER"; case BT_VALUE_TYPE_UNSIGNED_INTEGER: return "UNSIGNED_INTEGER"; case BT_VALUE_TYPE_SIGNED_INTEGER: @@ -620,9 +646,9 @@ const char *bt_common_value_type_string(enum bt_value_type type) return "ARRAY"; case BT_VALUE_TYPE_MAP: return "MAP"; - default: - return "(unknown)"; } + + bt_common_abort(); }; static inline @@ -682,9 +708,9 @@ const char *bt_common_logging_level_string( return "FATAL"; case BT_LOGGING_LEVEL_NONE: return "NONE"; - default: - return "(unknown)"; } + + bt_common_abort(); }; static inline @@ -711,9 +737,9 @@ const char *bt_common_func_status_string(int status) return "AGAIN"; case __BT_FUNC_STATUS_INTERRUPTED: return "INTERRUPTED"; - default: - return "(unknown)"; } + + bt_common_abort(); } #define NS_PER_S_I INT64_C(1000000000) @@ -864,9 +890,9 @@ const char *bt_common_component_class_type_string( return "SINK"; case BT_COMPONENT_CLASS_TYPE_FILTER: return "FILTER"; - default: - return "(unknown)"; } + + bt_common_abort(); } #ifdef __cplusplus diff --git a/src/lib/graph/message/message.h b/src/lib/graph/message/message.h index 8a707170..8e87a765 100644 --- a/src/lib/graph/message/message.h +++ b/src/lib/graph/message/message.h @@ -99,23 +99,25 @@ static inline const char *bt_message_type_string(enum bt_message_type type) { switch (type) { - case BT_MESSAGE_TYPE_EVENT: - return "EVENT"; - case BT_MESSAGE_TYPE_MESSAGE_ITERATOR_INACTIVITY: - return "MESSAGE_ITERATOR_INACTIVITY"; case BT_MESSAGE_TYPE_STREAM_BEGINNING: return "STREAM_BEGINNING"; case BT_MESSAGE_TYPE_STREAM_END: return "STREAM_END"; + case BT_MESSAGE_TYPE_EVENT: + return "EVENT"; case BT_MESSAGE_TYPE_PACKET_BEGINNING: return "PACKET_BEGINNING"; case BT_MESSAGE_TYPE_PACKET_END: return "PACKET_END"; case BT_MESSAGE_TYPE_DISCARDED_EVENTS: return "DISCARDED_EVENTS"; - default: - return "(unknown)"; + case BT_MESSAGE_TYPE_DISCARDED_PACKETS: + return "DISCARDED_PACKETS"; + case BT_MESSAGE_TYPE_MESSAGE_ITERATOR_INACTIVITY: + return "MESSAGE_ITERATOR_INACTIVITY"; } + + bt_common_abort(); } #endif /* BABELTRACE_GRAPH_MESSAGE_MESSAGE_INTERNAL_H */ diff --git a/src/plugins/ctf/common/bfcr/bfcr.c b/src/plugins/ctf/common/bfcr/bfcr.c index e3c85179..eba591c7 100644 --- a/src/plugins/ctf/common/bfcr/bfcr.c +++ b/src/plugins/ctf/common/bfcr/bfcr.c @@ -167,9 +167,9 @@ const char *bfcr_state_string(enum bfcr_state state) return "READ_BASIC_CONTINUE"; case BFCR_STATE_DONE: return "DONE"; - default: - return "(unknown)"; } + + bt_common_abort(); } static diff --git a/src/plugins/ctf/common/bfcr/bfcr.h b/src/plugins/ctf/common/bfcr/bfcr.h index eced5027..8326e310 100644 --- a/src/plugins/ctf/common/bfcr/bfcr.h +++ b/src/plugins/ctf/common/bfcr/bfcr.h @@ -355,9 +355,9 @@ const char *bt_bfcr_status_string(enum bt_bfcr_status status) return "ERROR"; case BT_BFCR_STATUS_OK: return "OK"; - default: - return "(unknown)"; } + + bt_common_abort(); } #endif /* CTF_BFCR_H */ diff --git a/src/plugins/ctf/common/msg-iter/msg-iter.c b/src/plugins/ctf/common/msg-iter/msg-iter.c index 9739a605..7789aa15 100644 --- a/src/plugins/ctf/common/msg-iter/msg-iter.c +++ b/src/plugins/ctf/common/msg-iter/msg-iter.c @@ -275,6 +275,10 @@ const char *state_string(enum state state) return "AFTER_STREAM_PACKET_CONTEXT"; case STATE_EMIT_MSG_STREAM_BEGINNING: return "EMIT_MSG_STREAM_BEGINNING"; + case STATE_CHECK_EMIT_MSG_DISCARDED_EVENTS: + return "CHECK_EMIT_MSG_DISCARDED_EVENTS"; + case STATE_CHECK_EMIT_MSG_DISCARDED_PACKETS: + return "CHECK_EMIT_MSG_DISCARDED_PACKETS"; case STATE_EMIT_MSG_PACKET_BEGINNING: return "EMIT_MSG_PACKET_BEGINNING"; case STATE_EMIT_MSG_DISCARDED_EVENTS: @@ -317,9 +321,9 @@ const char *state_string(enum state state) return "EMIT_MSG_STREAM_END"; case STATE_DONE: return "DONE"; - default: - return "(unknown)"; } + + bt_common_abort(); } static diff --git a/src/plugins/ctf/common/msg-iter/msg-iter.h b/src/plugins/ctf/common/msg-iter/msg-iter.h index 8b662ee3..edba6847 100644 --- a/src/plugins/ctf/common/msg-iter/msg-iter.h +++ b/src/plugins/ctf/common/msg-iter/msg-iter.h @@ -328,11 +328,13 @@ const char *ctf_msg_iter_medium_status_string( return "AGAIN"; case CTF_MSG_ITER_MEDIUM_STATUS_ERROR: return "ERROR"; + case CTF_MSG_ITER_MEDIUM_STATUS_MEMORY_ERROR: + return "MEMORY_ERROR"; case CTF_MSG_ITER_MEDIUM_STATUS_OK: return "OK"; - default: - return "(unknown)"; } + + bt_common_abort(); } static inline @@ -346,11 +348,13 @@ const char *ctf_msg_iter_status_string( return "AGAIN"; case CTF_MSG_ITER_STATUS_ERROR: return "ERROR"; + case CTF_MSG_ITER_STATUS_MEMORY_ERROR: + return "MEMORY_ERROR"; case CTF_MSG_ITER_STATUS_OK: return "OK"; - default: - return "(unknown)"; } + + bt_common_abort(); } #endif /* CTF_MSG_ITER_H */