#ifndef SORT_CONTROLLER_HPP
#define SORT_CONTROLLER_HPP

#include <chrono>
#include <string>
#include <vector>

enum SortType {INSERTION = 0, MERGE, HEAP, BST, RBT, LAST};

class SortController
{
public:
    SortController();
    void CheckArguments(int argc, char* arguments[]);
    void ReadWordFile(void);
    void RunBenchmarks(void);
protected:
    ;
private:
    std::string filename;
    SortType currentType;
    std::string wordToLocate;
    std::chrono::duration<double> sortTime;
    std::vector<std::string> newWordList;
    std::vector<std::string> originalWordList;
    int lineCount;
    bool defaultFile, defaultOnly, fileGiven, allLists, sortGiven, locate;
    void Benchmarking(void);
    void BenchmarkingAll(void);
    void OutputResult(void);
    void EchoSortTime(std::string outputFilename);
    void WriteOutputToFile(std::string outputFilename);
};

#endif