Skip to content

Commit

Permalink
apply constexpr to certain private functions
Browse files Browse the repository at this point in the history
  • Loading branch information
jfmherokiller committed Nov 5, 2023
1 parent 1f7c97f commit d33ca7a
Showing 1 changed file with 24 additions and 24 deletions.
48 changes: 24 additions & 24 deletions include/st_utf_conv_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ namespace _ST_PRIVATE
latin1_out_of_range,
};

inline void raise_conversion_error(conversion_error_t err)
constexpr void raise_conversion_error(conversion_error_t err)
{
switch (err) {
case conversion_error_t::success:
Expand Down Expand Up @@ -176,21 +176,21 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline char32_t error_char(conversion_error_t value)
constexpr char32_t error_char(conversion_error_t value)
{
return static_cast<char32_t>(value) | 0x400000u;
}

ST_NODISCARD
inline conversion_error_t char_error(char32_t ch)
constexpr conversion_error_t char_error(char32_t ch)
{
return (ch & 0x400000u) != 0
? static_cast<conversion_error_t>(ch & ~0x400000u)
: conversion_error_t::success;
}

ST_NODISCARD
inline char32_t extract_utf8(const unsigned char *&utf8, const unsigned char *end)
constexpr char32_t extract_utf8(const unsigned char *&utf8, const unsigned char *end)
{
char32_t bigch;
if (*utf8 < 0x80) {
Expand Down Expand Up @@ -230,7 +230,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline size_t utf8_measure(char32_t ch)
constexpr size_t utf8_measure(char32_t ch)
{
if (ch < 0x80) {
return 1;
Expand All @@ -247,7 +247,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline conversion_error_t write_utf8(char *&dest, char32_t ch)
constexpr conversion_error_t write_utf8(char *&dest, char32_t ch)
{
if (ch < 0x80) {
*dest++ = static_cast<char>(ch);
Expand All @@ -272,7 +272,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline char32_t extract_utf16(const char16_t *&utf16, const char16_t *end)
constexpr char32_t extract_utf16(const char16_t *&utf16, const char16_t *end)
{
char32_t bigch;
if (*utf16 >= 0xD800 && *utf16 <= 0xDFFF) {
Expand Down Expand Up @@ -303,7 +303,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline size_t utf16_measure(char32_t ch)
constexpr size_t utf16_measure(char32_t ch)
{
// Out-of-range code point always gets replaced
if (ch < 0x10000 || ch > 0x10FFFF)
Expand All @@ -314,7 +314,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline conversion_error_t write_utf16(char16_t *&dest, char32_t ch)
constexpr conversion_error_t write_utf16(char16_t *&dest, char32_t ch)
{
if (ch < 0x10000) {
*dest++ = static_cast<char16_t>(ch);
Expand All @@ -330,7 +330,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline size_t utf8_measure_from_utf16(const char16_t *utf16, size_t size)
constexpr size_t utf8_measure_from_utf16(const char16_t *utf16, size_t size)
{
if (!utf16)
return 0;
Expand All @@ -344,7 +344,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline conversion_error_t utf8_convert_from_utf16(char *dest,
constexpr conversion_error_t utf8_convert_from_utf16(char *dest,
const char16_t *utf16, size_t size,
ST::utf_validation_t validation)
{
Expand All @@ -370,7 +370,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline size_t utf8_measure_from_utf32(const char32_t *utf32, size_t size)
constexpr size_t utf8_measure_from_utf32(const char32_t *utf32, size_t size)
{
if (!utf32)
return 0;
Expand All @@ -384,7 +384,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline conversion_error_t utf8_convert_from_utf32(char *dest,
constexpr conversion_error_t utf8_convert_from_utf32(char *dest,
const char32_t *utf32, size_t size,
ST::utf_validation_t validation)
{
Expand All @@ -405,7 +405,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline size_t utf8_measure_from_latin_1(const char *astr, size_t size)
constexpr size_t utf8_measure_from_latin_1(const char *astr, size_t size)
{
if (!astr)
return 0;
Expand All @@ -422,7 +422,7 @@ namespace _ST_PRIVATE
return u8len;
}

inline void utf8_convert_from_latin_1(char *dest, const char *astr, size_t size)
constexpr void utf8_convert_from_latin_1(char *dest, const char *astr, size_t size)
{
const char *sp = astr;
const char *ep = sp + size;
Expand Down Expand Up @@ -475,7 +475,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline size_t utf16_measure_from_utf32(const char32_t *utf32, size_t size)
constexpr size_t utf16_measure_from_utf32(const char32_t *utf32, size_t size)
{
if (!utf32)
return 0;
Expand All @@ -489,7 +489,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline conversion_error_t utf16_convert_from_utf32(char16_t *dest,
constexpr conversion_error_t utf16_convert_from_utf32(char16_t *dest,
const char32_t *utf32, size_t size,
ST::utf_validation_t validation)
{
Expand Down Expand Up @@ -547,7 +547,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline size_t utf32_measure_from_utf16(const char16_t *utf16, size_t size)
constexpr size_t utf32_measure_from_utf16(const char16_t *utf16, size_t size)
{
if (!utf16)
return 0;
Expand All @@ -563,7 +563,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline conversion_error_t utf32_convert_from_utf16(char32_t *dest,
constexpr conversion_error_t utf32_convert_from_utf16(char32_t *dest,
const char16_t *utf16, size_t size,
ST::utf_validation_t validation)
{
Expand All @@ -585,15 +585,15 @@ namespace _ST_PRIVATE
return conversion_error_t::success;
}

inline void utf16_convert_from_latin_1(char16_t *dest, const char *astr, size_t size)
constexpr void utf16_convert_from_latin_1(char16_t *dest, const char *astr, size_t size)
{
const char *sp = astr;
const char *ep = sp + size;
while (sp < ep)
*dest++ = static_cast<unsigned char>(*sp++);
}

inline void utf32_convert_from_latin_1(char32_t *dest, const char *astr, size_t size)
constexpr void utf32_convert_from_latin_1(char32_t *dest, const char *astr, size_t size)
{
const char *sp = astr;
const char *ep = sp + size;
Expand Down Expand Up @@ -639,14 +639,14 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline size_t latin_1_measure_from_utf16(const char16_t *utf16, size_t size)
constexpr size_t latin_1_measure_from_utf16(const char16_t *utf16, size_t size)
{
// This always returns the same answer as UTF-32
return utf32_measure_from_utf16(utf16, size);
}

ST_NODISCARD
inline conversion_error_t latin_1_convert_from_utf16(char *dest,
constexpr conversion_error_t latin_1_convert_from_utf16(char *dest,
const char16_t *utf16, size_t size,
ST::utf_validation_t validation,
bool substitute_out_of_range)
Expand Down Expand Up @@ -676,7 +676,7 @@ namespace _ST_PRIVATE
}

ST_NODISCARD
inline conversion_error_t latin_1_convert_from_utf32(char *dest,
constexpr conversion_error_t latin_1_convert_from_utf32(char *dest,
const char32_t *utf32, size_t size,
ST::utf_validation_t validation,
bool substitute_out_of_range)
Expand Down

0 comments on commit d33ca7a

Please sign in to comment.