diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-03-25 20:35:57 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-03-25 20:38:27 +0000 |
| commit | c756f8f12465265e95aaab215260c79a7034e429 (patch) | |
| tree | 313f2a01671b260d10d891679048532b8f4fea68 /src/ranked_match.hh | |
| parent | 15b241b9428d25123db4d8bd8cd977fb991735f6 (diff) | |
Move UsedLetters with RankedMatch
Diffstat (limited to 'src/ranked_match.hh')
| -rw-r--r-- | src/ranked_match.hh | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/ranked_match.hh b/src/ranked_match.hh index de03fd4c..0e0e49c4 100644 --- a/src/ranked_match.hh +++ b/src/ranked_match.hh @@ -6,9 +6,21 @@ namespace Kakoune { +using UsedLetters = uint64_t; +UsedLetters used_letters(StringView str); + +constexpr UsedLetters upper_mask = 0xFFFFFFC000000; + +inline UsedLetters to_lower(UsedLetters letters) +{ + return ((letters & upper_mask) >> 26) | (letters & (~upper_mask)); +} + struct RankedMatch { RankedMatch(StringView candidate, StringView query); + RankedMatch(StringView candidate, UsedLetters candidate_letters, + StringView query, UsedLetters query_letters); const StringView& candidate() const { return m_candidate; } bool operator<(const RankedMatch& other) const; @@ -17,6 +29,9 @@ struct RankedMatch explicit operator bool() const { return not m_candidate.empty(); } private: + template<typename TestFunc> + RankedMatch(StringView candidate, StringView query, TestFunc test); + StringView m_candidate; bool m_first_char_match = false; bool m_prefix = false; |
