refactor: extract WordRefList and thread finder

This commit is contained in:
Michael Mandl 2024-03-21 09:57:13 +01:00
parent 48f05ddb4f
commit 95cc7223e8
Signed by: mandlm
GPG key ID: 4AA25D647AA54CC7
8 changed files with 84 additions and 63 deletions

View file

@ -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;
};

View file

@ -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;
};

View file

@ -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);

View file

@ -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);
};