Program Listing for File encoding.hpp

Return to documentation for file (include/ndef-lite/encoding.hpp)

#ifndef UTF_HPP
#define UTF_HPP

#include <codecvt>
#include <string>
#include <vector>

namespace encoding {
const uint8_t BOM_BE_1ST = '\xff';
const uint8_t BOM_BE_2ND = '\xfe';

enum class Endian { BigEndian, LittleEndian };

constexpr Endian system_endianness();

std::string to_utf8(const std::string& src);

std::string to_utf8(const std::u16string& src);

// \param src std::string source to convert
std::u16string to_utf16(const std::string& src);

std::u16string to_utf16(const std::u16string& src);

std::u16string to_utf16(const std::vector<uint8_t>& src);

std::vector<uint8_t> to_utf16_bytes(const std::u16string& src, const Endian& endian = Endian::LittleEndian);

std::vector<uint8_t> to_utf16le_bytes(const std::u16string& src);

std::vector<uint8_t> to_utf16be_bytes(const std::u16string& src);

std::u16string from_utf16_bom(const std::vector<uint8_t>& src);

bool has_BOM(const std::u16string& text);

bool has_BOM(const std::vector<uint8_t>& bytes);
} // namespace encoding

#endif // UTF_HPP