mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-09-06 17:14:02 +00:00
shared: add entry_cmd argument to NM_UTILS_STRING_TABLE_LOOKUP_DEFINE*() macro
This extra argument allows to tweak whether to assert for the input argument name.
This commit is contained in:
parent
904050dd2d
commit
487141d4a8
|
@ -1543,7 +1543,12 @@ guint8 *nm_utils_hexstr2bin_alloc (const char *hexstr,
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
#define _NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(scope, fcn_name, result_type, unknown_val, ...) \
|
||||
#define _NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(scope, \
|
||||
fcn_name, \
|
||||
result_type, \
|
||||
entry_cmd, \
|
||||
unknown_val_cmd, \
|
||||
...) \
|
||||
scope result_type \
|
||||
fcn_name (const char *name) \
|
||||
{ \
|
||||
|
@ -1553,9 +1558,8 @@ fcn_name (const char *name) \
|
|||
} LIST[] = { \
|
||||
__VA_ARGS__ \
|
||||
}; \
|
||||
gssize idx; \
|
||||
\
|
||||
nm_assert (name); \
|
||||
{ entry_cmd; } \
|
||||
\
|
||||
if (NM_MORE_ASSERTS > 5) { \
|
||||
static gboolean checked = FALSE; \
|
||||
|
@ -1574,22 +1578,26 @@ fcn_name (const char *name) \
|
|||
} \
|
||||
} \
|
||||
\
|
||||
if (G_LIKELY (name)) { \
|
||||
gssize idx; \
|
||||
\
|
||||
idx = nm_utils_array_find_binary_search (LIST, \
|
||||
sizeof (LIST[0]), \
|
||||
G_N_ELEMENTS (LIST), \
|
||||
&name, \
|
||||
nm_strcmp_p_with_data, \
|
||||
NULL); \
|
||||
if (idx >= 0) \
|
||||
if (G_LIKELY (idx >= 0)) \
|
||||
return LIST[idx].value; \
|
||||
} \
|
||||
\
|
||||
{ unknown_val; } \
|
||||
{ unknown_val_cmd; } \
|
||||
}
|
||||
|
||||
#define NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(fcn_name, lookup_type, unknown_val, ...) \
|
||||
_NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (, fcn_name, lookup_type, unknown_val, __VA_ARGS__)
|
||||
#define NM_UTILS_STRING_TABLE_LOOKUP_DEFINE_STATIC(fcn_name, lookup_type, unknown_val, ...) \
|
||||
_NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (static, fcn_name, lookup_type, unknown_val, __VA_ARGS__)
|
||||
#define NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(fcn_name, lookup_type, entry_cmd, unknown_val_cmd, ...) \
|
||||
_NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (, fcn_name, lookup_type, entry_cmd, unknown_val_cmd, __VA_ARGS__)
|
||||
#define NM_UTILS_STRING_TABLE_LOOKUP_DEFINE_STATIC(fcn_name, lookup_type, entry_cmd, unknown_val_cmd, ...) \
|
||||
_NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (static, fcn_name, lookup_type, entry_cmd, unknown_val_cmd, __VA_ARGS__)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
|
|
|
@ -189,6 +189,7 @@ NM_UTILS_LOOKUP_STR_DEFINE (nm_supplicant_interface_state_to_string, NMSupplican
|
|||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE_STATIC (
|
||||
wpas_state_string_to_enum,
|
||||
NMSupplicantInterfaceState,
|
||||
{ nm_assert (name); },
|
||||
{ return NM_SUPPLICANT_INTERFACE_STATE_INVALID; },
|
||||
{ "4way_handshake", NM_SUPPLICANT_INTERFACE_STATE_4WAY_HANDSHAKE },
|
||||
{ "associated", NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATED },
|
||||
|
|
Loading…
Reference in a new issue