#define CE_FLAGS_OPERATORS(Enum)
Defines global operators for a Flags<Enum, Storage> implementation.
Definition Flags.hpp:216
#define CE_EXPLICIT(EXPR)
Definition Macros.hpp:413
A context for function object execution.
Definition ExecutionContext.hpp:90
Handle for a file or directory.
Definition FileHandle.hpp:46
bool operator==(const FileHandle &other) const noexcept
bool isDirectory() const
Checks if item is a directory.
bool rename(StringView filename) const
Renames a file or directory.
Vector< String > listFiles() const
List files in directory.
bool genericMove(const FileHandle &dest) const
Moves a file by stream copy and delete.
FileIterator begin() const
Gets an iterator that points to the first directory entry.
bool operator!=(const FileHandle &other) const noexcept
Optional< String > readFile() const
Reads the file contents to a string.
bool remove() const
Removes a file.
void copyDirectory(const FileHandle &dstDir) const
Copies a directory recursively.
IFileSystem * getFileSystem() const
Gets the backing IFileSystem for the handle.
bool createDirectory() const
Creates a new directory.
StringView getPath() const
bool isFile() const
Checks if item is a file.
void updateFileInfo() const
Update file information.
FileIterator end() const
Gets an iterator that points after the last directory entry.
Int64 getModificationTime() const
Gets time of last modification.
std::function< bool(const FileHandle &)> VisitFunc
Definition FileHandle.hpp:49
OutputStream createOutputStream(std::ios_base::openmode mode=std::ios_base::out) const
Creates an output stream to write to the file.
bool move(const FileHandle &dest) const
Moves a file.
bool isSymbolicLink() const
Checks if item is a symbolic link.
bool removeDirectory(const RemoveDirectoryFlags &flags=RemoveDirectoryFlag::Default) const
Removes a directory.
StringView getFileName() const
bool createSymbolicLink(const FileHandle &dest) const
Creates a symbolic link.
InputStream createInputStream(std::ios_base::openmode mode=std::ios_base::in) const
Creates an input stream to read from the file.
bool copy(const FileHandle &dest) const
Copies a file.
ImplementationType mImplementation
The file handle implementation.
Definition FileHandle.hpp:53
bool writeFile(StringView content) const
Write the contents of a string to the file.
bool genericCopy(const FileHandle &dest) const
Copies the file by stream copy.
FileHandle open(StringView path) const
Opens a new file handle using a relative path from the current file/directory.
bool exists() const
Checks if the file exists on the file system.
void traverse(VisitFunc funcFileEntry) const
Traverse directory tree with callback functions.
FileHandle() noexcept
Constructs a new empty FileHandle.
Int64 getAccessTime() const
Gets the time of last access.
UInt64 getSize() const
Gets the file size.
FileHandle getParentDirectory() const
Gets a FileHandle to the parent directory.
FileWatcher watch(ExecutionContext &executionContext, const FileEvents &events=FileEvent::Default, bool recursive=true) const
Creates new file system watcher for this file handle.
bool createLink(const FileHandle &dest) const
Creates a hard link.
RemoveDirectoryFlag
A set of flags that customize removeDirectory() behavior.
Definition FileHandle.hpp:175
@ FollowSymlinks
To enter/follow symlink directories or not.
@ Recursive
Whether the file removal should be recursive or not.
An iterator that allows traversing over a file's children.
Definition FileHandle.hpp:432
FileIterator(FileIterator &&other) noexcept
FileIterator & operator=(const FileIterator &other)=delete
FileIterator(ImplementationType &&backend)
Creates a new FileIterator from a concrete iterator implementation.
FileIterator()
Creates a new empty FileIterator.
FileIterator & operator=(FileIterator &&other) noexcept
~FileIterator() noexcept
Destroys the FileIterator instance.
FileIterator(const FileIterator &other)=delete
Path to file or directory.
Definition FilePath.hpp:37
The file file visitor interface.
Definition FileHandle.hpp:363
virtual bool onFileEntry(const FileHandle &handle)
Called for each file entry visited (files and directories).
virtual bool onDirectory(const FileHandle &handle)
Called for each visited directory.
virtual void onFile(const FileHandle &handle)
Called for on each file visited.
Watcher that reports on changes of files or directories.
Definition FileWatcher.hpp:41
File visitor that calls a function or lambda.
Definition FileHandle.hpp:393
std::function< bool(const FileHandle &)> FileVistFunc
Definition FileHandle.hpp:396
std::function< bool(const FileHandle &)> DirectoryVisitFunc
Definition FileHandle.hpp:397
bool onDirectory(const FileHandle &handle) final
Called for each visited directory.
void onFile(const FileHandle &handle) final
Called for on each file visited.
FileVistFunc mFileFunc
Definition FileHandle.hpp:401
bool onFileEntry(const FileHandle &handle) final
Called for each file entry visited (files and directories).
std::function< bool(const FileHandle &)> VisitFunc
Definition FileHandle.hpp:395
DirectoryVisitFunc mDirectoryFunc
Definition FileHandle.hpp:402
VisitFunc mFileEntryFunc
Definition FileHandle.hpp:400
Base interface for file handles implementation.
Definition FileHandle.hpp:292
virtual bool removeDirectory()=0
Removes a directory.
virtual bool createLink(IFileHandle &dest)=0
Creates a hard link.
virtual bool createDirectory()=0
Creates a new directory.
virtual bool createSymbolicLink(IFileHandle &dest)=0
Creates a symbolic link.
virtual FileIterator begin() const =0
Gets an iterator that points to the first directory entry.
virtual bool copy(IFileHandle &dest)=0
Copies a file.
virtual bool isSymbolicLink() const =0
Checks if item is a symbolic link.
virtual bool isFile() const =0
Checks if item is a file.
virtual bool exists() const =0
Checks if the file exists on the file system.
virtual OutputStream createOutputStream(std::ios_base::openmode mode)=0
Creates an output stream to write to the file.
virtual bool rename(StringView filename)=0
Renames a file or directory.
virtual ~IFileHandle()=default
virtual Int64 getModificationTime() const =0
Gets time of last modification.
virtual InputStream createInputStream(std::ios_base::openmode mode) const =0
Creates an input stream to read from the file.
virtual void updateFileInfo()=0
Update file information.
virtual UInt64 getSize() const =0
Gets the file size.
virtual StringView getPath() const =0
virtual Int64 getAccessTime() const =0
Gets the time of last access.
virtual bool move(IFileHandle &dest)=0
Moves a file.
virtual IFileSystem * getFileSystem() const =0
Gets the backing IFileSystem for the handle.
virtual bool remove()=0
Removes a file.
virtual bool isDirectory() const =0
Checks if item is a directory.
Interface for iterating on directories.
Definition FileHandle.hpp:477
virtual bool isValid() const =0
Checks if iterator points to a valid item.
virtual ~IFileIterator()=default
virtual void next()=0
Advances to the next item.
virtual IFileSystem * getFileSystem() const =0
virtual const FileHandle & getParent() const =0
Gets the parent FileHandle this iterator iterates over.
virtual FileHandle getFileHandle() const =0
Gets the current entry file handle.
virtual Int32 getIndex() const =0
Gets the current index of iterator in the directory.
Interface for accessing file systems.
Definition FileSystem.hpp:28
Definition Optional.hpp:17
A stream that provides write-only stream functionality.
Definition Stream.hpp:307
Definition Application.hpp:19
std::uint64_t UInt64
Definition DataTypes.hpp:26
std::vector< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > Vector
Vector is a sequence container that encapsulates dynamic size arrays.
Definition Vector.hpp:17
std::int32_t Int32
Definition DataTypes.hpp:21
std::int64_t Int64
Definition DataTypes.hpp:24
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Wrapper around an enum that allows simple use of bitwise logic operations.
Definition Flags.hpp:19