+#ifndef HASHTABLE_INCLUDED
+#define HASHTABLE_INCLUDED
+
/*************************************************************************//**
*
* Copyright © 2017 AT&T Intellectual Property. All rights reserved.
*
****************************************************************************/
-#ifndef HASHTABLE_INCLUDED
-#define HASHTABLE_INCLUDED
-
/**************************************************************************//**
* @file
* A simple hashtable.
*
* @note No thread protection so you will need to use appropriate
* synchronization if use spans multiple threads.
- *
- ****************************************************************************/
+*****************************************************************************/
typedef struct entry_s {
char *key;
struct entry_s **table;
} HASHTABLE_T;
+/**************************************************************************//**
+ * Hashtable initialization.
+ *
+ * Initialize the list supplied to be empty.
+ *
+ * @param size Size of hashtable
+
+ * @returns Hashtable pointer
+******************************************************************************/
+/* Create a new hashtable. */
+HASHTABLE_T *ht_create( size_t size );
+
+/**************************************************************************//**
+ * Hash a string for a particular hash table.
+ *
+ * Initialize the list supplied to be empty.
+ *
+ * @param hashtable Pointer to the hashtable
+ * @param key String
+
+ * @returns hashvalue
+******************************************************************************/
+size_t ht_hash( HASHTABLE_T *hashtable, char *key );
+
+/**************************************************************************//**
+ * Create a key-value pair.
+ *
+ * @param key key string
+ * @param value value string
+ *
+ * @returns hashtable entry
+******************************************************************************/
+ENTRY_T *ht_newpair( char *key, void *value );
+
+/**************************************************************************//**
+ * Insert a key-value pair into a hash table.
+ *
+ * @param key key string
+ * @param value value string
+ *
+ * @returns Nothing
+******************************************************************************/
+void ht_set( HASHTABLE_T *hashtable, char *key, void *value );
+
+/**************************************************************************//**
+ * Retrieve a key-value pair from a hash table.
+ *
+ * @param key key string
+ *
+ * @returns value string
+******************************************************************************/
+void *ht_get( HASHTABLE_T *hashtable, char *key );
+
#endif