From 39232114ebc3df100270ac5ac1f17f9731a31474 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Tue, 23 Dec 2025 03:49:23 +0200 Subject: [PATCH] Move some support functions from string_generator.hpp to from_chars.hpp --- include/boost/uuid/detail/from_chars.hpp | 27 ++++++++++++---- include/boost/uuid/string_generator.hpp | 41 +++--------------------- 2 files changed, 25 insertions(+), 43 deletions(-) diff --git a/include/boost/uuid/detail/from_chars.hpp b/include/boost/uuid/detail/from_chars.hpp index 9a196a1..818315d 100644 --- a/include/boost/uuid/detail/from_chars.hpp +++ b/include/boost/uuid/detail/from_chars.hpp @@ -14,29 +14,29 @@ namespace detail { constexpr char const* from_chars_digits( char const* ) noexcept { - return "0123456789ABCDEFabcdef-"; + return "0123456789ABCDEFabcdef-{}"; } constexpr wchar_t const* from_chars_digits( wchar_t const* ) noexcept { - return L"0123456789ABCDEFabcdef-"; + return L"0123456789ABCDEFabcdef-{}"; } constexpr char16_t const* from_chars_digits( char16_t const* ) noexcept { - return u"0123456789ABCDEFabcdef-"; + return u"0123456789ABCDEFabcdef-{}"; } constexpr char32_t const* from_chars_digits( char32_t const* ) noexcept { - return U"0123456789ABCDEFabcdef-"; + return U"0123456789ABCDEFabcdef-{}"; } #if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L constexpr char8_t const* from_chars_digits( char8_t const* ) noexcept { - return u8"0123456789ABCDEFabcdef-"; + return u8"0123456789ABCDEFabcdef-{}"; } #endif @@ -67,10 +67,25 @@ BOOST_CXX14_CONSTEXPR inline unsigned char from_chars_is_dash( Ch ch ) noexcept { constexpr Ch const* digits = detail::from_chars_digits( static_cast( nullptr ) ); - return ch == digits[ 22 ]; } +template +BOOST_CXX14_CONSTEXPR inline +unsigned char from_chars_is_opening_brace( Ch ch ) noexcept +{ + constexpr Ch const* digits = detail::from_chars_digits( static_cast( nullptr ) ); + return ch == digits[ 23 ]; +} + +template +BOOST_CXX14_CONSTEXPR inline +unsigned char from_chars_is_closing_brace( Ch ch ) noexcept +{ + constexpr Ch const* digits = detail::from_chars_digits( static_cast( nullptr ) ); + return ch == digits[ 24 ]; +} + } // namespace detail enum class from_chars_error diff --git a/include/boost/uuid/string_generator.hpp b/include/boost/uuid/string_generator.hpp index b0b973d..531a14e 100644 --- a/include/boost/uuid/string_generator.hpp +++ b/include/boost/uuid/string_generator.hpp @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -84,7 +83,7 @@ public: // check open brace - bool has_open_brace = is_open_brace( *first ); + bool has_open_brace = detail::from_chars_is_opening_brace( *first ); if( has_open_brace ) { @@ -137,7 +136,7 @@ public: return u; } - has_dashes = is_dash( *first ); + has_dashes = detail::from_chars_is_dash( *first ); if( has_dashes ) { @@ -156,7 +155,7 @@ public: return u; } - if( is_dash( *first ) ) + if( detail::from_chars_is_dash( *first ) ) { ++first, ++pos; } @@ -179,7 +178,7 @@ public: return u; } - if( is_close_brace( *first ) ) + if( detail::from_chars_is_closing_brace( *first ) ) { ++first, ++pos; } @@ -235,38 +234,6 @@ public: { return operator()( s, s + detail::cx_strlen( s ) ); } - -private: - - static constexpr bool is_dash( char c ) noexcept - { - return c == '-'; - } - - static constexpr bool is_dash( wchar_t c ) noexcept - { - return c == L'-'; - } - - static constexpr bool is_open_brace( char c ) noexcept - { - return c == '{'; - } - - static constexpr bool is_open_brace( wchar_t c ) noexcept - { - return c == L'{'; - } - - static constexpr bool is_close_brace( char c ) noexcept - { - return c == '}'; - } - - static constexpr bool is_close_brace( wchar_t c ) noexcept - { - return c == L'}'; - } }; }} // namespace boost::uuids