hashtable: Make key arguments const
authorTobias Brunner <tobias@strongswan.org>
Thu, 27 Mar 2014 10:57:54 +0000 (11:57 +0100)
committerTobias Brunner <tobias@strongswan.org>
Mon, 31 Mar 2014 12:32:45 +0000 (14:32 +0200)
This allows using const strings etc. for lookups without cast. And keys
are not modifiable anyway.

src/libstrongswan/collections/hashtable.c
src/libstrongswan/collections/hashtable.h

index 1003aa0..ca31d83 100644 (file)
@@ -30,7 +30,7 @@ struct pair_t {
        /**
         * Key of a hash table item.
         */
-       void *key;
+       const void *key;
 
        /**
         * Value of a hash table item.
@@ -51,7 +51,7 @@ struct pair_t {
 /**
  * Creates an empty pair object.
  */
-static inline pair_t *pair_create(void *key, void *value, u_int hash)
+static inline pair_t *pair_create(const void *key, void *value, u_int hash)
 {
        pair_t *this;
 
@@ -153,7 +153,7 @@ struct private_enumerator_t {
 /*
  * See header.
  */
-u_int hashtable_hash_ptr(void *key)
+u_int hashtable_hash_ptr(const void *key)
 {
        return chunk_hash(chunk_from_thing(key));
 }
@@ -161,7 +161,7 @@ u_int hashtable_hash_ptr(void *key)
 /*
  * See header.
  */
-u_int hashtable_hash_str(void *key)
+u_int hashtable_hash_str(const void *key)
 {
        return chunk_hash(chunk_from_str((char*)key));
 }
@@ -169,7 +169,7 @@ u_int hashtable_hash_str(void *key)
 /*
  * See header.
  */
-bool hashtable_equals_ptr(void *key, void *other_key)
+bool hashtable_equals_ptr(const void *key, const void *other_key)
 {
        return key == other_key;
 }
@@ -177,7 +177,7 @@ bool hashtable_equals_ptr(void *key, void *other_key)
 /*
  * See header.
  */
-bool hashtable_equals_str(void *key, void *other_key)
+bool hashtable_equals_str(const void *key, const void *other_key)
 {
        return streq(key, other_key);
 }
@@ -250,7 +250,7 @@ static void rehash(private_hashtable_t *this)
 }
 
 METHOD(hashtable_t, put, void*,
-          private_hashtable_t *this, void *key, void *value)
+          private_hashtable_t *this, const void *key, void *value)
 {
        void *old_value = NULL;
        pair_t *pair;
@@ -284,7 +284,7 @@ METHOD(hashtable_t, put, void*,
        return old_value;
 }
 
-static void *get_internal(private_hashtable_t *this, void *key,
+static void *get_internal(private_hashtable_t *this, const void *key,
                                                  hashtable_equals_t equals)
 {
        void *value = NULL;
@@ -309,19 +309,19 @@ static void *get_internal(private_hashtable_t *this, void *key,
 }
 
 METHOD(hashtable_t, get, void*,
-          private_hashtable_t *this, void *key)
+          private_hashtable_t *this, const void *key)
 {
        return get_internal(this, key, this->equals);
 }
 
 METHOD(hashtable_t, get_match, void*,
-          private_hashtable_t *this, void *key, hashtable_equals_t match)
+          private_hashtable_t *this, const void *key, hashtable_equals_t match)
 {
        return get_internal(this, key, match);
 }
 
 METHOD(hashtable_t, remove_, void*,
-          private_hashtable_t *this, void *key)
+          private_hashtable_t *this, const void *key)
 {
        void *value = NULL;
        pair_t *pair, *prev = NULL;
@@ -379,7 +379,7 @@ METHOD(hashtable_t, get_count, u_int,
 }
 
 METHOD(enumerator_t, enumerate, bool,
-          private_enumerator_t *this, void **key, void **value)
+          private_enumerator_t *this, const void **key, void **value)
 {
        while (this->count && this->row < this->table->capacity)
        {
index 520a86c..0a7ebeb 100644 (file)
@@ -31,7 +31,7 @@ typedef struct hashtable_t hashtable_t;
  * @param key                  key to hash
  * @return                             hash code
  */
-typedef u_int (*hashtable_hash_t)(void *key);
+typedef u_int (*hashtable_hash_t)(const void *key);
 
 /**
  * Hashtable hash function calculation the hash solely based on the key pointer.
@@ -39,7 +39,7 @@ typedef u_int (*hashtable_hash_t)(void *key);
  * @param key                  key to hash
  * @return                             hash of key
  */
-u_int hashtable_hash_ptr(void *key);
+u_int hashtable_hash_ptr(const void *key);
 
 /**
  * Hashtable hash function calculation the hash for char* keys.
@@ -47,7 +47,7 @@ u_int hashtable_hash_ptr(void *key);
  * @param key                  key to hash, a char*
  * @return                             hash of key
  */
-u_int hashtable_hash_str(void *key);
+u_int hashtable_hash_str(const void *key);
 
 /**
  * Prototype for a function that compares the two keys for equality.
@@ -56,7 +56,7 @@ u_int hashtable_hash_str(void *key);
  * @param other_key            second key
  * @return                             TRUE if the keys are equal
  */
-typedef bool (*hashtable_equals_t)(void *key, void *other_key);
+typedef bool (*hashtable_equals_t)(const void *key, const void *other_key);
 
 /**
  * Hashtable equals function comparing pointers.
@@ -65,7 +65,7 @@ typedef bool (*hashtable_equals_t)(void *key, void *other_key);
  * @param other_key            other key to compare
  * @return                             TRUE if key == other_key
  */
-bool hashtable_equals_ptr(void *key, void *other_key);
+bool hashtable_equals_ptr(const void *key, const void *other_key);
 
 /**
  * Hashtable equals function comparing char* keys.
@@ -74,7 +74,7 @@ bool hashtable_equals_ptr(void *key, void *other_key);
  * @param other_key            other key to compare
  * @return                             TRUE if streq(key, other_key)
  */
-bool hashtable_equals_str(void *key, void *other_key);
+bool hashtable_equals_str(const void *key, const void *other_key);
 
 /**
  * Class implementing a hash table.
@@ -100,7 +100,7 @@ struct hashtable_t {
         * @param value         the value to store
         * @return                      NULL if no item was replaced, the old value otherwise
         */
-       void *(*put) (hashtable_t *this, void *key, void *value);
+       void *(*put) (hashtable_t *this, const void *key, void *value);
 
        /**
         * Returns the value with the given key, if the hash table contains such an
@@ -109,7 +109,7 @@ struct hashtable_t {
         * @param key           the key of the requested value
         * @return                      the value, NULL if not found
         */
-       void *(*get) (hashtable_t *this, void *key);
+       void *(*get) (hashtable_t *this, const void *key);
 
        /**
         * Returns the value with a matching key, if the hash table contains such an
@@ -125,7 +125,8 @@ struct hashtable_t {
         * @param match         match function to be used when comparing keys
         * @return                      the value, NULL if not found
         */
-       void *(*get_match) (hashtable_t *this, void *key, hashtable_equals_t match);
+       void *(*get_match) (hashtable_t *this, const void *key,
+                                               hashtable_equals_t match);
 
        /**
         * Removes the value with the given key from the hash table and returns the
@@ -134,7 +135,7 @@ struct hashtable_t {
         * @param key           the key of the value to remove
         * @return                      the removed value, NULL if not found
         */
-       void *(*remove) (hashtable_t *this, void *key);
+       void *(*remove) (hashtable_t *this, const void *key);
 
        /**
         * Removes the key and value pair from the hash table at which the given