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