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

          Line data    Source code
       1             : //  This header intentionally has no include guards.
       2             : //
       3             : //  Copyright (c) 2010 Neil Groves
       4             : //  Distributed under the Boost Software License, Version 1.0.
       5             : //  See accompanying file LICENSE_1_0.txt or copy at
       6             : //  http://www.boost.org/LICENSE_1_0.txt
       7             : //
       8             : // This code utilises the experience gained during the evolution of
       9             : // <boost/smart_ptr/operator_bool.hpp>
      10             : #ifndef BOOST_RANGE_SAFE_BOOL_INCLUDED_HPP
      11             : #define BOOST_RANGE_SAFE_BOOL_INCLUDED_HPP
      12             : 
      13             : #include <boost/config.hpp>
      14             : #include <boost/range/config.hpp>
      15             : 
      16             : namespace boost
      17             : {
      18             :     namespace range_detail
      19             :     {
      20             : 
      21             : template<class DataMemberPtr>
      22             : class safe_bool
      23             : {
      24             : public:
      25             :     typedef safe_bool this_type;
      26             : 
      27             : #if (defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570)) || defined(__CINT_)
      28             :     typedef bool unspecified_bool_type;
      29             :     static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr)
      30             :     {
      31             :         return x;
      32             :     }
      33             : #elif defined(_MANAGED)
      34             :     static void unspecified_bool(this_type***)
      35             :     {
      36             :     }
      37             :     typedef void(*unspecified_bool_type)(this_type***);
      38             :     static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr)
      39             :     {
      40             :         return x ? unspecified_bool : 0;
      41             :     }
      42             : #elif \
      43             :     ( defined(__MWERKS__) && BOOST_WORKAROUND(__MWERKS__, < 0x3200) ) || \
      44             :     ( defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 304) ) || \
      45             :     ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) )
      46             : 
      47             :     typedef bool (this_type::*unspecified_bool_type)() const;
      48             : 
      49             :     static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr)
      50             :     {
      51             :         return x ? &this_type::detail_safe_bool_member_fn : 0;
      52             :     }
      53             : private:
      54             :     bool detail_safe_bool_member_fn() const { return false; }
      55             : #else
      56             :     typedef DataMemberPtr unspecified_bool_type;
      57           0 :     static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr p)
      58             :     {
      59           0 :         return x ? p : 0;
      60             :     }
      61             : #endif
      62             : private:
      63             :     safe_bool();
      64             :     safe_bool(const safe_bool&);
      65             :     void operator=(const safe_bool&);
      66             :     ~safe_bool();
      67             : };
      68             : 
      69             :     } // namespace range_detail
      70             : } // namespace boost
      71             : 
      72             : #endif // include guard

Generated by: LCOV version 1.14