modules/fxpackager/src/main/native/library/common/FilePath.h

Print this page

        

@@ -35,10 +35,80 @@
 #define FILEPATH_H
 
 #include "Platform.h"
 #include "PlatformString.h"
 
+#include <vector>
+
+enum FileAttribute {
+#ifdef WINDOWS
+    faArchive = FILE_ATTRIBUTE_ARCHIVE,
+    faCompressed = FILE_ATTRIBUTE_COMPRESSED,
+    faDevice = FILE_ATTRIBUTE_DEVICE,
+    faDirectory = FILE_ATTRIBUTE_DIRECTORY,
+    faEncrypted = FILE_ATTRIBUTE_ENCRYPTED,
+    faHidden = FILE_ATTRIBUTE_HIDDEN,
+    //faIntegrityStream = FILE_ATTRIBUTE_INTEGRITY_STREAM,
+    faNormal = FILE_ATTRIBUTE_NORMAL,
+    faNotContentIndexed = FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,
+    //faNoScrubData = FILE_ATTRIBUTE_NO_SCRUB_DATA,
+    faOffline = FILE_ATTRIBUTE_OFFLINE,
+    faSystem = FILE_ATTRIBUTE_SYSTEM,
+    faSymbolicLink = FILE_ATTRIBUTE_REPARSE_POINT,
+    faSparceFile = FILE_ATTRIBUTE_SPARSE_FILE,
+    faReadOnly = FILE_ATTRIBUTE_READONLY,
+    faTemporary = FILE_ATTRIBUTE_TEMPORARY,
+    faVirtual = FILE_ATTRIBUTE_VIRTUAL
+#endif //WINDOWS
+#ifdef POSIX
+    faBlockSpecial,
+    faCharacterSpecial,
+    faFIFOSpecial,
+    faNormal,
+    faDirectory,
+    faSymbolicLink,
+    faSocket,
+
+    // Owner
+    faReadOnly,
+    faWriteOnly,
+    faReadWrite,
+    faExecute,
+
+    // Group
+    faGroupReadOnly,
+    faGroupWriteOnly,
+    faGroupReadWrite,
+    faGroupExecute,
+
+    // Others
+    faOthersReadOnly,
+    faOthersWriteOnly,
+    faOthersReadWrite,
+    faOthersExecute,
+
+    faHidden
+#endif //POSIX
+};
+
+class FileAttributes {
+private:
+    TString FFileName;
+    bool FFollowLink;
+    std::vector<FileAttribute> FAttributes;
+
+    bool WriteAttributes();
+    bool ReadAttributes();
+    bool Valid(const FileAttribute Value);
+
+public:
+    FileAttributes(const TString FileName, bool FollowLink = true);
+
+    void Append(const FileAttribute Value);
+    bool Contains(const FileAttribute Value);
+    void Remove(const FileAttribute Value);
+};
 
 class FilePath {
 private:
     FilePath(void) {}
     ~FilePath(void) {}

@@ -46,19 +116,21 @@
 public:
     static bool FileExists(const TString FileName);
     static bool DirectoryExists(const TString DirectoryName);
 
     static bool DeleteFile(const TString FileName);
+    static bool DeleteDirectory(const TString DirectoryName);
 
     static TString ExtractFilePath(TString Path);
     static TString ExtractFileExt(TString Path);
     static TString ExtractFileName(TString Path);
     static TString ChangeFileExt(TString Path, TString Extension);
 
-    static TString IncludeTrailingSlash(const TString value);
-    static TString IncludeTrailingSlash(const char* value);
-    static TString IncludeTrailingSlash(const wchar_t* value);
+    static TString IncludeTrailingSeparater(const TString value);
+    static TString IncludeTrailingSeparater(const char* value);
+    static TString IncludeTrailingSeparater(const wchar_t* value);
+    static TString FixPathForPlatform(TString Path);
     static TString FixPathSeparatorForPlatform(TString Path);
     static TString PathSeparator();
 
     static bool CreateDirectory(TString Path, bool ownerOnly);
     static void ChangePermissions(TString FileName, bool ownerOnly);