summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ACE/ChangeLog35
-rw-r--r--ACE/ace/Numeric_Limits.h3
-rw-r--r--ACE/ace/OS_NS_stdio.cpp3
-rw-r--r--ACE/ace/OS_NS_stdio.inl6
-rw-r--r--ACE/ace/OS_NS_sys_stat.h4
-rw-r--r--ACE/ace/checked_iterator.h4
-rw-r--r--ACE/ace/config-lite.h3
-rw-r--r--ACE/ace/config-win32-msvc-8.h10
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)