diff options
Diffstat (limited to 'src/mesa/program')
-rw-r--r-- | src/mesa/program/hash_table.h | 35 | ||||
-rw-r--r-- | src/mesa/program/prog_hash_table.c | 67 |
2 files changed, 23 insertions, 79 deletions
diff --git a/src/mesa/program/hash_table.h b/src/mesa/program/hash_table.h index 91fc11ecc33..687a9963c6e 100644 --- a/src/mesa/program/hash_table.h +++ b/src/mesa/program/hash_table.h @@ -161,16 +161,17 @@ static inline void hash_table_remove(struct hash_table *ht, const void *key) /** * Compute hash value of a string * - * Computes the hash value of a string using the DJB2 algorithm developed by - * Professor Daniel J. Bernstein. It was published on comp.lang.c once upon - * a time. I was unable to find the original posting in the archives. - * * \param key Pointer to a NUL terminated string to be hashed. * * \sa hash_table_string_compare */ -extern unsigned hash_table_string_hash(const void *key); - +static unsigned +hash_table_string_hash(const void *key) +{ + const char *str = (const char *) key; + uint32_t hash = _mesa_hash_string(str); + return hash; +} /** * Compare two strings used as keys @@ -179,7 +180,11 @@ extern unsigned hash_table_string_hash(const void *key); * * \sa hash_table_string_hash */ -bool hash_table_string_compare(const void *a, const void *b); +static bool +hash_table_string_compare(const void *a, const void *b) +{ + return _mesa_key_string_equal(a, b); +} /** * Compute hash value of a pointer @@ -192,17 +197,23 @@ bool hash_table_string_compare(const void *a, const void *b); * * \sa hash_table_pointer_compare */ -unsigned -hash_table_pointer_hash(const void *key); - +static unsigned +hash_table_pointer_hash(const void *key) +{ + return _mesa_hash_pointer(key); +} /** * Compare two pointers used as keys * * \sa hash_table_pointer_hash */ -bool -hash_table_pointer_compare(const void *key1, const void *key2); +static bool +hash_table_pointer_compare(const void *key1, const void *key2) +{ + return _mesa_key_pointer_equal(key1, key2); +} + static inline void hash_table_call_foreach(struct hash_table *ht, diff --git a/src/mesa/program/prog_hash_table.c b/src/mesa/program/prog_hash_table.c deleted file mode 100644 index cbea74c05ab..00000000000 --- a/src/mesa/program/prog_hash_table.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright © 2008 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -/** - * \file hash_table.c - * \brief Implementation of a generic, opaque hash table data type. - * - * \author Ian Romanick <[email protected]> - */ - -#include "main/imports.h" -#include "util/simple_list.h" -#include "hash_table.h" - -unsigned -hash_table_string_hash(const void *key) -{ - const char *str = (const char *) key; - unsigned hash = 5381; - - - while (*str != '\0') { - hash = (hash * 33) + *str; - str++; - } - - return hash; -} - -bool hash_table_string_compare(const void *a, const void *b) -{ - return strcmp(a, b) == 0; -} - - -unsigned -hash_table_pointer_hash(const void *key) -{ - return (unsigned)((uintptr_t) key / sizeof(void *)); -} - - -bool -hash_table_pointer_compare(const void *key1, const void *key2) -{ - return key1 == key2; -} |