summaryrefslogtreecommitdiff
path: root/src/select/hash.h
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-07-29 09:57:04 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-07-29 09:57:04 +0000
commit551c4e5bc7147f8eee1bb48cdd26bc83a66aa78a (patch)
treeaff3a1bb53332c80aa0b3e973c787baebaf3cc4a /src/select/hash.h
parentfc6b96707730c54fb7ac4040680d79864169b5e0 (diff)
downloadlibcss-551c4e5bc7147f8eee1bb48cdd26bc83a66aa78a.tar.gz
libcss-551c4e5bc7147f8eee1bb48cdd26bc83a66aa78a.tar.bz2
Change selector hash to segregate:
1) element selectors 2) universal selectors with class names 3) universal selectors with ids 4) universal selectors Only bother looking for matching selectors in 2 & 3 if the node being selected for has class names or an id, respectively. In theory, this should speed up style selection somewhat. svn path=/trunk/libcss/; revision=8882
Diffstat (limited to 'src/select/hash.h')
-rw-r--r--src/select/hash.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/select/hash.h b/src/select/hash.h
index 9beaa6b..e705554 100644
--- a/src/select/hash.h
+++ b/src/select/hash.h
@@ -18,6 +18,10 @@ struct css_selector;
typedef struct css_selector_hash css_selector_hash;
+typedef css_error (*css_selector_hash_iterator)(css_selector_hash *hash,
+ const struct css_selector **current,
+ const struct css_selector ***next);
+
css_error css_selector_hash_create(lwc_context *dict,
css_allocator_fn alloc, void *pw,
css_selector_hash **hash);
@@ -30,10 +34,19 @@ css_error css_selector_hash_remove(css_selector_hash *hash,
css_error css_selector_hash_find(css_selector_hash *hash,
lwc_string *name,
+ css_selector_hash_iterator *iterator,
+ const struct css_selector ***matched);
+css_error css_selector_hash_find_by_class(css_selector_hash *hash,
+ lwc_string *name,
+ css_selector_hash_iterator *iterator,
+ const struct css_selector ***matched);
+css_error css_selector_hash_find_by_id(css_selector_hash *hash,
+ lwc_string *name,
+ css_selector_hash_iterator *iterator,
+ const struct css_selector ***matched);
+css_error css_selector_hash_find_universal(css_selector_hash *hash,
+ css_selector_hash_iterator *iterator,
const struct css_selector ***matched);
-css_error css_selector_hash_iterate(css_selector_hash *hash,
- const struct css_selector **current,
- const struct css_selector ***next);
css_error css_selector_hash_size(css_selector_hash *hash, size_t *size);