]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/hash.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxHashTable 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  13     Please note that this class is retained for backward compatibility 
  14     reasons; you should use wxHashMap. 
  16     This class provides hash table functionality for wxWidgets, and for an 
  17     application if it wishes.  Data can be hashed on an integer or string key. 
  21         wxHashTable table(wxKEY_STRING); 
  23         wxPoint *point = new wxPoint(100, 200); 
  24         table.Put("point 1", point); 
  28         wxPoint *found_point = (wxPoint *)table.Get("point 1"); 
  31     A hash table is implemented as an array of pointers to lists. 
  32     When no data has been stored, the hash table takes only a little more space 
  33     than this array (default size is 1000). When a data item is added, an integer 
  34     is constructed from the integer or string key that is within the bounds of the array. 
  35     If the array element is @NULL, a new (keyed) list is created for the element. 
  36     Then the data object is appended to the list, storing the key in case other 
  37     data objects need to be stored in the list also (when a 'collision' occurs). 
  39     Retrieval involves recalculating the array index from the key, and searching 
  40     along the keyed list for the data object whose stored key matches the passed key. 
  41     Obviously this is quicker when there are fewer collisions, so hashing will 
  42     become inefficient if the number of items to be stored greatly exceeds the 
  43     size of the hash table. 
  50 class wxHashTable 
: public wxObject
 
  54         Constructor. @a key_type is one of wxKEY_INTEGER, or wxKEY_STRING, 
  55         and indicates what sort of keying is required. @a size is optional. 
  57     wxHashTable(wxKeyType key_type 
= wxKEY_INTEGER
, size_t size 
= 1000); 
  60         Destroys the hash table. 
  62     virtual ~wxHashTable(); 
  65         The counterpart of Next().  If the application wishes to iterate 
  66         through all the data in the hash table, it can call BeginFind() and 
  72         Clears the hash table of all nodes (but as usual, doesn't delete user data). 
  78         Deletes entry in hash table and returns the user's data (if found). 
  80     wxObject
* Delete(long key
); 
  81     wxObject
* Delete(const wxString
& key
); 
  85         If set to @true data stored in hash table will be deleted when hash table 
  88     void DeleteContents(bool flag
); 
  92         Gets data from the hash table, using an integer or string key 
  93         (depending on which has table constructor was used). 
  95     wxObject
* Get(long key
); 
  96     wxObject
* Get(const char* key
); 
 100         Returns the number of elements in the hash table. 
 102     size_t GetCount() const; 
 105         Makes an integer key out of a string. An application may wish to make a key 
 106         explicitly (for instance when combining two data values to form a key). 
 108     static long MakeKey(const wxString
& string
); 
 111         If the application wishes to iterate through all the data in the hash 
 112         table, it can call BeginFind() and then loop on Next(). This function 
 113         returns a @b wxHashTable::Node pointer (or @NULL if there are no more nodes). 
 115         The return value is functionally equivalent to @b wxNode but might not be 
 116         implemented as a @b wxNode. The user will probably only wish to use the 
 117         wxNode::GetData() method to retrieve the data; the node may also be deleted. 
 119     wxHashTable::Node
* Next(); 
 123         Inserts data into the hash table, using an integer or string key (depending on 
 124         which has table constructor was used). 
 125         The key string is copied and stored by the hash table implementation. 
 127     void Put(long key
, wxObject
* object
); 
 128     void Put(const char* key
, wxObject
* object
);