1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 02:47:34 +00:00

AK: Run clang-format on StringUtils.{cpp,h}

This commit is contained in:
Andreas Kling 2020-03-22 13:04:04 +01:00
parent cccbe43056
commit 0efa47b7ef
2 changed files with 95 additions and 95 deletions

View file

@ -33,115 +33,115 @@ namespace AK {
namespace StringUtils { namespace StringUtils {
bool matches(const StringView& str, const StringView& mask, CaseSensitivity case_sensitivity) bool matches(const StringView& str, const StringView& mask, CaseSensitivity case_sensitivity)
{ {
if (str.is_null() || mask.is_null()) if (str.is_null() || mask.is_null())
return str.is_null() && mask.is_null(); return str.is_null() && mask.is_null();
if (case_sensitivity == CaseSensitivity::CaseInsensitive) { if (case_sensitivity == CaseSensitivity::CaseInsensitive) {
const String str_lower = String(str).to_lowercase(); const String str_lower = String(str).to_lowercase();
const String mask_lower = String(mask).to_lowercase(); const String mask_lower = String(mask).to_lowercase();
return matches(str_lower, mask_lower, CaseSensitivity::CaseSensitive); return matches(str_lower, mask_lower, CaseSensitivity::CaseSensitive);
} }
const char* string_ptr = str.characters_without_null_termination(); const char* string_ptr = str.characters_without_null_termination();
const char* string_end = string_ptr + str.length(); const char* string_end = string_ptr + str.length();
const char* mask_ptr = mask.characters_without_null_termination(); const char* mask_ptr = mask.characters_without_null_termination();
const char* mask_end = mask_ptr + mask.length(); const char* mask_end = mask_ptr + mask.length();
// Match string against mask directly unless we hit a * // Match string against mask directly unless we hit a *
while ((string_ptr < string_end) && (mask_ptr < mask_end) && (*mask_ptr != '*')) { while ((string_ptr < string_end) && (mask_ptr < mask_end) && (*mask_ptr != '*')) {
if ((*mask_ptr != *string_ptr) && (*mask_ptr != '?')) if ((*mask_ptr != *string_ptr) && (*mask_ptr != '?'))
return false; return false;
mask_ptr++;
string_ptr++;
}
const char* cp = nullptr;
const char* mp = nullptr;
while (string_ptr < string_end) {
if ((mask_ptr < mask_end) && (*mask_ptr == '*')) {
// If we have only a * left, there is no way to not match.
if (++mask_ptr == mask_end)
return true;
mp = mask_ptr;
cp = string_ptr + 1;
} else if ((mask_ptr < mask_end) && ((*mask_ptr == *string_ptr) || (*mask_ptr == '?'))) {
mask_ptr++; mask_ptr++;
string_ptr++; string_ptr++;
} else if ((cp != nullptr) && (mp != nullptr)) {
mask_ptr = mp;
string_ptr = cp++;
} else {
break;
} }
const char* cp = nullptr;
const char* mp = nullptr;
while (string_ptr < string_end) {
if ((mask_ptr < mask_end) && (*mask_ptr == '*')) {
// If we have only a * left, there is no way to not match.
if (++mask_ptr == mask_end)
return true;
mp = mask_ptr;
cp = string_ptr + 1;
} else if ((mask_ptr < mask_end) && ((*mask_ptr == *string_ptr) || (*mask_ptr == '?'))) {
mask_ptr++;
string_ptr++;
} else if ((cp != nullptr) && (mp != nullptr)) {
mask_ptr = mp;
string_ptr = cp++;
} else {
break;
}
}
// Handle any trailing mask
while ((mask_ptr < mask_end) && (*mask_ptr == '*'))
mask_ptr++;
// If we 'ate' all of the mask and the string then we match.
return (mask_ptr == mask_end) && string_ptr == string_end;
} }
int convert_to_int(const StringView& str, bool& ok) // Handle any trailing mask
{ while ((mask_ptr < mask_end) && (*mask_ptr == '*'))
if (str.is_empty()) { mask_ptr++;
// If we 'ate' all of the mask and the string then we match.
return (mask_ptr == mask_end) && string_ptr == string_end;
}
int convert_to_int(const StringView& str, bool& ok)
{
if (str.is_empty()) {
ok = false;
return 0;
}
bool negative = false;
size_t i = 0;
const auto characters = str.characters_without_null_termination();
if (characters[0] == '-' || characters[0] == '+') {
if (str.length() == 1) {
ok = false; ok = false;
return 0; return 0;
} }
i++;
bool negative = false; negative = (characters[0] == '-');
size_t i = 0;
const auto characters = str.characters_without_null_termination();
if (characters[0] == '-' || characters[0] == '+') {
if (str.length() == 1) {
ok = false;
return 0;
}
i++;
negative = (characters[0] == '-');
}
int value = 0;
for (; i < str.length(); i++) {
if (characters[i] < '0' || characters[i] > '9') {
ok = false;
return 0;
}
value = value * 10;
value += characters[i] - '0';
}
ok = true;
return negative ? -value : value;
} }
unsigned convert_to_uint(const StringView& str, bool& ok) int value = 0;
{ for (; i < str.length(); i++) {
if (str.is_empty()) { if (characters[i] < '0' || characters[i] > '9') {
ok = false; ok = false;
return 0; return 0;
} }
value = value * 10;
unsigned value = 0; value += characters[i] - '0';
const auto characters = str.characters_without_null_termination();
for (size_t i = 0; i < str.length(); i++) {
if (characters[i] < '0' || characters[i] > '9') {
ok = false;
return 0;
}
value = value * 10;
value += characters[i] - '0';
}
ok = true;
return value;
} }
ok = true;
return negative ? -value : value;
}
unsigned convert_to_uint(const StringView& str, bool& ok)
{
if (str.is_empty()) {
ok = false;
return 0;
}
unsigned value = 0;
const auto characters = str.characters_without_null_termination();
for (size_t i = 0; i < str.length(); i++) {
if (characters[i] < '0' || characters[i] > '9') {
ok = false;
return 0;
}
value = value * 10;
value += characters[i] - '0';
}
ok = true;
return value;
}
} }

View file

@ -38,9 +38,9 @@ enum class CaseSensitivity {
namespace StringUtils { namespace StringUtils {
bool matches(const StringView& str, const StringView& mask, CaseSensitivity = CaseSensitivity::CaseInsensitive); bool matches(const StringView& str, const StringView& mask, CaseSensitivity = CaseSensitivity::CaseInsensitive);
int convert_to_int(const StringView&, bool& ok); int convert_to_int(const StringView&, bool& ok);
unsigned convert_to_uint(const StringView&, bool& ok); unsigned convert_to_uint(const StringView&, bool& ok);
} }