template class CCL::HashTable

#include <hashtable.h>

template <class T, class TList = LinkedList <T>>
class HashTable
{
public:
    // typedefs

    typedef int  (*HashFunc)(
        const T &data,
        int size
        );

    // construction

    HashTable (int size, HashFunc hashFunc = hashInt);
    HashTable (const HashTable <T, TList>& other);
    HashTable (HashTable <T, TList>&& other);

    // methods

    HashTable <T, TList>& operator = (const HashTable <T, TList>& other);
    void add (T data);
    bool remove (T data);
    void removeAll ();
    bool isEmpty () const;
    int count () const;
    const T& lookup (const T& data) const;
    bool contains (const T& data) const;
    int getSize () const;
    TList& getList (int index);
    const TList& getList (int index) const;
};