1998-05-20 10:25:30 -04:00
|
|
|
\section{\class{wxHashTable}}\label{wxhashtable}
|
|
|
|
|
|
|
|
This class provides hash table functionality for wxWindows, and for an
|
|
|
|
application if it wishes. Data can be hashed on an integer or string
|
|
|
|
key.
|
|
|
|
|
|
|
|
\wxheading{Derived from}
|
|
|
|
|
|
|
|
\helpref{wxObject}{wxobject}
|
|
|
|
|
1999-02-15 15:41:29 -05:00
|
|
|
\wxheading{Include files}
|
|
|
|
|
|
|
|
<wx/hash.h>
|
|
|
|
|
1998-05-20 10:25:30 -04:00
|
|
|
\wxheading{Example}
|
|
|
|
|
|
|
|
Below is an example of using a hash table.
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
wxHashTable table(KEY_STRING);
|
|
|
|
|
|
|
|
wxPoint *point = new wxPoint(100, 200);
|
|
|
|
table.Put("point 1", point);
|
|
|
|
|
|
|
|
....
|
|
|
|
|
|
|
|
wxPoint *found_point = (wxPoint *)table.Get("point 1");
|
|
|
|
\end{verbatim}
|
|
|
|
|
|
|
|
A hash table is implemented as an array of pointers to lists. When no
|
|
|
|
data has been stored, the hash table takes only a little more space than
|
|
|
|
this array (default size is 1000). When a data item is added, an
|
|
|
|
integer is constructed from the integer or string key that is within the
|
|
|
|
bounds of the array. If the array element is NULL, a new (keyed) list is
|
|
|
|
created for the element. Then the data object is appended to the list,
|
|
|
|
storing the key in case other data objects need to be stored in the list
|
|
|
|
also (when a `collision' occurs).
|
|
|
|
|
|
|
|
Retrieval involves recalculating the array index from the key, and searching
|
|
|
|
along the keyed list for the data object whose stored key matches the passed
|
|
|
|
key. Obviously this is quicker when there are fewer collisions, so hashing
|
|
|
|
will become inefficient if the number of items to be stored greatly exceeds
|
|
|
|
the size of the hash table.
|
|
|
|
|
|
|
|
\wxheading{See also}
|
|
|
|
|
|
|
|
\helpref{wxList}{wxlist}
|
|
|
|
|
|
|
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
|
|
|
|
|
|
|
\membersection{wxHashTable::wxHashTable}
|
|
|
|
|
|
|
|
\func{}{wxHashTable}{\param{unsigned int}{ key\_type}, \param{int}{ size = 1000}}
|
|
|
|
|
|
|
|
Constructor. {\it key\_type} is one of wxKEY\_INTEGER, or wxKEY\_STRING,
|
|
|
|
and indicates what sort of keying is required. {\it size} is optional.
|
|
|
|
|
|
|
|
\membersection{wxHashTable::\destruct{wxHashTable}}
|
|
|
|
|
|
|
|
\func{}{\destruct{wxHashTable}}{\void}
|
|
|
|
|
|
|
|
Destroys the hash table.
|
|
|
|
|
|
|
|
\membersection{wxHashTable::BeginFind}
|
|
|
|
|
|
|
|
\func{void}{BeginFind}{\void}
|
|
|
|
|
|
|
|
The counterpart of {\it Next}. If the application wishes to iterate
|
|
|
|
through all the data in the hash table, it can call {\it BeginFind} and
|
|
|
|
then loop on {\it Next}.
|
|
|
|
|
|
|
|
\membersection{wxHashTable::Clear}
|
|
|
|
|
|
|
|
\func{void}{Clear}{\void}
|
|
|
|
|
|
|
|
Clears the hash table of all nodes (but as usual, doesn't delete user data).
|
|
|
|
|
|
|
|
\membersection{wxHashTable::Delete}
|
|
|
|
|
|
|
|
\func{wxObject *}{Delete}{\param{long}{ key}}
|
|
|
|
|
|
|
|
\func{wxObject *}{Delete}{\param{const wxString\& }{ key}}
|
|
|
|
|
|
|
|
Deletes entry in hash table and returns the user's data (if found).
|
|
|
|
|
|
|
|
\membersection{wxHashTable::Get}
|
|
|
|
|
|
|
|
\func{wxObject *}{Get}{\param{long}{ key}}
|
|
|
|
|
|
|
|
\func{wxObject *}{Get}{\param{const wxString\& }{ key}}
|
|
|
|
|
|
|
|
Gets data from the hash table, using an integer or string key (depending on which
|
|
|
|
has table constructor was used).
|
|
|
|
|
|
|
|
\membersection{wxHashTable::MakeKey}
|
|
|
|
|
|
|
|
\func{long}{MakeKey}{\param{const wxString\& }{string}}
|
|
|
|
|
|
|
|
Makes an integer key out of a string. An application may wish to make a key
|
|
|
|
explicitly (for instance when combining two data values to form a key).
|
|
|
|
|
|
|
|
\membersection{wxHashTable::Next}
|
|
|
|
|
|
|
|
\func{wxNode *}{Next}{\void}
|
|
|
|
|
|
|
|
If the application wishes to iterate through all the data in the hash
|
|
|
|
table, it can call {\it BeginFind} and then loop on {\it Next}. This function
|
|
|
|
returns a {\bf wxNode} pointer (or NULL if there are no more nodes). See the
|
|
|
|
description for \helpref{wxNode}{wxnode}. The user will probably only wish to use the
|
|
|
|
{\bf wxNode::Data} function to retrieve the data; the node may also be deleted.
|
|
|
|
|
|
|
|
\membersection{wxHashTable::Put}
|
|
|
|
|
|
|
|
\func{void}{Put}{\param{long}{ key}, \param{wxObject *}{object}}
|
|
|
|
|
|
|
|
\func{void}{Put}{\param{const wxString\& }{ key}, \param{wxObject *}{object}}
|
|
|
|
|
|
|
|
Inserts data into the hash table, using an integer or string key (depending on which
|
|
|
|
has table constructor was used). The key string is copied and stored by the hash
|
|
|
|
table implementation.
|
|
|
|
|
|
|
|
|