LCOV - code coverage report
Current view: top level - libs/http_proto/src/detail/number_string.hpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 0.0 % 25 0
Test Date: 2024-07-08 21:32:34 Functions: 0.0 % 6 0

            Line data    Source code
       1              : //
       2              : // Copyright (c) 2019 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/CPPAlliance/http_proto
       8              : //
       9              : 
      10              : #ifndef BOOST_HTTP_PROTO_DETAIL_NUMBER_STRING_HPP
      11              : #define BOOST_HTTP_PROTO_DETAIL_NUMBER_STRING_HPP
      12              : 
      13              : #include <boost/http_proto/detail/config.hpp>
      14              : #include <boost/core/detail/string_view.hpp>
      15              : #include <cstdint>
      16              : 
      17              : namespace boost {
      18              : namespace http_proto {
      19              : namespace detail {
      20              : 
      21              : // Convert integer to decimal
      22              : // string using in-place storage
      23              : class number_string
      24              : {
      25              :     static constexpr unsigned buf_size = 18;
      26              :     char buf_[buf_size + 1];
      27              :     std::size_t size_ = 0;
      28              : 
      29              :     void
      30            0 :     construct_unsigned(
      31              :         std::uint64_t n) noexcept
      32              :     {
      33            0 :         buf_[buf_size] = '\0';
      34            0 :         auto const end =
      35              :             &buf_[buf_size];
      36            0 :         auto p = end;
      37            0 :         if(n == 0)
      38              :         {
      39            0 :             *--p = '0';
      40              :         }
      41              :         else
      42              :         {
      43            0 :             while(n > 0)
      44              :             {
      45            0 :                 *--p = '0' + (n%10);
      46            0 :                 n /= 10;
      47              :             }
      48              :         }
      49            0 :         size_ = end - p;
      50            0 :     }
      51              : 
      52              : public:
      53              :     number_string() = default;
      54              :     number_string(
      55              :         number_string const&) = default;
      56              :     number_string& operator=
      57              :         (number_string const&) = default;
      58              : 
      59              :     explicit
      60            0 :     number_string(
      61              :         std::uint64_t n) noexcept
      62            0 :     {
      63            0 :         construct_unsigned(n);
      64            0 :     }
      65              : 
      66              :     char const*
      67            0 :     data() const noexcept
      68              :     {
      69            0 :         return &buf_[
      70            0 :             buf_size] - size_;
      71              :     }
      72              : 
      73              :     std::size_t
      74            0 :     size() const noexcept
      75              :     {
      76            0 :         return size_;
      77              :     }
      78              : 
      79              :     core::string_view
      80            0 :     str() const noexcept
      81              :     {
      82            0 :         return core::string_view(
      83            0 :             data(), size());
      84              :     }
      85              : 
      86            0 :     operator
      87              :     core::string_view() const noexcept
      88              :     {
      89            0 :         return str();
      90              :     }
      91              : };
      92              : 
      93              : } // detail
      94              : } // http_proto
      95              : } // boost
      96              : 
      97              : #endif
        

Generated by: LCOV version 2.1