diff options
author | Roland Reichwein <mail@reichwein.it> | 2021-12-28 14:35:36 +0100 |
---|---|---|
committer | Roland Reichwein <mail@reichwein.it> | 2021-12-28 14:35:36 +0100 |
commit | 563557be9c97496b7435bef4e64730a379e55037 (patch) | |
tree | 76fc7104d8ac68834e6b57bce97187d615912b8c /include | |
parent | 403c885d67f79c637ebcb303722adfd6a4b8195e (diff) |
UTF and ISO are Encodings, not Facets
Diffstat (limited to 'include')
-rw-r--r-- | include/unicode.h | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/include/unicode.h b/include/unicode.h index be91d77..4e4c7eb 100644 --- a/include/unicode.h +++ b/include/unicode.h @@ -576,7 +576,7 @@ namespace unicode { typename iso_back_insert_iterator::string_type& s; }; - // Facet for convert() and ISO-8859-* + // Encoding for convert() and ISO-8859-* template<typename InputIt, typename OutputIt> struct ISO_8859 { @@ -599,7 +599,7 @@ namespace unicode { } }; - // Facet for convert() and UTF-* + // Encoding for convert() and UTF-* template<typename InputIt, typename OutputIt> struct UTF { @@ -622,7 +622,7 @@ namespace unicode { } }; - // Facet for convert() + // Encoding for convert() typedef ISO_8859<iso_iterator<>, iso_back_insert_iterator<>> ISO_8859_1; typedef ISO_8859<iso_iterator<iso_8859_15_map>, iso_back_insert_iterator<iso_8859_15_map_reverse>> ISO_8859_15; @@ -731,7 +731,7 @@ namespace unicode { }; // class ArchitectureOptimizer - // From and To are facets + // From and To are Encodings template<typename From, typename To, std::enable_if_t<std::is_empty<From>::value, bool> = true> typename To::string_type convert_optimized(const typename From::string_type& s) { @@ -777,7 +777,7 @@ namespace unicode { return result; } - // From and To are facets + // From and To are Encodings template<typename From, typename To, std::enable_if_t<std::is_empty<From>::value, bool> = true> typename To::string_type convert(const typename From::string_type& s) { @@ -799,7 +799,7 @@ namespace unicode { } } - // Helper to get correct Facet from char type, e.g. Encoding<typename decltype(s)::value_type>::Facet + // Helper to get correct Encoding from char type, e.g. Encoding<typename decltype(s)::value_type>::type or Encoding_t<typename decltype(s)::value_type> template<typename T> struct Encoding { @@ -808,21 +808,24 @@ namespace unicode { template<> struct Encoding<utf8_t> { - typedef UTF_8 Facet; + typedef UTF_8 type; }; template<> struct Encoding<char16_t> { - typedef UTF_16 Facet; + typedef UTF_16 type; }; template<> struct Encoding<char32_t> { - typedef UTF_32 Facet; + typedef UTF_32 type; }; + template<typename T> + using Encoding_t = typename Encoding<T>::type; + // From and To are from: utf8_t (i.e. char or char8_t (C++20)), char16_t and char32_t, char, wchar_t, uint8_t, uint16_t, uint32_t template<typename From, typename To, typename FromContainer=std::basic_string<From>, @@ -884,11 +887,11 @@ namespace unicode { return true; } - // Facet version - template<typename Facet, std::enable_if_t<std::is_empty<Facet>::value, bool> = true> - bool is_valid_utf(const typename Facet::string_type& s) + // Encoding version + template<typename Encoding, std::enable_if_t<std::is_empty<Encoding>::value, bool> = true> + bool is_valid_utf(const typename Encoding::string_type& s) { - return validate_utf<typename Facet::value_type>(s); + return validate_utf<typename Encoding::value_type>(s); } } // namespace unicode |