generated from trianta/cpp-unity-template
	dev #7
@ -0,0 +1,40 @@
 | 
			
		||||
#include "generator.hpp"
 | 
			
		||||
#include <iostream>
 | 
			
		||||
 | 
			
		||||
void Generator::SetArguments(int argc, char* argv[]) {
 | 
			
		||||
    std::string tempStr;
 | 
			
		||||
    for (int i = 1; i < argc; ++i) {
 | 
			
		||||
        tempStr.assign(argv[i]);
 | 
			
		||||
        if (tempStr == "-i") {
 | 
			
		||||
            setup.isFileSet = true;
 | 
			
		||||
            ++i;
 | 
			
		||||
            setup.filename.assign(argv[i]);
 | 
			
		||||
        }
 | 
			
		||||
        if (tempStr == "-k") {
 | 
			
		||||
            setup.isPrefixSet = true;
 | 
			
		||||
            ++i;
 | 
			
		||||
            setup.prefixLength = std::stoi(argv[i]);
 | 
			
		||||
        }
 | 
			
		||||
        if (tempStr == "-n") {
 | 
			
		||||
            setup.isOutputSet = true;
 | 
			
		||||
            ++i;
 | 
			
		||||
            setup.outputLength = std::stoi(argv[i]);
 | 
			
		||||
        }
 | 
			
		||||
        if (tempStr == "-h") {
 | 
			
		||||
            PrintUsage();
 | 
			
		||||
            exit(0);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (!setup.isFileSet) { std::cerr << "[Setup - Error] Filename not specified" << std::endl; }
 | 
			
		||||
    if (!setup.prefixLength) { std::cerr << "[Setup - Error] Prefix length not specified" << std::endl; }
 | 
			
		||||
    if (!setup.outputLength) { std::cerr << "[Setup - Error] Output length not specified" << std::endl; }
 | 
			
		||||
    if (!setup.isFileSet || !setup.isPrefixSet || !setup.isOutputSet) { PrintUsage(); }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PrintUsage(void) {
 | 
			
		||||
    std::cout << "Usage:  markov -i input_file -k prefix_length -n output_length" << std::endl;
 | 
			
		||||
    std::cout << "        -i: Direct path to input file for basis" << std::endl;
 | 
			
		||||
    std::cout << "        -k: Prefix length for Markov chain" << std::endl;
 | 
			
		||||
    std::cout << "        -n: Length of output to be generated (words)" << std::endl;
 | 
			
		||||
    std::cout << "        -h: Prints this usage text" << std::endl;
 | 
			
		||||
}
 | 
			
		||||
@ -1,13 +1,26 @@
 | 
			
		||||
#ifndef GENERATOR_HPP
 | 
			
		||||
#define GENERATOR_HPP
 | 
			
		||||
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
void PrintUsage(void);
 | 
			
		||||
 | 
			
		||||
struct ArgumentList {
 | 
			
		||||
    std::string filename = "";
 | 
			
		||||
    bool isFileSet = false;
 | 
			
		||||
    int prefixLength = 0;
 | 
			
		||||
    bool isPrefixSet = false;
 | 
			
		||||
    int outputLength = 0;
 | 
			
		||||
    bool isOutputSet = false;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Generator {
 | 
			
		||||
public:
 | 
			
		||||
    Generator(void);
 | 
			
		||||
    Generator(void) = default;
 | 
			
		||||
    ~Generator(void) = default;
 | 
			
		||||
    void SetArguments(int argc, char* argv[]);
 | 
			
		||||
private:
 | 
			
		||||
    int prefixLength = 0;
 | 
			
		||||
    int outputLength = 0;
 | 
			
		||||
    ArgumentList setup;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // !GENERATOR_HPP
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,10 @@
 | 
			
		||||
#include "generator.hpp"
 | 
			
		||||
 | 
			
		||||
int main(int argc, char* argv[]) {
 | 
			
		||||
    if (argc == 1) { 
 | 
			
		||||
        PrintUsage(); 
 | 
			
		||||
        exit(0); 
 | 
			
		||||
    }
 | 
			
		||||
    Generator markovChain;
 | 
			
		||||
    markovChain.SetArguments(argc, argv);
 | 
			
		||||
    return 0;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7210
									
								
								test/aces-up.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7210
									
								
								test/aces-up.txt
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user