shared: move NM_UTILS_LOOKUP() macro shared utils
This commit is contained in:
@@ -633,6 +633,50 @@ nm_clear_g_cancellable (GCancellable **cancellable)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
#define NM_UTILS_LOOKUP_DEFAULT(v) return (v)
|
||||
#define NM_UTILS_LOOKUP_DEFAULT_WARN(v) g_return_val_if_reached (v)
|
||||
#define NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT(v) { nm_assert_not_reached (); return (v); }
|
||||
#define NM_UTILS_LOOKUP_ITEM(v, n) (void) 0; case v: return (n); (void) 0
|
||||
#define NM_UTILS_LOOKUP_STR_ITEM(v, n) NM_UTILS_LOOKUP_ITEM(v, ""n"")
|
||||
#define NM_UTILS_LOOKUP_ITEM_IGNORE(v) (void) 0; case v: break; (void) 0
|
||||
#define NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER() (void) 0; default: break; (void) 0
|
||||
|
||||
#define _NM_UTILS_LOOKUP_DEFINE(scope, fcn_name, lookup_type, result_type, unknown_val, ...) \
|
||||
scope result_type \
|
||||
fcn_name (lookup_type val) \
|
||||
{ \
|
||||
switch (val) { \
|
||||
(void) 0, \
|
||||
__VA_ARGS__ \
|
||||
(void) 0; \
|
||||
}; \
|
||||
{ unknown_val; } \
|
||||
}
|
||||
|
||||
#define NM_UTILS_LOOKUP_STR_DEFINE(fcn_name, lookup_type, unknown_val, ...) \
|
||||
_NM_UTILS_LOOKUP_DEFINE (, fcn_name, lookup_type, const char *, unknown_val, __VA_ARGS__)
|
||||
#define NM_UTILS_LOOKUP_STR_DEFINE_STATIC(fcn_name, lookup_type, unknown_val, ...) \
|
||||
_NM_UTILS_LOOKUP_DEFINE (static, fcn_name, lookup_type, const char *, unknown_val, __VA_ARGS__)
|
||||
|
||||
/* Call the string-lookup-table function @fcn_name. If the function returns
|
||||
* %NULL, the numeric index is converted to string using a alloca() buffer.
|
||||
* Beware: this macro uses alloca(). */
|
||||
#define NM_UTILS_LOOKUP_STR(fcn_name, idx) \
|
||||
({ \
|
||||
typeof (idx) _idx = (idx); \
|
||||
const char *_s; \
|
||||
\
|
||||
_s = fcn_name (_idx); \
|
||||
if (!_s) { \
|
||||
_s = g_alloca (30); \
|
||||
\
|
||||
g_snprintf ((char *) _s, 30, "(%lld)", (long long) _idx); \
|
||||
} \
|
||||
_s; \
|
||||
})
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/* check if @flags has exactly one flag (@check) set. You should call this
|
||||
* only with @check being a compile time constant and a power of two. */
|
||||
#define NM_FLAGS_HAS(flags, check) \
|
||||
|
@@ -223,50 +223,6 @@ fcn_name (lookup_type val, char *buf, gsize len) \
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
#define NM_UTILS_LOOKUP_DEFAULT(v) return (v)
|
||||
#define NM_UTILS_LOOKUP_DEFAULT_WARN(v) g_return_val_if_reached (v)
|
||||
#define NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT(v) { nm_assert_not_reached (); return (v); }
|
||||
#define NM_UTILS_LOOKUP_ITEM(v, n) (void) 0; case v: return (n); (void) 0
|
||||
#define NM_UTILS_LOOKUP_STR_ITEM(v, n) NM_UTILS_LOOKUP_ITEM(v, ""n"")
|
||||
#define NM_UTILS_LOOKUP_ITEM_IGNORE(v) (void) 0; case v: break; (void) 0
|
||||
#define NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER() (void) 0; default: break; (void) 0
|
||||
|
||||
#define _NM_UTILS_LOOKUP_DEFINE(scope, fcn_name, lookup_type, result_type, unknown_val, ...) \
|
||||
scope result_type \
|
||||
fcn_name (lookup_type val) \
|
||||
{ \
|
||||
switch (val) { \
|
||||
(void) 0, \
|
||||
__VA_ARGS__ \
|
||||
(void) 0; \
|
||||
}; \
|
||||
{ unknown_val; } \
|
||||
}
|
||||
|
||||
#define NM_UTILS_LOOKUP_STR_DEFINE(fcn_name, lookup_type, unknown_val, ...) \
|
||||
_NM_UTILS_LOOKUP_DEFINE (, fcn_name, lookup_type, const char *, unknown_val, __VA_ARGS__)
|
||||
#define NM_UTILS_LOOKUP_STR_DEFINE_STATIC(fcn_name, lookup_type, unknown_val, ...) \
|
||||
_NM_UTILS_LOOKUP_DEFINE (static, fcn_name, lookup_type, const char *, unknown_val, __VA_ARGS__)
|
||||
|
||||
/* Call the string-lookup-table function @fcn_name. If the function returns
|
||||
* %NULL, the numeric index is converted to string using a alloca() buffer.
|
||||
* Beware: this macro uses alloca(). */
|
||||
#define NM_UTILS_LOOKUP_STR(fcn_name, idx) \
|
||||
({ \
|
||||
typeof (idx) _idx = (idx); \
|
||||
const char *_s; \
|
||||
\
|
||||
_s = fcn_name (_idx); \
|
||||
if (!_s) { \
|
||||
_s = g_alloca (30); \
|
||||
\
|
||||
g_snprintf ((char *) _s, 30, "(%lld)", (long long) _idx); \
|
||||
} \
|
||||
_s; \
|
||||
})
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
const char *nm_utils_get_ip_config_method (NMConnection *connection,
|
||||
GType ip_setting_type);
|
||||
|
||||
|
Reference in New Issue
Block a user