source:
vendors/XIOS/current/extern/boost/include/boost/smart_ptr/detail/atomic_count_win32.hpp
@
3408
Last change on this file since 3408 was 3408, checked in by rblod, 12 years ago | |
---|---|
|
|
File size: 1.2 KB |
Line | |
---|---|
1 | #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED |
2 | #define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED |
3 | |
4 | // MS compatible compilers support #pragma once |
5 | |
6 | #if defined(_MSC_VER) && (_MSC_VER >= 1020) |
7 | # pragma once |
8 | #endif |
9 | |
10 | // |
11 | // boost/detail/atomic_count_win32.hpp |
12 | // |
13 | // Copyright (c) 2001-2005 Peter Dimov |
14 | // |
15 | // Distributed under the Boost Software License, Version 1.0. (See |
16 | // accompanying file LICENSE_1_0.txt or copy at |
17 | // http://www.boost.org/LICENSE_1_0.txt) |
18 | // |
19 | |
20 | #include <boost/detail/interlocked.hpp> |
21 | |
22 | namespace boost |
23 | { |
24 | |
25 | namespace detail |
26 | { |
27 | |
28 | class atomic_count |
29 | { |
30 | public: |
31 | |
32 | explicit atomic_count( long v ): value_( v ) |
33 | { |
34 | } |
35 | |
36 | long operator++() |
37 | { |
38 | return BOOST_INTERLOCKED_INCREMENT( &value_ ); |
39 | } |
40 | |
41 | long operator--() |
42 | { |
43 | return BOOST_INTERLOCKED_DECREMENT( &value_ ); |
44 | } |
45 | |
46 | operator long() const |
47 | { |
48 | return static_cast<long const volatile &>( value_ ); |
49 | } |
50 | |
51 | private: |
52 | |
53 | atomic_count( atomic_count const & ); |
54 | atomic_count & operator=( atomic_count const & ); |
55 | |
56 | long value_; |
57 | }; |
58 | |
59 | } // namespace detail |
60 | |
61 | } // namespace boost |
62 | |
63 | #endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED |
Note: See TracBrowser
for help on using the repository browser.