// Copyright Antony Polukhin, 2016-2019.
//
// 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
