X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fboost%2Fboost%2Fnowide%2Fdetail%2Fconvert.hpp;fp=ceph%2Fsrc%2Fboost%2Fboost%2Fnowide%2Fdetail%2Fconvert.hpp;h=5fcf3a1a786b73a5001fc3317086f5fac1f592e2;hb=20effc670b57271cb089376d6d0800990e5218d5;hp=fdfc20a4a01ffe2bac03e4d3cd00b2a4f5596df0;hpb=a71831dadd1e1f3e0fa70405511f65cc33db0498;p=ceph.git diff --git a/ceph/src/boost/boost/nowide/detail/convert.hpp b/ceph/src/boost/boost/nowide/detail/convert.hpp index fdfc20a4a..5fcf3a1a7 100644 --- a/ceph/src/boost/boost/nowide/detail/convert.hpp +++ b/ceph/src/boost/boost/nowide/detail/convert.hpp @@ -1,101 +1,24 @@ // -// Copyright (c) 2012 Artyom Beilis (Tonkikh) +// Copyright (c) 2020 Alexander Grund // // Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at +// accompanying file LICENSE or copy at // http://www.boost.org/LICENSE_1_0.txt) // #ifndef BOOST_NOWIDE_DETAIL_CONVERT_HPP_INCLUDED #define BOOST_NOWIDE_DETAIL_CONVERT_HPP_INCLUDED -#include -#include -#include -#include +#include + +// Legacy compatibility header only. Include instead namespace boost { namespace nowide { - /// \cond INTERNAL namespace detail { - /// - /// Convert a buffer of UTF sequences in the range [source_begin, source_end) - /// from \tparam CharIn to \tparam CharOut to the output \a buffer of size \a buffer_size. - /// - /// \return original buffer containing the NULL terminated string or NULL - /// - /// If there is not enough room in the buffer NULL is returned, and the content of the buffer is undefined. - /// Any illegal sequences are replaced with the replacement character, see #BOOST_NOWIDE_REPLACEMENT_CHARACTER - /// - template - CharOut* - convert_buffer(CharOut* buffer, size_t buffer_size, const CharIn* source_begin, const CharIn* source_end) - { - CharOut* rv = buffer; - if(buffer_size == 0) - return 0; - buffer_size--; - while(source_begin != source_end) - { - using namespace detail::utf; - code_point c = utf_traits::template decode(source_begin, source_end); - if(c == illegal || c == incomplete) - { - c = BOOST_NOWIDE_REPLACEMENT_CHARACTER; - } - size_t width = utf_traits::width(c); - if(buffer_size < width) - { - rv = NULL; - break; - } - buffer = utf_traits::template encode(c, buffer); - buffer_size -= width; - } - *buffer++ = 0; - return rv; - } - - /// - /// Convert the UTF sequences in range [begin, end) from \tparam CharIn to \tparam CharOut - /// and return it as a string - /// - /// Any illegal sequences are replaced with the replacement character, see #BOOST_NOWIDE_REPLACEMENT_CHARACTER - /// - template - std::basic_string convert_string(const CharIn* begin, const CharIn* end) - { - std::basic_string result; - result.reserve(end - begin); - typedef std::back_insert_iterator > inserter_type; - inserter_type inserter(result); - using namespace detail::utf; - code_point c; - while(begin != end) - { - c = utf_traits::template decode(begin, end); - if(c == illegal || c == incomplete) - { - c = BOOST_NOWIDE_REPLACEMENT_CHARACTER; - } - utf_traits::template encode(c, inserter); - } - return result; - } - - /// Return the length of the given string. - /// That is the number of characters until the first NULL character - /// Equivalent to `std::strlen(s)` but can handle wide-strings - template - size_t strlen(const Char* s) - { - const Char* end = s; - while(*end) - end++; - return end - s; - } - + using boost::nowide::utf::convert_buffer; + using boost::nowide::utf::convert_string; + using boost::nowide::utf::strlen; } // namespace detail - /// \endcond } // namespace nowide } // namespace boost