Vuo  2.3.2
VuoFileUtilities.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #pragma clang diagnostic push
13 #pragma clang diagnostic ignored "-Wunreachable-code"
14 #include "miniz.h"
15 #pragma clang diagnostic pop
16 
17 #import <string>
18 #import <set>
19 using namespace std;
20 
21 #include "VuoHeap.h"
22 
27 {
28 public:
32  class Archive
33  {
34  public:
35  mz_zip_archive *zipArchive;
37  string path;
38  Archive(string path);
39  ~Archive(void);
40  };
41 
45  class File
46  {
47  private:
48  string filePath;
49  string dirPath;
50  Archive *archive;
51  int fileDescriptor;
52 
53  friend class VuoFileUtilities;
54 
55  public:
56  File();
57  File(string dirPath, string filePath);
58  File(Archive *archive, string filePath);
59  ~File(void);
60 
61  File fileWithDifferentExtension(string extension);
62 
63  bool isInArchive(void);
64  string getArchivePath(void);
65  string getRelativePath(void);
66  string path();
67  string dir();
68  string basename();
69  string extension();
70 
71  bool exists();
72  char * getContentsAsRawData(size_t &numBytes);
73  string getContentsAsString(void);
74 
75  bool lockForReading(bool nonBlocking=false) VuoWarnUnusedResult;
76  bool lockForWriting(bool nonBlocking=false) VuoWarnUnusedResult;
77  void unlock(void);
78  };
79 
80  static void splitPath(string path, string &dir, string &file, string &extension);
81  static void canonicalizePath(string &path);
82  static bool arePathsEqual(string path1, string path2);
83  static string getAbsolutePath(const string &path);
84  static string makeTmpFile(string file, string extension, string directory="");
85  static string makeTmpDir(string prefix);
86  static string makeTmpDirOnSameVolumeAsPath(string path);
87  static string getTmpDir(void);
88  static void makeDir(string path);
89  static string getVuoFrameworkPath(void);
90  static string getVuoRunnerFrameworkPath(void);
91  static string getCompositionLocalModulesPath(const string &compositionPath);
92  static string getUserModulesPath(void);
93  static string getSystemModulesPath(void);
94  static string getCachePath(void);
95  static bool isInstalledAsModule(const string &path);
96  static void preserveOriginalFileName(string &fileContents, string originalFileName);
97  static size_t getFirstInsertionIndex(string s);
98  static string readStdinToString(void);
99  static string readFileToString(string path);
100  static void writeRawDataToFile(const char *data, size_t numBytes, string file);
101  static void writeStringToFile(string s, string file);
102  static void writeStringToFileSafely(string s, string path);
103  static bool fileExists(string path);
104  static bool dirExists(string path);
105  static bool isSymlink(string path);
106  static bool fileIsReadable(string path);
107  static bool fileContainsReadableData(string path);
108  static void createFile(string path);
109  static void deleteFile(string path);
110  static void deleteDir(string path);
111  static void moveFile(string fromPath, string toPath);
112  static void moveFileToTrash(string filePath);
113  static void copyFile(string fromPath, string toPath, bool preserveMetadata = false);
114  static void copyDirectory(string fromPath, string toPath);
115  static string calculateFileSHA256(const string &path);
116  static unsigned long getFileLastModifiedInSeconds(string path);
117  static unsigned long getSecondsSinceFileLastAccessed(string path);
118  static set<File *> findAllFilesInDirectory(string dirPath, set<string> archiveExtensions = set<string>(), bool shouldSearchRecursively = false);
119  static set<File *> findFilesInDirectory(string dirPath, set<string> extensions, set<string> archiveExtensions = set<string>());
120  static set<File *> findAllFilesInArchive(string archivePath);
121  static set<File *> findFilesInArchive(string archivePath, string dirPath, set<string> extensions);
122  static string getArchiveFileContentsAsString(string archivePath, string filePath);
123  static size_t getAvailableSpaceOnVolumeContainingPath(string path);
124 
125  static void focusProcess(pid_t pid, bool force=false);
126  static void executeProcess(vector<string> processAndArgs, vector<string> environment = {});
127 
128  static bool isCompositionExtension(string extension);
129  static set<string> getCSourceExtensions(void);
130  static bool isCSourceExtension(string extension);
131  static bool isIsfSourceExtension(string extension);
132 
133  static string buildModuleCacheDescription(const string &moduleCachePath, bool generated);
134  static string buildModuleCacheIndexPath(const string &moduleCachePath, bool builtIn, bool generated);
135  static string buildModuleCacheDylibPath(const string &moduleCachePath, bool builtIn, bool generated);
136  static string findLatestRevisionOfModuleCacheDylib(const string &moduleCachePath, bool builtIn, bool generated, unsigned long &lastModified);
137  static void deleteOtherRevisionsOfModuleCacheDylib(const string &dylibPath);
138  static bool areDifferentRevisionsOfSameModuleCacheDylib(const string &dylibPath1, const string &dylibPath2);
139 };