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:
25
configure.in
25
configure.in
@@ -1800,6 +1800,31 @@ if test "$wxUSE_STL" = "yes"; then
|
|||||||
AC_DEFINE(HAVE_STD_STRING_COMPARE)],
|
AC_DEFINE(HAVE_STD_STRING_COMPARE)],
|
||||||
[AC_MSG_RESULT(no)])
|
[AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
dnl check for hash_map and hash_set headers
|
||||||
|
AC_CHECK_HEADER([hash_map],
|
||||||
|
[AC_MSG_CHECKING([for hash_map and hash_set])
|
||||||
|
AC_TRY_COMPILE([#include <hash_map>
|
||||||
|
#include <hash_set>],
|
||||||
|
[std::hash_map<double*, char*, std::hash<double*>, std::equal_to<double*> > test1;
|
||||||
|
std::hash_set<char*, std::hash<char*>, std::equal_to<char*> > test2;],
|
||||||
|
[AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_HASH_MAP)
|
||||||
|
AC_DEFINE(HAVE_STD_HASH_MAP)],
|
||||||
|
[AC_MSG_RESULT(no)])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_CHECK_HEADER([ext/hash_map],
|
||||||
|
[AC_MSG_CHECKING([for hash_map and hash_set])
|
||||||
|
AC_TRY_COMPILE([#include <ext/hash_map>
|
||||||
|
#include <ext/hash_set>],
|
||||||
|
[__gnu_cxx::hash_map<double*, char*, __gnu_cxx::hash<double*>, std::equal_to<double*> > test1;
|
||||||
|
__gnu_cxx::hash_set<char*, __gnu_cxx::hash<char*>, std::equal_to<char*> > test2;],
|
||||||
|
[AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_EXT_HASH_MAP)
|
||||||
|
AC_DEFINE(HAVE_GNU_CXX_HASH_MAP)],
|
||||||
|
[AC_MSG_RESULT(no)])
|
||||||
|
])
|
||||||
|
|
||||||
AC_LANG_POP
|
AC_LANG_POP
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@@ -103,6 +103,9 @@ All:
|
|||||||
- wxDynamicCast() now uses static_cast<wxObject *> internally and so using it
|
- wxDynamicCast() now uses static_cast<wxObject *> internally and so using it
|
||||||
with anything not deriving from wxObject will fail at compile time (instead
|
with anything not deriving from wxObject will fail at compile time (instead
|
||||||
of run-time) now
|
of run-time) now
|
||||||
|
- 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.
|
||||||
|
|
||||||
All (GUI):
|
All (GUI):
|
||||||
|
|
||||||
|
@@ -23,12 +23,14 @@
|
|||||||
#if wxUSE_FILESYSTEM && wxUSE_FS_ZIP && wxUSE_STREAMS
|
#if wxUSE_FILESYSTEM && wxUSE_FS_ZIP && wxUSE_STREAMS
|
||||||
|
|
||||||
#include "wx/filesys.h"
|
#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
|
// wxZipFSHandler
|
||||||
//--------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLIMPEXP_BASE wxZipFSHandler : public wxFileSystemHandler
|
class WXDLLIMPEXP_BASE wxZipFSHandler : public wxFileSystemHandler
|
||||||
{
|
{
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "wx/list.h"
|
#include "wx/list.h"
|
||||||
#include "wx/string.h"
|
#include "wx/string.h"
|
||||||
#include "wx/fontenc.h"
|
#include "wx/fontenc.h"
|
||||||
|
#include "wx/hashmap.h"
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// forward declarations
|
// forward declarations
|
||||||
@@ -439,7 +440,7 @@ public:
|
|||||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||||
};
|
};
|
||||||
|
|
||||||
class WXDLLEXPORT wxStringToColourHashMap;
|
WX_DECLARE_STRING_HASH_MAP( wxColour *, wxStringToColourHashMap );
|
||||||
|
|
||||||
class WXDLLEXPORT wxColourDatabase
|
class WXDLLEXPORT wxColourDatabase
|
||||||
{
|
{
|
||||||
|
@@ -18,6 +18,30 @@
|
|||||||
|
|
||||||
#include "wx/string.h"
|
#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
|
#include <stddef.h> // for ptrdiff_t
|
||||||
|
|
||||||
#ifdef __WXWINCE__
|
#ifdef __WXWINCE__
|
||||||
@@ -408,6 +432,8 @@ inline bool grow_lf70( size_t buckets, size_t items )
|
|||||||
return float(items)/float(buckets) >= 0.85;
|
return float(items)/float(buckets) >= 0.85;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// hashing and comparison functors
|
// 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
|
// operators to suppress warnings about "statement with no effect" from gcc
|
||||||
// in the hash table class assignment operator (where they're assigned)
|
// 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
|
// integer types
|
||||||
class WXDLLIMPEXP_BASE wxIntegerHash
|
class WXDLLIMPEXP_BASE wxIntegerHash
|
||||||
{
|
{
|
||||||
@@ -431,6 +482,8 @@ public:
|
|||||||
wxIntegerHash& operator=(const wxIntegerHash&) { return *this; }
|
wxIntegerHash& operator=(const wxIntegerHash&) { return *this; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||||
|
|
||||||
class WXDLLIMPEXP_BASE wxIntegerEqual
|
class WXDLLIMPEXP_BASE wxIntegerEqual
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -453,7 +506,11 @@ public:
|
|||||||
|
|
||||||
// TODO: this might not work well on architectures with 64 bit pointers but
|
// TODO: this might not work well on architectures with 64 bit pointers but
|
||||||
// 32 bit longs, we should use % ULONG_MAX there
|
// 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); }
|
unsigned long operator()( const void* k ) const { return (unsigned long)wxPtrToULong(k); }
|
||||||
|
#endif
|
||||||
|
|
||||||
wxPointerHash& operator=(const wxPointerHash&) { return *this; }
|
wxPointerHash& operator=(const wxPointerHash&) { return *this; }
|
||||||
};
|
};
|
||||||
@@ -502,6 +559,8 @@ public:
|
|||||||
wxStringEqual& operator=(const wxStringEqual&) { return *this; }
|
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 ) \
|
#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_PAIR( KEY_T, VALUE_T, CLASSNAME##_wxImplementation_Pair, CLASSEXP ) \
|
||||||
_WX_DECLARE_HASH_MAP_KEY_EX( KEY_T, CLASSNAME##_wxImplementation_Pair, CLASSNAME##_wxImplementation_KeyEx, 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; } \
|
{ return GetNode( key ) ? 1 : 0; } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||||
|
|
||||||
// these macros are to be used in the user code
|
// 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) \
|
#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 )
|
_WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME, class )
|
||||||
|
@@ -14,6 +14,19 @@
|
|||||||
|
|
||||||
#include "wx/hashmap.h"
|
#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...
|
// this is a complex way of defining an easily inlineable identity function...
|
||||||
#define _WX_DECLARE_HASH_SET_KEY_EX( KEY_T, CLASSNAME, CLASSEXP ) \
|
#define _WX_DECLARE_HASH_SET_KEY_EX( KEY_T, CLASSNAME, CLASSEXP ) \
|
||||||
CLASSEXP CLASSNAME \
|
CLASSEXP CLASSNAME \
|
||||||
@@ -68,6 +81,8 @@ public: \
|
|||||||
{ return GetNode( key ) ? 1 : 0; } \
|
{ return GetNode( key ) ? 1 : 0; } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||||
|
|
||||||
// these macros are to be used in the user code
|
// these macros are to be used in the user code
|
||||||
#define WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME) \
|
#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 )
|
_WX_DECLARE_HASH_SET( KEY_T, HASH_T, KEY_EQ_T, CLASSNAME, class )
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#include "wx/event.h"
|
#include "wx/event.h"
|
||||||
|
#include "wx/hashmap.h"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// forward declarations
|
// forward declarations
|
||||||
@@ -33,12 +34,14 @@ class WXDLLEXPORT wxKeyEvent;
|
|||||||
class WXDLLEXPORT wxLog;
|
class WXDLLEXPORT wxLog;
|
||||||
class WXDLLEXPORT wxEventLoop;
|
class WXDLLEXPORT wxEventLoop;
|
||||||
class WXDLLEXPORT wxXVisualInfo;
|
class WXDLLEXPORT wxXVisualInfo;
|
||||||
class wxPerDisplayDataMap;
|
class WXDLLEXPORT wxPerDisplayData;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// the wxApp class for Motif - see wxAppBase for more details
|
// the wxApp class for Motif - see wxAppBase for more details
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
WX_DECLARE_VOIDPTR_HASH_MAP( wxPerDisplayData*, wxPerDisplayDataMap );
|
||||||
|
|
||||||
class WXDLLEXPORT wxApp : public wxAppBase
|
class WXDLLEXPORT wxApp : public wxAppBase
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxApp)
|
DECLARE_DYNAMIC_CLASS(wxApp)
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include "wx/event.h"
|
#include "wx/event.h"
|
||||||
#include "wx/cmndata.h"
|
#include "wx/cmndata.h"
|
||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
|
#include "wx/hashmap.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Paper type: see defs.h for wxPaperSize enum.
|
* Paper type: see defs.h for wxPaperSize enum.
|
||||||
@@ -69,7 +70,8 @@ private:
|
|||||||
DECLARE_DYNAMIC_CLASS(wxPrintPaperType)
|
DECLARE_DYNAMIC_CLASS(wxPrintPaperType)
|
||||||
};
|
};
|
||||||
|
|
||||||
class WXDLLEXPORT wxStringToPrintPaperTypeHashMap;
|
WX_DECLARE_STRING_HASH_MAP(wxPrintPaperType*, wxStringToPrintPaperTypeHashMap);
|
||||||
|
|
||||||
class WXDLLEXPORT wxPrintPaperTypeList;
|
class WXDLLEXPORT wxPrintPaperTypeList;
|
||||||
|
|
||||||
class WXDLLEXPORT wxPrintPaperDatabase
|
class WXDLLEXPORT wxPrintPaperDatabase
|
||||||
|
@@ -52,13 +52,15 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef wxStringToStringHashMap::iterator wxHeaderIterator;
|
typedef wxStringToStringHashMap::iterator wxHeaderIterator;
|
||||||
|
typedef wxStringToStringHashMap::const_iterator wxHeaderConstIterator;
|
||||||
|
|
||||||
bool BuildRequest(const wxString& path, wxHTTP_Req req);
|
bool BuildRequest(const wxString& path, wxHTTP_Req req);
|
||||||
void SendHeaders();
|
void SendHeaders();
|
||||||
bool ParseHeaders();
|
bool ParseHeaders();
|
||||||
|
|
||||||
// find the header in m_headers
|
// 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
|
// deletes the header value strings
|
||||||
void ClearHeaders();
|
void ClearHeaders();
|
||||||
|
18
setup.h.in
18
setup.h.in
@@ -173,9 +173,25 @@
|
|||||||
*/
|
*/
|
||||||
#undef HAVE_STD_WSTRING
|
#undef HAVE_STD_WSTRING
|
||||||
/*
|
/*
|
||||||
* Define if your compiler has compilant std::string::compare
|
* Define if your compiler has compliant std::string::compare
|
||||||
*/
|
*/
|
||||||
#undef HAVE_STD_STRING_COMPARE
|
#undef HAVE_STD_STRING_COMPARE
|
||||||
|
/*
|
||||||
|
* Define if your compiler has <hash_map>
|
||||||
|
*/
|
||||||
|
#undef HAVE_HASH_MAP
|
||||||
|
/*
|
||||||
|
* Define if your compiler has <ext/hash_map>
|
||||||
|
*/
|
||||||
|
#undef HAVE_EXT_HASH_MAP
|
||||||
|
/*
|
||||||
|
* Define if your compiler has std::hash_map/hash_set
|
||||||
|
*/
|
||||||
|
#undef HAVE_STD_HASH_MAP
|
||||||
|
/*
|
||||||
|
* Define if your compiler has __gnu_cxx::hash_map/hash_set
|
||||||
|
*/
|
||||||
|
#undef HAVE_GNU_CXX_HASH_MAP
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* use STL for containers and wxString
|
* use STL for containers and wxString
|
||||||
|
@@ -26,7 +26,6 @@
|
|||||||
#include "wx/log.h"
|
#include "wx/log.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/hashmap.h"
|
|
||||||
#include "wx/filesys.h"
|
#include "wx/filesys.h"
|
||||||
#include "wx/zipstrm.h"
|
#include "wx/zipstrm.h"
|
||||||
#include "wx/fs_zip.h"
|
#include "wx/fs_zip.h"
|
||||||
@@ -38,9 +37,6 @@
|
|||||||
#include "unzip.h"
|
#include "unzip.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
WX_DECLARE_HASH_MAP_WITH_DECL( long, long, wxIntegerHash, wxIntegerEqual,
|
|
||||||
wxLongToLongHashMap, class WXDLLIMPEXP_BASE );
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
// wxZipFSHandler
|
// wxZipFSHandler
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@@ -60,6 +60,8 @@ unsigned long wxStringHash::charStringHash( const char* k )
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||||
|
|
||||||
/* from SGI STL */
|
/* from SGI STL */
|
||||||
const unsigned long _wxHashTableBase2::ms_primes[prime_count] =
|
const unsigned long _wxHashTableBase2::ms_primes[prime_count] =
|
||||||
{
|
{
|
||||||
@@ -151,3 +153,4 @@ _wxHashTable_NodeBase* _wxHashTableBase2::DummyProcessNode(_wxHashTable_NodeBase
|
|||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // !wxUSE_STL || !defined(HAVE_STL_HASH_MAP)
|
||||||
|
@@ -71,13 +71,22 @@ void wxHTTP::SetProxyMode(bool on)
|
|||||||
m_proxy_mode = on;
|
m_proxy_mode = on;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxHTTP::wxHeaderIterator wxHTTP::FindHeader(const wxString& header) const
|
wxHTTP::wxHeaderIterator wxHTTP::FindHeader(const wxString& header)
|
||||||
{
|
{
|
||||||
// we can't convert between const_iterator to iterator otherwise...
|
wxHeaderIterator it = m_headers.begin();
|
||||||
wxStringToStringHashMap& headers = (wxStringToStringHashMap&)m_headers;
|
for ( wxHeaderIterator en = m_headers.end(); it != en; ++it )
|
||||||
|
{
|
||||||
|
if ( wxStricmp(it->first, header) == 0 )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
wxHeaderIterator it = headers.begin();
|
return it;
|
||||||
for ( wxHeaderIterator en = headers.end(); it != en; ++it )
|
}
|
||||||
|
|
||||||
|
wxHTTP::wxHeaderConstIterator wxHTTP::FindHeader(const wxString& header) const
|
||||||
|
{
|
||||||
|
wxHeaderConstIterator it = m_headers.begin();
|
||||||
|
for ( wxHeaderConstIterator en = m_headers.end(); it != en; ++it )
|
||||||
{
|
{
|
||||||
if ( wxStricmp(it->first, header) == 0 )
|
if ( wxStricmp(it->first, header) == 0 )
|
||||||
break;
|
break;
|
||||||
@@ -102,7 +111,7 @@ void wxHTTP::SetHeader(const wxString& header, const wxString& h_data)
|
|||||||
|
|
||||||
wxString wxHTTP::GetHeader(const wxString& header) const
|
wxString wxHTTP::GetHeader(const wxString& header) const
|
||||||
{
|
{
|
||||||
wxHeaderIterator it = FindHeader(header);
|
wxHeaderConstIterator it = FindHeader(header);
|
||||||
|
|
||||||
return it == m_headers.end() ? wxGetEmptyString() : it->second;
|
return it == m_headers.end() ? wxGetEmptyString() : it->second;
|
||||||
}
|
}
|
||||||
|
@@ -33,7 +33,6 @@
|
|||||||
|
|
||||||
#include "wx/paper.h"
|
#include "wx/paper.h"
|
||||||
#include "wx/module.h"
|
#include "wx/module.h"
|
||||||
#include "wx/hashmap.h"
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -84,7 +83,6 @@ wxSize wxPrintPaperType::GetSizeDeviceUnits() const
|
|||||||
* Print paper database for PostScript
|
* Print paper database for PostScript
|
||||||
*/
|
*/
|
||||||
|
|
||||||
WX_DECLARE_STRING_HASH_MAP(wxPrintPaperType*, wxStringToPrintPaperTypeHashMap);
|
|
||||||
WX_DECLARE_LIST(wxPrintPaperType, wxPrintPaperTypeList);
|
WX_DECLARE_LIST(wxPrintPaperType, wxPrintPaperTypeList);
|
||||||
#include "wx/listimpl.cpp"
|
#include "wx/listimpl.cpp"
|
||||||
WX_DEFINE_LIST(wxPrintPaperTypeList);
|
WX_DEFINE_LIST(wxPrintPaperTypeList);
|
||||||
|
@@ -29,7 +29,6 @@
|
|||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
#include "wx/evtloop.h"
|
#include "wx/evtloop.h"
|
||||||
#include "wx/hash.h"
|
#include "wx/hash.h"
|
||||||
#include "wx/hashmap.h"
|
|
||||||
|
|
||||||
#if wxUSE_THREADS
|
#if wxUSE_THREADS
|
||||||
#include "wx/thread.h"
|
#include "wx/thread.h"
|
||||||
@@ -60,8 +59,6 @@ struct wxPerDisplayData
|
|||||||
Widget m_topLevelWidget;
|
Widget m_topLevelWidget;
|
||||||
};
|
};
|
||||||
|
|
||||||
WX_DECLARE_VOIDPTR_HASH_MAP( wxPerDisplayData, wxPerDisplayDataMap );
|
|
||||||
|
|
||||||
static void wxTLWidgetDestroyCallback(Widget w, XtPointer clientData,
|
static void wxTLWidgetDestroyCallback(Widget w, XtPointer clientData,
|
||||||
XtPointer ptr);
|
XtPointer ptr);
|
||||||
static WXWidget wxCreateTopLevelWidget( WXDisplay* display );
|
static WXWidget wxCreateTopLevelWidget( WXDisplay* display );
|
||||||
@@ -138,8 +135,9 @@ wxApp::~wxApp()
|
|||||||
end = m_perDisplayData->end();
|
end = m_perDisplayData->end();
|
||||||
it != end; ++it )
|
it != end; ++it )
|
||||||
{
|
{
|
||||||
delete it->second.m_visualInfo;
|
delete it->second->m_visualInfo;
|
||||||
XtDestroyWidget( it->second.m_topLevelWidget );
|
XtDestroyWidget( it->second->m_topLevelWidget );
|
||||||
|
delete it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete m_perDisplayData;
|
delete m_perDisplayData;
|
||||||
@@ -244,17 +242,30 @@ WXColormap wxApp::GetMainColormap(WXDisplay* display)
|
|||||||
return (WXColormap) c;
|
return (WXColormap) c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline wxPerDisplayData& GetOrCreatePerDisplayData
|
||||||
|
( wxPerDisplayDataMap& m, WXDisplay* display )
|
||||||
|
{
|
||||||
|
wxPerDisplayDataMap::iterator it = m.find( display );
|
||||||
|
if( it != m.end() && it->second != NULL )
|
||||||
|
return *(it->second);
|
||||||
|
|
||||||
|
wxPerDisplayData* nData = new wxPerDisplayData();
|
||||||
|
m[display] = nData;
|
||||||
|
|
||||||
|
return *nData;
|
||||||
|
}
|
||||||
|
|
||||||
wxXVisualInfo* wxApp::GetVisualInfo( WXDisplay* display )
|
wxXVisualInfo* wxApp::GetVisualInfo( WXDisplay* display )
|
||||||
{
|
{
|
||||||
wxPerDisplayDataMap::iterator it = m_perDisplayData->find( display );
|
wxPerDisplayData& data = GetOrCreatePerDisplayData( *m_perDisplayData,
|
||||||
|
display );
|
||||||
if( it != m_perDisplayData->end() && it->second.m_visualInfo )
|
if( data.m_visualInfo )
|
||||||
return it->second.m_visualInfo;
|
return data.m_visualInfo;
|
||||||
|
|
||||||
wxXVisualInfo* vi = new wxXVisualInfo;
|
wxXVisualInfo* vi = new wxXVisualInfo;
|
||||||
wxFillXVisualInfo( vi, (Display*)display );
|
wxFillXVisualInfo( vi, (Display*)display );
|
||||||
|
|
||||||
(*m_perDisplayData)[display].m_visualInfo = vi;
|
data.m_visualInfo = vi;
|
||||||
|
|
||||||
return vi;
|
return vi;
|
||||||
}
|
}
|
||||||
@@ -287,10 +298,10 @@ WXWidget wxCreateTopLevelWidget( WXDisplay* display )
|
|||||||
WXWidget wxApp::GetTopLevelWidget()
|
WXWidget wxApp::GetTopLevelWidget()
|
||||||
{
|
{
|
||||||
WXDisplay* display = wxGetDisplay();
|
WXDisplay* display = wxGetDisplay();
|
||||||
wxPerDisplayDataMap::iterator it = m_perDisplayData->find( display );
|
wxPerDisplayData& data = GetOrCreatePerDisplayData( *m_perDisplayData,
|
||||||
|
display );
|
||||||
if( it != m_perDisplayData->end() && it->second.m_topLevelWidget )
|
if( data.m_topLevelWidget )
|
||||||
return (WXWidget)it->second.m_topLevelWidget;
|
return (WXWidget)data.m_topLevelWidget;
|
||||||
|
|
||||||
WXWidget tlw = wxCreateTopLevelWidget( display );
|
WXWidget tlw = wxCreateTopLevelWidget( display );
|
||||||
SetTopLevelWidget( display, tlw );
|
SetTopLevelWidget( display, tlw );
|
||||||
@@ -300,7 +311,7 @@ WXWidget wxApp::GetTopLevelWidget()
|
|||||||
|
|
||||||
void wxApp::SetTopLevelWidget(WXDisplay* display, WXWidget widget)
|
void wxApp::SetTopLevelWidget(WXDisplay* display, WXWidget widget)
|
||||||
{
|
{
|
||||||
(*m_perDisplayData)[display].m_topLevelWidget = (Widget)widget;
|
(*m_perDisplayData)[display]->m_topLevelWidget = (Widget)widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Yield to other processes
|
// Yield to other processes
|
||||||
|
Reference in New Issue
Block a user