refactor: extract WordRefList and thread finder
This commit is contained in:
parent
48f05ddb4f
commit
95cc7223e8
8 changed files with 84 additions and 63 deletions
|
@ -4,15 +4,14 @@
|
|||
#include "word_list.h"
|
||||
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
class GroupedFinder : public Finder {
|
||||
private:
|
||||
std::map<char, std::vector<const std::string *>> groups_;
|
||||
std::map<char, WordRefList> groups_;
|
||||
|
||||
public:
|
||||
GroupedFinder(const WordList &word_list);
|
||||
|
||||
virtual std::forward_list<const std::string *>
|
||||
find_prefix(std::string_view search_term) const override;
|
||||
find_prefix(std::string_view search_prefix) const override;
|
||||
};
|
||||
|
|
|
@ -11,5 +11,5 @@ public:
|
|||
ParallelFinder(const WordList &word_list);
|
||||
|
||||
std::forward_list<const std::string *>
|
||||
find_prefix(std::string_view search_term) const override;
|
||||
find_prefix(std::string_view search_prefix) const override;
|
||||
};
|
||||
|
|
|
@ -3,11 +3,9 @@
|
|||
#include "finder.h"
|
||||
#include "word_list.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
class SortedLinearFinder : public Finder {
|
||||
private:
|
||||
std::vector<const std::string *> word_list_;
|
||||
WordRefList word_list_;
|
||||
|
||||
public:
|
||||
SortedLinearFinder(const WordList &word_list);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include <filesystem>
|
||||
#include <forward_list>
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
|
@ -11,4 +13,17 @@ public:
|
|||
|
||||
static WordList fourCaps();
|
||||
static WordList fromFile(const std::filesystem::path &path);
|
||||
|
||||
static void find_prefix_in_range(
|
||||
const WordList &word_list, const std::string_view &search_prefix,
|
||||
size_t start_index, size_t end_index,
|
||||
std::forward_list<const std::string *> &result, std::mutex &result_mutex);
|
||||
};
|
||||
|
||||
class WordRefList : public std::vector<const std::string *> {
|
||||
public:
|
||||
static void find_prefix_in_range(
|
||||
const WordRefList &word_list, const std::string_view &search_prefix,
|
||||
size_t start_index, size_t end_index,
|
||||
std::forward_list<const std::string *> &result, std::mutex &result_mutex);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue