32#include <unordered_map>
49 FileManager() =
default;
50 ~FileManager() =
default;
52 FileManager(
const FileManager &) =
delete;
53 FileManager &operator=(
const FileManager &) =
delete;
54 FileManager(FileManager &&) =
delete;
55 FileManager &operator=(FileManager &&) =
delete;
65 std::optional<FileID>
tryGetFileId(std::string_view filePath)
const;
87 std::size_t refCount = 0;
93 std::string normalizePath(std::string_view filePath)
const;
95 mutable std::mutex mutex_;
96 std::vector<FileRecord> files_;
97 std::unordered_map<std::string, FileID> pathToId_;
std::size_t FileID
Type-safe identifier for registered files. 0 is reserved for invalid.
static constexpr FileID InvalidFileID
Reserved invalid FileID.
FileID registerFile(std::string_view filePath)
Register a file and return its FileID.
std::size_t getRefCount(FileID id) const
Get reference count for a file.
std::string_view getFilePath(FileID id) const
Get the canonical path for a FileID.
std::size_t getRegisteredFileCount() const
Get total number of registered files.
bool isValidFileId(FileID id) const
Check if a FileID is valid.
std::optional< FileID > tryGetFileId(std::string_view filePath) const
Look up FileID for a path without registering.