LLVM  14.0.0git
Namespaces | Classes | Functions
llvm::vfs Namespace Reference

Namespaces

 detail
 

Classes

class  directory_entry
 A member of a directory, yielded by a directory_iterator. More...
 
class  directory_iterator
 An input iterator over the entries in a virtual path, similar to llvm::sys::fs::directory_iterator. More...
 
class  File
 Represents an open file. More...
 
class  FileSystem
 The virtual file system interface. More...
 
class  InMemoryFileSystem
 An in-memory file system. More...
 
class  OverlayFileSystem
 A file system that allows overlaying one AbstractFileSystem on top of another. More...
 
class  ProxyFileSystem
 By default, this delegates all calls to the underlying file system. More...
 
class  recursive_directory_iterator
 An input iterator over the recursive contents of a virtual path, similar to llvm::sys::fs::recursive_directory_iterator. More...
 
class  RedirectingFileSystem
 A virtual file system parsed from a YAML file. More...
 
class  RedirectingFileSystemParser
 A helper class to hold the common YAML parsing state. More...
 
class  RedirectingFSDirIterImpl
 Directory iterator implementation for RedirectingFileSystem's directory entries. More...
 
class  Status
 The result of a status operation. More...
 
struct  YAMLVFSEntry
 
class  YAMLVFSWriter
 

Functions

IntrusiveRefCntPtr< FileSystemgetRealFileSystem ()
 Gets an vfs::FileSystem for the 'real' file system, as seen by the operating system. More...
 
std::unique_ptr< FileSystemcreatePhysicalFileSystem ()
 Create an vfs::FileSystem for the 'real' file system, as seen by the operating system. More...
 
llvm::sys::fs::UniqueID getNextVirtualUniqueID ()
 Get a globally unique ID for a virtual file or directory. More...
 
std::unique_ptr< FileSystemgetVFSFromYAML (std::unique_ptr< llvm::MemoryBuffer > Buffer, llvm::SourceMgr::DiagHandlerTy DiagHandler, StringRef YAMLFilePath, void *DiagContext=nullptr, IntrusiveRefCntPtr< FileSystem > ExternalFS=getRealFileSystem())
 Gets a FileSystem for a virtual file system described in YAML format. More...
 
void collectVFSFromYAML (std::unique_ptr< llvm::MemoryBuffer > Buffer, llvm::SourceMgr::DiagHandlerTy DiagHandler, StringRef YAMLFilePath, SmallVectorImpl< YAMLVFSEntry > &CollectedEntries, void *DiagContext=nullptr, IntrusiveRefCntPtr< FileSystem > ExternalFS=getRealFileSystem())
 Collect all pairs of <virtual path, real path> entries from the YAMLFilePath. More...
 
static sys::fs::UniqueID getUniqueID (hash_code Hash)
 
static sys::fs::UniqueID getFileID (sys::fs::UniqueID Parent, llvm::StringRef Name, llvm::StringRef Contents)
 
static sys::fs::UniqueID getDirectoryID (sys::fs::UniqueID Parent, llvm::StringRef Name)
 
static ErrorOr< const detail::InMemoryNode * > lookupInMemoryNode (const InMemoryFileSystem &FS, detail::InMemoryDirectory *Dir, const Twine &P)
 

Function Documentation

◆ collectVFSFromYAML()

void llvm::vfs::collectVFSFromYAML ( std::unique_ptr< llvm::MemoryBuffer Buffer,
llvm::SourceMgr::DiagHandlerTy  DiagHandler,
StringRef  YAMLFilePath,
SmallVectorImpl< YAMLVFSEntry > &  CollectedEntries,
void *  DiagContext = nullptr,
IntrusiveRefCntPtr< FileSystem ExternalFS = getRealFileSystem() 
)

Collect all pairs of <virtual path, real path> entries from the YAMLFilePath.

This is used by the module dependency collector to forward the entries into the reproducer output VFS YAML file.

◆ createPhysicalFileSystem()

std::unique_ptr< FileSystem > llvm::vfs::createPhysicalFileSystem ( )

Create an vfs::FileSystem for the 'real' file system, as seen by the operating system.

It has its own working directory, independent of (but initially equal to) that of the process.

Definition at line 352 of file VirtualFileSystem.cpp.

◆ getDirectoryID()

static sys::fs::UniqueID llvm::vfs::getDirectoryID ( sys::fs::UniqueID  Parent,
llvm::StringRef  Name 
)
static

◆ getFileID()

static sys::fs::UniqueID llvm::vfs::getFileID ( sys::fs::UniqueID  Parent,
llvm::StringRef  Name,
llvm::StringRef  Contents 
)
static

◆ getNextVirtualUniqueID()

UniqueID llvm::vfs::getNextVirtualUniqueID ( )

Get a globally unique ID for a virtual file or directory.

Definition at line 2168 of file VirtualFileSystem.cpp.

References llvm::max().

Referenced by llvm::vfs::RedirectingFileSystemParser::lookupOrCreateEntry().

◆ getRealFileSystem()

IntrusiveRefCntPtr< FileSystem > llvm::vfs::getRealFileSystem ( )

Gets an vfs::FileSystem for the 'real' file system, as seen by the operating system.

The working directory is linked to the process's working directory. (This is usually thread-hostile).

Definition at line 347 of file VirtualFileSystem.cpp.

References llvm::X86AS::FS.

Referenced by llvm::FileCollectorBase::addDirectory(), llvm::cl::ExpandResponseFiles(), and llvm::ModuleSanitizerCoveragePass::ModuleSanitizerCoveragePass().

◆ getUniqueID()

static sys::fs::UniqueID llvm::vfs::getUniqueID ( hash_code  Hash)
static

Definition at line 708 of file VirtualFileSystem.cpp.

References llvm::max().

Referenced by getDirectoryID(), and getFileID().

◆ getVFSFromYAML()

std::unique_ptr<FileSystem> llvm::vfs::getVFSFromYAML ( std::unique_ptr< llvm::MemoryBuffer Buffer,
llvm::SourceMgr::DiagHandlerTy  DiagHandler,
StringRef  YAMLFilePath,
void *  DiagContext = nullptr,
IntrusiveRefCntPtr< FileSystem ExternalFS = getRealFileSystem() 
)

Gets a FileSystem for a virtual file system described in YAML format.

◆ lookupInMemoryNode()

static ErrorOr<const detail::InMemoryNode *> llvm::vfs::lookupInMemoryNode ( const InMemoryFileSystem FS,
detail::InMemoryDirectory Dir,
const Twine P 
)
static