summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorRoland Reichwein <mail@reichwein.it>2021-12-28 14:35:36 +0100
committerRoland Reichwein <mail@reichwein.it>2021-12-28 14:35:36 +0100
commit563557be9c97496b7435bef4e64730a379e55037 (patch)
tree76fc7104d8ac68834e6b57bce97187d615912b8c /include
parent403c885d67f79c637ebcb303722adfd6a4b8195e (diff)
UTF and ISO are Encodings, not Facets
Diffstat (limited to 'include')
-rw-r--r--include/unicode.h29
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