10#define libwapcaplet_h_
106 size_t ssoffset,
size_t sslen,
137#define lwc_string_ref(str) ({lwc_string *__lwc_s = (str); assert(__lwc_s != NULL); __lwc_s->refcnt++; __lwc_s;})
159#define lwc_string_unref(str) { \
160 lwc_string *__lwc_s = (str); \
161 if (__lwc_s != NULL) { \
163 if ((__lwc_s->refcnt == 0) || \
164 ((__lwc_s->refcnt == 1) && \
165 (__lwc_s->insensitive == __lwc_s))) \
166 lwc_string_destroy(__lwc_s); \
188#define lwc_string_isequal(str1, str2, ret) \
189 ((*(ret) = ((str1) == (str2))), lwc_error_ok)
215#define lwc_string_caseless_isequal(_str1,_str2,_ret) ({ \
216 lwc_error __lwc_err = lwc_error_ok; \
217 lwc_string *__lwc_str1 = (_str1); \
218 lwc_string *__lwc_str2 = (_str2); \
219 bool *__lwc_ret = (_ret); \
221 if (__lwc_str1->insensitive == NULL) { \
222 __lwc_err = lwc__intern_caseless_string(__lwc_str1); \
224 if (__lwc_err == lwc_error_ok && __lwc_str2->insensitive == NULL) { \
225 __lwc_err = lwc__intern_caseless_string(__lwc_str2); \
227 if (__lwc_err == lwc_error_ok) \
228 *__lwc_ret = (__lwc_str1->insensitive == __lwc_str2->insensitive); \
259#define lwc__assert_and_expr(str, expr) ({assert(str != NULL); expr;})
261#define lwc__assert_and_expr(str, expr) (expr)
276#define lwc_string_data(str) lwc__assert_and_expr(str, (const char *)((str)+1))
284#define lwc_string_length(str) lwc__assert_and_expr(str, (str)->len)
298#define lwc_string_hash_value(str) lwc__assert_and_expr(str, (str)->hash)
308static inline lwc_error lwc_string_caseless_hash_value(
lwc_error lwc_string_tolower(lwc_string *str, lwc_string **ret)
lwc_error lwc_intern_substring(lwc_string *str, size_t ssoffset, size_t sslen, lwc_string **ret)
lwc_error lwc_intern_string(const char *s, size_t slen, lwc_string **ret)
struct lwc_string_s lwc_string
enum lwc_error_e lwc_error
void(* lwc_iteration_callback_fn)(lwc_string *str, void *pw)
void lwc_string_destroy(lwc_string *str)
void lwc_iterate_strings(lwc_iteration_callback_fn cb, void *pw)
lwc_error lwc__intern_caseless_string(lwc_string *str)
struct lwc_string_s * next
struct lwc_string_s * insensitive
struct lwc_string_s ** prevptr