/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include <functional> #include <string> #include <vector> #include "cm_uv.h" class cmRootWatcher; class cmFileMonitor { public: cmFileMonitor(uv_loop_t* l); ~cmFileMonitor(); 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: cmRootWatcher* Root; };