Fix compiler warnings for gcc & clang

When compiling with -Wimplicit-int-conversion and -Wsign-conversion
gcc/clang give warnings for a handful of lines. Silence the warnings
by adding explicit casts.
This commit is contained in:
Jason 2021-12-23 08:44:37 -08:00
parent 197905e841
commit d393e00037

View File

@ -58,11 +58,11 @@ namespace uuids
constexpr inline unsigned char hex2char(TChar const ch) constexpr inline unsigned char hex2char(TChar const ch)
{ {
if (ch >= static_cast<TChar>('0') && ch <= static_cast<TChar>('9')) if (ch >= static_cast<TChar>('0') && ch <= static_cast<TChar>('9'))
return ch - static_cast<TChar>('0'); return static_cast<unsigned char>(ch - static_cast<TChar>('0'));
if (ch >= static_cast<TChar>('a') && ch <= static_cast<TChar>('f')) if (ch >= static_cast<TChar>('a') && ch <= static_cast<TChar>('f'))
return 10 + ch - static_cast<TChar>('a'); return static_cast<unsigned char>(10 + ch - static_cast<TChar>('a'));
if (ch >= static_cast<TChar>('A') && ch <= static_cast<TChar>('F')) if (ch >= static_cast<TChar>('A') && ch <= static_cast<TChar>('F'))
return 10 + ch - static_cast<TChar>('A'); return static_cast<unsigned char>(10 + ch - static_cast<TChar>('A'));
return 0; return 0;
} }
@ -418,7 +418,7 @@ namespace uuids
{ {
auto str = detail::to_string_view(in_str); auto str = detail::to_string_view(in_str);
bool firstDigit = true; bool firstDigit = true;
int hasBraces = 0; size_t hasBraces = 0;
size_t index = 0; size_t index = 0;
if (str.empty()) if (str.empty())
@ -462,7 +462,7 @@ namespace uuids
{ {
auto str = detail::to_string_view(in_str); auto str = detail::to_string_view(in_str);
bool firstDigit = true; bool firstDigit = true;
int hasBraces = 0; size_t hasBraces = 0;
size_t index = 0; size_t index = 0;
std::array<uint8_t, 16> data{ { 0 } }; std::array<uint8_t, 16> data{ { 0 } };
@ -485,12 +485,13 @@ namespace uuids
if (firstDigit) if (firstDigit)
{ {
data[index] = detail::hex2char(str[i]) << 4; data[index] = static_cast<uint8_t>(detail::hex2char(str[i]) << 4);
firstDigit = false; firstDigit = false;
} }
else else
{ {
data[index++] |= detail::hex2char(str[i]); data[index] = static_cast<uint8_t>(data[index] | detail::hex2char(str[i]));
index++;
firstDigit = true; firstDigit = true;
} }
} }