LCOV - code coverage report
Current view: top level - boost/url/grammar/detail - recycled.hpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 6 6 100.0 %
Date: 2024-03-15 21:27:27 Functions: 4 4 100.0 %

          Line data    Source code
       1             : //
       2             : // Copyright (c) 2022 Vinnie Falco (vinnie.falco@gmail.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/boostorg/url
       8             : //
       9             : 
      10             : #ifndef BOOST_URL_GRAMMAR_DETAIL_RECYCLED_HPP
      11             : #define BOOST_URL_GRAMMAR_DETAIL_RECYCLED_HPP
      12             : 
      13             : #include <utility>
      14             : 
      15             : namespace boost {
      16             : namespace urls {
      17             : namespace grammar {
      18             : namespace detail {
      19             : 
      20             : template<
      21             :     std::size_t Size,
      22             :     std::size_t Align>
      23             : struct aligned_storage_impl
      24             : {
      25          22 :     void* addr() noexcept
      26             :     {
      27          22 :         return buf_;
      28             :     }
      29             : 
      30             :     void const* addr() const noexcept
      31             :     {
      32             :         return buf_;
      33             :     }
      34             : 
      35             : private:
      36             :     alignas(Align)
      37             :     unsigned char buf_[Size];
      38             : };
      39             : 
      40             : constexpr
      41             : std::size_t
      42             : nearest_pow2(
      43             :     std::size_t x,
      44             :     std::size_t f = 0) noexcept
      45             : {
      46             :     return
      47             :         (f <= (std::size_t(-1)/2))
      48             :         ? ( x <= f
      49             :             ? f
      50             :             : nearest_pow2(x, 2 * f))
      51             :         : x;
      52             : }
      53             : 
      54             : //------------------------------------------------
      55             : 
      56             : BOOST_URL_DECL
      57             : void
      58             : recycled_add_impl(
      59             :     std::size_t) noexcept;
      60             : 
      61             : BOOST_URL_DECL
      62             : void
      63             : recycled_remove_impl(
      64             :     std::size_t) noexcept;
      65             : 
      66             : #ifdef BOOST_URL_REPORT
      67             : 
      68             : inline
      69             : void
      70             : recycled_add(
      71             :     std::size_t n) noexcept
      72             : {
      73             :     recycled_add_impl(n);
      74             : }
      75             : 
      76             : inline
      77             : void
      78             : recycled_remove(
      79             :     std::size_t n) noexcept
      80             : {
      81             :     recycled_remove_impl(n);
      82             : }
      83             : 
      84             : #else
      85             : 
      86           8 : inline void recycled_add(
      87             :     std::size_t) noexcept
      88             : {
      89           8 : }
      90           8 : inline void recycled_remove(
      91             :     std::size_t) noexcept
      92             : {
      93           8 : }
      94             : 
      95             : #endif
      96             : 
      97             : } // detail
      98             : } // grammar
      99             : } // urls
     100             : } // boost
     101             : 
     102             : #endif

Generated by: LCOV version 1.15