diff options
author | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2012-03-29 12:27:43 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2012-03-29 12:27:43 +0000 |
commit | 1e2476627da6e343f9c646fc5e1a6bf179a991c0 (patch) | |
tree | f4c4efd6718b07e41bf6ca27c6a608ce89015088 /src/libwapcaplet.c | |
parent | 76c0dfc52a443b19be0f808e23632d52f721f11a (diff) | |
download | libwapcaplet-1e2476627da6e343f9c646fc5e1a6bf179a991c0.tar.gz libwapcaplet-1e2476627da6e343f9c646fc5e1a6bf179a991c0.tar.bz2 |
Rework the majority of wapcaplet's interface to be macros. This removes *many* function call overheads but does require GNUish braced-group expressions.
svn path=/trunk/libwapcaplet/; revision=13777
Diffstat (limited to 'src/libwapcaplet.c')
-rw-r--r-- | src/libwapcaplet.c | 81 |
1 files changed, 2 insertions, 79 deletions
diff --git a/src/libwapcaplet.c b/src/libwapcaplet.c index 5ae655a..bd20abc 100644 --- a/src/libwapcaplet.c +++ b/src/libwapcaplet.c @@ -16,8 +16,6 @@ #define UNUSED(x) ((x) = (x)) #endif -typedef uint32_t lwc_refcounter; - static inline lwc_hash lwc__calculate_hash(const char *str, size_t len) { @@ -33,15 +31,6 @@ lwc__calculate_hash(const char *str, size_t len) return z; } -struct lwc_string_s { - lwc_string ** prevptr; - lwc_string * next; - size_t len; - lwc_hash hash; - lwc_refcounter refcnt; - lwc_string * insensitive; -}; - #define STR_OF(str) ((char *)(str + 1)) #define CSTR_OF(str) ((const char *)(str + 1)) @@ -174,27 +163,11 @@ lwc_intern_substring(lwc_string *str, return lwc_intern_string(CSTR_OF(str) + ssoffset, sslen, ret); } -lwc_string * -lwc_string_ref(lwc_string *str) -{ - assert(str); - - str->refcnt++; - - return str; -} - void -lwc_string_unref(lwc_string *str) +lwc_string_destroy(lwc_string *str) { assert(str); - if (--(str->refcnt) > 1) - return; - - if ((str->refcnt == 1) && (str->insensitive != str)) - return; - *(str->prevptr) = str->next; if (str->next != NULL) @@ -254,7 +227,7 @@ lwc__lcase_memcpy(char *target, const char *source, size_t n) } } -static lwc_error +lwc_error lwc__intern_caseless_string(lwc_string *str) { assert(str); @@ -267,56 +240,6 @@ lwc__intern_caseless_string(lwc_string *str) lwc__lcase_memcpy); } -lwc_error -lwc_string_caseless_isequal(lwc_string *str1, - lwc_string *str2, - bool *ret) -{ - lwc_error err; - assert(str1); - assert(str2); - - if (str1->insensitive == NULL) { - err = lwc__intern_caseless_string(str1); - if (err != lwc_error_ok) - return err; - } - if (str2->insensitive == NULL) { - err = lwc__intern_caseless_string(str2); - if (err != lwc_error_ok) - return err; - } - - *ret = (str1->insensitive == str2->insensitive); - return lwc_error_ok; -} - -/**** Simple accessors ****/ - -const char * -lwc_string_data(const lwc_string *str) -{ - assert(str); - - return CSTR_OF(str); -} - -size_t -lwc_string_length(const lwc_string *str) -{ - assert(str); - - return str->len; -} - -uint32_t -lwc_string_hash_value(lwc_string *str) -{ - assert(str); - - return str->hash; -} - /**** Iteration ****/ void |