blob: 8ac54b9182a6262b43662030dfd8cbe2799fd38c [file] [log] [blame]
#pragma once
#include <algorithm>
#include <ranges>
#include <string>
#include <string_view>
#include <vector>
namespace bmcweb
{
// This is a naive replacement for boost::split until
// https://github.com/llvm/llvm-project/issues/40486
// is resolved
inline void split(std::vector<std::string>& strings, std::string_view str,
char delim)
{
size_t start = 0;
size_t end = 0;
while (end <= str.size())
{
end = str.find(delim, start);
strings.emplace_back(str.substr(start, end - start));
start = end + 1;
}
}
inline char asciiToLower(char c)
{
// Converts a character to lower case without relying on std::locale
if ('A' <= c && c <= 'Z')
{
c -= ('A' - 'a');
}
return c;
}
inline bool asciiIEquals(std::string_view left, std::string_view right)
{
return std::ranges::equal(left, right, [](char lChar, char rChar) {
return asciiToLower(lChar) == asciiToLower(rChar);
});
}
} // namespace bmcweb