#ifndef ARGUMENTANALYZER_H #define ARGUMENTANALYZER_H #include #include #include #include "common.h" struct HeatSpot { size_t xPosition = 0; size_t yPosition = 0; double temperature = 0.0; size_t radius = 0; }; struct TestCaseArguments { size_t rows = 0; size_t columns = 0; std::string outputFilename; double minTemperature = -273.15; double maxTemperature = 8000.0; double variabilityFactor = 0.0; std::vector heatSpots; }; class ArgumentAnalyzer { DISABLE_COPY_CLASS(ArgumentAnalyzer) private: TestCaseArguments testCaseArguments; public: ArgumentAnalyzer(); int analyzeArguments(int argc, char* argv[]); inline const TestCaseArguments& getTestCaseArguments() const { return this->testCaseArguments; } static int printHelp(); }; #endif // ARGUMENTANALYZER_H