#ifndef GENERATOR_HPP #define GENERATOR_HPP #include #include #include 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 children; int occurances = 1; bool isEndOfWord; TrieNode() : isEndOfWord(false) {} }; class Trie { public: Trie() : root(new TrieNode()) {} void insert(const std::deque& currentKGram); bool search(const std::deque& 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