25 template<
class value_t>
26 constexpr
size_t djb2a_hash(
const value_t* pszStr,
size_t nSeed,
size_t nLen);
35 template<
class value_t>
36 constexpr
size_t djb2a_hash(
const value_t* pszStr,
size_t nSeed = 0);
48 template<
class value_t>
49 constexpr
size_t murmur_32_hash(
const value_t* pStr,
size_t nSeed,
size_t nLen) noexcept;
63 template<
class fwd_it_1_t,
class fwd_it_2_t>
64 constexpr
int iter_strcmp(fwd_it_1_t itBegin1, fwd_it_1_t itEnd1, fwd_it_2_t itBegin2, fwd_it_2_t itEnd2) noexcept;
75 template<
class value_t>
76 constexpr
int strcmp(
const value_t* pszLeft,
const value_t* pszRight);
81 template<
class value_t,
size_t N>
82 constexpr
const auto& choose_str_prefix(
const char (&c)[N],
const wchar_t (&w)[N]) noexcept;
84 template<
class value_t>
85 constexpr value_t choose_char_prefix(
char,
wchar_t) noexcept;
88 constexpr
char choose_char_prefix<char>(
char c,
wchar_t) noexcept;
91 constexpr
wchar_t choose_char_prefix<wchar_t>(
char,
wchar_t w) noexcept;
99 #define _QX_TO_WCHAR(x) L##x
102 #define _QX_TO_WSTRING(x) __LPREFIX(x)
104 #define _QX_TO_WSTRING(x) _QX_TO_WCHAR(x)
112 #define QX_TO_WSTRING(str) _QX_TO_WSTRING(str)
120 #define QX_STR_PREFIX(value_t, str) qx::details::choose_str_prefix<value_t>(str, QX_TO_WSTRING(str))
128 #define QX_CHAR_PREFIX(value_t, ch) qx::details::choose_char_prefix<value_t>(ch, _QX_TO_WCHAR(ch))
135 #define QX_STATIC_ASSERT_STR_EQ(a, b) static_assert(qx::strcmp((a), (b)) == 0)
136 #define QX_STATIC_ASSERT_STR_NE(a, b) static_assert(qx::strcmp((a), (b)) != 0)
137 #define QX_STATIC_ASSERT_STR_LT(a, b) static_assert(qx::strcmp((a), (b)) < 0)
138 #define QX_STATIC_ASSERT_STR_LE(a, b) static_assert(qx::strcmp((a), (b)) <= 0)
139 #define QX_STATIC_ASSERT_STR_GT(a, b) static_assert(qx::strcmp((a), (b)) > 0)
140 #define QX_STATIC_ASSERT_STR_GE(a, b) static_assert(qx::strcmp((a), (b)) >= 0)
153 template<
class value_t,
class T>
154 constexpr
const value_t* get_format_specifier() noexcept;
163 template<
class value_t>
164 constexpr std::size_t strlen(
const value_t* psz);
constexpr size_t djb2a_hash(const value_t *pszStr, size_t nSeed, size_t nLen)
djb2a hash
constexpr int iter_strcmp(fwd_it_1_t itBegin1, fwd_it_1_t itEnd1, fwd_it_2_t itBegin2, fwd_it_2_t itEnd2) noexcept
Compares string 1 with string 2.
constexpr size_t murmur_32_hash(const value_t *pStr, size_t nSeed, size_t nLen) noexcept
Murmur nHash.
constexpr int strcmp(const value_t *pszLeft, const value_t *pszRight)
Constexpr compare two strings.