summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2011-06-20 17:20:52 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2011-06-20 17:20:52 +0000
commitd716bc0873de4b60b005fe989737501e308490f0 (patch)
tree0696fc929fefb02718b5df148bc803332a010caa
parentd119115ff23aa0d2433518b0bb2590400cbfea70 (diff)
downloadATCD-d716bc0873de4b60b005fe989737501e308490f0.tar.gz
ChangeLogTag: Mon Jun 20 17:17:26 UTC 2011 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--ACE/ChangeLog14
-rw-r--r--ACE/ace/Basic_Types.h6
-rw-r--r--ACE/ace/config-win32-mingw.h10
3 files changed, 25 insertions, 5 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index 7507677527f..91f975d7da1 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,17 @@
+Mon Jun 20 17:17:26 UTC 2011 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * ace/config-win32-mingw.h:
+ * ace/Basic_Types.h:
+
+ - Moved the definition of ACE_LONG_DOUBLE_FORMAT_SPECIFIER_ASCII
+ to the MinGW config file.
+
+ - Added #define ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE 1 to
+ the MinGW config file, so that, for generated IDL long
+ double constants, the argument will agree with the
+ print format string. MinGW doesn't support long double
+ in the print format.
+
Fri Jun 17 16:48:29 UTC 2011 Jeff Parsons <j.parsons@vanderbilt.edu>
* ace/Basic_Types.h:
diff --git a/ACE/ace/Basic_Types.h b/ACE/ace/Basic_Types.h
index dae58caae71..43732bbc3f2 100644
--- a/ACE/ace/Basic_Types.h
+++ b/ACE/ace/Basic_Types.h
@@ -841,11 +841,7 @@ ACE_END_VERSIONED_NAMESPACE_DECL
# define ACE_LONG_DOUBLE_FORMAT_SPECIFIER_ASCII "#24.16LG"
# endif /* defined (NONNATIVE_LONGDOUBLE) */
# else
-# if defined (__MINGW32__)
-# define ACE_LONG_DOUBLE_FORMAT_SPECIFIER_ASCII "%24.16G"
-# else
-# define ACE_LONG_DOUBLE_FORMAT_SPECIFIER_ASCII "%#24.16LGL"
-# endif /* __MINGW32__ */
+# define ACE_LONG_DOUBLE_FORMAT_SPECIFIER_ASCII "%#24.16LGL"
# endif /* ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE */
#endif /* ACE_LONG_DOUBLE_FORMAT_SPECIFIER_ASCII */
diff --git a/ACE/ace/config-win32-mingw.h b/ACE/ace/config-win32-mingw.h
index 1b20b3fdf61..c30956e6d5b 100644
--- a/ACE/ace/config-win32-mingw.h
+++ b/ACE/ace/config-win32-mingw.h
@@ -92,6 +92,16 @@
#define ACE_INT64_FORMAT_SPECIFIER_ASCII "%I64d"
#define ACE_UINT64_FORMAT_SPECIFIER_ASCII "%I64u"
+#define ACE_LONG_DOUBLE_FORMAT_SPECIFIER_ASCII "%24.16G"
+
+// MinGW as supplied doesn't support the long double format
+// in printf out of the box. So for long double constants,
+// generated from IDL, we must print the literal as a double.
+// The directive below will make the argument to printf agree
+// with the format string defined above. It will not affect
+// marshaling (see CDR_Base.h, near the top of the workaround
+// struct LongDouble).
+#define ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE 1
#define ACE_ENDTHREADEX(STATUS) ::_endthreadex ((DWORD) (STATUS))