summaryrefslogtreecommitdiff
path: root/src/select/hash.c
Commit message (Collapse)AuthorAgeFilesLines
* C89.Michael Drake2014-01-041-1/+2
|
* Attempt to make Coverity understand what's happening. I think this is a ↵Michael Drake2013-12-151-1/+1
| | | | little less readable though. #1137923.
* Various changes which modify API and ABI:Michael Drake2013-12-131-32/+22
| | | | | | | | | - Remove client allocation function. - Change node_classes callback not to yield array ownership to libcss. - Node bloom filters now built by, during selection libcss. - Added selection callbacks to get and set data on document nodes. Test suite, example, and documentation updated to match.
* Just match against universal string intern instead of checking strings ↵Michael Drake2013-12-071-7/+10
| | | | length/data.
* Slight simplification to selector detail itterator.Michael Drake2013-12-071-3/+2
|
* Fixup for insensitive hash utilisation.Michael Drake2013-12-021-7/+27
|
* Since element/class/id names are known to have insensitive string set, just ↵Michael Drake2013-12-021-23/+8
| | | | use that hash value for hash table, instead of calculating own hash.
* We know element/id/class names are available through the insensitive ptr now.Michael Drake2013-12-021-22/+9
|
* Significantly optimise CSS selection performance.Michael Drake2013-12-011-65/+401
| | | | | | | | | | | | | | | | Now we pass a node bloom filter to css_get_style. That node bloom filter is filled with the node's ancestor element, class, and id names. Internally, libcss also generates a bloom filter for each selector chain. If the selector chain's bloom filter is not a subset of the node bloom filter, we know that the selector chain's rule does not apply to the node. This avoids the slow selector chain matching process. Other smaller optimisations to move the ruling out of selector chains for inapplicable media types and other reasons to before we start comparing rules from different sources to find the next rule. All this is now done in hash.c so select.c never sees the trivially ruled out rules.
* Prioritise id and class hashes over element hash when inserting rules.Michael Drake2012-08-261-25/+25
|
* A bunch more microoptimisationsJohn Mark Bell2011-09-061-62/+22
| | | | svn path=/trunk/libcss/; revision=12746
* CSS3 NamespacesJohn Mark Bell2011-03-121-15/+16
| | | | svn path=/trunk/libcss/; revision=11972
* Place negated class and id selectors in the universal hash chainJohn Mark Bell2011-01-311-2/+4
| | | | svn path=/trunk/libcss/; revision=11568
* Rename all css_[^_] internal symbols to css__ so that they're nicely namespacedDaniel Silverstone2011-01-261-9/+9
| | | | svn path=/trunk/libcss/; revision=11492
* Fix libcss to use new libwapcaplet behaviour.Daniel Silverstone2010-03-271-17/+10
| | | | | | | TODO: update the tests to include a refcounting proof svn path=/trunk/libcss/; revision=10162
* Change selector hash to segregate:John Mark Bell2009-07-291-133/+605
| | | | | | | | | | | | | 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
* Calculate the in-memory size of stylesheets and provide some API to access this.John Mark Bell2009-07-271-0/+29
| | | | svn path=/trunk/libcss/; revision=8830
* Error checking for string comparisons.John Mark Bell2009-07-171-3/+13
| | | | svn path=/trunk/libcss/; revision=8608
* Fix selector hash some more. It turns out that I'd forgotten how it was ↵John Mark Bell2009-07-171-3/+33
| | | | | | meant to work. svn path=/trunk/libcss/; revision=8607
* Fix utterly broken selector chain search code.John Mark Bell2009-07-171-12/+0
| | | | svn path=/trunk/libcss/; revision=8604
* Change mechanism for handling case sensitivity of element names. Now has ↵John Mark Bell2009-07-171-2/+15
| | | | | | | | another selection handler callback for this. Change selector hash to use an ASCII case-insensitive hash function. svn path=/trunk/libcss/; revision=8602
* Use a proper hash function.John Mark Bell2009-07-161-1/+1
| | | | svn path=/trunk/libcss/; revision=8572
* Reduce code duplicationJohn Mark Bell2009-03-021-1/+1
| | | | svn path=/trunk/libcss/; revision=6671
* Port libcss to libwapcaplet.Daniel Silverstone2009-02-141-3/+3
| | | | | | | | | It passes the tests, perhaps we need more of them. Lifetimes of lwc_string objects really need attention before we can consider this finished. svn path=/trunk/libcss/; revision=6517
* Drop css_error_handler and rename css_alloc to css_allocator_fnDaniel Silverstone2009-02-141-2/+2
| | | | svn path=/trunk/libcss/; revision=6482
* Use a chaining hash for selectors -- permits easy sorting of hash entries by ↵John Mark Bell2009-01-261-121/+105
| | | | | | specificity/rule index. svn path=/trunk/libcss/; revision=6280
* Add ability to delete items from the selector hash (we use lazy deletion, as ↵John Mark Bell2009-01-251-3/+48
| | | | | | it's simpler) svn path=/trunk/libcss/; revision=6272
* Selector hash.John Mark Bell2009-01-251-0/+288
svn path=/trunk/libcss/; revision=6263