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