Mercurial > minori
comparison src/core/filesystem.cc @ 393:963047512d34
*: clang-format
| author | Paper <paper@tflc.us> |
|---|---|
| date | Fri, 07 Nov 2025 07:16:15 -0500 |
| parents | c3f717b7321b |
| children | 650a9159a0e7 |
comparison
equal
deleted
inserted
replaced
| 392:a72d6d7b3568 | 393:963047512d34 |
|---|---|
| 60 /* Ehhhhh */ | 60 /* Ehhhhh */ |
| 61 | 61 |
| 62 class Watcher : public IWatcher { | 62 class Watcher : public IWatcher { |
| 63 public: | 63 public: |
| 64 Watcher(void *opaque, const std::filesystem::path &path, EventHandler handler) | 64 Watcher(void *opaque, const std::filesystem::path &path, EventHandler handler) |
| 65 : path_(path) | 65 : path_(path), handler_(handler), opaque_(opaque) |
| 66 , handler_(handler) | |
| 67 , opaque_(opaque) | |
| 68 { | 66 { |
| 69 } | 67 } |
| 70 | 68 |
| 71 virtual ~Watcher() override | 69 virtual ~Watcher() override {} |
| 72 { | |
| 73 } | |
| 74 | 70 |
| 75 protected: | 71 protected: |
| 76 std::filesystem::path path_; | 72 std::filesystem::path path_; |
| 77 EventHandler handler_; | 73 EventHandler handler_; |
| 78 void *opaque_; | 74 void *opaque_; |
| 85 | 81 |
| 86 template<typename T> | 82 template<typename T> |
| 87 class StdFilesystemWatcher : public Watcher { | 83 class StdFilesystemWatcher : public Watcher { |
| 88 public: | 84 public: |
| 89 StdFilesystemWatcher(void *opaque, const std::filesystem::path &path, EventHandler handler) | 85 StdFilesystemWatcher(void *opaque, const std::filesystem::path &path, EventHandler handler) |
| 90 : Watcher(opaque, path, handler) | 86 : Watcher(opaque, path, handler) |
| 91 { | 87 { |
| 92 } | 88 } |
| 93 | 89 |
| 94 virtual ~StdFilesystemWatcher() override | 90 virtual ~StdFilesystemWatcher() override {} |
| 95 { | |
| 96 } | |
| 97 | 91 |
| 98 virtual void Process() override | 92 virtual void Process() override |
| 99 { | 93 { |
| 100 /* Untoggle all paths. This allows us to only ever | 94 /* Untoggle all paths. This allows us to only ever |
| 101 * iterate over the directory ONCE. */ | 95 * iterate over the directory ONCE. */ |
| 155 | 149 |
| 156 /* TODO this is probably DAMN slow */ | 150 /* TODO this is probably DAMN slow */ |
| 157 std::vector<PathStatus> paths_; | 151 std::vector<PathStatus> paths_; |
| 158 }; | 152 }; |
| 159 | 153 |
| 160 IWatcher *GetRecursiveFilesystemWatcher(void *opaque, | 154 IWatcher *GetRecursiveFilesystemWatcher(void *opaque, const std::filesystem::path &path, IWatcher::EventHandler handler) |
| 161 const std::filesystem::path &path, IWatcher::EventHandler handler) | |
| 162 { | 155 { |
| 163 /* .... :) */ | 156 /* .... :) */ |
| 164 return new StdFilesystemWatcher<std::filesystem::recursive_directory_iterator>(opaque, path, handler); | 157 return new StdFilesystemWatcher<std::filesystem::recursive_directory_iterator>(opaque, path, handler); |
| 165 } | 158 } |
| 166 | 159 |
