#include <stdlib.h>
#include <stdio.h>
+#include "mymemory.h"
/**
* Hashtable linked node class, for chained storage of hash table conflicts. By
* @tparam _free Provide your own 'free' for the table, or default to
* snapshotting.
*/
-template<typename _Key, typename _Val, typename _KeyInt, int _Shift=0, void * (* _malloc)(size_t)=malloc, void * (* _calloc)(size_t, size_t)=calloc, void (*_free)(void *)=free>
+template<typename _Key, typename _Val, typename _KeyInt, int _Shift=0, void * (* _malloc)(size_t)=snapshot_malloc, void * (* _calloc)(size_t, size_t)=snapshot_calloc, void (*_free)(void *)=snapshot_free>
class HashTable {
public:
/**
size++;
}
- /** Put a key entry into the table. */
+ /**
+ * @brief Get a valid pointer to a value corresponding to a given key
+ *
+ * Ensure that key is present in the hash table, then return a pointer
+ * to its value bin. This may require either creating a new bin for
+ * this key (with a default-constructed value) or simply locating and
+ * returning a pointer to an existing value.
+ * @param key The key to check
+ * @return A pointer to the value in the table
+ */
_Val * get_safe_ptr(_Key key) {
if (size > threshold)
resize(capacity << 1);