|
clang 23.0.0git
|
A virtual file system optimized for the dependency discovery. More...
#include "clang/DependencyScanning/DependencyScanningFilesystem.h"
Public Member Functions | |
| DependencyScanningWorkerFilesystem (DependencyScanningService &Service, IntrusiveRefCntPtr< llvm::vfs::FileSystem > FS) | |
| llvm::ErrorOr< llvm::vfs::Status > | status (const Twine &Path) override |
| llvm::ErrorOr< std::unique_ptr< llvm::vfs::File > > | openFileForRead (const Twine &Path) override |
| std::error_code | getRealPath (const Twine &Path, SmallVectorImpl< char > &Output) override |
| std::error_code | setCurrentWorkingDirectory (const Twine &Path) override |
| llvm::ErrorOr< EntryRef > | getOrCreateFileSystemEntry (StringRef Filename) |
| Returns entry for the given filename. | |
| bool | ensureDirectiveTokensArePopulated (EntryRef Entry) |
| Ensure the directive tokens are populated for this file entry. | |
| std::optional< ArrayRef< dependency_directives_scan::Directive > > | getDirectiveTokens (const Twine &Path) |
| bool | exists (const Twine &Path) override |
Check whether Path exists. | |
Static Public Attributes | |
| static const char | ID = 0 |
A virtual file system optimized for the dependency discovery.
It is primarily designed to work with source files whose contents was preprocessed to remove any tokens that are unlikely to affect the dependency computation.
This is not a thread safe VFS. A single instance is meant to be used only in one thread. Multiple instances are allowed to service multiple threads running in parallel.
Definition at line 318 of file DependencyScanningFilesystem.h.
| DependencyScanningWorkerFilesystem::DependencyScanningWorkerFilesystem | ( | DependencyScanningService & | Service, |
| IntrusiveRefCntPtr< llvm::vfs::FileSystem > | FS ) |
Definition at line 226 of file DependencyScanningFilesystem.cpp.
References DependencyScanningWorkerFilesystem().
Referenced by DependencyScanningWorkerFilesystem().
Ensure the directive tokens are populated for this file entry.
Returns true if the directive tokens are populated for this file entry, false if not (i.e. this entry is not a file or its scan fails).
Definition at line 43 of file DependencyScanningFilesystem.cpp.
References clang::dependencies::CachedFileContents::DepDirectives, clang::dependencies::CachedFileContents::DepDirectiveTokens, clang::dependencies::CachedFileContents::Original, clang::scanSourceForDependencyDirectives(), and clang::dependencies::CachedFileContents::ValueLock.
Referenced by getDirectiveTokens().
|
override |
Check whether Path exists.
By default checks cached result of status(), and falls back on FS if unable to do so.
Definition at line 360 of file DependencyScanningFilesystem.cpp.
References status().
|
inline |
Definition at line 352 of file DependencyScanningFilesystem.h.
References ensureDirectiveTokensArePopulated(), and getOrCreateFileSystemEntry().
| llvm::ErrorOr< EntryRef > DependencyScanningWorkerFilesystem::getOrCreateFileSystemEntry | ( | StringRef | Filename | ) |
Returns entry for the given filename.
Attempts to use the local and shared caches first, then falls back to using the underlying filesystem.
Definition at line 330 of file DependencyScanningFilesystem.cpp.
References clang::dependencies::EntryRef::unwrapError().
Referenced by getDirectiveTokens(), openFileForRead(), and status().
|
override |
Definition at line 430 of file DependencyScanningFilesystem.cpp.
|
override |
Definition at line 419 of file DependencyScanningFilesystem.cpp.
References getOrCreateFileSystemEntry(), and clang::Result.
|
override |
Definition at line 477 of file DependencyScanningFilesystem.cpp.
|
override |
Definition at line 350 of file DependencyScanningFilesystem.cpp.
References getOrCreateFileSystemEntry(), and clang::Result.
Referenced by exists().
|
static |
Definition at line 322 of file DependencyScanningFilesystem.h.