Add defs.h to export helper macros 92/290092/1
authorSeunghun Lee <shiin.lee@samsung.com>
Thu, 8 Dec 2022 09:20:04 +0000 (18:20 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 20 Mar 2023 07:02:58 +0000 (16:02 +0900)
We need to export helper macros and definitions for libds-tizen.

Change-Id: I14d8e064980a56f98e9f107473638b42b2e5eb4d

include/libds/util/defs.h [new file with mode: 0644]
src/util.h

diff --git a/include/libds/util/defs.h b/include/libds/util/defs.h
new file mode 100644 (file)
index 0000000..7ad735e
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef LIBDS_UTIL_DEFS_H
+#define LIBDS_UTIL_DEFS_H
+
+#include <libds/log.h>
+
+#ifndef DS_LIKELY
+#ifdef __GNUC__
+#define DS_LIKELY(x) (__builtin_expect(!!(x),1))
+#define DS_UNLIKELY(x) (__builtin_expect(!!(x),0))
+#else
+#define DS_LIKELY(x) (x)
+#define DS_UNLIKELY(x) (x)
+#endif
+#endif
+
+#define DS_RETURN_IF_FAIL(expr) \
+    do { \
+        if (DS_UNLIKELY(!(expr))) { \
+            ds_err("'%s' failed at %s:%u %s()\n", \
+                #expr, __FILE__, __LINE__, __func__); \
+            return; \
+        } \
+    } while (false)
+
+#define DS_RETURN_VAL_IF_FAIL(expr, val) \
+    do { \
+        if (DS_UNLIKELY(!(expr))) { \
+            ds_err("'%s' failed at %s:%u %s()\n", \
+                #expr, __FILE__, __LINE__, __func__); \
+            return (val); \
+        } \
+    } while (false)
+
+#define DS_ASSERT(expr) \
+    do { \
+        if (DS_UNLIKELY(!(expr))) { \
+            ds_err("'%s' failed at %s:%u %s()\n", \
+                #expr, __FILE__, __LINE__, __func__); \
+            abort(); \
+        } \
+    } while (false)
+
+#define DS_ASSERT_NOT_REACHED() \
+    do { \
+        ds_err("Code should not be reached at %s:%u %s()\n", \
+                __FILE__, __LINE__, __func__); \
+        abort(); \
+    } while (false)
+
+#define DS_FLAG_MASK(field, mask, flag) (((field) & (mask)) == (flag))
+#define DS_FLAG_IS_SET(field, flag) DS_FLAG_MASK(field, flag, flag)
+
+#define DS_FLAG_SET(field, flag) ((field) |= (flag))
+#define DS_FLAG_CLEAR(field, flag) ((field) &= ~(__typeof__(field))(flag))
+#define DS_FLAG_UPDATE(field, flag, val) ((val) ? \
+        DS_FLAG_SET((field), (flag)) : DS_FLAG_CLEAR((field), (flag)))
+
+#define DS_MIN(a, b) \
+({ \
+    __typeof__(a) _min_a = (a); \
+    __typeof__(b) _min_b = (b); \
+    DS_LIKELY(_min_a <= _min_b) ? _min_a : _min_b; \
+})
+
+#define DS_MAX(a, b) \
+({ \
+    __typeof__(a) _max_a = (a); \
+    __typeof__(b) _max_b = (b); \
+    DS_LIKELY(_max_a >= _max_b) ? _max_a : _max_b; \
+})
+
+#define DS_SWAP(a, b) \
+({ \
+    __typeof__(a) _t = (a); \
+    (a) = b; (b) = _t; \
+})
+
+#endif
index f821c35..26a63eb 100644 (file)
@@ -6,79 +6,7 @@
 #include <time.h>
 #include <stdlib.h>
 
-#include "libds/log.h"
-
-#ifndef DS_LIKELY
-#ifdef __GNUC__
-#define DS_LIKELY(x) (__builtin_expect(!!(x),1))
-#define DS_UNLIKELY(x) (__builtin_expect(!!(x),0))
-#else
-#define DS_LIKELY(x) (x)
-#define DS_UNLIKELY(x) (x)
-#endif
-#endif
-
-#define DS_RETURN_IF_FAIL(expr) \
-    do { \
-        if (DS_UNLIKELY(!(expr))) { \
-            ds_err("'%s' failed at %s:%u %s()\n", \
-                #expr, __FILE__, __LINE__, __func__); \
-            return; \
-        } \
-    } while (false)
-
-#define DS_RETURN_VAL_IF_FAIL(expr, val) \
-    do { \
-        if (DS_UNLIKELY(!(expr))) { \
-            ds_err("'%s' failed at %s:%u %s()\n", \
-                #expr, __FILE__, __LINE__, __func__); \
-            return (val); \
-        } \
-    } while (false)
-
-#define DS_ASSERT(expr) \
-    do { \
-        if (DS_UNLIKELY(!(expr))) { \
-            ds_err("'%s' failed at %s:%u %s()\n", \
-                #expr, __FILE__, __LINE__, __func__); \
-            abort(); \
-        } \
-    } while (false)
-
-#define DS_ASSERT_NOT_REACHED() \
-    do { \
-        ds_err("Code should not be reached at %s:%u %s()\n", \
-                __FILE__, __LINE__, __func__); \
-        abort(); \
-    } while (false)
-
-#define DS_FLAG_MASK(field, mask, flag) (((field) & (mask)) == (flag))
-#define DS_FLAG_IS_SET(field, flag) DS_FLAG_MASK(field, flag, flag)
-
-#define DS_FLAG_SET(field, flag) ((field) |= (flag))
-#define DS_FLAG_CLEAR(field, flag) ((field) &= ~(__typeof__(field))(flag))
-#define DS_FLAG_UPDATE(field, flag, val) ((val) ? \
-        DS_FLAG_SET((field), (flag)) : DS_FLAG_CLEAR((field), (flag)))
-
-#define DS_MIN(a, b) \
-({ \
-    __typeof__(a) _min_a = (a); \
-    __typeof__(b) _min_b = (b); \
-    DS_LIKELY(_min_a <= _min_b) ? _min_a : _min_b; \
-})
-
-#define DS_MAX(a, b) \
-({ \
-    __typeof__(a) _max_a = (a); \
-    __typeof__(b) _max_b = (b); \
-    DS_LIKELY(_max_a >= _max_b) ? _max_a : _max_b; \
-})
-
-#define DS_SWAP(a, b) \
-({ \
-    __typeof__(a) _t = (a); \
-    (a) = b; (b) = _t; \
-})
+#include "libds/util/defs.h"
 
 int64_t
 timespec_to_msec(const struct timespec *a);