xref: /freebsd-src/contrib/llvm-project/clang/lib/DirectoryWatcher/DirectoryScanner.h (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
10b57cec5SDimitry Andric //===- DirectoryScanner.h - Utility functions for DirectoryWatcher --------===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #include "clang/DirectoryWatcher/DirectoryWatcher.h"
100b57cec5SDimitry Andric #include "llvm/Support/FileSystem.h"
11*bdd1243dSDimitry Andric #include <optional>
120b57cec5SDimitry Andric #include <string>
130b57cec5SDimitry Andric #include <vector>
140b57cec5SDimitry Andric 
150b57cec5SDimitry Andric namespace clang {
160b57cec5SDimitry Andric 
170b57cec5SDimitry Andric /// Gets names (filenames) of items in directory at \p Path.
180b57cec5SDimitry Andric /// \returns empty vector if \p Path is not a directory, doesn't exist or can't
190b57cec5SDimitry Andric /// be read from.
200b57cec5SDimitry Andric std::vector<std::string> scanDirectory(llvm::StringRef Path);
210b57cec5SDimitry Andric 
220b57cec5SDimitry Andric /// Create event with EventKind::Added for every element in \p Scan.
230b57cec5SDimitry Andric std::vector<DirectoryWatcher::Event>
240b57cec5SDimitry Andric getAsFileEvents(const std::vector<std::string> &Scan);
250b57cec5SDimitry Andric 
260b57cec5SDimitry Andric /// Gets status of file (or directory) at \p Path.
27*bdd1243dSDimitry Andric /// \returns std::nullopt if \p Path doesn't exist or can't get the status.
28*bdd1243dSDimitry Andric std::optional<llvm::sys::fs::file_status> getFileStatus(llvm::StringRef Path);
290b57cec5SDimitry Andric 
300b57cec5SDimitry Andric } // namespace clang
31