diff --git a/include/setup/Factory.h b/include/setup/Factory.h new file mode 100644 index 0000000..9df5468 --- /dev/null +++ b/include/setup/Factory.h @@ -0,0 +1,54 @@ +#ifndef _FACTORY_H_ +#define _FACTORY_H_ + +#include +#include +#include + +#include +#include + +namespace e2e { +namespace setup { +namespace factory { + +using namespace e2e::io; + +template +std::unique_ptr makeLogger(Args... args) + requires std::is_base_of_v; + +template +std::unique_ptr makeTaskInstanceReader(Args... args) + requires std::is_base_of_v; + +template +std::unique_ptr makeTaskReader(Args... args) + requires std::is_base_of_v; + +template +inline std::unique_ptr makeLogger(Args... args) + requires std::is_base_of_v +{ + return std::make_unique(args...); +} + +template +inline std::unique_ptr makeTaskInstanceReader(Args... args) + requires std::is_base_of_v +{ + return std::make_unique(args...); +} + +template +inline std::unique_ptr makeTaskReader(Args... args) + requires std::is_base_of_v +{ + return std::make_unique(args...); +} + +} // namespace factory +} // namespace setup +} // namespace e2e + +#endif \ No newline at end of file diff --git a/include/setup/Setup.h b/include/setup/Setup.h index 7085b74..10b0224 100644 --- a/include/setup/Setup.h +++ b/include/setup/Setup.h @@ -13,53 +13,12 @@ namespace setup { using namespace e2e::io; -// Get objects from supported types---------------------------------- - -template -std::unique_ptr makeLogger(Args... args) - requires std::is_base_of_v; - -template -std::unique_ptr makeTaskInstanceReader(Args... args) - requires std::is_base_of_v; - -template -std::unique_ptr makeTaskReader(Args... args) - requires std::is_base_of_v; - -// Get objects from supported types---------------------------------- - -// Get objects from strings types------------------------------------ - std::unique_ptr logger(const std::string& loggerStr); std::unique_ptr simpleLogger(const std::string& loggerStr); std::unique_ptr taskInstanceReader( const std::string& readerStr); std::unique_ptr taskReader(const std::string& readerStr); -// Get objects from strings types------------------------------------ - -template -inline std::unique_ptr makeLogger(Args... args) - requires std::is_base_of_v -{ - return std::make_unique(args...); -} - -template -inline std::unique_ptr makeTaskInstanceReader(Args... args) - requires std::is_base_of_v -{ - return std::make_unique(args...); -} - -template -inline std::unique_ptr makeTaskReader(Args... args) - requires std::is_base_of_v -{ - return std::make_unique(args...); -} - } // namespace setup } // namespace e2e diff --git a/source/setup/Preset.cpp b/source/setup/Preset.cpp index a60f7e6..e689905 100644 --- a/source/setup/Preset.cpp +++ b/source/setup/Preset.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include @@ -14,7 +15,8 @@ e2e::setup::preset::makeDefaultTaskInstanceReader() { std::cout << "Reader type: text" << std::endl; std::cout << "Enter path to input file: "; std::cin >> inputPath; - return makeTaskInstanceReader(inputPath); + return factory::makeTaskInstanceReader( + inputPath); } std::unique_ptr e2e::setup::preset::makeDefaultTaskReader() { @@ -22,13 +24,13 @@ std::unique_ptr e2e::setup::preset::makeDefaultTaskReader() { std::cout << "Reader type: text" << std::endl; std::cout << "Enter path to input file: "; std::cin >> inputPath; - return makeTaskReader(inputPath); + return factory::makeTaskReader(inputPath); } std::unique_ptr e2e::setup::preset::makeDefaultLogger() { - return makeLogger(); + return factory::makeLogger(); } std::unique_ptr e2e::setup::preset::makeDefaultSimplifiedLogger() { - return makeLogger(); + return factory::makeLogger(); } \ No newline at end of file diff --git a/source/setup/Setup.cpp b/source/setup/Setup.cpp index 8b261ef..853d171 100644 --- a/source/setup/Setup.cpp +++ b/source/setup/Setup.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -22,7 +23,7 @@ std::unique_ptr setup::logger(const std::string& loggerStr) { if (lowercaseLoggerStr == "console") { std::cout << "Logger type: console" << std::endl; - return makeLogger(); + return factory::makeLogger(); } if (lowercaseLoggerStr == "text") { @@ -30,7 +31,7 @@ std::unique_ptr setup::logger(const std::string& loggerStr) { std::cout << "Logger type: text" << std::endl; std::cout << "Enter output path: "; std::cin >> outputPath; - return makeLogger(outputPath); + return factory::makeLogger(outputPath); } return nullptr; @@ -44,7 +45,7 @@ std::unique_ptr setup::simpleLogger(const std::string& loggerStr) { if (lowercaseLoggerStr == "console") { std::cout << "Logger type: console" << std::endl; - return makeLogger(); + return factory::makeLogger(); } if (lowercaseLoggerStr == "text") { @@ -52,9 +53,10 @@ std::unique_ptr setup::simpleLogger(const std::string& loggerStr) { std::cout << "Logger type: text" << std::endl; std::cout << "Enter output path: "; std::cin >> outputPath; - return makeLogger(outputPath); + return factory::makeLogger(outputPath); } + std::cout << "Entered logger is not supported" << std::endl; return nullptr; } @@ -67,7 +69,7 @@ std::unique_ptr setup::taskInstanceReader( if (lowercaseReaderStr == "console") { std::cout << "Reader type: console" << std::endl; - return makeTaskInstanceReader(); + return factory::makeTaskInstanceReader(); } if (lowercaseReaderStr == "text") { @@ -75,9 +77,11 @@ std::unique_ptr setup::taskInstanceReader( std::cout << "Reader type: text" << std::endl; std::cout << "Enter path to input file: "; std::cin >> inputPath; - return makeTaskInstanceReader(inputPath); + return factory::makeTaskInstanceReader( + inputPath); } + std::cout << "Entered task instance reader is not supported" << std::endl; return nullptr; } @@ -90,7 +94,7 @@ std::unique_ptr e2e::setup::taskReader( if (lowercaseReaderStr == "console") { std::cout << "Reader type: console" << std::endl; - return makeTaskReader(); + return factory::makeTaskReader(); } if (lowercaseReaderStr == "text") { @@ -98,8 +102,9 @@ std::unique_ptr e2e::setup::taskReader( std::cout << "Reader type: text" << std::endl; std::cout << "Enter path to input file: "; std::cin >> inputPath; - return makeTaskReader(inputPath); + return factory::makeTaskReader(inputPath); } + std::cout << "Entered task reader is not supported" << std::endl; return nullptr; }