When wxUSE_STL == 1 and STL provides quasi-standard hash_map/hash_set,
wxHashMap/wxHashSet are just typedefs for them. This makes impossible to forward declare these classes. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27182 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -23,12 +23,14 @@
|
||||
#if wxUSE_FILESYSTEM && wxUSE_FS_ZIP && wxUSE_STREAMS
|
||||
|
||||
#include "wx/filesys.h"
|
||||
#include "wx/hashmap.h"
|
||||
|
||||
class WXDLLIMPEXP_BASE wxLongToLongHashMap;
|
||||
WX_DECLARE_HASH_MAP_WITH_DECL( long, long, wxIntegerHash, wxIntegerEqual,
|
||||
wxLongToLongHashMap, class WXDLLIMPEXP_BASE );
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
// wxZipFSHandler
|
||||
//--------------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_BASE wxZipFSHandler : public wxFileSystemHandler
|
||||
{
|
||||
|
@@ -24,6 +24,7 @@
|
||||
#include "wx/list.h"
|
||||
#include "wx/string.h"
|
||||
#include "wx/fontenc.h"
|
||||
#include "wx/hashmap.h"
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// forward declarations
|
||||
@@ -439,7 +440,7 @@ public:
|
||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||
};
|
||||
|
||||
class WXDLLEXPORT wxStringToColourHashMap;
|
||||
WX_DECLARE_STRING_HASH_MAP( wxColour *, wxStringToColourHashMap );
|
||||
|
||||
class WXDLLEXPORT wxColourDatabase
|
||||
{
|
||||
|
@@ -18,6 +18,30 @@
|
||||
|
||||
#include "wx/string.h"
|
||||
|
||||
#if (defined(HAVE_EXT_HASH_MAP) || defined(HAVE_HASH_MAP)) \
|
||||
&& (defined(HAVE_GNU_CXX_HASH_MAP) || defined(HAVE_STD_HASH_MAP))
|
||||
#define HAVE_STL_HASH_MAP
|
||||
#endif
|
||||
|
||||
#if wxUSE_STL && defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
#if defined(HAVE_EXT_HASH_MAP)
|
||||
#include <ext/hash_map>
|
||||
#elif defined(HAVE_HASH_MAP)
|
||||
#include <hash_map>
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_GNU_CXX_HASH_MAP)
|
||||
#define WX_HASH_MAP_NAMESPACE __gnu_cxx
|
||||
#elif defined(HAVE_STD_HASH_MAP)
|
||||
#define WX_HASH_MAP_NAMESPACE std
|
||||
#endif
|
||||
|
||||
#define _WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME, CLASSEXP ) \
|
||||
typedef WX_HASH_MAP_NAMESPACE::hash_map< KEY_T, VALUE_T, HASH_T, KEY_EQ_T > CLASSNAME;
|
||||
|
||||
#else // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
#include <stddef.h> // for ptrdiff_t
|
||||
|
||||
#ifdef __WXWINCE__
|
||||
@@ -408,6 +432,8 @@ inline bool grow_lf70( size_t buckets, size_t items )
|
||||
return float(items)/float(buckets) >= 0.85;
|
||||
}
|
||||
|
||||
#endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// hashing and comparison functors
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -416,6 +442,31 @@ inline bool grow_lf70( size_t buckets, size_t items )
|
||||
// operators to suppress warnings about "statement with no effect" from gcc
|
||||
// in the hash table class assignment operator (where they're assigned)
|
||||
|
||||
#if wxUSE_STL && defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
// integer types
|
||||
class WXDLLIMPEXP_BASE wxIntegerHash
|
||||
{
|
||||
WX_HASH_MAP_NAMESPACE::hash<long> longHash;
|
||||
WX_HASH_MAP_NAMESPACE::hash<unsigned long> ulongHash;
|
||||
WX_HASH_MAP_NAMESPACE::hash<int> intHash;
|
||||
WX_HASH_MAP_NAMESPACE::hash<unsigned int> uintHash;
|
||||
WX_HASH_MAP_NAMESPACE::hash<short> shortHash;
|
||||
WX_HASH_MAP_NAMESPACE::hash<unsigned short> ushortHash;
|
||||
public:
|
||||
wxIntegerHash() { }
|
||||
size_t operator()( long x ) const { return longHash( x ); }
|
||||
size_t operator()( unsigned long x ) const { return ulongHash( x ); }
|
||||
size_t operator()( int x ) const { return intHash( x ); }
|
||||
size_t operator()( unsigned int x ) const { return uintHash( x ); }
|
||||
size_t operator()( short x ) const { return shortHash( x ); }
|
||||
size_t operator()( unsigned short x ) const { return ushortHash( x ); }
|
||||
|
||||
wxIntegerHash& operator=(const wxIntegerHash&) { return *this; }
|
||||
};
|
||||
|
||||
#else // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
// integer types
|
||||
class WXDLLIMPEXP_BASE wxIntegerHash
|
||||
{
|
||||
@@ -431,6 +482,8 @@ public:
|
||||
wxIntegerHash& operator=(const wxIntegerHash&) { return *this; }
|
||||
};
|
||||
|
||||
#endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
class WXDLLIMPEXP_BASE wxIntegerEqual
|
||||
{
|
||||
public:
|
||||
@@ -453,7 +506,11 @@ public:
|
||||
|
||||
// TODO: this might not work well on architectures with 64 bit pointers but
|
||||
// 32 bit longs, we should use % ULONG_MAX there
|
||||
#if wxUSE_STL && defined(HAVE_STL_HASH_MAP)
|
||||
size_t operator()( const void* k ) const { return (size_t)k; }
|
||||
#else
|
||||
unsigned long operator()( const void* k ) const { return (unsigned long)wxPtrToULong(k); }
|
||||
#endif
|
||||
|
||||
wxPointerHash& operator=(const wxPointerHash&) { return *this; }
|
||||
};
|
||||
@@ -502,6 +559,8 @@ public:
|
||||
wxStringEqual& operator=(const wxStringEqual&) { return *this; }
|
||||
};
|
||||
|
||||
#if !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
#define _WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME, CLASSEXP ) \
|
||||
_WX_DECLARE_PAIR( KEY_T, VALUE_T, CLASSNAME##_wxImplementation_Pair, CLASSEXP ) \
|
||||
_WX_DECLARE_HASH_MAP_KEY_EX( KEY_T, CLASSNAME##_wxImplementation_Pair, CLASSNAME##_wxImplementation_KeyEx, CLASSEXP ) \
|
||||
@@ -543,6 +602,8 @@ public: \
|
||||
{ return GetNode( key ) ? 1 : 0; } \
|
||||
}
|
||||
|
||||
#endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
// these macros are to be used in the user code
|
||||
#define WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME) \
|
||||
_WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME, class )
|
||||
|
@@ -14,6 +14,19 @@
|
||||
|
||||
#include "wx/hashmap.h"
|
||||
|
||||
#if wxUSE_STL && defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
#if defined(HAVE_EXT_HASH_MAP)
|
||||
#include <ext/hash_set>
|
||||
#elif defined(HAVE_HASH_MAP)
|
||||
#include <hash_set>
|
||||
#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;
|
||||
|
||||
#else // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
// this is a complex way of defining an easily inlineable identity function...
|
||||
#define _WX_DECLARE_HASH_SET_KEY_EX( KEY_T, CLASSNAME, CLASSEXP ) \
|
||||
CLASSEXP CLASSNAME \
|
||||
@@ -68,6 +81,8 @@ public: \
|
||||
{ return GetNode( key ) ? 1 : 0; } \
|
||||
}
|
||||
|
||||
#endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||
|
||||
// these macros are to be used in the user code
|
||||
#define WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME) \
|
||||
_WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME, class )
|
||||
|
@@ -21,6 +21,7 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "wx/event.h"
|
||||
#include "wx/hashmap.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// forward declarations
|
||||
@@ -33,12 +34,14 @@ class WXDLLEXPORT wxKeyEvent;
|
||||
class WXDLLEXPORT wxLog;
|
||||
class WXDLLEXPORT wxEventLoop;
|
||||
class WXDLLEXPORT wxXVisualInfo;
|
||||
class wxPerDisplayDataMap;
|
||||
class WXDLLEXPORT wxPerDisplayData;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// the wxApp class for Motif - see wxAppBase for more details
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
WX_DECLARE_VOIDPTR_HASH_MAP( wxPerDisplayData*, wxPerDisplayDataMap );
|
||||
|
||||
class WXDLLEXPORT wxApp : public wxAppBase
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxApp)
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include "wx/event.h"
|
||||
#include "wx/cmndata.h"
|
||||
#include "wx/intl.h"
|
||||
#include "wx/hashmap.h"
|
||||
|
||||
/*
|
||||
* Paper type: see defs.h for wxPaperSize enum.
|
||||
@@ -69,7 +70,8 @@ private:
|
||||
DECLARE_DYNAMIC_CLASS(wxPrintPaperType)
|
||||
};
|
||||
|
||||
class WXDLLEXPORT wxStringToPrintPaperTypeHashMap;
|
||||
WX_DECLARE_STRING_HASH_MAP(wxPrintPaperType*, wxStringToPrintPaperTypeHashMap);
|
||||
|
||||
class WXDLLEXPORT wxPrintPaperTypeList;
|
||||
|
||||
class WXDLLEXPORT wxPrintPaperDatabase
|
||||
|
@@ -52,13 +52,15 @@ protected:
|
||||
};
|
||||
|
||||
typedef wxStringToStringHashMap::iterator wxHeaderIterator;
|
||||
typedef wxStringToStringHashMap::const_iterator wxHeaderConstIterator;
|
||||
|
||||
bool BuildRequest(const wxString& path, wxHTTP_Req req);
|
||||
void SendHeaders();
|
||||
bool ParseHeaders();
|
||||
|
||||
// find the header in m_headers
|
||||
wxHeaderIterator FindHeader(const wxString& header) const;
|
||||
wxHeaderIterator FindHeader(const wxString& header);
|
||||
wxHeaderConstIterator FindHeader(const wxString& header) const;
|
||||
|
||||
// deletes the header value strings
|
||||
void ClearHeaders();
|
||||
|
Reference in New Issue
Block a user