diff options
-rw-r--r-- | ACE/ChangeLog | 35 | ||||
-rw-r--r-- | ACE/ace/Numeric_Limits.h | 3 | ||||
-rw-r--r-- | ACE/ace/OS_NS_stdio.cpp | 3 | ||||
-rw-r--r-- | ACE/ace/OS_NS_stdio.inl | 6 | ||||
-rw-r--r-- | ACE/ace/OS_NS_sys_stat.h | 4 | ||||
-rw-r--r-- | ACE/ace/checked_iterator.h | 4 | ||||
-rw-r--r-- | ACE/ace/config-lite.h | 3 | ||||
-rw-r--r-- | ACE/ace/config-win32-msvc-8.h | 10 |
8 files changed, 61 insertions, 7 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog index 3c7a3b2d3b5..4a9c75aee64 100644 --- a/ACE/ChangeLog +++ b/ACE/ChangeLog @@ -1,3 +1,38 @@ +Thu Jul 19 19:54:22 UTC 2007 Adam Mitz <mitza@ociweb.com> + + * ace/Numeric_Limits.h: + + Use the macro ACE_LACKS_NUMERIC_LIMITS_64_BIT_TYPES to control + whether or not ACE should define its own std::numeric_limits<> + specializations for the 64-bit integral types. + + * ace/OS_NS_stdio.inl: + * ace/OS_NS_stdio.cpp: + + The Platform SDK 64-bit compiler works like vc71 (not vc8) with + respect to the arguments needed for vswprintf(). + + * ace/OS_NS_sys_stat.h: + + Use the macro ACE_MSVC_USES_DOUBLE_UNDERSCORE_STAT64 to control + whether ACE_stat should be __stat64 instead of _stat64 (MSVC only). + + * ace/checked_iterator.h: + + The Platform SDK 64-bit compiler doesn't have checked iterators. + + * ace/config-lite.h: + + Use the macro ACE_HAS_BROKEN_STD_REVERSE_ITERATOR to indicate that + the std::reverse_iterator class template needs a 2nd argument. + + * ace/config-win32-msvc-8.h: + + With the Platform SDK compiler (detected using _MSC_FULL_VER), we + will now define ACE_AUTO_PTR_LACKS_RESET along with the three macros + listed above and other macros needed to get a good build. This only + applies to the x64 (aka AMD64/EMT64) target. + Thu Jul 19 17:15:42 UTC 2007 Steve Huston <shuston@riverace.com> * ace/Event_Handler.cpp (ctor): Put the init of reference_count_ diff --git a/ACE/ace/Numeric_Limits.h b/ACE/ace/Numeric_Limits.h index 4fbac9d2768..d50abb19f98 100644 --- a/ACE/ace/Numeric_Limits.h +++ b/ACE/ace/Numeric_Limits.h @@ -225,7 +225,8 @@ struct ACE_Numeric_Limits static T max (void) { return std::numeric_limits<T>::max (); } }; -# if defined (ACE_WIN64) && defined (_MSC_VER) && _MSC_VER <= 1310 +# if (defined (ACE_WIN64) && defined (_MSC_VER) && _MSC_VER <= 1310) \ + || defined (ACE_LACKS_NUMERIC_LIMITS_64_BIT_TYPES) // The Microsoft Platform SDK does not provide std::numeric_limits<> // specializations for 64 bit integers so we need to explicitly provide // ACE_Numeric_Limits<> specializations to compensate for this diff --git a/ACE/ace/OS_NS_stdio.cpp b/ACE/ace/OS_NS_stdio.cpp index 1d78300260b..30f8bac0537 100644 --- a/ACE/ace/OS_NS_stdio.cpp +++ b/ACE/ace/OS_NS_stdio.cpp @@ -394,7 +394,8 @@ ACE_OS::sprintf (wchar_t *buf, const wchar_t *format, ...) (defined (sun) && !defined (_XPG4) || defined(_XPG5)) || \ defined (ACE_HAS_DINKUM_STL) || defined (__DMC__) || \ defined (ACE_HAS_VSWPRINTF) || \ - (defined (ACE_WIN32_VC8) && !defined (ACE_HAS_WINCE)) + (defined (ACE_WIN32_VC8) && !defined (ACE_HAS_WINCE) && \ + _MSC_FULL_VER > 140050000) // The XPG4/UNIX98/C99 signature of the wide-char sprintf has a // maxlen argument. Since this method doesn't supply one, pass in diff --git a/ACE/ace/OS_NS_stdio.inl b/ACE/ace/OS_NS_stdio.inl index cecb0d06324..ecd0d725abd 100644 --- a/ACE/ace/OS_NS_stdio.inl +++ b/ACE/ace/OS_NS_stdio.inl @@ -1005,8 +1005,10 @@ ACE_OS::vsprintf (wchar_t *buffer, const wchar_t *format, va_list argptr) { # if (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500) || \ (defined (sun) && !(defined(_XOPEN_SOURCE) && (_XOPEN_VERSION-0==4))) || \ - (defined (ACE_HAS_DINKUM_STL) || defined (__DMC__)) || \ - defined (ACE_HAS_VSWPRINTF) || defined (ACE_WIN32_VC8) && !defined (ACE_HAS_WINCE) + defined (ACE_HAS_DINKUM_STL) || defined (__DMC__) || \ + defined (ACE_HAS_VSWPRINTF) || \ + (defined (ACE_WIN32_VC8) && !defined (ACE_HAS_WINCE) && \ + _MSC_FULL_VER > 140050000) // The XPG4/UNIX98/C99 signature of the wide-char sprintf has a // maxlen argument. Since this method doesn't supply one, pass in diff --git a/ACE/ace/OS_NS_sys_stat.h b/ACE/ace/OS_NS_sys_stat.h index bfda63f45fb..4afae8c1be7 100644 --- a/ACE/ace/OS_NS_sys_stat.h +++ b/ACE/ace/OS_NS_sys_stat.h @@ -46,7 +46,11 @@ typedef struct stati64 ACE_stat; # if _MSC_VER >= 1400 // For vc8 which has time_t as 64bit // 64-bit file offsets, 64-bit time_t +# if defined (ACE_MSVC_USES_DOUBLE_UNDERSCORE_STAT64) +typedef struct __stat64 ACE_stat; +# else typedef struct _stat64 ACE_stat; +# endif # define ACE_STAT_FUNC_NAME ::_stat64 # define ACE_WSTAT_FUNC_NAME ::_wstat64 # else diff --git a/ACE/ace/checked_iterator.h b/ACE/ace/checked_iterator.h index bc583aebbf4..ac5e44f6dfc 100644 --- a/ACE/ace/checked_iterator.h +++ b/ACE/ace/checked_iterator.h @@ -32,12 +32,12 @@ * @author Ossama Othman */ -# if defined (_MSC_VER) && (_MSC_VER >= 1400) +# if defined (_MSC_VER) && (_MSC_FULL_VER >= 140050000) // Checked iterators are currently only supported in MSVC++ 8 or better. # include <iterator> # endif /* _MSC_VER >= 1400 */ -# if defined (_MSC_VER) && (_MSC_VER >= 1400) +# if defined (_MSC_VER) && (_MSC_FULL_VER >= 140050000) template <typename PTR> stdext::checked_array_iterator<PTR> ACE_make_checked_array_iterator (PTR buf, size_t len) diff --git a/ACE/ace/config-lite.h b/ACE/ace/config-lite.h index 6356f5123f5..0835426e27c 100644 --- a/ACE/ace/config-lite.h +++ b/ACE/ace/config-lite.h @@ -129,7 +129,8 @@ ACE_END_VERSIONED_NAMESPACE_DECL // the _RWSTD_NO_CLASS_PARTIAL_SPEC feature test macro below. # include <Cstd/stdcomp.h> #endif /* __SUNPRO_CC <= 0x580 */ -#if defined (_MSC_VER) && (_MSC_VER <= 1310) && defined (_WIN64) +#if (defined (_MSC_VER) && (_MSC_VER <= 1310) && defined (_WIN64)) \ + || defined (ACE_HAS_BROKEN_STD_REVERSE_ITERATOR) // VC 7.1 and the latest 64-bit platform SDK still don't define a standard // compliant reverse_iterator adapter. # define ACE_DECLARE_STL_REVERSE_ITERATORS \ diff --git a/ACE/ace/config-win32-msvc-8.h b/ACE/ace/config-win32-msvc-8.h index e98180b1f69..201a554a06c 100644 --- a/ACE/ace/config-win32-msvc-8.h +++ b/ACE/ace/config-win32-msvc-8.h @@ -122,6 +122,16 @@ # define ACE_HAS_TR24731_2005_CRT #endif +//Detect Platform SDK 64-bit (AMD64) compiler using _MSC_FULL_VER +#if (defined (_WIN64) || defined (WIN64)) && _MSC_FULL_VER < 140050000 +# define ACE_AUTO_PTR_LACKS_RESET +# define ACE_MSVC_USES_DOUBLE_UNDERSCORE_STAT64 +# define ACE_HAS_BROKEN_STD_REVERSE_ITERATOR +# define ACE_LACKS_NUMERIC_LIMITS_64_BIT_TYPES +# undef ACE_HAS_TR24731_2005_CRT +# undef ACE_HAS_INTRIN_H +#endif + // On CE w/o MFC config-WinCE.h needs to declare a placement new. This // triggers a warning that there's no placement delete, which can be ignored. #if defined (ACE_HAS_WINCE) && !defined (ACE_HAS_MFC) |