diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2009-07-29 09:57:04 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2009-07-29 09:57:04 +0000 |
commit | 551c4e5bc7147f8eee1bb48cdd26bc83a66aa78a (patch) | |
tree | aff3a1bb53332c80aa0b3e973c787baebaf3cc4a /src/select/hash.h | |
parent | fc6b96707730c54fb7ac4040680d79864169b5e0 (diff) | |
download | libcss-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.h | 19 |
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); |