47 lines
1.1 KiB
C++
47 lines
1.1 KiB
C++
// Copyright Antony Polukhin, 2016-2022.
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0. (See
|
|
// accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
#ifndef BOOST_STACKTRACE_DETAIL_TO_DEC_ARRAY_HPP
|
|
#define BOOST_STACKTRACE_DETAIL_TO_DEC_ARRAY_HPP
|
|
|
|
#include <boost/config.hpp>
|
|
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
# pragma once
|
|
#endif
|
|
|
|
#include <boost/array.hpp>
|
|
|
|
namespace boost { namespace stacktrace { namespace detail {
|
|
|
|
// We do not use boost::lexical_cast in this function to reduce module dependencies
|
|
inline boost::array<char, 40> to_dec_array(std::size_t value) BOOST_NOEXCEPT {
|
|
boost::array<char, 40> ret;
|
|
if (!value) {
|
|
ret[0] = '0';
|
|
ret[1] = '\0';
|
|
return ret;
|
|
}
|
|
|
|
std::size_t digits = 0;
|
|
for (std::size_t value_copy = value; value_copy; value_copy /= 10) {
|
|
++ digits;
|
|
}
|
|
|
|
for (std::size_t i = 1; i <= digits; ++i) {
|
|
ret[digits - i] = static_cast<char>('0' + (value % 10));
|
|
value /= 10;
|
|
}
|
|
|
|
ret[digits] = '\0';
|
|
|
|
return ret;
|
|
}
|
|
|
|
|
|
}}} // namespace boost::stacktrace::detail
|
|
|
|
#endif // BOOST_STACKTRACE_DETAIL_TO_DEC_ARRAY_HPP
|