#ifndef UTF_UTF8_HH #define UTF_UTF8_HH #include "macros.hh" #include #include namespace utf { /** * Read one unicode codepoint from UTF-8 encoded data if possible. * If successful, 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-8, this includes overlong encodings and * invalid unicode code points, returns INVALID. */ uint32_t HIDDEN read8(std::span data, std::size_t& offset); /** * Write one unicode codepoint to UTF-8 encoded data if possible. * If successful, offset is incremented to the end of the written data * and true is returned. * If not successful, offset is not incremented and false is returned. * data is not modified. */ bool HIDDEN write8(uint32_t codepoint, std::span data, std::size_t& offset); } // namespace utf #endif // UTF_UTF8_HH