Browse Source

implement the last missing method: nfc_string::normalize().

master
roker 4 years ago
parent
commit
640d7d210b
  1. 11
      src/nfc.cc
  2. 2
      src/nfc.hh

11
src/nfc.cc

@ -787,6 +787,17 @@ UTF<CharT>::nfc_string UTF<CharT>::nfc_string::substr(std::size_t pos, std::size
return nfc_string{s.substr(pos,count)}; return nfc_string{s.substr(pos,count)};
} }
template<class CharT>
void UTF<CharT>::nfc_string::normalize()
{
if(isNFC_quick_check(s) != IsNFC::Yes)
{
s = generate( createNFC( fromUtf_decompose(s) ));
}
}
// convenience function to avoid ::strdup(pEp::toNFC<char>(text).c_str()); // convenience function to avoid ::strdup(pEp::toNFC<char>(text).c_str());
// and unecessary temporary std::string etc. // and unecessary temporary std::string etc.
char* strdup_NFC(std::string_view s) char* strdup_NFC(std::string_view s)

2
src/nfc.hh

@ -47,7 +47,6 @@ public:
static static
void generate(const char32_t c, OutIter& out); void generate(const char32_t c, OutIter& out);
/// returns whether the sequence starts with IsNFC==Yes char /// returns whether the sequence starts with IsNFC==Yes char
static static
bool is_safe_NFC_start(std::basic_string_view<CharT> s); bool is_safe_NFC_start(std::basic_string_view<CharT> s);
@ -62,6 +61,7 @@ public:
bool isNFC(std::basic_string_view<CharT> s); bool isNFC(std::basic_string_view<CharT> s);
/// returns true if the sequence is valid UTF-8 /// returns true if the sequence is valid UTF-8
static
bool isUtf(const CharT* begin, const CharT* end); bool isUtf(const CharT* begin, const CharT* end);
/// converts a C++ string (in UTF-8/-16) into NFC form /// converts a C++ string (in UTF-8/-16) into NFC form

Loading…
Cancel
Save