]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/filename.h
A better fix for wxHash{Map,Set} with g++ 4.7.
[wxWidgets.git] / include / wx / filename.h
index bdf955e0640f4508cac01bbf7f383b7c3d36d9b3..b351bf4d7e7028342cf44bb75b38fa054a3746d2 100644 (file)
@@ -40,7 +40,7 @@ class WXDLLIMPEXP_FWD_BASE wxFFile;
 
 // this symbol is defined for the platforms where file systems use volumes in
 // paths
-#if defined(__WXMSW__) || defined(__DOS__) || defined(__OS2__)
+#if defined(__WINDOWS__) || defined(__DOS__) || defined(__OS2__)
     #define wxHAS_FILESYSTEM_VOLUMES
 #endif
 
@@ -65,12 +65,20 @@ enum wxPathFormat
     wxPATH_MAX // Not a valid value for specifying path format
 };
 
+// different conventions that may be used with GetHumanReadableSize()
+enum wxSizeConvention
+{
+    wxSIZE_CONV_TRADITIONAL,  // 1024 bytes = 1 KB
+    wxSIZE_CONV_IEC,          // 1024 bytes = 1 KiB
+    wxSIZE_CONV_SI            // 1000 bytes = 1 KB
+};
+
 // the kind of normalization to do with the file name: these values can be
 // or'd together to perform several operations at once
 enum wxPathNormalize
 {
     wxPATH_NORM_ENV_VARS = 0x0001,  // replace env vars with their values
-    wxPATH_NORM_DOTS     = 0x0002,  // squeeze all .. and . and prepend cwd
+    wxPATH_NORM_DOTS     = 0x0002,  // squeeze all .. and .
     wxPATH_NORM_TILDE    = 0x0004,  // Unix only: replace ~ and ~user
     wxPATH_NORM_CASE     = 0x0008,  // if case insensitive => tolower
     wxPATH_NORM_ABSOLUTE = 0x0010,  // make the path absolute
@@ -206,14 +214,20 @@ public:
                 !m_ext.empty() || m_hasExt;
     }
 
-        // does the file with this name exists?
+        // does the file with this name exist?
     bool FileExists() const;
     static bool FileExists( const wxString &file );
 
-        // does the directory with this name exists?
+        // does the directory with this name exist?
     bool DirExists() const;
     static bool DirExists( const wxString &dir );
 
+        // does anything at all with this name (i.e. file, directory or some
+        // other file system object such as a device, socket, ...) exist?
+    bool Exists() const { return Exists(GetFullPath()); }
+    static bool Exists(const wxString& path);
+
+
         // checks on most common flags for files/directories;
         // more platform-specific features (like e.g. Unix permissions) are not
         // available in wxFileName
@@ -243,10 +257,10 @@ public:
         // (any of the pointers may be NULL)
     bool SetTimes(const wxDateTime *dtAccess,
                   const wxDateTime *dtMod,
-                  const wxDateTime *dtCreate);
+                  const wxDateTime *dtCreate) const;
 
         // set the access and modification times to the current moment
-    bool Touch();
+    bool Touch() const;
 
         // return the last access, last modification and create times
         // (any of the pointers may be NULL)
@@ -265,7 +279,7 @@ public:
 
 #if defined( __WXOSX_MAC__ ) && wxOSX_USE_CARBON
     bool MacSetTypeAndCreator( wxUint32 type , wxUint32 creator ) ;
-    bool MacGetTypeAndCreator( wxUint32 *type , wxUint32 *creator ) ;
+    bool MacGetTypeAndCreator( wxUint32 *type , wxUint32 *creator ) const;
     // gets the 'common' type and creator for a certain extension
     static bool MacFindDefaultTypeAndCreator( const wxString& ext , wxUint32 *type , wxUint32 *creator ) ;
     // registers application defined extensions and their default type and creator
@@ -281,7 +295,7 @@ public:
     static wxString GetCwd(const wxString& volume = wxEmptyString);
 
         // change the current working directory
-    bool SetCwd();
+    bool SetCwd() const;
     static bool SetCwd( const wxString &cwd );
 
         // get the value of user home (Unix only mainly)
@@ -316,11 +330,11 @@ public:
 #endif // wxUSE_FFILE
 
     // directory creation and removal.
-    bool Mkdir(int perm = wxS_DIR_DEFAULT, int flags = 0);
+    bool Mkdir(int perm = wxS_DIR_DEFAULT, int flags = 0) const;
     static bool Mkdir(const wxString &dir, int perm = wxS_DIR_DEFAULT,
                       int flags = 0);
 
-    bool Rmdir(int flags = 0);
+    bool Rmdir(int flags = 0) const;
     static bool Rmdir(const wxString &dir, int flags = 0);
 
     // operations on the path
@@ -358,7 +372,7 @@ public:
         // the arguments
     bool GetShortcutTarget(const wxString& shortcutPath,
                            wxString& targetFilename,
-                           wxString* arguments = NULL);
+                           wxString* arguments = NULL) const;
 #endif
 
 #ifndef __WXWINCE__
@@ -433,6 +447,11 @@ public:
     // is the char a path separator for this format?
     static bool IsPathSeparator(wxChar ch, wxPathFormat format = wxPATH_NATIVE);
 
+    // is this is a DOS path which beings with a windows unique volume name
+    // ('\\?\Volume{guid}\')?
+    static bool IsMSWUniqueVolumeNamePath(const wxString& path,
+                                          wxPathFormat format = wxPATH_NATIVE);
+
     // Dir accessors
     size_t GetDirCount() const { return m_dirs.size(); }
     void AppendDir(const wxString& dir);
@@ -535,11 +554,15 @@ public:
     static wxULongLong GetSize(const wxString &file);
 
         // returns the size in a human readable form
-    wxString GetHumanReadableSize(const wxString &nullsize = wxGetTranslation(_T("Not available")),
-                                  int precision = 1) const;
-    static wxString GetHumanReadableSize(const wxULongLong &sz,
-                                         const wxString &nullsize = wxGetTranslation(_T("Not available")),
-                                         int precision = 1);
+    wxString
+    GetHumanReadableSize(const wxString& nullsize = _("Not available"),
+                         int precision = 1,
+                         wxSizeConvention conv = wxSIZE_CONV_TRADITIONAL) const;
+    static wxString
+    GetHumanReadableSize(const wxULongLong& sz,
+                         const wxString& nullsize = _("Not available"),
+                         int precision = 1,
+                         wxSizeConvention conv = wxSIZE_CONV_TRADITIONAL);
 #endif // wxUSE_LONGLONG