mirror of
https://github.com/oasislinux/oasis.git
synced 2026-09-28 10:10:01 +02:00
187 lines
6.5 KiB
Diff
187 lines
6.5 KiB
Diff
From f0f43a3ad6ee46d6e6378325fc03b1adadd35c41 Mon Sep 17 00:00:00 2001
|
|
From: Michael Forney <mforney@mforney.org>
|
|
Date: Mon, 1 Jul 2019 23:13:26 -0700
|
|
Subject: [PATCH] Use static inline functions instead of macros
|
|
|
|
---
|
|
include/libwapcaplet/libwapcaplet.h | 102 +++++++++++-----------------
|
|
1 file changed, 39 insertions(+), 63 deletions(-)
|
|
|
|
diff --git a/include/libwapcaplet/libwapcaplet.h b/include/libwapcaplet/libwapcaplet.h
|
|
index 57e2e48..96dd7aa 100644
|
|
--- a/include/libwapcaplet/libwapcaplet.h
|
|
+++ b/include/libwapcaplet/libwapcaplet.h
|
|
@@ -133,17 +133,21 @@ extern lwc_error lwc_string_tolower(lwc_string *str, lwc_string **ret);
|
|
* @note Use this if copying the string and intending both sides to retain
|
|
* ownership.
|
|
*/
|
|
-#if defined(STMTEXPR)
|
|
-#define lwc_string_ref(str) ({lwc_string *__lwc_s = (str); assert(__lwc_s != NULL); __lwc_s->refcnt++; __lwc_s;})
|
|
-#else
|
|
-static inline lwc_string *
|
|
-lwc_string_ref(lwc_string *str)
|
|
+static inline lwc_string *lwc_string_ref(lwc_string *str)
|
|
{
|
|
assert(str != NULL);
|
|
str->refcnt++;
|
|
return str;
|
|
}
|
|
-#endif
|
|
+
|
|
+/**
|
|
+ * Destroy an unreffed lwc_string.
|
|
+ *
|
|
+ * This destroys an lwc_string whose reference count indicates that it should be.
|
|
+ *
|
|
+ * @param str The string to unref.
|
|
+ */
|
|
+extern void lwc_string_destroy(lwc_string *str);
|
|
|
|
/**
|
|
* Release a reference on an lwc_string.
|
|
@@ -156,23 +160,14 @@ lwc_string_ref(lwc_string *str)
|
|
* freed. (Ref count of 1 where string is its own insensitve match
|
|
* will also result in the string being freed.)
|
|
*/
|
|
-#define lwc_string_unref(str) { \
|
|
- lwc_string *__lwc_s = (str); \
|
|
- assert(__lwc_s != NULL); \
|
|
- __lwc_s->refcnt--; \
|
|
- if ((__lwc_s->refcnt == 0) || \
|
|
- ((__lwc_s->refcnt == 1) && (__lwc_s->insensitive == __lwc_s))) \
|
|
- lwc_string_destroy(__lwc_s); \
|
|
- }
|
|
-
|
|
-/**
|
|
- * Destroy an unreffed lwc_string.
|
|
- *
|
|
- * This destroys an lwc_string whose reference count indicates that it should be.
|
|
- *
|
|
- * @param str The string to unref.
|
|
- */
|
|
-extern void lwc_string_destroy(lwc_string *str);
|
|
+static inline void lwc_string_unref(lwc_string *str)
|
|
+{
|
|
+ assert(str != NULL);
|
|
+ str->refcnt--;
|
|
+ if ((str->refcnt == 0) ||
|
|
+ ((str->refcnt == 1) && (str->insensitive == str)))
|
|
+ lwc_string_destroy(str);
|
|
+}
|
|
|
|
/**
|
|
* Check if two interned strings are equal.
|
|
@@ -183,8 +178,12 @@ extern void lwc_string_destroy(lwc_string *str);
|
|
* @return Result of operation, if not ok then value pointed to
|
|
* by \a ret will not be valid.
|
|
*/
|
|
-#define lwc_string_isequal(str1, str2, ret) \
|
|
- ((*(ret) = ((str1) == (str2))), lwc_error_ok)
|
|
+static inline lwc_error lwc_string_isequal(
|
|
+ lwc_string *str1, lwc_string *str2, bool *ret)
|
|
+{
|
|
+ *ret = (str1 == str2);
|
|
+ return lwc_error_ok;
|
|
+}
|
|
|
|
/**
|
|
* Intern a caseless copy of the passed string.
|
|
@@ -200,7 +199,6 @@ extern void lwc_string_destroy(lwc_string *str);
|
|
extern lwc_error
|
|
lwc__intern_caseless_string(lwc_string *str);
|
|
|
|
-#if defined(STMTEXPR)
|
|
/**
|
|
* Check if two interned strings are case-insensitively equal.
|
|
*
|
|
@@ -210,33 +208,6 @@ lwc__intern_caseless_string(lwc_string *str);
|
|
* @return Result of operation, if not ok then value pointed to by \a ret will
|
|
* not be valid.
|
|
*/
|
|
-#define lwc_string_caseless_isequal(_str1,_str2,_ret) ({ \
|
|
- lwc_error __lwc_err = lwc_error_ok; \
|
|
- lwc_string *__lwc_str1 = (_str1); \
|
|
- lwc_string *__lwc_str2 = (_str2); \
|
|
- bool *__lwc_ret = (_ret); \
|
|
- \
|
|
- if (__lwc_str1->insensitive == NULL) { \
|
|
- __lwc_err = lwc__intern_caseless_string(__lwc_str1); \
|
|
- } \
|
|
- if (__lwc_err == lwc_error_ok && __lwc_str2->insensitive == NULL) { \
|
|
- __lwc_err = lwc__intern_caseless_string(__lwc_str2); \
|
|
- } \
|
|
- if (__lwc_err == lwc_error_ok) \
|
|
- *__lwc_ret = (__lwc_str1->insensitive == __lwc_str2->insensitive); \
|
|
- __lwc_err; \
|
|
- })
|
|
-
|
|
-#else
|
|
-/**
|
|
- * Check if two interned strings are case-insensitively equal.
|
|
- *
|
|
- * @param str1 The first string in the comparison.
|
|
- * @param str2 The second string in the comparison.
|
|
- * @param ret A pointer to a boolean to be filled out with the result.
|
|
- * @return Result of operation, if not ok then value pointed to by \a ret will
|
|
- * not be valid.
|
|
- */
|
|
static inline lwc_error
|
|
lwc_string_caseless_isequal(lwc_string *str1, lwc_string *str2, bool *ret)
|
|
{
|
|
@@ -251,13 +222,6 @@ lwc_string_caseless_isequal(lwc_string *str1, lwc_string *str2, bool *ret)
|
|
*ret = (str1->insensitive == str2->insensitive);
|
|
return err;
|
|
}
|
|
-#endif
|
|
-
|
|
-#if defined(STMTEXPR)
|
|
-#define lwc__assert_and_expr(str, expr) ({assert(str != NULL); expr;})
|
|
-#else
|
|
-#define lwc__assert_and_expr(str, expr) (expr)
|
|
-#endif
|
|
|
|
/**
|
|
* Retrieve the data pointer for an interned string.
|
|
@@ -271,7 +235,11 @@ lwc_string_caseless_isequal(lwc_string *str1, lwc_string *str2, bool *ret)
|
|
* in future. Any code relying on it currently should be
|
|
* modified to use ::lwc_string_length if possible.
|
|
*/
|
|
-#define lwc_string_data(str) lwc__assert_and_expr(str, (const char *)((str)+1))
|
|
+static inline const char *lwc_string_data(lwc_string *str)
|
|
+{
|
|
+ assert(str != NULL);
|
|
+ return (const char *)(str + 1);
|
|
+}
|
|
|
|
/**
|
|
* Retrieve the data length for an interned string.
|
|
@@ -279,7 +247,11 @@ lwc_string_caseless_isequal(lwc_string *str1, lwc_string *str2, bool *ret)
|
|
* @param str The string to retrieve the length of.
|
|
* @return The length of \a str.
|
|
*/
|
|
-#define lwc_string_length(str) lwc__assert_and_expr(str, (str)->len)
|
|
+static inline size_t lwc_string_length(lwc_string *str)
|
|
+{
|
|
+ assert(str != NULL);
|
|
+ return str->len;
|
|
+}
|
|
|
|
/**
|
|
* Retrieve (or compute if unavailable) a hash value for the content of the string.
|
|
@@ -293,7 +265,11 @@ lwc_string_caseless_isequal(lwc_string *str1, lwc_string *str2, bool *ret)
|
|
* to be stable between invocations of the program. Never use the hash
|
|
* value as a way to directly identify the value of the string.
|
|
*/
|
|
-#define lwc_string_hash_value(str) lwc__assert_and_expr(str, (str)->hash)
|
|
+static inline lwc_hash lwc_string_hash_value(lwc_string *str)
|
|
+{
|
|
+ assert(str != NULL);
|
|
+ return str->hash;
|
|
+}
|
|
|
|
/**
|
|
* Retrieve a hash value for the caseless content of the string.
|
|
--
|
|
2.26.2
|
|
|