X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bdcade0a101893a5030ac2e91dabc79e1388b0a3..09b895cb4a954494063eb17d3dc302a654fd99e5:/include/wx/hashset.h diff --git a/include/wx/hashset.h b/include/wx/hashset.h index 3cc80a8f5d..1be24e907b 100644 --- a/include/wx/hashset.h +++ b/include/wx/hashset.h @@ -23,7 +23,7 @@ #endif #define _WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME, CLASSEXP )\ - typedef WX_HASH_MAP_NAMESPACE::hash_set< KEY_T, HASH_T, KEY_EQ_T > CLASSNAME; + typedef WX_HASH_MAP_NAMESPACE::hash_set< KEY_T, HASH_T, KEY_EQ_T > CLASSNAME #else // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP) @@ -51,14 +51,18 @@ _WX_DECLARE_HASHTABLE( KEY_T, KEY_T, HASH_T, CLASSNAME##_wxImplementation_KeyEx, CLASSEXP CLASSNAME:public CLASSNAME##_wxImplementation_HashTable \ { \ public: \ + _WX_DECLARE_PAIR( iterator, bool, Insert_Result, CLASSEXP ) \ + \ wxEXPLICIT CLASSNAME( size_type hint = 100, hasher hf = hasher(), \ key_equal eq = key_equal() ) \ : CLASSNAME##_wxImplementation_HashTable( hint, hf, eq, \ CLASSNAME##_wxImplementation_KeyEx() ) {} \ \ - void insert( const key_type& key ) \ + Insert_Result insert( const key_type& key ) \ { \ - GetOrCreateNode( key ); \ + bool created; \ + Node *node = GetOrCreateNode( key, created ); \ + return Insert_Result( iterator( node, this ), created ); \ } \ \ const_iterator find( const const_key_type& key ) const \ @@ -94,7 +98,7 @@ public: \ #define WX_DECLARE_EXPORTED_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME) \ WX_DECLARE_HASH_SET_WITH_DECL( KEY_T, HASH_T, KEY_EQ_T, \ - CLASSNAME, class WXDLLEXPORT ) + CLASSNAME, class WXDLLIMPEXP_CORE ) // delete all hash elements // @@ -103,6 +107,11 @@ public: \ // be called (a decent compiler should give a warning about it, but don't // count on it)! #define WX_CLEAR_HASH_SET(type, hashset) \ - WX_CLEAR_HASH_MAP(type, hashset) + { \ + type::iterator it, en; \ + for( it = (hashset).begin(), en = (hashset).end(); it != en; ++it ) \ + delete *it; \ + (hashset).clear(); \ + } #endif // _WX_HASHSET_H_