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
|
/* 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. */
|
* only with @check being a compile time constant and a power of two. */
|
||||||
#define NM_FLAGS_HAS(flags, check) \
|
#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,
|
const char *nm_utils_get_ip_config_method (NMConnection *connection,
|
||||||
GType ip_setting_type);
|
GType ip_setting_type);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user