LCOV - code coverage report
Current view: top level - libs/url/src/detail/print.hpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 19 19
Test Date: 2024-08-20 16:05:53 Functions: 100.0 % 3 3

            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/boostorg/url
       8              : //
       9              : 
      10              : #ifndef BOOST_URL_DETAIL_PRINT_HPP
      11              : #define BOOST_URL_DETAIL_PRINT_HPP
      12              : 
      13              : #include <cstdint>
      14              : #include <type_traits>
      15              : 
      16              : namespace boost {
      17              : namespace urls {
      18              : namespace detail {
      19              : 
      20              : // std::uint64_t
      21              : // 18446744073709551615
      22              : //          1          2
      23              : template<class T>
      24              : struct printed
      25              :     : std::false_type
      26              : {
      27              : };
      28              : 
      29              : // 16-bit unsigned
      30              : template<>
      31              : class printed<std::uint16_t>
      32              :     : std::false_type
      33              : {
      34              :     char n_;
      35              :     char buf_[5];
      36              : 
      37              : public:
      38           23 :     printed(std::uint16_t n)
      39           23 :     {
      40           23 :         char* it =
      41           23 :             buf_ + sizeof(buf_);
      42           23 :         if(n == 0)
      43              :         {
      44           16 :             *--it = '0';
      45           16 :             n_ = 1;
      46              :         }
      47              :         else
      48              :         {
      49           35 :             while(n > 0)
      50              :             {
      51           28 :                 *--it = '0' + (n % 10);
      52           28 :                 n /= 10;
      53              :             }
      54            7 :             n_ = static_cast<char>(
      55            7 :                 sizeof(buf_) - (
      56            7 :                     it - buf_));
      57              :         }
      58           23 :     }
      59              : 
      60              :     core::string_view
      61           69 :     string() const noexcept
      62              :     {
      63          138 :         return core::string_view(buf_ +
      64           69 :             sizeof(buf_) - n_, n_);
      65              :     }
      66              : };
      67              : 
      68              : template<class T>
      69              : printed<T>
      70           23 : make_printed(T t)
      71              : {
      72           23 :     return printed<T>(t);
      73              : }
      74              : 
      75              : } // detail
      76              : } // urls
      77              : } // boost
      78              : 
      79              : #endif
        

Generated by: LCOV version 2.1