util/hash_set: Rework the API to know about hashing
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 15 Jan 2015 17:31:18 +0000 (09:31 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 15 Jan 2015 21:21:27 +0000 (13:21 -0800)
commit153b8b35257fb5d68735b5e43e48b0cdb8b15170
tree05db6c87edc7a57a0b7b3457a35448962b4c1c76
parent4c99e3ae78ed3524d188f00b558f803a943aaa00
util/hash_set:  Rework the API to know about hashing

Previously, the set API required the user to do all of the hashing of keys
as it passed them in.  Since the hashing function is intrinsically tied to
the comparison function, it makes sense for the hash set to know about
it.  Also, it makes for a somewhat clumsy API as the user is constantly
calling hashing functions many of which have long names.  This is
especially bad when the standard call looks something like

_mesa_set_add(ht, _mesa_pointer_hash(key), key);

In the above case, there is no reason why the hash set shouldn't do the
hashing for you.  We leave the option for you to do your own hashing if
it's more efficient, but it's no longer needed.  Also, if you do do your
own hashing, the hash set will assert that your hash matches what it
expects out of the hashing function.  This should make it harder to mess up
your hashing.

This is analygous to 94303a0750 where we did this for hash_table

Signed-off-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
15 files changed:
src/glsl/nir/nir.c
src/glsl/nir/nir_dominance.c
src/glsl/nir/nir_from_ssa.c
src/glsl/nir/nir_lower_vars_to_ssa.c
src/glsl/nir/nir_opt_copy_propagate.c
src/glsl/nir/nir_print.c
src/glsl/nir/nir_remove_dead_variables.c
src/glsl/nir/nir_to_ssa.c
src/glsl/nir/nir_validate.c
src/mesa/drivers/dri/i965/intel_fbo.c
src/mesa/main/shared.c
src/mesa/main/syncobj.c
src/mesa/main/vdpau.c
src/util/set.c
src/util/set.h