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<const byte>{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
73 auto check1 = [&d] (
auto bom) -> optional<tuple<UnicodeExternalEncodings, size_t>> {
74 if (d.size () >= bom.size () and std::memcmp (bom.data (), d.data (), bom.size ()) == 0) {
75 return make_tuple (UnicodeExternalEncodings::eUTF8, bom.size ());
84 if (
auto r = check1 (
GetByteOrderMark (UnicodeExternalEncodings::eUTF32_BE))) {
87 if (
auto r = check1 (
GetByteOrderMark (UnicodeExternalEncodings::eUTF32_LE))) {
91 if (
auto r = check1 (
GetByteOrderMark (UnicodeExternalEncodings::eUTF16_BE))) {
94 if (
auto r = check1 (
GetByteOrderMark (UnicodeExternalEncodings::eUTF16_LE))) {