18 constexpr byte kUTF32_BE_bom[] = {0x00_b, 0x00_b, 0xFE_b, 0xFF_b};
19 constexpr byte kUTF32_LE_bom[] = {0xFF_b, 0xFE_b, 0x00_b, 0x00_b};
25 case UnicodeExternalEncodings::eUTF8: {
26#if qCompilerAndStdLib_span_requires_explicit_type_for_BLOBCVT_Buggy
27 return span<const byte>{Private_ ::kUTF8_bom,
sizeof (Private_ ::kUTF8_bom)};
29 return span{Private_ ::kUTF8_bom,
sizeof (Private_ ::kUTF8_bom)};
32 case UnicodeExternalEncodings::eUTF16_BE: {
33#if qCompilerAndStdLib_span_requires_explicit_type_for_BLOBCVT_Buggy
34 return span<const byte>{Private_ ::kUTF16_BE_bom,
sizeof (Private_ ::kUTF16_BE_bom)};
36 return span{Private_ ::kUTF16_BE_bom,
sizeof (Private_ ::kUTF16_BE_bom)};
39 case UnicodeExternalEncodings::eUTF16_LE: {
40#if qCompilerAndStdLib_span_requires_explicit_type_for_BLOBCVT_Buggy
41 return span<const byte>{Private_ ::kUTF16_LE_bom,
sizeof (Private_ ::kUTF16_LE_bom)};
43 return span{Private_ ::kUTF16_LE_bom,
sizeof (Private_ ::kUTF16_LE_bom)};
46 case UnicodeExternalEncodings::eUTF32_BE: {
47#if qCompilerAndStdLib_span_requires_explicit_type_for_BLOBCVT_Buggy
48 return span<const byte>{Private_ ::kUTF32_BE_bom,
sizeof (Private_ ::kUTF32_BE_bom)};
50 return span{Private_ ::kUTF32_BE_bom,
sizeof (Private_ ::kUTF32_BE_bom)};
53 case UnicodeExternalEncodings::eUTF32_LE: {
54#if qCompilerAndStdLib_span_requires_explicit_type_for_BLOBCVT_Buggy
55 return span<const byte>{Private_ ::kUTF32_LE_bom,
sizeof (Private_ ::kUTF32_LE_bom)};
57 return span{Private_ ::kUTF32_LE_bom,
sizeof (Private_ ::kUTF32_LE_bom)};
62 return span<const byte>{};
71 constexpr optional<tuple<UnicodeExternalEncodings, size_t>>
ReadByteOrderMark (span<const byte> d)
noexcept
75 if (d.size () >= bom.size () and std::memcmp (bom.data (), d.data (), bom.size ()) == 0) {
76 return make_tuple (e, bom.size ());
82 for (
UnicodeExternalEncodings e : {UnicodeExternalEncodings::eUTF8, UnicodeExternalEncodings::eUTF32_BE, UnicodeExternalEncodings::eUTF32_LE,
83 UnicodeExternalEncodings::eUTF16_BE, UnicodeExternalEncodings::eUTF16_LE}) {
84 if (
auto r = check1 (e)) {