60 while (!str.empty() && (str.front() ==
' ' || str.front() ==
'\t')) {
63 while (!str.empty() && (str.back() ==
' ' || str.back() ==
'\t')) {
72 if (str.size() == 11 && str.front() ==
'(' && str.back() ==
')' &&
74 const auto group = parse_hex4(str.data() + 1);
75 const auto element = parse_hex4(str.data() + 6);
77 if (group && element) {
84 if (str.size() == 8) {
85 const auto group = parse_hex4(str.data());
86 const auto element = parse_hex4(str.data() + 4);
88 if (group && element) {
95 if (str.size() == 9 && str[4] ==
',') {
96 const auto group = parse_hex4(str.data());
97 const auto element = parse_hex4(str.data() + 5);
99 if (group && element) {
114 static constexpr std::array<char, 16> hex_chars = {
115 '0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
116 '8',
'9',
'A',
'B',
'C',
'D',
'E',
'F'};
118 const auto grp =
group();
122 result += hex_chars[(grp >> 12) & 0xF];
123 result += hex_chars[(grp >> 8) & 0xF];
124 result += hex_chars[(grp >> 4) & 0xF];
125 result += hex_chars[grp & 0xF];
127 result += hex_chars[(elem >> 12) & 0xF];
128 result += hex_chars[(elem >> 8) & 0xF];
129 result += hex_chars[(elem >> 4) & 0xF];
130 result += hex_chars[elem & 0xF];