Use "wxWindows licence" and not "wxWidgets licence" (the latter doesn't exist) and consistently spell "licence" using British spelling. See #12165. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			132 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        hash.h
 | |
| // Purpose:     interface of wxHashTable
 | |
| // Author:      wxWidgets team
 | |
| // RCS-ID:      $Id$
 | |
| // Licence:     wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| /**
 | |
|     @class wxHashTable
 | |
| 
 | |
|     @deprecated
 | |
|     Please note that this class is retained for backward compatibility
 | |
|     reasons; you should use wxHashMap.
 | |
| 
 | |
|     This class provides hash table functionality for wxWidgets, and for an
 | |
|     application if it wishes.  Data can be hashed on an integer or string key.
 | |
| 
 | |
|     Example:
 | |
|     @code
 | |
|         wxHashTable table(wxKEY_STRING);
 | |
| 
 | |
|         wxPoint *point = new wxPoint(100, 200);
 | |
|         table.Put("point 1", point);
 | |
| 
 | |
|         ....
 | |
| 
 | |
|         wxPoint *found_point = (wxPoint *)table.Get("point 1");
 | |
|     @endcode
 | |
| 
 | |
|     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.
 | |
| 
 | |
|     @library{wxbase}
 | |
|     @category{containers}
 | |
| 
 | |
|     @see wxList
 | |
| */
 | |
| class wxHashTable : public wxObject
 | |
| {
 | |
| public:
 | |
|     /**
 | |
|         Constructor. @a key_type is one of wxKEY_INTEGER, or wxKEY_STRING,
 | |
|         and indicates what sort of keying is required. @a size is optional.
 | |
|     */
 | |
|     wxHashTable(wxKeyType key_type = wxKEY_INTEGER, size_t size = 1000);
 | |
| 
 | |
|     /**
 | |
|         Destroys the hash table.
 | |
|     */
 | |
|     virtual ~wxHashTable();
 | |
| 
 | |
|     /**
 | |
|         The counterpart of Next().  If the application wishes to iterate
 | |
|         through all the data in the hash table, it can call BeginFind() and
 | |
|         then loop on Next().
 | |
|     */
 | |
|     void BeginFind();
 | |
| 
 | |
|     /**
 | |
|         Clears the hash table of all nodes (but as usual, doesn't delete user data).
 | |
|     */
 | |
|     void Clear();
 | |
| 
 | |
|     //@{
 | |
|     /**
 | |
|         Deletes entry in hash table and returns the user's data (if found).
 | |
|     */
 | |
|     wxObject* Delete(long key);
 | |
|     wxObject* Delete(const wxString& key);
 | |
|     //@}
 | |
| 
 | |
|     /**
 | |
|         If set to @true data stored in hash table will be deleted when hash table
 | |
|         object is destroyed.
 | |
|     */
 | |
|     void DeleteContents(bool flag);
 | |
| 
 | |
|     //@{
 | |
|     /**
 | |
|         Gets data from the hash table, using an integer or string key
 | |
|         (depending on which has table constructor was used).
 | |
|     */
 | |
|     wxObject* Get(long key);
 | |
|     wxObject* Get(const char* key);
 | |
|     //@}
 | |
| 
 | |
|     /**
 | |
|         Returns the number of elements in the hash table.
 | |
|     */
 | |
|     size_t GetCount() const;
 | |
| 
 | |
|     /**
 | |
|         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).
 | |
|     */
 | |
|     static long MakeKey(const wxString& string);
 | |
| 
 | |
|     /**
 | |
|         If the application wishes to iterate through all the data in the hash
 | |
|         table, it can call BeginFind() and then loop on Next(). This function
 | |
|         returns a @b wxHashTable::Node pointer (or @NULL if there are no more nodes).
 | |
| 
 | |
|         The return value is functionally equivalent to @b wxNode but might not be
 | |
|         implemented as a @b wxNode. The user will probably only wish to use the
 | |
|         wxNode::GetData() method to retrieve the data; the node may also be deleted.
 | |
|     */
 | |
|     wxHashTable::Node* Next();
 | |
| 
 | |
|     //@{
 | |
|     /**
 | |
|         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.
 | |
|     */
 | |
|     void Put(long key, wxObject* object);
 | |
|     void Put(const char* key, wxObject* object);
 | |
|     //@}
 | |
| };
 | |
| 
 |