markov-generator/src/generator.hpp
2023-12-08 18:19:14 -06:00

55 lines
1.1 KiB
C++

#ifndef GENERATOR_HPP
#define GENERATOR_HPP
#include <deque>
#include <unordered_map>
#include <string>
void InitializeGenerator(void);
int GenerateRandomNumber(int generationLimit);
struct ArgumentList {
std::string filename = "";
bool isFileSet = false;
int prefixLength = 0;
bool isPrefixSet = false;
int outputLength = 0;
bool isOutputSet = false;
};
class TrieNode {
public:
std::unordered_map<char, TrieNode*> children;
int occurances = 1;
bool isEndOfWord;
TrieNode() : isEndOfWord(false) {}
};
class Trie {
public:
Trie() : root(new TrieNode()) {}
void insert(const std::deque<char>& currentKGram);
bool search(const std::deque<char>& currentKGram) const;
private:
TrieNode* root;
};
struct Generator {
public:
Generator(void) = default;
~Generator(void) = default;
void SetArguments(int argc, char* argv[]);
void ReadFile(void);
void GenerateOutput(void);
private:
char GenerateCharacter(void);
ArgumentList setup;
Trie trie;
};
void PrintUsage(void);
#endif // !GENERATOR_HPP