diff options
Diffstat (limited to 'utf/inc/utf16.hh')
| -rw-r--r-- | utf/inc/utf16.hh | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/utf/inc/utf16.hh b/utf/inc/utf16.hh new file mode 100644 index 0000000..344b1a2 --- /dev/null +++ b/utf/inc/utf16.hh @@ -0,0 +1,31 @@ +#ifndef UTF_UTF16_HH +#define UTF_UTF16_HH + +#include "macros.hh" + +#include <cstdint> +#include <string_view> + +namespace utf { + +/* Read one unicode codepoint from UTF-16 BigEndian encoded data if possible. + * If successfull offset is incremented to point to next codepoint. + * Will fail: + * - not enough data is left in data given offset, returns NEED_MORE. + * - data is not valid UTF-16, ie. invalid or incomplete surrogate pairs, + * returns INVALID. + */ +uint32_t HIDDEN read16be(std::string_view data, std::size_t& offset); + +/* Read one unicode codepoint from UTF-16 LittleEndian encoded data if possible. + * If successfull offset is incremented to point to next codepoint. + * Will fail: + * - not enough data is left in data given offset, returns NEED_MORE. + * - data is not valid UTF-16, ie. invalid or incomplete surrogate pairs, + * returns INVALID. + */ +uint32_t HIDDEN read16le(std::string_view data, std::size_t& offset); + +} // namespace utf + +#endif // UTF_UTF16_HH |
