summaryrefslogtreecommitdiff
path: root/tests/set
AgeCommit message (Collapse)AuthorFilesLines
2016-03-02Add a testcase for the replacement bug fixed in the previous commit.Eric Anholt3-0/+67
2016-03-02Add a testcase for a bug that was introduced in Mesa.Eric Anholt3-0/+66
This tree doesn't have the bug, but I'd like to bring the change that was buggy over.
2014-11-25Make helpers for creating hash tables and sets of strings.Eric Anholt4-4/+4
This fixes warnings when building the testsuite, due to char * vs void * in prototypes.
2013-10-25Teach the hash table itself to know its own hash functionCarl Worth8-53/+49
Here, we change 'create' to accept the hash function. This simplifies the interface for 'insert', 'search', 'contains', and 'remove' which no longer need to pass a hash value, making them more convenient to use. To avoid any reduction in performance, the previous interfaces for 'insert' and 'search' are still available as 'insert_pre_hashed' and 'search_pre_hashed'. This avoids redundant hashing in cases where the caller already has a hash value. (The common case is to has once before 'search_pre_hashed' and then reuse that value for 'insert_pre_hashed'.) The implementation takes advantage of the 'insert_pre_hashed' version when performing hash_rehash as part of resizing the table. Note that 'remove' does not need a pre_hashed variant since 'remove' is already a convenience function on top of 'remove_entry', and 'remove_entry' already has access to the hash value inside of the entry. Similarly, 'contains' does not need a pre_hashed variant since it is a convnience function on top of 'search' which already has a 'search_pre_hashed' variant. In this commit, the tests are modified such that roughly half of the previous callers of 'search' and 'insert' are changed to the new interface and the other half remain with the old interface (now named 'search_pre_hashed' and 'insert_pre_hashed'). v2: Make the new method call style consistent with the key equality method (change by anholt).
2013-10-25Fix out-of-tree build.Eric Anholt1-1/+1
2013-10-25Add set_contains and int_set_contains functions.Carl Worth5-0/+12
These are convenience functions on top of set_search and int_set_search. With a set, containment is often the most important notion of interest, and it helps to be able to query this without needing to declare a local struct set_entry*. v2: Whitespace consistency (changes by anholt)
2013-10-25Add new convenience function 'remove' (renaming former to 'remove_entry')Carl Worth4-6/+15
The new 'remove' function provides a parallel interface to that of search, (removing an entry matching the provided data). The former remove function (which accepts a pointer to a known entry) is renamed to 'remove_entry'. This new 'remove' is a simple convenience function which calls 'search' and then 'remove_entry'. As can be seen in the updates to the test suite, there are cases where the caller was already doing exactly that, so the new interface simplifies such uses. v2: Whitespace consistency change (by anholt)
2013-10-25Standardize language for license blurbs.Carl Worth1-7/+8
This extends the language from the source files into the Makefiles as well. The most significant change is from "ADAM JACKSON" to "THE AUTHORS OR COPYRIGHT HOLDERS". While I'm sure that Adam would appreciate any reduction in liability, the intent of this language is to disclaim liability for the actual authors and copyright holders. (I don't know that Adam actually has any copyright interest in this implementation, but if he does, he's still covered by the wider language.)
2013-10-25Update .gitignore filesCarl Worth1-0/+2
Just enough to keep "git status" clean after running "make check".
2011-08-18Add a set implementation derived from the hash_table implementation.Eric Anholt11-0/+641
While it was easy to produce, it's easier to do it once and maintain it than leave this up to every possible user. Plus, it means it gets testing.