summaryrefslogtreecommitdiff
path: root/src/ranked_match.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-03-25 20:35:57 +0000
committerMaxime Coste <frrrwww@gmail.com>2016-03-25 20:38:27 +0000
commitc756f8f12465265e95aaab215260c79a7034e429 (patch)
tree313f2a01671b260d10d891679048532b8f4fea68 /src/ranked_match.hh
parent15b241b9428d25123db4d8bd8cd977fb991735f6 (diff)
Move UsedLetters with RankedMatch
Diffstat (limited to 'src/ranked_match.hh')
-rw-r--r--src/ranked_match.hh15
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;