X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/edef87c8274bd4cadcccc4ff107aeb1815e48460..78fd3d12bc0f956d755a70564305863531010c34:/include/wx/hashset.h diff --git a/include/wx/hashset.h b/include/wx/hashset.h index 9c96e5e9e2..542b522c44 100644 --- a/include/wx/hashset.h +++ b/include/wx/hashset.h @@ -14,7 +14,25 @@ #include "wx/hashmap.h" -#if wxUSE_STL && defined(HAVE_STL_HASH_MAP) +// see comment in wx/hashmap.h which also applies to different standard hash +// set classes + +#if wxUSE_STL && \ + (defined(HAVE_STD_UNORDERED_SET) || defined(HAVE_TR1_UNORDERED_SET)) + +#if defined(HAVE_STD_UNORDERED_SET) + #include + #define _WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME, CLASSEXP )\ + typedef std::unordered_set< KEY_T, HASH_T, KEY_EQ_T > CLASSNAME +#elif defined(HAVE_TR1_UNORDERED_SET) + #include + #define _WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME, CLASSEXP )\ + typedef std::tr1::unordered_set< KEY_T, HASH_T, KEY_EQ_T > CLASSNAME +#else +#error Update this code: unordered_set is available, but I do not know where. +#endif + +#elif wxUSE_STL && defined(HAVE_STL_HASH_MAP) #if defined(HAVE_EXT_HASH_MAP) #include @@ -23,7 +41,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) @@ -83,7 +101,7 @@ public: \ /* count() == 0 | 1 */ \ size_type count( const const_key_type& key ) \ { return GetNode( key ) ? 1 : 0; } \ -}; +} #endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP) @@ -98,7 +116,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 // @@ -107,6 +125,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_