diff --git a/homework/schedule/CMakeLists.txt b/homework/schedule/CMakeLists.txt index a50c9e4..440f616 100644 --- a/homework/schedule/CMakeLists.txt +++ b/homework/schedule/CMakeLists.txt @@ -7,7 +7,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) include_directories(.) -add_executable(${PROJECT_NAME} main.cpp) +add_executable(${PROJECT_NAME} main.cpp schedule.cpp schedule.hpp) add_executable(${PROJECT_NAME}-ut tests/catch/catch_amalgamated.cpp tests/catch/catch_main.cpp tests/tests.cpp) add_executable(${PROJECT_NAME}-ut-bonus tests/catch/catch_amalgamated.cpp tests/catch/catch_main.cpp tests/tests-bonus.cpp) diff --git a/homework/schedule/schedule.cpp b/homework/schedule/schedule.cpp new file mode 100644 index 0000000..917dbb6 --- /dev/null +++ b/homework/schedule/schedule.cpp @@ -0,0 +1,16 @@ +#include "schedule.hpp" + +void schedule(std::function func, std::chrono::seconds duration) { + std::this_thread::sleep_for(duration); + func(); +} + +void schedule(std::function func, std::chrono::seconds duration, int value) { + std::this_thread::sleep_for(duration); + func(value); +} + +void schedule(std::function func, std::chrono::seconds duration, std::string str, double value) { + std::this_thread::sleep_for(duration); + func(str, value); +} \ No newline at end of file diff --git a/homework/schedule/schedule.hpp b/homework/schedule/schedule.hpp new file mode 100644 index 0000000..c552b48 --- /dev/null +++ b/homework/schedule/schedule.hpp @@ -0,0 +1,15 @@ +#pragma once +#include +#include +#include +#include + +void schedule(std::function func, std::chrono::seconds duration); +void schedule(std::function func, std::chrono::seconds duration, int value); +void schedule(std::function func, std::chrono::seconds duration, std::string str, double value); + +template +void schedule(Func func, std::chrono::seconds dur, Args... args) { + std::this_thread::sleep_for(dur); + func(args...); +} \ No newline at end of file