williamr@2: #ifndef BOOST_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED williamr@2: #define BOOST_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED williamr@2: williamr@2: // MS compatible compilers support #pragma once williamr@2: williamr@2: #if defined(_MSC_VER) && (_MSC_VER >= 1020) williamr@2: # pragma once williamr@2: #endif williamr@2: williamr@2: // williamr@2: // boost/detail/atomic_count_win32.hpp williamr@2: // williamr@2: // Copyright (c) 2001-2005 Peter Dimov williamr@2: // williamr@2: // Distributed under the Boost Software License, Version 1.0. (See williamr@2: // accompanying file LICENSE_1_0.txt or copy at williamr@2: // http://www.boost.org/LICENSE_1_0.txt) williamr@2: // williamr@2: williamr@2: #include williamr@2: williamr@2: namespace boost williamr@2: { williamr@2: williamr@2: namespace detail williamr@2: { williamr@2: williamr@2: class atomic_count williamr@2: { williamr@2: public: williamr@2: williamr@2: explicit atomic_count( long v ): value_( v ) williamr@2: { williamr@2: } williamr@2: williamr@2: long operator++() williamr@2: { williamr@2: return BOOST_INTERLOCKED_INCREMENT( &value_ ); williamr@2: } williamr@2: williamr@2: long operator--() williamr@2: { williamr@2: return BOOST_INTERLOCKED_DECREMENT( &value_ ); williamr@2: } williamr@2: williamr@2: operator long() const williamr@2: { williamr@2: return static_cast( value_ ); williamr@2: } williamr@2: williamr@2: private: williamr@2: williamr@2: atomic_count( atomic_count const & ); williamr@2: atomic_count & operator=( atomic_count const & ); williamr@2: williamr@2: long value_; williamr@2: }; williamr@2: williamr@2: } // namespace detail williamr@2: williamr@2: } // namespace boost williamr@2: williamr@2: #endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED