/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Encoding.hpp Date: 2021-8-20 Author: Reece ***/ #pragma once namespace Aurora::Locale::Encoding { AUKN_SYM AuStreamReadWrittenPair_t EncodeUTF8(const Aurora::Memory::MemoryViewRead & utf8, const Aurora::Memory::MemoryViewWrite & binary, ECodePage page = ECodePage::eUnsupported); static inline AuStreamReadWrittenPair_t EncodeUTF8(const AuString &utf8, const Aurora::Memory::MemoryViewWrite & binary, ECodePage page = ECodePage::eUnsupported) { return EncodeUTF8(Aurora::Memory::MemoryViewRead(utf8), binary, page); } AUKN_SYM std::optional> DecodeBOM(const Aurora::Memory::MemoryViewRead & binary); /// Translates a buffer, possibly a slice of a stream, to UTF-8 /// Returns a pair; bytes consumed, bytes written AUKN_SYM AuStreamReadWrittenPair_t DecodeUTF8(const Aurora::Memory::MemoryViewRead & binary, const Aurora::Memory::MemoryViewWrite & utf8, ECodePage page = ECodePage::eUnsupported); AUKN_SYM AuStreamReadWrittenPair_t DecodeUTF8(const Aurora::Memory::MemoryViewRead & binary, AuString &out, ECodePage page = ECodePage::eUnsupported); }