//
// Abstract base class for hash table functions: General interface for all hash tables
// William Garrison 11/21/98
//

#ifndef __HashTable__h
#define __HashTable__h

#include                 // They all need this
#define frac(x) ((x) - floor(x))

// Types for objects and key
typedef void * Object;           // All hash tables contain Objects
typedef int    Key;              // Hash table keys are ints

// General conveniences
#ifndef TRUE
  #define TRUE  1
  #define FALSE 0
#endif

//
// class HashTable
//
class HashTable {
public:
  virtual void   Insert(Key key, Object data) = 0;  // Insert Object 
  virtual Object Search(Key key) = 0;               // Find Object
  virtual void   PrintStats() = 0;                  // Print statistical information about run
};

#endif // ifdef __HashTable__h