43#ifndef MUTT_MUTT_EQI_H
44#define MUTT_MUTT_EQI_H
67 const char ch = x >> (bytenum * 8);
68 const uint64_t mask = ((ch >=
'a') && (ch <=
'z')) ? 0x20 : 0;
69 return mask << (bytenum * 8);
78static inline bool eqi1(
const char *a,
const char b[1])
90static inline bool eqi2(
const char *a,
const char b[2])
94 memcpy(&a16, a,
sizeof(a16));
95 memcpy(&b16, b,
sizeof(b16));
98 return (a16 | lowercase_mask) == b16;
107static inline bool eqi4(
const char *a,
const char b[4])
111 memcpy(&a32, a,
sizeof(a32));
112 memcpy(&b32, b,
sizeof(b32));
117 return (a32 | lowercase_mask) == b32;
126static inline bool eqi8(
const char *a,
const char b[8])
130 memcpy(&a64, a,
sizeof(a64));
131 memcpy(&b64, b,
sizeof(b64));
140 return (a64 | lowercase_mask) == b64;
148static inline bool eqi5(
const char *a,
const char b[5])
150 return eqi4(a, b) &&
eqi1(a + 1, b + 1);
154static inline bool eqi6(
const char *a,
const char b[6])
156 return eqi4(a, b) &&
eqi2(a + 4, b + 4);
162static inline bool eqi9(
const char *a,
const char b[9])
164 return eqi8(a, b) &&
eqi1(a + 8, b + 8);
168static inline bool eqi10(
const char *a,
const char b[10])
170 return eqi8(a, b) &&
eqi2(a + 8, b + 8);
174static inline bool eqi11(
const char *a,
const char b[11])
176 return eqi8(a, b) &&
eqi4(a + 7, b + 7);
180static inline bool eqi12(
const char *a,
const char b[12])
182 return eqi8(a, b) &&
eqi4(a + 8, b + 8);
186static inline bool eqi13(
const char *a,
const char b[13])
188 return eqi8(a, b) &&
eqi8(a + 5, b + 5);
192static inline bool eqi14(
const char *a,
const char b[14])
194 return eqi8(a, b) &&
eqi8(a + 6, b + 6);
198static inline bool eqi15(
const char *a,
const char b[15])
200 return eqi8(a, b) &&
eqi8(a + 7, b + 7);
204static inline bool eqi16(
const char *a,
const char b[16])
206 return eqi8(a, b) &&
eqi8(a + 8, b + 8);
210static inline bool eqi17(
const char *a,
const char b[17])
212 return eqi16(a, b) &&
eqi1(a + 16, b + 16);
static bool eqi17(const char *a, const char b[17])
eqi17 - Compare two 17-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi9(const char *a, const char b[9])
eqi9 - Compare two 9-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi10(const char *a, const char b[10])
eqi10 - Compare two 10-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi8(const char *a, const char b[8])
Compare two 8-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons.
static bool eqi11(const char *a, const char b[11])
eqi11 - Compare two 11-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi6(const char *a, const char b[6])
eqi6 - Compare two 6-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi14(const char *a, const char b[14])
eqi14 - Compare two 14-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi13(const char *a, const char b[13])
eqi13 - Compare two 13-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi4(const char *a, const char b[4])
Compare two 4-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons.
static uint64_t make_lowercase_mask(uint64_t x, int bytenum)
Create a mask to lowercase alphabetic characters.
static bool eqi5(const char *a, const char b[5])
eqi5 - Compare two 5-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi12(const char *a, const char b[12])
eqi12 - Compare two 12-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi16(const char *a, const char b[16])
eqi16 - Compare two 16-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi15(const char *a, const char b[15])
eqi15 - Compare two 15-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons
static bool eqi1(const char *a, const char b[1])
Compare two 1-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons.
static bool eqi2(const char *a, const char b[2])
Compare two 2-byte strings, ignoring case - See: Case-insensitive fixed-chunk comparisons.