@@ -37,7 +37,7 @@ namespace _ST_PRIVATE
3737 latin1_out_of_range,
3838 };
3939
40- inline void raise_conversion_error (conversion_error_t err)
40+ constexpr void raise_conversion_error (conversion_error_t err)
4141 {
4242 switch (err) {
4343 case conversion_error_t ::success:
@@ -176,21 +176,21 @@ namespace _ST_PRIVATE
176176 }
177177
178178 ST_NODISCARD
179- inline char32_t error_char (conversion_error_t value)
179+ constexpr char32_t error_char (conversion_error_t value)
180180 {
181181 return static_cast <char32_t >(value) | 0x400000u ;
182182 }
183183
184184 ST_NODISCARD
185- inline conversion_error_t char_error (char32_t ch)
185+ constexpr conversion_error_t char_error (char32_t ch)
186186 {
187187 return (ch & 0x400000u ) != 0
188188 ? static_cast <conversion_error_t >(ch & ~0x400000u )
189189 : conversion_error_t ::success;
190190 }
191191
192192 ST_NODISCARD
193- inline char32_t extract_utf8 (const unsigned char *&utf8, const unsigned char *end)
193+ constexpr char32_t extract_utf8 (const unsigned char *&utf8, const unsigned char *end)
194194 {
195195 char32_t bigch;
196196 if (*utf8 < 0x80 ) {
@@ -230,7 +230,7 @@ namespace _ST_PRIVATE
230230 }
231231
232232 ST_NODISCARD
233- inline size_t utf8_measure (char32_t ch)
233+ constexpr size_t utf8_measure (char32_t ch)
234234 {
235235 if (ch < 0x80 ) {
236236 return 1 ;
@@ -247,7 +247,7 @@ namespace _ST_PRIVATE
247247 }
248248
249249 ST_NODISCARD
250- inline conversion_error_t write_utf8 (char *&dest, char32_t ch)
250+ constexpr conversion_error_t write_utf8 (char *&dest, char32_t ch)
251251 {
252252 if (ch < 0x80 ) {
253253 *dest++ = static_cast <char >(ch);
@@ -272,7 +272,7 @@ namespace _ST_PRIVATE
272272 }
273273
274274 ST_NODISCARD
275- inline char32_t extract_utf16 (const char16_t *&utf16, const char16_t *end)
275+ constexpr char32_t extract_utf16 (const char16_t *&utf16, const char16_t *end)
276276 {
277277 char32_t bigch;
278278 if (*utf16 >= 0xD800 && *utf16 <= 0xDFFF ) {
@@ -303,7 +303,7 @@ namespace _ST_PRIVATE
303303 }
304304
305305 ST_NODISCARD
306- inline size_t utf16_measure (char32_t ch)
306+ constexpr size_t utf16_measure (char32_t ch)
307307 {
308308 // Out-of-range code point always gets replaced
309309 if (ch < 0x10000 || ch > 0x10FFFF )
@@ -314,7 +314,7 @@ namespace _ST_PRIVATE
314314 }
315315
316316 ST_NODISCARD
317- inline conversion_error_t write_utf16 (char16_t *&dest, char32_t ch)
317+ constexpr conversion_error_t write_utf16 (char16_t *&dest, char32_t ch)
318318 {
319319 if (ch < 0x10000 ) {
320320 *dest++ = static_cast <char16_t >(ch);
@@ -330,7 +330,7 @@ namespace _ST_PRIVATE
330330 }
331331
332332 ST_NODISCARD
333- inline size_t utf8_measure_from_utf16 (const char16_t *utf16, size_t size)
333+ constexpr size_t utf8_measure_from_utf16 (const char16_t *utf16, size_t size)
334334 {
335335 if (!utf16)
336336 return 0 ;
@@ -344,7 +344,7 @@ namespace _ST_PRIVATE
344344 }
345345
346346 ST_NODISCARD
347- inline conversion_error_t utf8_convert_from_utf16 (char *dest,
347+ constexpr conversion_error_t utf8_convert_from_utf16 (char *dest,
348348 const char16_t *utf16, size_t size,
349349 ST::utf_validation_t validation)
350350 {
@@ -370,7 +370,7 @@ namespace _ST_PRIVATE
370370 }
371371
372372 ST_NODISCARD
373- inline size_t utf8_measure_from_utf32 (const char32_t *utf32, size_t size)
373+ constexpr size_t utf8_measure_from_utf32 (const char32_t *utf32, size_t size)
374374 {
375375 if (!utf32)
376376 return 0 ;
@@ -384,7 +384,7 @@ namespace _ST_PRIVATE
384384 }
385385
386386 ST_NODISCARD
387- inline conversion_error_t utf8_convert_from_utf32 (char *dest,
387+ constexpr conversion_error_t utf8_convert_from_utf32 (char *dest,
388388 const char32_t *utf32, size_t size,
389389 ST::utf_validation_t validation)
390390 {
@@ -405,7 +405,7 @@ namespace _ST_PRIVATE
405405 }
406406
407407 ST_NODISCARD
408- inline size_t utf8_measure_from_latin_1 (const char *astr, size_t size)
408+ constexpr size_t utf8_measure_from_latin_1 (const char *astr, size_t size)
409409 {
410410 if (!astr)
411411 return 0 ;
@@ -422,7 +422,7 @@ namespace _ST_PRIVATE
422422 return u8len;
423423 }
424424
425- inline void utf8_convert_from_latin_1 (char *dest, const char *astr, size_t size)
425+ constexpr void utf8_convert_from_latin_1 (char *dest, const char *astr, size_t size)
426426 {
427427 const char *sp = astr;
428428 const char *ep = sp + size;
@@ -475,7 +475,7 @@ namespace _ST_PRIVATE
475475 }
476476
477477 ST_NODISCARD
478- inline size_t utf16_measure_from_utf32 (const char32_t *utf32, size_t size)
478+ constexpr size_t utf16_measure_from_utf32 (const char32_t *utf32, size_t size)
479479 {
480480 if (!utf32)
481481 return 0 ;
@@ -489,7 +489,7 @@ namespace _ST_PRIVATE
489489 }
490490
491491 ST_NODISCARD
492- inline conversion_error_t utf16_convert_from_utf32 (char16_t *dest,
492+ constexpr conversion_error_t utf16_convert_from_utf32 (char16_t *dest,
493493 const char32_t *utf32, size_t size,
494494 ST::utf_validation_t validation)
495495 {
@@ -547,7 +547,7 @@ namespace _ST_PRIVATE
547547 }
548548
549549 ST_NODISCARD
550- inline size_t utf32_measure_from_utf16 (const char16_t *utf16, size_t size)
550+ constexpr size_t utf32_measure_from_utf16 (const char16_t *utf16, size_t size)
551551 {
552552 if (!utf16)
553553 return 0 ;
@@ -563,7 +563,7 @@ namespace _ST_PRIVATE
563563 }
564564
565565 ST_NODISCARD
566- inline conversion_error_t utf32_convert_from_utf16 (char32_t *dest,
566+ constexpr conversion_error_t utf32_convert_from_utf16 (char32_t *dest,
567567 const char16_t *utf16, size_t size,
568568 ST::utf_validation_t validation)
569569 {
@@ -585,15 +585,15 @@ namespace _ST_PRIVATE
585585 return conversion_error_t ::success;
586586 }
587587
588- inline void utf16_convert_from_latin_1 (char16_t *dest, const char *astr, size_t size)
588+ constexpr void utf16_convert_from_latin_1 (char16_t *dest, const char *astr, size_t size)
589589 {
590590 const char *sp = astr;
591591 const char *ep = sp + size;
592592 while (sp < ep)
593593 *dest++ = static_cast <unsigned char >(*sp++);
594594 }
595595
596- inline void utf32_convert_from_latin_1 (char32_t *dest, const char *astr, size_t size)
596+ constexpr void utf32_convert_from_latin_1 (char32_t *dest, const char *astr, size_t size)
597597 {
598598 const char *sp = astr;
599599 const char *ep = sp + size;
@@ -639,14 +639,14 @@ namespace _ST_PRIVATE
639639 }
640640
641641 ST_NODISCARD
642- inline size_t latin_1_measure_from_utf16 (const char16_t *utf16, size_t size)
642+ constexpr size_t latin_1_measure_from_utf16 (const char16_t *utf16, size_t size)
643643 {
644644 // This always returns the same answer as UTF-32
645645 return utf32_measure_from_utf16 (utf16, size);
646646 }
647647
648648 ST_NODISCARD
649- inline conversion_error_t latin_1_convert_from_utf16 (char *dest,
649+ constexpr conversion_error_t latin_1_convert_from_utf16 (char *dest,
650650 const char16_t *utf16, size_t size,
651651 ST::utf_validation_t validation,
652652 bool substitute_out_of_range)
@@ -676,7 +676,7 @@ namespace _ST_PRIVATE
676676 }
677677
678678 ST_NODISCARD
679- inline conversion_error_t latin_1_convert_from_utf32 (char *dest,
679+ constexpr conversion_error_t latin_1_convert_from_utf32 (char *dest,
680680 const char32_t *utf32, size_t size,
681681 ST::utf_validation_t validation,
682682 bool substitute_out_of_range)
0 commit comments