summaryrefslogtreecommitdiff
path: root/ace/Synch_T.h
diff options
context:
space:
mode:
authorirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-08-04 02:36:18 +0000
committerirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-08-04 02:36:18 +0000
commitcd64cd7b712841bfb1b78d7eac9d88b1f7550bf8 (patch)
tree20d721f7cc9bbf73b692b0e505053cb35f9b2719 /ace/Synch_T.h
parentd0636d94675099afece3cdf40cf352918cc844d2 (diff)
downloadATCD-cd64cd7b712841bfb1b78d7eac9d88b1f7550bf8.tar.gz
*** empty log message ***
Diffstat (limited to 'ace/Synch_T.h')
-rw-r--r--ace/Synch_T.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/ace/Synch_T.h b/ace/Synch_T.h
index d3adfe7624f..f99f1954b43 100644
--- a/ace/Synch_T.h
+++ b/ace/Synch_T.h
@@ -747,10 +747,33 @@ public:
#if defined (__ACE_INLINE__)
#include "ace/Synch_T.i"
+// On non-Win32 platforms, this code will be inlined
+#if !defined (ACE_WIN32)
+#include "ace/Atomic_Op.i"
+#endif /* !ACE_WIN32 */
#endif /* __ACE_INLINE__ */
#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
#include "ace/Synch_T.cpp"
+// On Win32 platforms, this code will be included as template source
+// code and will not be inlined. Therefore, we first turn off
+// ACE_INLINE, set it to be nothing, include the code, and then turn
+// ACE_INLINE back to its original setting. All this nonsense is
+// necessary, since the generic template code that needs to be
+// specialized cannot be inlined, else the compiler will ignore the
+// specialization code. Also, the specialization code *must* be
+// inlined or the compiler will ignore the specializations.
+#if defined (ACE_WIN32)
+#undef ACE_INLINE
+#define ACE_INLINE
+#include "ace/Atomic_Op.i"
+#undef ACE_INLINE
+#if defined (__ACE_INLINE__)
+#define ACE_INLINE inline
+#else
+#define ACE_INLINE
+#endif /* __ACE_INLINE__ */
+#endif /* ACE_WIN32 */
#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)