25 #ifndef UTF_UTILS_HPP_
26 #define UTF_UTILS_HPP_ 1
40 template<
typename Char>
69 return (c ==
'/') ?
'.' : c;
79 template<
typename Char>
108 return (c ==
'.') ?
'/' : c;
117 template<
typename Iterator>
167 template<
typename Iterator,
typename Fn>
168 typename Fn::ReturnType
transform(Iterator begin, Iterator end, Fn);
170 template<
typename T,
typename Fn>
179 template<
typename ReturnType, ErrorAction action>
186 ReturnType
finish()
const {
return ReturnType(); }
187 ReturnType
abort()
const {
return ReturnType(); }
201 inline bool is_ascii(uint8_t c) {
return c < 128; }
207 template<
typename Utf8Iterator>
208 inline bool decode(Utf8Iterator begin, Utf8Iterator end, uint16_t *dst);
219 template<
typename It>
228 template<
typename It>
254 template<
typename Iterator,
typename Fn>
255 typename Fn::ReturnType
transform(Iterator begin, Iterator end, Fn);
257 template<
typename T,
typename Fn>
266 template<
typename ReturnType>
271 ReturnType
finish()
const {
return ReturnType(); }
277 inline bool is_ascii(uint16_t c) {
return c < 128; }
282 template<
typename Utf16Iterator>
283 void encode(Utf16Iterator begin, Utf16Iterator end,
char *dst);
294 template<
typename It>
303 template<
typename It>
315 #endif // UTF_UTILS_HPP_
bool operator!=(const SlashToDot &it) const
const Char * difference_type
SlashToDot(const Char *cs)
bool operator==(const DotToSlash &it) const
utf_utils::Range< SlashToDot > slash_to_dot(T t)
uint16_t decode_char(const char *&)
Range(Iterator b, Iterator e)
std::forward_iterator_tag iterator_category
bool operator==(const SlashToDot &it) const
SlashToDot operator++(int)
std::forward_iterator_tag iterator_category
Fn::ReturnType transform(Iterator begin, Iterator end, Fn)
SlashToDot & operator++()
ReturnType finish() const
SlashToDot operator+(size_t sz) const
utf_utils::DotToSlash< uint16_t > DotToSlash
void encode(Utf16Iterator begin, Utf16Iterator end, char *dst)
utf_utils::SlashToDot< uint16_t > SlashToDot
DotToSlash operator++(int)
bool is_ascii(uint16_t c)
utf_utils::Range< DotToSlash > dot_to_slash(T t)
DotToSlash(const Char *cs)
void utf16(uint16_t) const
ErrorAction error_action() const
void utf16(uint16_t) const
bool operator>(const SlashToDot &it) const
utf_utils::DotToSlash< char > DotToSlash
ReturnType finish() const
utf_utils::Range< DotToSlash > dot_to_slash(T t)
DotToSlash & operator++()
DotToSlash operator+(size_t sz) const
Fn::ReturnType transform(Iterator begin, Iterator end, Fn)
bool operator!=(const DotToSlash &it) const
bool decode(Utf8Iterator begin, Utf8Iterator end, uint16_t *dst)
const Char * difference_type
utf_utils::SlashToDot< char > SlashToDot
bool operator>(const DotToSlash &it) const
utf_utils::Range< SlashToDot > slash_to_dot(T t)