Fixes compatibility with Sun C++ (by Hady Zalek); fixes compatibility
with Android (by Zachary Vorhies).
This commit is contained in:
parent
5451ffe816
commit
5017fe0090
@ -788,16 +788,16 @@ struct RemoveConst { typedef T type; }; // NOLINT
|
||||
template <typename T>
|
||||
struct RemoveConst<const T> { typedef T type; }; // NOLINT
|
||||
|
||||
// MSVC 8.0 has a bug which causes the above definition to fail to
|
||||
// remove the const in 'const int[3]'. The following specialization
|
||||
// works around the bug. However, it causes trouble with gcc and thus
|
||||
// needs to be conditionally compiled.
|
||||
#ifdef _MSC_VER
|
||||
// MSVC 8.0 and Sun C++ have a bug which causes the above definition
|
||||
// to fail to remove the const in 'const int[3]'. The following
|
||||
// specialization works around the bug. However, it causes trouble
|
||||
// with GCC and thus needs to be conditionally compiled.
|
||||
#if defined(_MSC_VER) || defined(__SUNPRO_CC)
|
||||
template <typename T, size_t N>
|
||||
struct RemoveConst<T[N]> {
|
||||
typedef typename RemoveConst<T>::type type[N];
|
||||
};
|
||||
#endif // _MSC_VER
|
||||
#endif
|
||||
|
||||
// A handy wrapper around RemoveConst that works when the argument
|
||||
// T depends on template parameters.
|
||||
|
@ -87,6 +87,7 @@
|
||||
// GTEST_OS_AIX - IBM AIX
|
||||
// GTEST_OS_CYGWIN - Cygwin
|
||||
// GTEST_OS_LINUX - Linux
|
||||
// GTEST_OS_LINUX_ANDROID - Google Android
|
||||
// GTEST_OS_MAC - Mac OS X
|
||||
// GTEST_OS_NACL - Google Native Client (NaCl)
|
||||
// GTEST_OS_SOLARIS - Sun Solaris
|
||||
@ -225,6 +226,9 @@
|
||||
# define GTEST_OS_MAC 1
|
||||
#elif defined __linux__
|
||||
# define GTEST_OS_LINUX 1
|
||||
# ifdef ANDROID
|
||||
# define GTEST_OS_LINUX_ANDROID 1
|
||||
# endif // ANDROID
|
||||
#elif defined __MVS__
|
||||
# define GTEST_OS_ZOS 1
|
||||
#elif defined(__sun) && defined(__SVR4)
|
||||
@ -336,8 +340,10 @@
|
||||
// is available.
|
||||
|
||||
// Cygwin 1.7 and below doesn't support ::std::wstring.
|
||||
// Solaris' libc++ doesn't support it either.
|
||||
# define GTEST_HAS_STD_WSTRING (!(GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
|
||||
// Solaris' libc++ doesn't support it either. Android has
|
||||
// no support for it at least as recent as Froyo (2.2).
|
||||
# define GTEST_HAS_STD_WSTRING \
|
||||
(!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
|
||||
|
||||
#endif // GTEST_HAS_STD_WSTRING
|
||||
|
||||
|
@ -1621,11 +1621,11 @@ bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
|
||||
|
||||
#if GTEST_OS_WINDOWS
|
||||
return _wcsicmp(lhs, rhs) == 0;
|
||||
#elif GTEST_OS_LINUX
|
||||
#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
|
||||
return wcscasecmp(lhs, rhs) == 0;
|
||||
#else
|
||||
// Mac OS X and Cygwin don't define wcscasecmp. Other unknown OSes
|
||||
// may not define it either.
|
||||
// Android, Mac OS X and Cygwin don't define wcscasecmp.
|
||||
// Other unknown OSes may not define it either.
|
||||
wint_t left, right;
|
||||
do {
|
||||
left = towlower(*lhs++);
|
||||
|
Loading…
x
Reference in New Issue
Block a user