-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathFEEditorVirtualFileSystem.h
More file actions
93 lines (76 loc) · 2.87 KB
/
FEEditorVirtualFileSystem.h
File metadata and controls
93 lines (76 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#pragma once
#include "../FEngine.h"
using namespace FocalEngine;
class FEVFSDirectory;
struct FEVFSFile
{
FEVFSFile();
FEVFSFile(FEObject* Data, FEVFSDirectory* InDirectory);
FEVFSDirectory* InDirectory;
FEObject* Data;
bool bReadOnly = false;
bool IsReadOnly();
void SetReadOnly(bool NewValue);
};
class FEVirtualFileSystem;
class FEVFSDirectory : public FEObject
{
friend FEVirtualFileSystem;
FEVFSDirectory();
~FEVFSDirectory();
FEVFSDirectory* Parent;
std::vector<FEVFSDirectory*> SubDirectories;
std::vector<FEVFSFile> Files;
bool AddFile(FEObject* File);
bool DeleteFile(const FEObject* File);
bool HasFile(const FEObject* File);
bool AddSubDirectory(std::string Name, std::string ForceObjectID = "");
bool HasSubDirectory(std::string SubDirectory);
FEVFSDirectory* GetSubDirectory(std::string SubDirectory);
void Clear();
bool bReadOnly = false;
bool IsReadOnly();
void SetReadOnly(bool NewValue);
};
class FEVirtualFileSystem
{
public:
SINGLETON_PUBLIC_PART(FEVirtualFileSystem)
bool IsPathCorrect(std::string Path);
bool CreateFile(FEObject* Data, std::string Path);
bool MoveFile(FEObject* Data, std::string OldPath, std::string NewPath);
bool DeleteFile(const FEObject* Data, std::string Path);
void SetFileReadOnly(bool NewValue, const FEObject* Data, std::string Path);
std::string LocateFile(FEObject* File);
void LocateAndDeleteFile(FEObject* File);
bool DoesFileExist(FEObject* Data, std::string Path);
bool DoesFileExistAnywhere(FEObject* Data);
bool CreateDirectory(std::string Name, std::string Path);
std::string CreateDirectory(std::string Path);
bool RenameDirectory(std::string NewName, std::string Path);
bool MoveDirectory(std::string DirectoryPath, std::string NewPath);
bool DeleteEmptyDirectory(std::string Path);
int SubDirectoriesCount(std::string Path);
std::vector<FEObject*> GetDirectoryContent(std::string Path);
std::string GetDirectoryParent(std::string Path);
void SetDirectoryReadOnly(bool NewValue, std::string Path);
void Clear();
bool AcceptableName(std::string Name);
std::string GetCurrentPath();
bool SetCurrentPath(std::string Path);
void SaveState(std::string FileName);
void LoadState(std::string FileName);
bool IsReadOnly(const FEObject* Data, std::string Path);
private:
SINGLETON_PRIVATE_PART(FEVirtualFileSystem)
FEVFSDirectory* Root;
FEVFSDirectory* PathToDirectory(std::string Path);
std::string DirectoryToPath(FEVFSDirectory* Directory);
void DeleteDirectory(FEVFSDirectory* Directory);
std::string CurrentPath = "/";
std::string LocateFileRecursive(FEVFSDirectory* Directory, FEObject* File);
void SaveStateRecursive(Json::Value* LocalRoot, FEVFSDirectory* Directory);
void LoadStateRecursive(Json::Value* LocalRoot, FEVFSDirectory* Parent, FEVFSDirectory* Directory, std::string ForceObjectID);
};
#define VIRTUAL_FILE_SYSTEM_VERSION 0.01f
#define VIRTUAL_FILE_SYSTEM FEVirtualFileSystem::GetInstance()