- const static uint8_t U1 = 1u;
- const static uint8_t U2 = 2u;
- const static uint8_t U3 = 3u;
- const static uint8_t U4 = 4u;
- const static uint8_t U0 = 0u;
- const static uint8_t UTF8_LENGTH[256] = {
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, // lead byte = 0xxx xxxx (U+0000 - U+007F + some extended ascii characters)
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
- U1, U1, //
-
- U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, //
- U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, // lead byte = 110x xxxx (U+0080 - U+07FF)
- U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, //
- U2, U2, //
-
- U3, U3, U3, U3, U3, U3, U3, U3, U3, U3, // lead byte = 1110 xxxx (U+0800 - U+FFFF)
- U3, U3, U3, U3, U3, U3, //
-
- U4, U4, U4, U4, U4, U4, U4, U4, // lead byte = 1111 0xxx (U+10000 - U+1FFFFF)
-
- U0, U0, U0, U0, // Non valid.
- U0, U0, U0, U0, // Non valid.
- };
-
- const uint8_t CR = 0xd;
- const uint8_t LF = 0xa;
+// clang-format off
+constexpr uint8_t U1 = 1u;
+constexpr uint8_t U2 = 2u;
+constexpr uint8_t U3 = 3u;
+constexpr uint8_t U4 = 4u;
+constexpr uint8_t U5 = 5u;
+constexpr uint8_t U6 = 6u;
+constexpr uint8_t U0 = 0u;
+constexpr uint8_t UTF8_LENGTH[256] = {
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, // lead byte = 0xxx xxxx (U+0000 - U+007F + some extended ascii characters)
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, U1, U1, U1, U1, U1, U1, U1, U1, //
+ U1, U1, //
+
+ U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, //
+ U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, // lead byte = 110x xxxx (U+0080 - U+07FF)
+ U2, U2, U2, U2, U2, U2, U2, U2, U2, U2, //
+ U2, U2, //
+
+ U3, U3, U3, U3, U3, U3, U3, U3, U3, U3, // lead byte = 1110 xxxx (U+0800 - U+FFFF)
+ U3, U3, U3, U3, U3, U3, //
+
+ U4, U4, U4, U4, U4, U4, U4, U4, // lead byte = 1111 0xxx (U+10000 - U+1FFFFF)
+
+ U5, U5, U5, U5, // lead byte = 1111 10xx (U+200000 - U+3FFFFFF)
+
+ U6, U6, // lead byte = 1111 110x (U+4000000 - U+7FFFFFFF)
+
+ U0, U0, // Non valid.
+};
+
+constexpr uint8_t CR = 0xd;
+constexpr uint8_t LF = 0xa;
+// clang-format on