1 #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_W32_HPP_INCLUDED
2 #define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_W32_HPP_INCLUDED
6 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
81 long tmp =
static_cast< long const volatile&
>(
use_count_ );
82 if( tmp == 0 )
return false;
84 #if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, == 1200 )
89 if( BOOST_SP_INTERLOCKED_COMPARE_EXCHANGE( &
use_count_, tmp2, tmp ) == tmp2 - 1 )
return true;
93 if( BOOST_SP_INTERLOCKED_COMPARE_EXCHANGE( &
use_count_, tmp + 1, tmp ) == tmp )
return true;
101 if( BOOST_SP_INTERLOCKED_DECREMENT( &
use_count_ ) == 0 )
115 if( BOOST_SP_INTERLOCKED_DECREMENT( &
weak_count_ ) == 0 )
123 return static_cast<long const volatile &
>(
use_count_ );
131 #endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_W32_HPP_INCLUDED