refactor: add WordList type

This commit is contained in:
Michael Mandl 2024-03-21 08:55:44 +01:00
parent dae5445efc
commit 48f05ddb4f
Signed by: mandlm
GPG key ID: 4AA25D647AA54CC7
18 changed files with 111 additions and 92 deletions

View file

@ -1,6 +1,7 @@
#pragma once
#include "finder.h"
#include "word_list.h"
#include <map>
#include <vector>
@ -10,7 +11,7 @@ private:
std::map<char, std::vector<const std::string *>> groups_;
public:
GroupedFinder(const std::vector<std::string> &word_list);
GroupedFinder(const WordList &word_list);
virtual std::forward_list<const std::string *>
find_prefix(std::string_view search_term) const override;

View file

@ -1,17 +1,15 @@
#pragma once
#include "finder.h"
#include <vector>
using std::vector;
#include "word_list.h"
class LinearFinder : public Finder {
private:
const vector<std::string> &word_list_;
const WordList &word_list_;
public:
LinearFinder(const vector<std::string> &word_list);
LinearFinder(const WordList &word_list);
std::forward_list<const std::string *>
find_prefix(std::string_view search_term) const override;
};

View file

@ -1,15 +1,14 @@
#pragma once
#include "finder.h"
#include <vector>
#include "word_list.h"
class ParallelFinder : public Finder {
private:
const std::vector<std::string> &word_list_;
const WordList &word_list_;
public:
ParallelFinder(const std::vector<std::string> &word_list);
ParallelFinder(const WordList &word_list);
std::forward_list<const std::string *>
find_prefix(std::string_view search_term) const override;

View file

@ -1,6 +1,7 @@
#pragma once
#include "finder.h"
#include "word_list.h"
#include <vector>
@ -9,7 +10,7 @@ private:
std::vector<const std::string *> word_list_;
public:
SortedLinearFinder(const std::vector<std::string> &word_list);
SortedLinearFinder(const WordList &word_list);
std::forward_list<const std::string *>
find_prefix(std::string_view search_term) const override;

View file

@ -1,9 +1,9 @@
#pragma once
#include "finder.h"
#include "word_list.h"
#include <map>
#include <vector>
class SearchTreeNode {
private:
@ -19,7 +19,7 @@ public:
class SearchTree : public SearchTreeNode {
public:
SearchTree(const std::vector<std::string> &word_list);
SearchTree(const WordList &word_list);
};
class TreeFinder : public Finder {
@ -27,7 +27,7 @@ private:
SearchTree search_tree_;
public:
TreeFinder(const std::vector<std::string> &word_list);
TreeFinder(const WordList &word_list);
virtual std::forward_list<const std::string *>
find_prefix(std::string_view search_term) const override;

View file

@ -0,0 +1,14 @@
#pragma once
#include <filesystem>
#include <string>
#include <vector>
class WordList : public std::vector<std::string> {
public:
WordList &multiply(size_t factor);
WordList &shuffle();
static WordList fourCaps();
static WordList fromFile(const std::filesystem::path &path);
};

View file

@ -1,13 +0,0 @@
#pragma once
#include <string>
#include <vector>
class WordListGenerator {
private:
static const std::string charset_;
public:
WordListGenerator() = delete;
static std::vector<std::string> generate(const size_t multiplier = 1);
};