refactor: move searching to static library

This commit is contained in:
Michael Mandl 2024-03-19 17:26:26 +01:00
parent 8ed4b9ac71
commit 32a1cd7533
Signed by: mandlm
GPG key ID: 4AA25D647AA54CC7
11 changed files with 20 additions and 2 deletions

View file

@ -0,0 +1,12 @@
#pragma once
#include <string>
#include <vector>
using std::string, std::string_view, std::vector;
class Finder {
public:
virtual ~Finder() = default;
virtual vector<const string *> find_prefix(string_view search_term) const = 0;
};

View file

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

View file

@ -0,0 +1,13 @@
#pragma once
#include "finder.h"
class ParallelFinder : public Finder {
private:
const size_t thread_count_;
const vector<string> &word_list_;
public:
ParallelFinder(const vector<string> &word_list, size_t thread_count);
vector<const string *> find_prefix(string_view search_term) const override;
};

View file

@ -0,0 +1,16 @@
#pragma once
#include <chrono>
#include <string>
class Timer {
private:
std::string name_;
std::chrono::time_point<std::chrono::high_resolution_clock> start_;
public:
Timer(std::string_view name);
void start();
void stop();
};

View file

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