15 namespace Azure {
namespace Core {
namespace _internal {
21 struct StringExtensions final
23 static constexpr
char ToUpper(
char c) noexcept
25 return (c < 'a' || c >
'z') ? c : c - (
'a' -
'A');
28 static constexpr
char ToLower(
char c) noexcept
30 return (c < 'A' || c >
'Z') ? c : c + (
'a' -
'A');
33 struct CaseInsensitiveComparator final
35 bool operator()(std::string
const& lhs, std::string
const& rhs)
const
37 return std::lexicographical_compare(
38 lhs.begin(), lhs.end(), rhs.begin(), rhs.end(), [](
auto l,
auto r) {
39 return ToLower(l) < ToLower(r);
44 static bool LocaleInvariantCaseInsensitiveEqual(
45 std::string
const& lhs,
46 std::string
const& rhs) noexcept
48 auto const rhsSize = rhs.size();
49 if (lhs.size() != rhsSize)
54 auto const lhsData = lhs.c_str();
55 auto const rhsData = rhs.c_str();
56 for (
size_t i = 0; i < rhsSize; ++i)
58 if (ToLower(lhsData[i]) != ToLower(rhsData[i]))
67 static std::string ToLower(std::string src)
69 std::transform(src.begin(), src.end(), src.begin(), [](
auto c) { return ToLower(c); });
73 static std::string ToUpper(std::string src)
75 std::transform(src.begin(), src.end(), src.begin(), [](
auto c) { return ToUpper(c); });
Azure SDK abstractions.
Definition: azure_assert.hpp:55