summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-11-30 11:19:04 -0500
committerBrad King <brad.king@kitware.com>2017-11-30 13:26:35 -0500
commitdd700e9bfb2a498632845e76ce95dd38bb866a7b (patch)
tree79fb14a5c887417275b704e9175a22af56517cc7
parent32cfa7b324de799eefb2f7370fb54b700d1a87a5 (diff)
downloadcmake-dd700e9bfb2a498632845e76ce95dd38bb866a7b.tar.gz
cmUVHandlePtr: Add uv_timer_ptr
-rw-r--r--Source/cmUVHandlePtr.cxx14
-rw-r--r--Source/cmUVHandlePtr.h12
-rw-r--r--Tests/CMakeLib/testUVRAII.cxx1
3 files changed, 27 insertions, 0 deletions
diff --git a/Source/cmUVHandlePtr.cxx b/Source/cmUVHandlePtr.cxx
index 8ba93e5241..78819a5721 100644
--- a/Source/cmUVHandlePtr.cxx
+++ b/Source/cmUVHandlePtr.cxx
@@ -172,6 +172,18 @@ uv_pipe_ptr::operator uv_stream_t*() const
}
#ifdef CMAKE_BUILD_WITH_CMAKE
+int uv_timer_ptr::init(uv_loop_t& loop, void* data)
+{
+ allocate(data);
+ return uv_timer_init(&loop, *this);
+}
+
+int uv_timer_ptr::start(uv_timer_cb cb, uint64_t timeout, uint64_t repeat)
+{
+ assert(handle);
+ return uv_timer_start(*this, cb, timeout, repeat);
+}
+
uv_tty_ptr::operator uv_stream_t*() const
{
return reinterpret_cast<uv_stream_t*>(handle.get());
@@ -199,6 +211,8 @@ UV_HANDLE_PTR_INSTANTIATE_EXPLICIT(stream)
#ifdef CMAKE_BUILD_WITH_CMAKE
UV_HANDLE_PTR_INSTANTIATE_EXPLICIT(async)
+UV_HANDLE_PTR_INSTANTIATE_EXPLICIT(timer)
+
UV_HANDLE_PTR_INSTANTIATE_EXPLICIT(tty)
#endif
}
diff --git a/Source/cmUVHandlePtr.h b/Source/cmUVHandlePtr.h
index a251c5f54a..d3df69cd2d 100644
--- a/Source/cmUVHandlePtr.h
+++ b/Source/cmUVHandlePtr.h
@@ -5,6 +5,7 @@
#include <algorithm>
#include <cstddef>
+#include <cstdint>
#include <memory>
#include <type_traits>
@@ -164,6 +165,15 @@ struct uv_pipe_ptr : public uv_handle_ptr_<uv_pipe_t>
int init(uv_loop_t& loop, int ipc, void* data = nullptr);
};
+struct uv_timer_ptr : public uv_handle_ptr_<uv_timer_t>
+{
+ CM_PERFECT_FWD_CTOR(uv_timer_ptr, uv_handle_ptr_<uv_timer_t>);
+
+ int init(uv_loop_t& loop, void* data = nullptr);
+
+ int start(uv_timer_cb cb, uint64_t timeout, uint64_t repeat);
+};
+
struct uv_tty_ptr : public uv_handle_ptr_<uv_tty_t>
{
CM_PERFECT_FWD_CTOR(uv_tty_ptr, uv_handle_ptr_<uv_tty_t>);
@@ -192,6 +202,8 @@ UV_HANDLE_PTR_INSTANTIATE_EXTERN(pipe)
UV_HANDLE_PTR_INSTANTIATE_EXTERN(stream)
+UV_HANDLE_PTR_INSTANTIATE_EXTERN(timer)
+
UV_HANDLE_PTR_INSTANTIATE_EXTERN(tty)
#undef UV_HANDLE_PTR_INSTANTIATE_EXTERN
diff --git a/Tests/CMakeLib/testUVRAII.cxx b/Tests/CMakeLib/testUVRAII.cxx
index 7ecef3960c..bb3493f3ea 100644
--- a/Tests/CMakeLib/testUVRAII.cxx
+++ b/Tests/CMakeLib/testUVRAII.cxx
@@ -155,6 +155,7 @@ static bool testAllMoves()
struct allTypes
{
uv_stream_ptr _7;
+ uv_timer_ptr _8;
uv_tty_ptr _9;
uv_pipe_ptr _12;
uv_async_ptr _13;