-struct WXDLLIMPEXP_BASE wxHashTableHash
-{
- wxHashTableHash() { }
- wxHashTableHash( wxKeyType keyType ) : m_keyType( keyType ) { }
-
- wxKeyType m_keyType;
-
- unsigned long operator ()( const wxHashKeyValue& k ) const
- {
- if( m_keyType == wxKEY_STRING )
- return wxStringHash::wxCharStringHash( k.string );
- else
- return (unsigned long)k.integer;
- }
-};
-
-struct WXDLLIMPEXP_BASE wxHashTableEqual
-{
- wxHashTableEqual() { }
- wxHashTableEqual( wxKeyType keyType ) : m_keyType( keyType ) { }
-
- wxKeyType m_keyType;
-
- bool operator ()( const wxHashKeyValue& k1, const wxHashKeyValue& k2 ) const
- {
- if( m_keyType == wxKEY_STRING )
- return wxStrcmp( k1.string, k2.string ) == 0;
- else
- return k1.integer == k2.integer;
- }
-};
-
-WX_DECLARE_EXPORTED_HASH_MAP( wxHashKeyValue,
- void*,
- wxHashTableHash,
- wxHashTableEqual,
- wxHashTableBaseBaseBase );
-
-// hack: we should really have HASH_MULTI(MAP|SET), but this requires
-// less work
-
-class WXDLLIMPEXP_BASE wxHashTableBaseBase : public wxHashTableBaseBaseBase
-{
-public:
- wxHashTableBaseBase(size_t size, const wxHashTableHash& hash,
- const wxHashTableEqual& equal)
- : wxHashTableBaseBaseBase(size, hash, equal)
- { }
-
- void multi_insert(const wxHashKeyValue& key, void* value)
- {
- CreateNodeLast(value_type(key, value));
- }
-};
+// for some compilers (AIX xlC), defining it as friend inside the class is not
+// enough, so provide a real forward declaration
+class WXDLLIMPEXP_BASE wxHashTableBase;