github.com/searKing/golang/go@v1.2.117/os/signal/cgo/include/boost/stacktrace/detail/to_dec_array.hpp (about)

     1  // Copyright Antony Polukhin, 2016-2023.
     2  //
     3  // Distributed under the Boost Software License, Version 1.0. (See
     4  // accompanying file LICENSE_1_0.txt or copy at
     5  // http://www.boost.org/LICENSE_1_0.txt)
     6  
     7  #ifndef BOOST_STACKTRACE_DETAIL_TO_DEC_ARRAY_HPP
     8  #define BOOST_STACKTRACE_DETAIL_TO_DEC_ARRAY_HPP
     9  
    10  #include <boost/config.hpp>
    11  #ifdef BOOST_HAS_PRAGMA_ONCE
    12  #   pragma once
    13  #endif
    14  
    15  #include <array>
    16  #include <cstddef>  // std::size_t
    17  
    18  namespace boost { namespace stacktrace { namespace detail {
    19  
    20  // We do not use boost::lexical_cast in this function to reduce module dependencies
    21  inline std::array<char, 40> to_dec_array(std::size_t value) noexcept {
    22      std::array<char, 40> ret;
    23      if (!value) {
    24          ret[0] = '0';
    25          ret[1] = '\0';
    26          return ret;
    27      }
    28  
    29      std::size_t digits = 0;
    30      for (std::size_t value_copy = value; value_copy; value_copy /= 10) {
    31          ++ digits;
    32      }
    33  
    34      for (std::size_t i = 1; i <= digits; ++i) {
    35          ret[digits - i] = static_cast<char>('0' + (value % 10));
    36          value /= 10;
    37      }
    38  
    39      ret[digits] = '\0';
    40  
    41      return ret;
    42  }
    43  
    44  
    45  }}} // namespace boost::stacktrace::detail
    46  
    47  #endif // BOOST_STACKTRACE_DETAIL_TO_DEC_ARRAY_HPP