Author: faridz
Date: Tue Apr 15 00:05:20 2008
New Revision: 648132
URL: http://svn.apache.org/viewvc?rev=648132&view=rev
Log:
2008-04-15 Farid Zaripov <[EMAIL PROTECTED]>
* include/rw/_mutex.h (__rw_atomic_exchange): New overload for bool
type to
avoid using of template overload with mutex to atomically swap two
bool's
(used in std::ios_base::sync_with_stdio()).
Modified:
stdcxx/trunk/include/rw/_mutex.h
Modified: stdcxx/trunk/include/rw/_mutex.h
URL:
http://svn.apache.org/viewvc/stdcxx/trunk/include/rw/_mutex.h?rev=648132&r1=648131&r2=648132&view=diff
==============================================================================
--- stdcxx/trunk/include/rw/_mutex.h (original)
+++ stdcxx/trunk/include/rw/_mutex.h Tue Apr 15 00:05:20 2008
@@ -1902,6 +1902,36 @@
# define _RWSTD_NO_ATOMIC_OPS
#endif // _RWSTD_NO_ATOMIC_OPS
+
+/********************** generic bool functions ************************/
+
+#ifndef _RWSTD_NO_BOOL
+
+# if _RWSTD_BOOL_SIZE == _RWSTD_CHAR_SIZE
+# define _RWSTD_BOOL_TYPE char
+# elif _RWSTD_BOOL_SIZE == _RWSTD_SHORT_SIZE
+# define _RWSTD_BOOL_TYPE short
+# elif _RWSTD_BOOL_SIZE == _RWSTD_INT_SIZE
+# define _RWSTD_BOOL_TYPE int
+# endif
+
+# ifdef _RWSTD_BOOL_TYPE
+
+inline bool
+__rw_atomic_exchange (bool &__x, bool __y, bool)
+{
+ return 0 != __rw_atomic_exchange (
+ _RWSTD_REINTERPRET_CAST (_RWSTD_BOOL_TYPE&, __x),
+ _RWSTD_STATIC_CAST (_RWSTD_BOOL_TYPE, __y),
+ false);
+}
+
+# undef _RWSTD_BOOL_TYPE
+# endif // _RWSTD_BOOL_TYPE
+
+#endif // _RWSTD_NO_BOOL
+
+
/********************** generic long functions ************************/
#if _RWSTD_LONG_SIZE == _RWSTD_INT_SIZE