LCOV - code coverage report
Current view: top level - boost/beast2/detail/type_info.hpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 2 2
Test Date: 2025-11-13 15:50:43 Functions: 77.3 % 22 17

            Line data    Source code
       1              : //
       2              : // Copyright (c) 2025 Vinnie Falco (vinnie dot falco at gmail dot com)
       3              : //
       4              : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       5              : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       6              : //
       7              : // Official repository: https://github.com/cppalliance/beast2
       8              : //
       9              : 
      10              : #ifndef BOOST_BEAST2_DETAIL_TYPE_INFO_HPP
      11              : #define BOOST_BEAST2_DETAIL_TYPE_INFO_HPP
      12              : 
      13              : #ifndef BOOST_NO_RTTI
      14              : # include <typeinfo>
      15              : #else
      16              : # include <cstdint>
      17              : #endif
      18              : 
      19              : namespace boost {
      20              : namespace beast2 {
      21              : namespace detail {
      22              : 
      23              : #ifdef BOOST_NO_RTTI
      24              : 
      25              : struct type_info
      26              : {
      27              :     std::size_t hash_code() const noexcept
      28              :     {
      29              :         return reinterpret_cast<std::uintptr_t>(this);
      30              :     }
      31              : 
      32              :     friend bool operator==(type_info const& lhs,
      33              :         type_info const& rhs) noexcept
      34              :     {
      35              :         return &lhs == &rhs;
      36              :     }
      37              : 
      38              :     friend bool operator!=(type_info const& lhs,
      39              :         type_info const& rhs) noexcept
      40              :     {
      41              :         return &lhs != &rhs;
      42              :     }
      43              : };
      44              : 
      45              : template<class T>
      46              : struct type_info_for
      47              : {
      48              :     static type_info const value;
      49              : };
      50              : 
      51              : template<class T>
      52              : type_info const type_info_for<T>::value{};
      53              : 
      54              : template<class T>
      55              : type_info const& get_type_info() noexcept
      56              : {
      57              :     return type_info_for<T>::value;
      58              : }
      59              : 
      60              : #else
      61              : 
      62              : using type_info = std::type_info;
      63              : 
      64              : template<class T>
      65              : type_info const&
      66           84 : get_type_info() noexcept
      67              : {
      68           84 :     return typeid(T);
      69              : }
      70              : 
      71              : #endif
      72              : 
      73              : } // detail
      74              : } // beast2
      75              : } // boost
      76              : 
      77              : #endif
        

Generated by: LCOV version 2.1