LCOV - code coverage report
Current view: top level - usr/include/boost/smart_ptr/detail - atomic_count_std_atomic.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 7 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_STD_ATOMIC_HPP_INCLUDED
       2             : #define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_STD_ATOMIC_HPP_INCLUDED
       3             : 
       4             : //
       5             : //  boost/detail/atomic_count_std_atomic.hpp
       6             : //
       7             : //  atomic_count for std::atomic
       8             : //
       9             : //  Copyright 2013 Peter Dimov
      10             : //
      11             : //  Distributed under the Boost Software License, Version 1.0.
      12             : //  See accompanying file LICENSE_1_0.txt or copy at
      13             : //  http://www.boost.org/LICENSE_1_0.txt
      14             : //
      15             : 
      16             : #include <atomic>
      17             : #include <cstdint>
      18             : 
      19             : namespace boost
      20             : {
      21             : 
      22             : namespace detail
      23             : {
      24             : 
      25             : class atomic_count
      26             : {
      27             : public:
      28             : 
      29           0 :     explicit atomic_count( long v ): value_( static_cast< std::int_least32_t >( v ) )
      30             :     {
      31             :     }
      32             : 
      33           0 :     long operator++()
      34             :     {
      35           0 :         return value_.fetch_add( 1, std::memory_order_acq_rel ) + 1;
      36             :     }
      37             : 
      38           0 :     long operator--()
      39             :     {
      40           0 :         return value_.fetch_sub( 1, std::memory_order_acq_rel ) - 1;
      41             :     }
      42             : 
      43           0 :     operator long() const
      44             :     {
      45           0 :         return value_.load( std::memory_order_acquire );
      46             :     }
      47             : 
      48             : private:
      49             : 
      50             :     atomic_count(atomic_count const &);
      51             :     atomic_count & operator=(atomic_count const &);
      52             : 
      53             :     std::atomic_int_least32_t value_;
      54             : };
      55             : 
      56             : } // namespace detail
      57             : 
      58             : } // namespace boost
      59             : 
      60             : #endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_STD_ATOMIC_HPP_INCLUDED

Generated by: LCOV version 1.14