/* 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 <functional> #include <memory> #include <string> #include <vector> #include <cm3p/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(const std::string&, int, int)>; void MonitorPaths(const std::vector<std::string>& paths, Callback const& cb); void StopMonitoring(); std::vector<std::string> WatchedFiles() const; std::vector<std::string> WatchedDirectories() const; private: std::unique_ptr<cmRootWatcher> Root; };