fixing stuff
[dyninst.git] / dynutil / h / dyn_detail / boost / detail / atomic_count_solaris.hpp
1 #ifndef DYN_DETAIL_BOOST_DETAIL_ATOMIC_COUNT_SOLARIS_HPP_INCLUDED
2 #define DYN_DETAIL_BOOST_DETAIL_ATOMIC_COUNT_SOLARIS_HPP_INCLUDED
3
4 //
5 //  boost/detail/atomic_count_solaris.hpp
6 //   based on: boost/detail/atomic_count_win32.hpp
7 //
8 //  Copyright (c) 2001-2005 Peter Dimov
9 //  Copyright (c) 2006 Michael van der Westhuizen
10 //
11 // Distributed under the Boost Software License, Version 1.0. (See
12 // accompanying file LICENSE_1_0.txt or copy at
13 // http://www.boost.org/LICENSE_1_0.txt)
14 //
15
16 #include <atomic.h>
17 namespace dyn_detail
18 {
19   
20 namespace boost
21 {
22
23 namespace detail
24 {
25
26 class atomic_count
27 {
28 public:
29
30     explicit atomic_count( uint32_t v ): value_( v )
31     {
32     }
33
34     long operator++()
35     {
36         return atomic_inc_32_nv( &value_ );
37     }
38
39     long operator--()
40     {
41         return atomic_dec_32_nv( &value_ );
42     }
43
44     operator uint32_t() const
45     {
46         return static_cast<uint32_t const volatile &>( value_ );
47     }
48
49 private:
50
51     atomic_count( atomic_count const & );
52     atomic_count & operator=( atomic_count const & );
53
54     uint32_t value_;
55 };
56
57 } // namespace detail
58
59 } // namespace boost
60
61 } // namespace dyn_detail
62 #endif // #ifndef DYN_DETAIL_BOOST_DETAIL_ATOMIC_COUNT_SOLARIS_HPP_INCLUDED