diff --git a/Makefile.conf b/Makefile.conf index 68f6663..1cfa6a5 100644 --- a/Makefile.conf +++ b/Makefile.conf @@ -12,7 +12,7 @@ DEBUG=1 PREFIX?=$(HOME) ENGINE_LIB_PATH=$(PREFIX)/lib ENGINE_INC_PATH=$(PREFIX)/include -LANG_VERSION=c++14 +LANG_VERSION=c++17 CXXFLAGS+=-fPIC diff --git a/src/nfc.cc b/src/nfc.cc index 5116793..ae75d4b 100644 --- a/src/nfc.cc +++ b/src/nfc.cc @@ -118,7 +118,7 @@ namespace }; - std::string escape(pEp::string_view s) + std::string escape(std::string_view s) { std::string ret; ret.reserve(s.size() + 16 ); for(char c : s) @@ -136,7 +136,7 @@ namespace return ret; } - std::string escape(pEp::u16string_view s) + std::string escape(std::u16string_view s) { std::string ret; ret.reserve(s.size() + 16 ); for(char16_t c : s) @@ -224,7 +224,7 @@ namespace namespace pEp { -std::string escape_utf16(u16string_view s) +std::string escape_utf16(std::u16string_view s) { return escape(s); } @@ -435,11 +435,11 @@ std::basic_string UTF::generate(const std::u32string& u32) -illegal_utf::illegal_utf( string_view s, unsigned position, const std::string& reason) +illegal_utf::illegal_utf( std::string_view s, unsigned position, const std::string& reason) : std::runtime_error( "Illegal UTF-8 string \"" + escape(s) + "\" at position " + std::to_string(position) + ": " + reason ) {} -illegal_utf::illegal_utf( u16string_view s, unsigned position, const std::string& reason) +illegal_utf::illegal_utf( std::u16string_view s, unsigned position, const std::string& reason) : std::runtime_error( "Illegal UTF-16 string \"" + escape(s) + "\" at position " + std::to_string(position) + ": " + reason ) {} @@ -449,7 +449,7 @@ illegal_utf::illegal_utf( const std::string& msg ) {} -void assert_utf8(string_view s) +void assert_utf8(std::string_view s) { const char* begin = s.data(); const char* const end = s.data() + s.size(); @@ -470,7 +470,7 @@ void assert_utf8(string_view s) // creates a NFD string from s template -std::u32string UTF::fromUtf_decompose(basic_string_view s) +std::u32string UTF::fromUtf_decompose(std::basic_string_view s) { std::u32string u32s; u32s.reserve( static_cast(s.size()*1.25) ); @@ -555,7 +555,7 @@ std::u32string createNFC(std::u32string nfd) template -IsNFC UTF::isNFC_quick_check(basic_string_view s) +IsNFC UTF::isNFC_quick_check(std::basic_string_view s) { const CharT* begin = s.data(); const CharT* const end = s.data() + s.size(); @@ -585,7 +585,7 @@ IsNFC UTF::isNFC_quick_check(basic_string_view s) template -bool UTF::isNFC(basic_string_view s) +bool UTF::isNFC(std::basic_string_view s) { switch( isNFC_quick_check(s) ) { @@ -618,7 +618,7 @@ try{ // s is ''moved'' to the return value if possible so no copy is done here. template -std::basic_string UTF::toNFC(basic_string_view s) +std::basic_string UTF::toNFC(std::basic_string_view s) { if(isNFC_quick_check(s)==IsNFC::Yes) return std::basic_string{s}; @@ -628,7 +628,7 @@ std::basic_string UTF::toNFC(basic_string_view s) template<> -size_t UTF::utf_length(u32string_view s) +size_t UTF::utf_length(std::u32string_view s) { size_t len = 0; for(const char32_t c : s) @@ -659,7 +659,7 @@ size_t UTF::utf_length(u32string_view s) template<> -size_t UTF::utf_length(u32string_view s) +size_t UTF::utf_length(std::u32string_view s) { size_t len = 0; for(const char32_t c : s) @@ -685,7 +685,7 @@ size_t UTF::utf_length(u32string_view s) // convenience function to avoid ::strdup(pEp::toNFC(text).c_str()); // and unecessary temporary std::string etc. -char* strdup_NFC(string_view s) +char* strdup_NFC(std::string_view s) { if(UTF8::isNFC_quick_check(s)==IsNFC::Yes) return ::new_string(s.data(), s.size()); diff --git a/src/nfc.hh b/src/nfc.hh index 11b6ddc..2d94976 100644 --- a/src/nfc.hh +++ b/src/nfc.hh @@ -4,7 +4,7 @@ #ifndef LIBPEPDATATYPES_NFC_HH #define LIBPEPDATATYPES_NFC_HH -#include "string_view.hh" // to switch between std::string_view or boost::string_view.hh +#include #include #include #include @@ -25,8 +25,8 @@ std::ostream& operator<<(std::ostream& o, IsNFC is_nfc); class illegal_utf : public std::runtime_error { public: - illegal_utf( string_view, unsigned position, const std::string& reason); - illegal_utf(u16string_view, unsigned position, const std::string& reason); + illegal_utf( std::string_view, unsigned position, const std::string& reason); + illegal_utf(std::u16string_view, unsigned position, const std::string& reason); protected: explicit illegal_utf(const std::string& message); }; @@ -51,22 +51,22 @@ public: /// return No or Maybe, if at least one character with NFC_Quickcheck class is "No" or "Maybe" /// might throw illegal_utf exception static - IsNFC isNFC_quick_check(basic_string_view s); + IsNFC isNFC_quick_check(std::basic_string_view s); /// runs first quick check and a deep test if quick check returns "Maybe". static - bool isNFC(basic_string_view s); + bool isNFC(std::basic_string_view s); /// returns true if the sequence is valid UTF-8 bool isUtf(const CharT* begin, const CharT* end); /// converts a C++ string (in UTF-8/-16) into NFC form static - std::basic_string toNFC(basic_string_view s); + std::basic_string toNFC(std::basic_string_view s); /// calculates the number of "code units" in the target Unicode Transfer Format. static - size_t utf_length(u32string_view s); + size_t utf_length(std::u32string_view s); /// generates a whole u32string at once static @@ -74,7 +74,7 @@ public: /// creates an NFD u32string from UTF-8/UTF-16 input string s static - std::u32string fromUtf_decompose(basic_string_view s); + std::u32string fromUtf_decompose(std::basic_string_view s); }; using UTF8 = UTF; @@ -82,7 +82,7 @@ using UTF16 = UTF; // throws illegal_utf8 exception if s is not valid UTF-8 -void assert_utf8(string_view s); +void assert_utf8(std::string_view s); // convert NFD to NFC @@ -92,11 +92,11 @@ std::u32string createNFC(std::u32string nfd_string); // return No or Maybe, if at least one character with NFC_Quickcheck class is "No" or "Maybe" // might throw illegal_utf exception template -IsNFC isNFC_quick_check(basic_string_view s); +IsNFC isNFC_quick_check(std::basic_string_view s); // runs first quick check and a deep test if quick check returns "Maybe". template -bool isNFC(basic_string_view s); +bool isNFC(std::basic_string_view s); // returns true if the sequence is valid UTF-8 bool isUtf8(const char* begin, const char* end); @@ -104,15 +104,16 @@ bool isUtf8(const char* begin, const char* end); // converts a C++ string (in UTF-8) into NFC form // s is ''moved'' to the return value if possible so no copy is done here. template -std::basic_string toNFC(basic_string_view s); +std::basic_string toNFC(std::basic_string_view s); */ // creates a UTF-8-encoded NFC string from s -std::string toNFC_8(u16string_view s); +std::string toNFC_8(std::u16string_view s); // convenience functions to avoid ::strdup(pEp::toNFC(text).c_str()); // and unecessary temporary std::string etc. -char* strdup_NFC(string_view s); +char* strdup_NFC(std::string_view s); + pEp_identity *identity_dup_NFC(const ::pEp_identity* value); ::identity_list* identity_list_dup_NFC(const ::identity_list* value); diff --git a/src/string_view.hh b/src/string_view.hh deleted file mode 100644 index fc00d42..0000000 --- a/src/string_view.hh +++ /dev/null @@ -1,28 +0,0 @@ -// This file is under GNU General Public License 3.0 -// see LICENSE.txt - -#ifndef PEP_DATATYPES_STRING_VIEW_HH -#define PEP_DATATYPES_STRING_VIEW_HH - -#include - -namespace pEp -{ - template - using basic_string_view = std::basic_string_view; - - typedef std::string_view string_view; - typedef std::u16string_view u16string_view; - typedef std::u32string_view u32string_view; -} - -namespace pEp -{ - constexpr - string_view operator""_sv(const char* s, size_t sz) noexcept - { - return string_view(s,sz); - } -} - -#endif // PEP_DATATYPES_STRING_VIEW_HH