AWS_STATIC_IMPL enum aws_text_encoding aws_text_detect_encoding()

in GameLiftPlugin/Source/AWSSDK/Include/aws/common/encoding.inl [103:133]


AWS_STATIC_IMPL enum aws_text_encoding aws_text_detect_encoding(const uint8_t *bytes, size_t size) {
    static const char *UTF_8_BOM = "\xEF\xBB\xBF";
    static const char *UTF_16_BE_BOM = "\xFE\xFF";
    static const char *UTF_16_LE_BOM = "\xFF\xFE";
    static const char *UTF_32_BE_BOM = "\x00\x00\xFE\xFF";
    static const char *UTF_32_LE_BOM = "\xFF\xFE\x00\x00";

    if (size >= 3) {
        if (memcmp(bytes, UTF_8_BOM, 3) == 0)
            return AWS_TEXT_UTF8;
    }
    if (size >= 4) {
        if (memcmp(bytes, UTF_32_LE_BOM, 4) == 0)
            return AWS_TEXT_UTF32;
        if (memcmp(bytes, UTF_32_BE_BOM, 4) == 0)
            return AWS_TEXT_UTF32;
    }
    if (size >= 2) {
        if (memcmp(bytes, UTF_16_LE_BOM, 2) == 0)
            return AWS_TEXT_UTF16;
        if (memcmp(bytes, UTF_16_BE_BOM, 2) == 0)
            return AWS_TEXT_UTF16;
    }
    size_t idx = 0;
    for (; idx < size; ++idx) {
        if (bytes[idx] & 0x80) {
            return AWS_TEXT_UNKNOWN;
        }
    }
    return AWS_TEXT_ASCII;
}