Mercurial > minori
annotate include/core/filesystem.h @ 413:192da585a0a8 default tip
*: fix formatting
the clang-format file was broken andjust using LLVM defaults.
now it's fixed and is more in line with what I actually prefer my
code to look like -- esp. with regards to tabulators
| author | Paper <paper@tflc.us> |
|---|---|
| date | Sat, 25 Jul 2026 14:54:32 -0400 |
| parents | e561b7542b7b |
| children |
| rev | line source |
|---|---|
|
261
3ec7804abf17
include: make header guards more sane
Paper <paper@paper.us.eu.org>
parents:
258
diff
changeset
|
1 #ifndef MINORI_CORE_FILESYSTEM_H_ |
|
3ec7804abf17
include: make header guards more sane
Paper <paper@paper.us.eu.org>
parents:
258
diff
changeset
|
2 #define MINORI_CORE_FILESYSTEM_H_ |
| 258 | 3 #include <filesystem> |
| 393 | 4 #include <functional> |
| 11 | 5 #include <string> |
| 404 | 6 #include <unordered_map> |
| 11 | 7 |
| 8 namespace Filesystem { | |
| 9 | |
| 369 | 10 void CreateDirectories(const std::filesystem::path &path); |
| 258 | 11 std::filesystem::path GetDotPath(); // %APPDATA%/minori/, ~/Library/Application Support/minori/, ~/.config/minori/... |
| 12 std::filesystem::path GetConfigPath(); // (dotpath)/config.json | |
| 379 | 13 std::filesystem::path GetAnimeDBPath(); // (dotpath)/anime/db.json |
| 14 std::filesystem::path GetTorrentsPath(); // (dotpath)/torrents/... | |
| 378 | 15 std::filesystem::path GetAnimePostersPath(); // (dotpath)/anime/posters/ |
| 11 | 16 |
| 404 | 17 struct PathHash { |
| 413 | 18 auto operator()(const std::filesystem::path &p) const noexcept { return std::filesystem::hash_value(p); } |
| 404 | 19 }; |
| 20 | |
| 21 template<typename T> | |
| 22 using PathMap = std::unordered_map<std::filesystem::path, T, PathHash>; | |
| 23 | |
|
382
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
24 /* ------------------------------------------------------------------------ */ |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
25 /* Filesystem watcher interface. This is implemented differently on |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
26 * different platforms :) */ |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
27 |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
28 struct IWatcher { |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
29 enum Event { |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
30 /* File/directory 'path' was created */ |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
31 Created, |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
32 /* File/directory 'path' was deleted */ |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
33 Deleted, |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
34 }; |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
35 |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
36 using EventHandler = std::function<void(void *opaque, const std::filesystem::path &path, Event event)>; |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
37 |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
38 virtual ~IWatcher() = default; |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
39 virtual void Process() = 0; |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
40 }; |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
41 |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
42 /* Constructor functions. Yes, I'm doing this the C way :) */ |
| 413 | 43 IWatcher *GetRecursiveFilesystemWatcher( |
| 44 void *opaque, const std::filesystem::path &path, IWatcher::EventHandler handler); | |
|
382
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
45 IWatcher *GetFilesystemWatcher(void *opaque, const std::filesystem::path &path, IWatcher::EventHandler handler); |
|
0265e125f680
filesystem: implement filesystem watcher
Paper <paper@tflc.us>
parents:
379
diff
changeset
|
46 |
| 36 | 47 } // namespace Filesystem |
| 11 | 48 |
|
261
3ec7804abf17
include: make header guards more sane
Paper <paper@paper.us.eu.org>
parents:
258
diff
changeset
|
49 #endif // MINORI_CORE_FILESYSTEM_H_ |
