/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include "cm_uv.h" class cmRootWatcher; class cmFileMonitor { public: cmFileMonitor(uv_loop_t* l); ~cmFileMonitor(); cmFileMonitor(cmFileMonitor const&) = delete; cmFileMonitor& operator=(cmFileMonitor const&) = delete; using Callback = std::function; void MonitorPaths(const std::vector& paths, Callback const& cb); void StopMonitoring(); std::vector WatchedFiles() const; std::vector WatchedDirectories() const; private: cmRootWatcher* Root; };