*********************
VDKHashTable<K,D> template class
********************

DESCRIPTION
-----------
VDKHashTable is a simple hash table for use with VDK.  It is implemented using
GLib's GHashTable.  Some features are unimplemented at present.  See
http://www.gtk.org/rdp/glib/glib-hash-tables.html for the original GLib
documentation.

VDKHashTable is a template class parameterised with two types: the first is the
type of the key and the second is the type of the data to be used.

VDKHashTable uses reference semantics.  All contained objects are pointers to
the original values.  It does not store copies of the key or data values.

Note that the template parameters are stored as _pointers_, and the parameters
to the Insert(), Remove(), and Lookup() methods are pointers.  Thus, a
declaration like:
	typedef VDKHashTable<char,VDKObject> ObjectTable;
would use 'char' keys and 'VDKObject' data items.  See the test code for an
example.

All items in the table must be destroyed separately from the table.  If the
table is destroyed and other references to the key and data values are not
kept, they will be lost, causing memory leaks.

QUERY:	Does VDK garbage collection take care of this?


PUBLIC MEMBERS
--------------
None


PROPERTIES
----------
None


METHODS
-------

-   VDKHashTable( GHashFunc hash_func = NULL,
	GCompareFunc key_compare_func = NULL )
    Create an empty hash table using the supplied GLib hash and comparison
    functions.  A value of NULL (the default) for either function causes GLib
    to choose its default implementation.

-   ~VDKHashTable()
    Destroy the hash table

-   virtual void Insert( KEY *key, DATA *data )
    Insert a (key,data) pair into the hash table

-   virtual void Remove( const KEY *key )
    Remove the (key,data) pair with the matching key

-   virtual DATA *Lookup( const KEY *key )
    Find the data associated with the given key

-   virtual guint GetSize()
    Return the number of (key,data) pairs in the table

-   virtual void Freeze()
    Disable resizing of the hash table.  The GLib documentation is unclear
    as to how large numbers of inserts are handled when the hash table is
    frozen.

-   virtual void Thaw()
    Enable resizing of the hash table


UNIMPLEMENTED METHODS (from GHashTable)
---------------------------------------

g_hash_table_lookup_extended
g_hash_table_foreach
g_hash_table_foreach_remove

