2#ifndef _KURLYK_UTILS_CASE_INSENSITIVE_MULTIMAP_HPP_INCLUDED
3#define _KURLYK_UTILS_CASE_INSENSITIVE_MULTIMAP_HPP_INCLUDED
15 return str1.size() == str2.size() &&
16 std::equal(str1.begin(), str1.end(), str2.begin(), [](
char a,
char b) {
17 return tolower(a) == tolower(b);
29 bool operator()(
const std::string& str1,
const std::string& str2)
const noexcept {
41 std::size_t
operator()(
const std::string& str)
const noexcept {
45 h ^= hash(tolower(c)) + 0x9e3779b9 + (h << 6) + (h >> 2);
52 using CaseInsensitiveMultimap = std::unordered_multimap<std::string, std::string, CaseInsensitiveHash, CaseInsensitiveEqual>;
Functor for case-insensitive string comparison.
bool operator()(const std::string &str1, const std::string &str2) const noexcept
Compares two strings case-insensitively.
Functor for generating case-insensitive hash values for strings.
std::size_t operator()(const std::string &str) const noexcept
Computes a case-insensitive hash value for a given string.
std::unordered_multimap< std::string, std::string, CaseInsensitiveHash, CaseInsensitiveEqual > CaseInsensitiveMultimap
A case-insensitive unordered multimap for storing HTTP headers.
bool case_insensitive_equal(const std::string &str1, const std::string &str2) noexcept
Compares two strings case-insensitively.
std::unordered_multimap< std::string, Cookie, CaseInsensitiveHash, CaseInsensitiveEqual > CaseInsensitiveCookieMultimap
A case-insensitive unordered multimap specifically for storing HTTP cookies.
Primary namespace for the Kurlyk library, encompassing initialization, request management,...
utils::CaseInsensitiveMultimap Headers
Alias for HTTP headers, providing a case-insensitive unordered multimap.
utils::CaseInsensitiveCookieMultimap Cookies
Alias for HTTP cookies, stored case-insensitively.
utils::CaseInsensitiveMultimap QueryParams
Alias for query parameters in HTTP requests, stored case-insensitively.