From b9fd352eca365a5f21d969bee653a6420033fb6e Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 26 Jul 2017 10:54:52 +0200 Subject: shared: move NM_CMP_*() helper macros to shared header --- shared/nm-utils/nm-shared-utils.h | 77 +++++++++++++++++++++++++++++++++++++++ src/platform/nm-platform.c | 75 -------------------------------------- 2 files changed, 77 insertions(+), 75 deletions(-) diff --git a/shared/nm-utils/nm-shared-utils.h b/shared/nm-utils/nm-shared-utils.h index 438a7a9e7c..8ff4c3cf05 100644 --- a/shared/nm-utils/nm-shared-utils.h +++ b/shared/nm-utils/nm-shared-utils.h @@ -24,6 +24,83 @@ /*****************************************************************************/ +#define NM_CMP_SELF(a, b) \ + G_STMT_START { \ + if ((a) == (b)) \ + return 0; \ + if (!(a)) \ + return -1; \ + if (!(b)) \ + return 1; \ + } G_STMT_END + +#define NM_CMP_DIRECT(a, b) \ + G_STMT_START { \ + if ((a) != (b)) \ + return ((a) < (b)) ? -1 : 1; \ + } G_STMT_END + +#define NM_CMP_DIRECT_MEMCMP(a, b, size) \ + G_STMT_START { \ + int c = memcmp ((a), (b), (size)); \ + if (c != 0) \ + return c < 0 ? -1 : 1; \ + } G_STMT_END + +#define NM_CMP_FIELD(a, b, field) \ + G_STMT_START { \ + if (((a)->field) != ((b)->field)) \ + return (((a)->field) < ((b)->field)) ? -1 : 1; \ + } G_STMT_END + +#define NM_CMP_FIELD_BOOL(a, b, field) \ + G_STMT_START { \ + if ((!((a)->field)) != (!((b)->field))) \ + return ((!((a)->field)) < (!((b)->field))) ? -1 : 1; \ + } G_STMT_END + +#define NM_CMP_FIELD_STR(a, b, field) \ + G_STMT_START { \ + int c = strcmp ((a)->field, (b)->field); \ + if (c != 0) \ + return c < 0 ? -1 : 1; \ + } G_STMT_END + +#define NM_CMP_FIELD_STR_INTERNED(a, b, field) \ + G_STMT_START { \ + if (((a)->field) != ((b)->field)) { \ + /* just to be sure, also do a strcmp() if the pointers don't match */ \ + int c = g_strcmp0 ((a)->field, (b)->field); \ + if (c != 0) \ + return c < 0 ? -1 : 1; \ + } \ + } G_STMT_END + +#define NM_CMP_FIELD_STR0(a, b, field) \ + G_STMT_START { \ + int c = g_strcmp0 ((a)->field, (b)->field); \ + if (c != 0) \ + return c < 0 ? -1 : 1; \ + } G_STMT_END + +#define NM_CMP_FIELD_MEMCMP_LEN(a, b, field, len) \ + G_STMT_START { \ + int c = memcmp (&((a)->field), &((b)->field), \ + MIN (len, sizeof ((a)->field))); \ + if (c != 0) \ + return c < 0 ? -1 : 1; \ + } G_STMT_END + +#define NM_CMP_FIELD_MEMCMP(a, b, field) \ + G_STMT_START { \ + int c = memcmp (&((a)->field), &((b)->field), \ + sizeof ((a)->field)); \ + if (c != 0) \ + return c < 0 ? -1 : 1; \ + } G_STMT_END + +/*****************************************************************************/ + extern const void *const _NM_PTRARRAY_EMPTY[1]; #define NM_PTRARRAY_EMPTY(type) ((type const*) _NM_PTRARRAY_EMPTY) diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index 9412c94469..590ac101f1 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -4320,81 +4320,6 @@ nm_platform_ip6_route_to_string (const NMPlatformIP6Route *route, char *buf, gsi return buf; } -#define NM_CMP_SELF(a, b) \ - G_STMT_START { \ - if ((a) == (b)) \ - return 0; \ - if (!(a)) \ - return -1; \ - if (!(b)) \ - return 1; \ - } G_STMT_END - -#define NM_CMP_DIRECT(a, b) \ - G_STMT_START { \ - if ((a) != (b)) \ - return ((a) < (b)) ? -1 : 1; \ - } G_STMT_END - -#define NM_CMP_DIRECT_MEMCMP(a, b, size) \ - G_STMT_START { \ - int c = memcmp ((a), (b), (size)); \ - if (c != 0) \ - return c < 0 ? -1 : 1; \ - } G_STMT_END - -#define NM_CMP_FIELD(a, b, field) \ - G_STMT_START { \ - if (((a)->field) != ((b)->field)) \ - return (((a)->field) < ((b)->field)) ? -1 : 1; \ - } G_STMT_END - -#define NM_CMP_FIELD_BOOL(a, b, field) \ - G_STMT_START { \ - if ((!((a)->field)) != (!((b)->field))) \ - return ((!((a)->field)) < (!((b)->field))) ? -1 : 1; \ - } G_STMT_END - -#define NM_CMP_FIELD_STR(a, b, field) \ - G_STMT_START { \ - int c = strcmp ((a)->field, (b)->field); \ - if (c != 0) \ - return c < 0 ? -1 : 1; \ - } G_STMT_END - -#define NM_CMP_FIELD_STR_INTERNED(a, b, field) \ - G_STMT_START { \ - if (((a)->field) != ((b)->field)) { \ - /* just to be sure, also do a strcmp() if the pointers don't match */ \ - int c = g_strcmp0 ((a)->field, (b)->field); \ - if (c != 0) \ - return c < 0 ? -1 : 1; \ - } \ - } G_STMT_END - -#define NM_CMP_FIELD_STR0(a, b, field) \ - G_STMT_START { \ - int c = g_strcmp0 ((a)->field, (b)->field); \ - if (c != 0) \ - return c < 0 ? -1 : 1; \ - } G_STMT_END - -#define NM_CMP_FIELD_MEMCMP_LEN(a, b, field, len) \ - G_STMT_START { \ - int c = memcmp (&((a)->field), &((b)->field), \ - MIN (len, sizeof ((a)->field))); \ - if (c != 0) \ - return c < 0 ? -1 : 1; \ - } G_STMT_END - -#define NM_CMP_FIELD_MEMCMP(a, b, field) \ - G_STMT_START { \ - int c = memcmp (&((a)->field), &((b)->field), \ - sizeof ((a)->field)); \ - if (c != 0) \ - return c < 0 ? -1 : 1; \ - } G_STMT_END - guint nm_platform_link_hash (const NMPlatformLink *obj) { -- cgit v1.2.1