]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/filename.h
compilation fix for cygwin
[wxWidgets.git] / include / wx / filename.h
index d565187e62f335416f455299fa91ccdab0fe3371..491e7deecc842cae10fe5f9a8f27967730258d5b 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef   _WX_FILENAME_H_
 #define   _WX_FILENAME_H_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "filename.h"
 #endif
 
@@ -73,6 +73,19 @@ enum wxPathNormalize
     wxPATH_NORM_ALL      = 0x003f
 };
 
+// what exactly should GetPath() return?
+enum
+{
+    wxPATH_GET_VOLUME    = 0x0001,  // include the volume if applicable
+    wxPATH_GET_SEPARATOR = 0x0002   // terminate the path with the separator
+};
+
+// MkDir flags
+enum
+{
+    wxPATH_MKDIR_FULL    = 0x0001   // create directories recursively
+};
+
 // ----------------------------------------------------------------------------
 // wxFileName: encapsulates a file path
 // ----------------------------------------------------------------------------
@@ -83,7 +96,7 @@ public:
     // constructors and assignment
 
         // the usual stuff
-    wxFileName() { }
+    wxFileName() { Clear(); }
     wxFileName( const wxFileName &filepath ) { Assign(filepath); }
 
         // from a full filename: if it terminates with a '/', a directory path
@@ -206,6 +219,7 @@ public:
     // looks up the appropriate type and creator from the registration and then sets
     bool MacSetDefaultTypeAndCreator() ;
 #endif
+
     // various file/dir operations
 
         // retrieve the value of the current working directory
@@ -229,8 +243,8 @@ public:
 
     // directory creation and removal.
     // if full is TRUE, will try to make each directory in the path.
-    bool Mkdir( int perm = 0777, bool full = FALSE);
-    static bool Mkdir( const wxString &dir, int perm = 0777, bool full = FALSE );
+    bool Mkdir( int perm = 0777, int flags = 0);
+    static bool Mkdir( const wxString &dir, int perm = 0777, int flags = 0 );
 
     bool Rmdir();
     static bool Rmdir( const wxString &dir );
@@ -273,32 +287,29 @@ public:
     static bool IsCaseSensitive( wxPathFormat format = wxPATH_NATIVE );
 
         // is this filename absolute?
-    bool IsAbsolute( wxPathFormat format = wxPATH_NATIVE ) const;
+    bool IsAbsolute(wxPathFormat format = wxPATH_NATIVE) const;
 
         // is this filename relative?
-    bool IsRelative() const
-        { return m_relative; }
-        
-        // forcibly set the flag
-    void SetAbsolute()
-        { m_relative = FALSE; }
-    void SetRelative()
-        { m_relative = TRUE; }
+    bool IsRelative(wxPathFormat format = wxPATH_NATIVE) const
+        { return !IsAbsolute(format); }
 
     // Information about path format
 
-    // get the string separating the volume from the path for this format
+    // get the string separating the volume from the path for this format,
+    // return an empty string if this format doesn't support the notion of
+    // volumes at all
     static wxString GetVolumeSeparator(wxPathFormat format = wxPATH_NATIVE);
 
     // get the string of path separators for this format
     static wxString GetPathSeparators(wxPathFormat format = wxPATH_NATIVE);
 
+    // get the canonical path separator for this format
+    static wxChar GetPathSeparator(wxPathFormat format = wxPATH_NATIVE)
+        { return GetPathSeparators(format)[0u]; }
+
     // is the char a path separator for this format?
     static bool IsPathSeparator(wxChar ch, wxPathFormat format = wxPATH_NATIVE);
 
-    // FIXME: what exactly does this do?
-    bool IsWild( wxPathFormat format = wxPATH_NATIVE );
-
     // Dir accessors
     void AppendDir( const wxString &dir );
     void PrependDir( const wxString &dir );
@@ -325,16 +336,12 @@ public:
 
     const wxArrayString& GetDirs() const        { return m_dirs; }
 
-    // Construct path only - possibly with the trailing separator
-    wxString GetPath( bool add_separator = FALSE,
-                      wxPathFormat format = wxPATH_NATIVE ) const;
+    // flags are combination of wxPATH_GET_XXX flags
+    wxString GetPath(int flags = 0, wxPathFormat format = wxPATH_NATIVE) const;
+
     // Replace current path with this one
     void SetPath( const wxString &path, wxPathFormat format = wxPATH_NATIVE );
 
-    // more readable synonym
-    wxString GetPathWithSep(wxPathFormat format = wxPATH_NATIVE ) const
-        { return GetPath(TRUE /* add separator */, format); }
-
     // Construct full path with name and ext
     wxString GetFullPath( wxPathFormat format = wxPATH_NATIVE ) const;
 
@@ -344,6 +351,9 @@ public:
     // Return the long form of the path (returns identity on non-Windows platforms)
     wxString GetLongPath() const;
 
+    // Is this a file or directory (not necessarily an existing one)
+    bool IsDir() const { return m_name.empty() && m_ext.empty(); }
+
     // various helpers
 
         // get the canonical path format for this platform
@@ -365,6 +375,16 @@ public:
                           wxString *ext,
                           wxPathFormat format = wxPATH_NATIVE);
 
+
+    // deprecated methods, don't use any more
+    // --------------------------------------
+
+    wxString GetPath( bool withSep, wxPathFormat format = wxPATH_NATIVE ) const
+        { return GetPath(withSep ? wxPATH_GET_SEPARATOR : 0, format); }
+
+    wxString GetPathWithSep(wxPathFormat format = wxPATH_NATIVE ) const
+        { return GetPath(wxPATH_GET_SEPARATOR, format); }
+
 private:
     // the drive/volume/device specification (always empty for Unix)
     wxString        m_volume;
@@ -375,8 +395,15 @@ private:
     // the file name and extension (empty for directories)
     wxString        m_name,
                     m_ext;
-                    
-    // is the path relative
+
+    // when m_dirs is empty it may mean either that we have no path at all or
+    // that our path is '/', i.e. the root directory
+    //
+    // we use m_relative to distinguish between these two cases, it will be
+    // TRUE in the former and FALSE in the latter
+    //
+    // NB: the path is not absolute just because m_relative is FALSE, it still
+    //     needs the drive (i.e. volume) in some formats (Windows)
     bool            m_relative;
 };