Atlas-Launcher/external/rvfs/include/RestrictedVirtualFileSystem.hpp

62 lines
No EOL
1.9 KiB
C++

#pragma once
#include <QDir>
#include <QMap>
namespace rvfs {
/**
* Represent a virtual restricted file system.
* Real directory can be mounted to safely interact with the real file system.
*/
class RestrictedVirtualFileSystem {
public:
explicit RestrictedVirtualFileSystem();
/**
* Get all the mounted directories with their path in the virtual file system and in the real file system
* @return all the mounted directories with their path in the virtual file system and in the real file system
*/
QMap<QString, QString> getMountedDirectories();
/**
* Mount a real directory into the virtual file system
* @param destination the path to the directory in the virtual file system
* @param source the path to the directory in the real file system
*/
void mountDirectory(const QDir& destination, const QDir& source);
/**
* Unmount a directory from the virtual file system
* @param destination the path to the directory in the virtual file system
*/
void unmountDirectory(const QDir& destination);
/**
* Get the current working directory in the virtual file system
* @return the current working directory in the virtual file system
*/
QDir getWorkingDirectory();
/**
* Change the current working directory in the virtual file system
* @param path path to the new virtual working directory
*/
void setWorkingDirectory(const QDir& path);
/**
* Resolve a path inside the virtual file system into a path in the real file system
* @param path the path in the virtual file system
* @return the matching path in the real file system
*/
QString resolvePath(QString path);
private:
/// the current working directory
QDir workingDirectory;
/// store the path in the virtual file system of a directory in the real file system
QMap<QString, QString> mounts;
};
}