mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-08 10:14:04 +02:00
gstrfuncs: Use less tristates in g_str_has_*
tri-state conditionals are kind of hard to read, especially when they're nested. This commit changes g_str_has_* macros to use if statements instead.
This commit is contained in:
@@ -148,53 +148,51 @@ gboolean (g_str_has_prefix) (const gchar *str,
|
|||||||
|
|
||||||
#if G_GNUC_CHECK_VERSION (2, 0)
|
#if G_GNUC_CHECK_VERSION (2, 0)
|
||||||
|
|
||||||
#define g_str_has_prefix(STR, PREFIX) \
|
#define g_str_has_prefix(STR, PREFIX) \
|
||||||
(__builtin_constant_p (PREFIX)? \
|
(__builtin_constant_p (PREFIX)? \
|
||||||
G_GNUC_EXTENSION ({ \
|
G_GNUC_EXTENSION ({ \
|
||||||
const char * const __str = (STR); \
|
const char * const __str = (STR); \
|
||||||
const char * const __prefix = (PREFIX); \
|
const char * const __prefix = (PREFIX); \
|
||||||
\
|
gboolean __result = FALSE; \
|
||||||
(G_UNLIKELY (__str == NULL || __prefix == NULL) ? \
|
\
|
||||||
(g_str_has_prefix) (__str, __prefix) \
|
if G_UNLIKELY (__str == NULL || __prefix == NULL) \
|
||||||
: \
|
__result = (g_str_has_prefix) (__str, __prefix); \
|
||||||
({ \
|
else \
|
||||||
const size_t __str_len = strlen (__str); \
|
{ \
|
||||||
const size_t __prefix_len = strlen (__prefix); \
|
const size_t __str_len = strlen (__str); \
|
||||||
((__str_len >= __prefix_len) ? \
|
const size_t __prefix_len = strlen (__prefix); \
|
||||||
memcmp (__str, __prefix, __prefix_len) == 0 \
|
if (__str_len >= __prefix_len) \
|
||||||
: \
|
__result = memcmp (__str, \
|
||||||
FALSE \
|
__prefix, \
|
||||||
); \
|
__prefix_len) == 0; \
|
||||||
}) \
|
} \
|
||||||
); \
|
__result; \
|
||||||
}) \
|
}) \
|
||||||
: \
|
: \
|
||||||
(g_str_has_prefix) (STR, PREFIX) \
|
(g_str_has_prefix) (STR, PREFIX) \
|
||||||
)
|
)
|
||||||
|
|
||||||
#define g_str_has_suffix(STR, SUFFIX) \
|
#define g_str_has_suffix(STR, SUFFIX) \
|
||||||
(__builtin_constant_p (SUFFIX)? \
|
(__builtin_constant_p (SUFFIX)? \
|
||||||
G_GNUC_EXTENSION ({ \
|
G_GNUC_EXTENSION ({ \
|
||||||
const char * const __str = STR; \
|
const char * const __str = (STR); \
|
||||||
const char * const __suffix = SUFFIX; \
|
const char * const __suffix = (SUFFIX); \
|
||||||
\
|
gboolean __result = FALSE; \
|
||||||
((__str == NULL || __suffix == NULL) ? \
|
\
|
||||||
(g_str_has_suffix) (__str, __suffix) \
|
if G_UNLIKELY (__str == NULL || __suffix == NULL) \
|
||||||
: \
|
__result = (g_str_has_suffix) (__str, __suffix); \
|
||||||
({ \
|
else \
|
||||||
const size_t __str_len = strlen (__str); \
|
{ \
|
||||||
const size_t __suffix_len = strlen (__suffix); \
|
const size_t __str_len = strlen (__str); \
|
||||||
((__str_len >= __suffix_len) ? \
|
const size_t __suffix_len = strlen (__suffix); \
|
||||||
memcmp (__str + __str_len - __suffix_len, \
|
if (__str_len >= __suffix_len) \
|
||||||
__suffix, __suffix_len) == 0 \
|
__result = memcmp (__str + __str_len - __suffix_len, \
|
||||||
: \
|
__suffix, __suffix_len) == 0; \
|
||||||
FALSE \
|
} \
|
||||||
); \
|
__result; \
|
||||||
}) \
|
}) \
|
||||||
); \
|
: \
|
||||||
}) \
|
(g_str_has_suffix) (STR, SUFFIX) \
|
||||||
: \
|
|
||||||
(g_str_has_suffix) (STR, SUFFIX) \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
#endif /* G_GNUC_CHECK_VERSION (2, 0) */
|
#endif /* G_GNUC_CHECK_VERSION (2, 0) */
|
||||||
|
Reference in New Issue
Block a user