use std[::tr1]::unordered_map if available in wxUSE_STL build (#9532)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54169 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-06-12 18:43:41 +00:00
parent 2383c21c63
commit f380544a4c
6 changed files with 367 additions and 64 deletions

319
configure vendored
View File

@@ -1,5 +1,5 @@
#! /bin/sh
# From configure.in Id: configure.in 53842 2008-05-30 13:35:30Z VZ .
# From configure.in Id: configure.in 53976 2008-06-04 10:53:02Z SN .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for wxWidgets 2.9.0.
#
@@ -861,6 +861,7 @@ COND_OFFICIAL_BUILD_1_PLATFORM_WIN32_1
COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1
COND_PLATFORM_MACOSX_0_USE_SOVERSION_1
COND_PLATFORM_MACOSX_1
COND_PLATFORM_MACOSX_1_PLATFORM_MSDOS_0
COND_PLATFORM_MACOSX_1_TOOLKIT_
COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA
COND_PLATFORM_MACOSX_1_TOOLKIT_GTK
@@ -869,6 +870,7 @@ COND_PLATFORM_MACOSX_1_TOOLKIT_MAC_USE_GUI_1
COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF
COND_PLATFORM_MACOSX_1_TOOLKIT_X11
COND_PLATFORM_MACOSX_1_USE_GUI_1
COND_PLATFORM_MACOSX_1_USE_OPENGL_1
COND_PLATFORM_MACOSX_1_USE_SOVERSION_1
COND_PLATFORM_MACOS_1
COND_PLATFORM_MAC_0
@@ -1719,7 +1721,6 @@ Optional Features:
--enable-textfile use wxTextFile class
--enable-timer use wxTimer class
--enable-variant use wxVariant class
--enable-weakref make wxEvtHandler trackable with wxWeakRef<>
--enable-zipstream use wxZip streams
--enable-url use wxURL class
--enable-protocol use wxProtocol class
@@ -7816,50 +7817,6 @@ fi
echo "${ECHO_T}$result" >&6; }
enablestring=
defaultval=$wxUSE_ALL_FEATURES
if test -z "$defaultval"; then
if test x"$enablestring" = xdisable; then
defaultval=yes
else
defaultval=no
fi
fi
{ echo "$as_me:$LINENO: checking for --${enablestring:-enable}-weakref" >&5
echo $ECHO_N "checking for --${enablestring:-enable}-weakref... $ECHO_C" >&6; }
# Check whether --enable-weakref was given.
if test "${enable_weakref+set}" = set; then
enableval=$enable_weakref;
if test "$enableval" = yes; then
wx_cv_use_weakref='wxUSE_WEAKREF=yes'
else
wx_cv_use_weakref='wxUSE_WEAKREF=no'
fi
else
wx_cv_use_weakref='wxUSE_WEAKREF=${'DEFAULT_wxUSE_WEAKREF":-$defaultval}"
fi
eval "$wx_cv_use_weakref"
if test x"$enablestring" = xdisable; then
if test $wxUSE_WEAKREF = yes; then
result=no
else
result=yes
fi
else
result=$wxUSE_WEAKREF
fi
{ echo "$as_me:$LINENO: result: $result" >&5
echo "${ECHO_T}$result" >&6; }
enablestring=
defaultval=$wxUSE_ALL_FEATURES
if test -z "$defaultval"; then
@@ -24968,6 +24925,237 @@ _ACEOF
_ACEOF
fi
{ echo "$as_me:$LINENO: checking for unordered_map" >&5
echo $ECHO_N "checking for unordered_map... $ECHO_C" >&6; }
if test "${ac_cv_header_unordered_map+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <unordered_map>
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_header_unordered_map=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_unordered_map=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $ac_cv_header_unordered_map" >&5
echo "${ECHO_T}$ac_cv_header_unordered_map" >&6; }
if test $ac_cv_header_unordered_map = yes; then
{ echo "$as_me:$LINENO: checking for unordered_map and unordered_set in std" >&5
echo $ECHO_N "checking for unordered_map and unordered_set in std... $ECHO_C" >&6; }
if test "${wx_cv_class_stdunorderedmapset+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <unordered_map>
#include <unordered_set>
int
main ()
{
std::unordered_map<double*, char*> test1;
std::unordered_set<char*> test2;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
wx_cv_class_stdunorderedmapset=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
wx_cv_class_stdunorderedmapset=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $wx_cv_class_stdunorderedmapset" >&5
echo "${ECHO_T}$wx_cv_class_stdunorderedmapset" >&6; }
fi
if test "$wx_cv_class_stdunorderedmapset" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_STD_UNORDERED_MAP 1
_ACEOF
cat >>confdefs.h <<\_ACEOF
#define HAVE_STD_UNORDERED_SET 1
_ACEOF
else
{ echo "$as_me:$LINENO: checking for tr1/unordered_map" >&5
echo $ECHO_N "checking for tr1/unordered_map... $ECHO_C" >&6; }
if test "${ac_cv_header_tr1_unordered_map+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <tr1/unordered_map>
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_header_tr1_unordered_map=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_tr1_unordered_map=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $ac_cv_header_tr1_unordered_map" >&5
echo "${ECHO_T}$ac_cv_header_tr1_unordered_map" >&6; }
if test $ac_cv_header_tr1_unordered_map = yes; then
{ echo "$as_me:$LINENO: checking for unordered_map and unordered_set in std::tr1" >&5
echo $ECHO_N "checking for unordered_map and unordered_set in std::tr1... $ECHO_C" >&6; }
if test "${wx_cv_class_tr1unorderedmapset+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <tr1/unordered_map>
#include <tr1/unordered_set>
int
main ()
{
std::tr1::unordered_map<double*, char*> test1;
std::tr1::unordered_set<char*> test2;
#if defined(__GNUC__) && (__GNUC__==4) && (__GNUC_MINOR__<2)
#error can't use unordered_{map,set} with gcc-4.[01]: http://gcc.gnu.org/PR24389
#endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
wx_cv_class_tr1unorderedmapset=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
wx_cv_class_tr1unorderedmapset=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $wx_cv_class_tr1unorderedmapset" >&5
echo "${ECHO_T}$wx_cv_class_tr1unorderedmapset" >&6; }
fi
if test "$wx_cv_class_tr1unorderedmapset" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_TR1_UNORDERED_MAP 1
_ACEOF
cat >>confdefs.h <<\_ACEOF
#define HAVE_TR1_UNORDERED_SET 1
_ACEOF
fi
fi
fi
@@ -27881,8 +28069,14 @@ fi
case "${host}" in
x86_64-*-mingw32* )
LIBS="$LIBS -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -lwctl3d32 -ladvapi32 -lwsock32 -lgdi32"
;;
* )
LIBS="$LIBS -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32"
;;
esac
if test "$wxUSE_ACCESSIBILITY" = "yes" ; then
LIBS="$LIBS -loleacc"
fi
@@ -39941,6 +40135,8 @@ echo "$as_me: WARNING: wxMutex won't be recursive on this platform" >&2;}
else
if test "$wxUSE_THREADS" = "yes" ; then
case "${host}" in
x86_64-*-mingw32* )
;;
*-*-mingw32* )
{ echo "$as_me:$LINENO: checking if compiler supports -mthreads" >&5
echo $ECHO_N "checking if compiler supports -mthreads... $ECHO_C" >&6; }
@@ -44578,13 +44774,6 @@ _ACEOF
fi
if test "$wxUSE_WEAKREF" = "yes"; then
cat >>confdefs.h <<\_ACEOF
#define wxUSE_WEAKREF 1
_ACEOF
fi
if test "$wxUSE_FS_INET" = "yes"; then
cat >>confdefs.h <<\_ACEOF
#define wxUSE_FS_INET 1
@@ -49416,6 +49605,11 @@ EOF
COND_PLATFORM_MACOSX_1=""
fi
COND_PLATFORM_MACOSX_1_PLATFORM_MSDOS_0="#"
if test "x$PLATFORM_MACOSX" = "x1" -a "x$PLATFORM_MSDOS" = "x0" ; then
COND_PLATFORM_MACOSX_1_PLATFORM_MSDOS_0=""
fi
COND_PLATFORM_MACOSX_1_TOOLKIT_="#"
if test "x$PLATFORM_MACOSX" = "x1" -a "x$TOOLKIT" = "x" ; then
COND_PLATFORM_MACOSX_1_TOOLKIT_=""
@@ -49456,6 +49650,11 @@ EOF
COND_PLATFORM_MACOSX_1_USE_GUI_1=""
fi
COND_PLATFORM_MACOSX_1_USE_OPENGL_1="#"
if test "x$PLATFORM_MACOSX" = "x1" -a "x$USE_OPENGL" = "x1" ; then
COND_PLATFORM_MACOSX_1_USE_OPENGL_1=""
fi
COND_PLATFORM_MACOSX_1_USE_SOVERSION_1="#"
if test "x$PLATFORM_MACOSX" = "x1" -a "x$USE_SOVERSION" = "x1" ; then
COND_PLATFORM_MACOSX_1_USE_SOVERSION_1=""
@@ -51411,6 +51610,7 @@ COND_OFFICIAL_BUILD_1_PLATFORM_WIN32_1!$COND_OFFICIAL_BUILD_1_PLATFORM_WIN32_1$a
COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1!$COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1$ac_delim
COND_PLATFORM_MACOSX_0_USE_SOVERSION_1!$COND_PLATFORM_MACOSX_0_USE_SOVERSION_1$ac_delim
COND_PLATFORM_MACOSX_1!$COND_PLATFORM_MACOSX_1$ac_delim
COND_PLATFORM_MACOSX_1_PLATFORM_MSDOS_0!$COND_PLATFORM_MACOSX_1_PLATFORM_MSDOS_0$ac_delim
COND_PLATFORM_MACOSX_1_TOOLKIT_!$COND_PLATFORM_MACOSX_1_TOOLKIT_$ac_delim
COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA!$COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA$ac_delim
COND_PLATFORM_MACOSX_1_TOOLKIT_GTK!$COND_PLATFORM_MACOSX_1_TOOLKIT_GTK$ac_delim
@@ -51419,6 +51619,7 @@ COND_PLATFORM_MACOSX_1_TOOLKIT_MAC_USE_GUI_1!$COND_PLATFORM_MACOSX_1_TOOLKIT_MAC
COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF!$COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF$ac_delim
COND_PLATFORM_MACOSX_1_TOOLKIT_X11!$COND_PLATFORM_MACOSX_1_TOOLKIT_X11$ac_delim
COND_PLATFORM_MACOSX_1_USE_GUI_1!$COND_PLATFORM_MACOSX_1_USE_GUI_1$ac_delim
COND_PLATFORM_MACOSX_1_USE_OPENGL_1!$COND_PLATFORM_MACOSX_1_USE_OPENGL_1$ac_delim
COND_PLATFORM_MACOSX_1_USE_SOVERSION_1!$COND_PLATFORM_MACOSX_1_USE_SOVERSION_1$ac_delim
COND_PLATFORM_MACOS_1!$COND_PLATFORM_MACOS_1$ac_delim
COND_PLATFORM_MAC_0!$COND_PLATFORM_MAC_0$ac_delim
@@ -51455,8 +51656,6 @@ COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0!$COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0$ac_
COND_TOOLKIT_DFB!$COND_TOOLKIT_DFB$ac_delim
COND_TOOLKIT_DFB_USE_GUI_1!$COND_TOOLKIT_DFB_USE_GUI_1$ac_delim
COND_TOOLKIT_GTK!$COND_TOOLKIT_GTK$ac_delim
COND_TOOLKIT_GTK_TOOLKIT_VERSION_!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_$ac_delim
COND_TOOLKIT_GTK_TOOLKIT_VERSION_2!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -51498,6 +51697,8 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
COND_TOOLKIT_GTK_TOOLKIT_VERSION_!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_$ac_delim
COND_TOOLKIT_GTK_TOOLKIT_VERSION_2!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2$ac_delim
COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1$ac_delim
COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1_WXUNIV_0$ac_delim
COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_WXUNIV_0!$COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_WXUNIV_0$ac_delim
@@ -51593,8 +51794,6 @@ OPENGL_LIBS!$OPENGL_LIBS$ac_delim
DMALLOC_LIBS!$DMALLOC_LIBS$ac_delim
WX_VERSION_TAG!$WX_VERSION_TAG$ac_delim
RESCOMP!$RESCOMP$ac_delim
RESFLAGS!$RESFLAGS$ac_delim
RESPROGRAMOBJ!$RESPROGRAMOBJ$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -51636,6 +51835,8 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
RESFLAGS!$RESFLAGS$ac_delim
RESPROGRAMOBJ!$RESPROGRAMOBJ$ac_delim
WX_RESOURCES_MACOSX_ASCII!$WX_RESOURCES_MACOSX_ASCII$ac_delim
WX_RESOURCES_MACOSX_DATA!$WX_RESOURCES_MACOSX_DATA$ac_delim
LIBWXMACRES!$LIBWXMACRES$ac_delim
@@ -51648,7 +51849,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 10; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 12; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

View File

@@ -1954,6 +1954,49 @@ if test "$wxUSE_STL" = "yes"; then
AC_DEFINE(HAVE_EXT_HASH_MAP)
AC_DEFINE(HAVE_GNU_CXX_HASH_MAP)
fi
AC_CHECK_HEADER([unordered_map],
[AC_CACHE_CHECK([for unordered_map and unordered_set in std],
wx_cv_class_stdunorderedmapset,
[AC_TRY_COMPILE([#include <unordered_map>
#include <unordered_set>],
[std::unordered_map<double*, char*> test1;
std::unordered_set<char*> test2;],
wx_cv_class_stdunorderedmapset=yes,
wx_cv_class_stdunorderedmapset=no)
]
)],
[],
[ ]
)
if test "$wx_cv_class_stdunorderedmapset" = yes; then
AC_DEFINE(HAVE_STD_UNORDERED_MAP)
AC_DEFINE(HAVE_STD_UNORDERED_SET)
else
AC_CHECK_HEADER([tr1/unordered_map],
[AC_CACHE_CHECK([for unordered_map and unordered_set in std::tr1],
wx_cv_class_tr1unorderedmapset,
[AC_TRY_COMPILE([#include <tr1/unordered_map>
#include <tr1/unordered_set>],
[std::tr1::unordered_map<double*, char*> test1;
std::tr1::unordered_set<char*> test2;
#if defined(__GNUC__) && (__GNUC__==4) && (__GNUC_MINOR__<2)
#error can't use unordered_{map,set} with gcc-4.[01]: http://gcc.gnu.org/PR24389
#endif],
wx_cv_class_tr1unorderedmapset=yes,
wx_cv_class_tr1unorderedmapset=no)
]
)],
[],
[ ]
)
if test "$wx_cv_class_tr1unorderedmapset" = yes; then
AC_DEFINE(HAVE_TR1_UNORDERED_MAP)
AC_DEFINE(HAVE_TR1_UNORDERED_SET)
fi
fi
fi
dnl check for atomic operations builtins for wx/atomic.h:

View File

@@ -284,6 +284,7 @@ All:
- Added wxCmdLineParser::AddUsageText() (Marcin 'Malcom' Malich).
- Fix reading/writing UTF-7-encoded text streams.
- Corrected bug in wxTimeSpan::IsShorterThan() for equal time spans.
- Use std::unordered_{map,set} for wxHashMap/Set if available (Jan van Dijk).
All (Unix):

View File

@@ -15,12 +15,34 @@
#include "wx/string.h"
#include "wx/wxcrt.h"
// In wxUSE_STL build we prefer to use the standard hash map class but it can
// be either in non-standard hash_map header (old g++ and some other STL
// implementations) or in C++0x standard unordered_map which can in turn be
// available either in std::tr1 or std namespace itself
//
// To summarize: if std::unordered_map is available use it, otherwise use tr1
// and finally fall back to non-standard hash_map
#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 wxUSE_STL && \
(defined(HAVE_STD_UNORDERED_MAP) || defined(HAVE_TR1_UNORDERED_MAP))
#if defined(HAVE_STD_UNORDERED_MAP)
#include <unordered_map>
#define WX_HASH_MAP_NAMESPACE std
#elif defined(HAVE_TR1_UNORDERED_MAP)
#include <tr1/unordered_map>
#define WX_HASH_MAP_NAMESPACE std::tr1
#endif
#define _WX_DECLARE_HASH_MAP( KEY_T, VALUE_T, HASH_T, KEY_EQ_T, CLASSNAME, CLASSEXP ) \
typedef WX_HASH_MAP_NAMESPACE::unordered_map< KEY_T, VALUE_T, HASH_T, KEY_EQ_T > CLASSNAME
#elif wxUSE_STL && defined(HAVE_STL_HASH_MAP)
#if defined(HAVE_EXT_HASH_MAP)
#include <ext/hash_map>
@@ -37,9 +59,7 @@
#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)
#else // !wxUSE_STL || no std::{hash,unordered}_map class available
#ifdef __WXWINCE__
typedef int ptrdiff_t;
#else

View File

@@ -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 <unordered_set>
#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 <tr1/unordered_set>
#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 <ext/hash_set>

View File

@@ -672,6 +672,26 @@
*/
#undef HAVE_GNU_CXX_HASH_MAP
/*
* Define if your compiler has std::unordered_map
*/
#undef HAVE_STD_UNORDERED_MAP
/*
* Define if your compiler has std::unordered_set
*/
#undef HAVE_STD_UNORDERED_SET
/*
* Define if your compiler has std::tr1::unordered_map
*/
#undef HAVE_TR1_UNORDERED_MAP
/*
* Define if your compiler has std::tr1::unordered_set
*/
#undef HAVE_TR1_UNORDERED_SET
/*
* Define if the compiler supports simple visibility declarations.
*/