Skip to content

Commit e30ce71

Browse files
committed
hiding the function
1 parent 85896f3 commit e30ce71

File tree

1 file changed

+66
-82
lines changed

1 file changed

+66
-82
lines changed

include/ada/url_search_params-inl.h

+66-82
Original file line numberDiff line numberDiff line change
@@ -161,96 +161,80 @@ inline void url_search_params::remove(const std::string_view key,
161161
});
162162
}
163163

164-
// returns -1 if str1 < str2, 0 if str1 == str2, 1 if str1 > str2
165-
// the comparison is done using the UTF-16 code units of the UTF-8 code points
166-
inline int compare_utf8_as_utf16(std::string_view str1, std::string_view str2) {
167-
size_t i = 0;
168-
size_t j = 0;
169-
uint32_t low_surrogate1 = 0;
170-
uint32_t low_surrogate2 = 0;
171-
while (i < str1.size() && j < str2.size()) {
172-
uint32_t codePoint1 = 0;
173-
uint32_t codePoint2 = 0;
174-
175-
if (low_surrogate1 != 0) {
176-
codePoint1 = low_surrogate1;
177-
low_surrogate1 = 0;
178-
} else {
179-
uint8_t c1 = uint8_t(str1[i]);
180-
if (c1 <= 0x7F) {
181-
codePoint1 = c1;
182-
i++;
183-
} else if (c1 <= 0xDF) {
184-
codePoint1 = ((c1 & 0x1F) << 6) | (uint8_t(str1[i + 1]) & 0x3F);
185-
i += 2;
186-
} else if (c1 <= 0xEF) {
187-
codePoint1 = ((c1 & 0x0F) << 12) |
188-
((uint8_t(str1[i + 1]) & 0x3F) << 6) |
189-
(uint8_t(str1[i + 2]) & 0x3F);
190-
i += 3;
164+
inline void url_search_params::sort() {
165+
std::ranges::stable_sort(params, [](const key_value_pair &lhs,
166+
const key_value_pair &rhs) {
167+
size_t i = 0, j = 0;
168+
uint32_t low_surrogate1 = 0, low_surrogate2 = 0;
169+
while (i < lhs.first.size() && j < rhs.first.size()) {
170+
uint32_t codePoint1 = 0, codePoint2 = 0;
171+
172+
if (low_surrogate1 != 0) {
173+
codePoint1 = low_surrogate1;
174+
low_surrogate1 = 0;
191175
} else {
192-
codePoint1 = ((c1 & 0x07) << 18) |
193-
((uint8_t(str1[i + 1]) & 0x3F) << 12) |
194-
((uint8_t(str1[i + 2]) & 0x3F) << 6) |
195-
(uint8_t(str1[i + 3]) & 0x3F);
196-
i += 4;
197-
198-
codePoint1 -= 0x10000;
199-
uint16_t high_surrogate = uint16_t(0xD800 + (codePoint1 >> 10));
200-
low_surrogate1 = uint16_t(0xDC00 + (codePoint1 & 0x3FF));
201-
codePoint1 = high_surrogate;
176+
uint8_t c1 = uint8_t(lhs.first[i]);
177+
if (c1 <= 0x7F) {
178+
codePoint1 = c1;
179+
i++;
180+
} else if (c1 <= 0xDF) {
181+
codePoint1 = ((c1 & 0x1F) << 6) | (uint8_t(lhs.first[i + 1]) & 0x3F);
182+
i += 2;
183+
} else if (c1 <= 0xEF) {
184+
codePoint1 = ((c1 & 0x0F) << 12) |
185+
((uint8_t(lhs.first[i + 1]) & 0x3F) << 6) |
186+
(uint8_t(lhs.first[i + 2]) & 0x3F);
187+
i += 3;
188+
} else {
189+
codePoint1 = ((c1 & 0x07) << 18) |
190+
((uint8_t(lhs.first[i + 1]) & 0x3F) << 12) |
191+
((uint8_t(lhs.first[i + 2]) & 0x3F) << 6) |
192+
(uint8_t(lhs.first[i + 3]) & 0x3F);
193+
i += 4;
194+
195+
codePoint1 -= 0x10000;
196+
uint16_t high_surrogate = uint16_t(0xD800 + (codePoint1 >> 10));
197+
low_surrogate1 = uint16_t(0xDC00 + (codePoint1 & 0x3FF));
198+
codePoint1 = high_surrogate;
199+
}
202200
}
203-
}
204201

205-
if (low_surrogate2 != 0) {
206-
codePoint2 = low_surrogate2;
207-
low_surrogate2 = 0;
208-
} else {
209-
uint8_t c2 = uint8_t(str2[j]);
210-
if (c2 <= 0x7F) {
211-
codePoint2 = c2;
212-
j++;
213-
} else if (c2 <= 0xDF) {
214-
codePoint2 = ((c2 & 0x1F) << 6) | (uint8_t(str2[j + 1]) & 0x3F);
215-
j += 2;
216-
} else if (c2 <= 0xEF) {
217-
codePoint2 = ((c2 & 0x0F) << 12) |
218-
((uint8_t(str2[j + 1]) & 0x3F) << 6) |
219-
(uint8_t(str2[j + 2]) & 0x3F);
220-
j += 3;
202+
if (low_surrogate2 != 0) {
203+
codePoint2 = low_surrogate2;
204+
low_surrogate2 = 0;
221205
} else {
222-
codePoint2 = ((c2 & 0x07) << 18) |
223-
((uint8_t(str2[j + 1]) & 0x3F) << 12) |
224-
((uint8_t(str2[j + 2]) & 0x3F) << 6) |
225-
(uint8_t(str2[j + 3]) & 0x3F);
226-
j += 4;
227-
codePoint2 -= 0x10000;
228-
uint16_t high_surrogate = uint16_t(0xD800 + (codePoint2 >> 10));
229-
low_surrogate2 = uint16_t(0xDC00 + (codePoint2 & 0x3FF));
230-
codePoint2 = high_surrogate;
206+
uint8_t c2 = uint8_t(rhs.first[j]);
207+
if (c2 <= 0x7F) {
208+
codePoint2 = c2;
209+
j++;
210+
} else if (c2 <= 0xDF) {
211+
codePoint2 = ((c2 & 0x1F) << 6) | (uint8_t(rhs.first[j + 1]) & 0x3F);
212+
j += 2;
213+
} else if (c2 <= 0xEF) {
214+
codePoint2 = ((c2 & 0x0F) << 12) |
215+
((uint8_t(rhs.first[j + 1]) & 0x3F) << 6) |
216+
(uint8_t(rhs.first[j + 2]) & 0x3F);
217+
j += 3;
218+
} else {
219+
codePoint2 = ((c2 & 0x07) << 18) |
220+
((uint8_t(rhs.first[j + 1]) & 0x3F) << 12) |
221+
((uint8_t(rhs.first[j + 2]) & 0x3F) << 6) |
222+
(uint8_t(rhs.first[j + 3]) & 0x3F);
223+
j += 4;
224+
codePoint2 -= 0x10000;
225+
uint16_t high_surrogate = uint16_t(0xD800 + (codePoint2 >> 10));
226+
low_surrogate2 = uint16_t(0xDC00 + (codePoint2 & 0x3FF));
227+
codePoint2 = high_surrogate;
228+
}
231229
}
232-
}
233230

234-
if (codePoint1 != codePoint2) {
235-
return (codePoint1 < codePoint2) ? -1 : 1;
231+
if (codePoint1 != codePoint2) {
232+
return (codePoint1 < codePoint2);
233+
}
236234
}
237-
}
238235

239-
if (i < str1.size()) {
240-
return 1;
241-
}
242-
if (j < str2.size()) {
243-
return -1;
244-
}
245-
246-
return 0;
247-
}
248-
249-
inline void url_search_params::sort() {
250-
std::ranges::stable_sort(
251-
params, [](const key_value_pair &lhs, const key_value_pair &rhs) {
252-
return compare_utf8_as_utf16(lhs.first, rhs.first) == -1;
253-
});
236+
return (i < lhs.first.size());
237+
});
254238
}
255239

256240
inline url_search_params_keys_iter url_search_params::get_keys() {

0 commit comments

Comments
 (0)