summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@netsurf-browser.org>2012-03-29 12:27:43 +0000
committerDaniel Silverstone <dsilvers@netsurf-browser.org>2012-03-29 12:27:43 +0000
commit1e2476627da6e343f9c646fc5e1a6bf179a991c0 (patch)
treef4c4efd6718b07e41bf6ca27c6a608ce89015088 /src
parent76c0dfc52a443b19be0f808e23632d52f721f11a (diff)
downloadlibwapcaplet-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')
-rw-r--r--src/libwapcaplet.c81
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