]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/filefn.h
Trying to make wxString readable again
[wxWidgets.git] / interface / filefn.h
index 9e239fefdc92da6912cc53e465aebbe83b3d2705..152319c98d98f5b990e43dc07d27e36d6604c368 100644 (file)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        filefn.h
-// Purpose:     documentation for wxPathList class
+// Purpose:     interface of wxPathList and file functions
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
 // Licence:     wxWindows license
     @wxheader{filefn.h}
 
     The path list is a convenient way of storing a number of directories, and
-    when presented with a filename without a directory, searching for an existing
-    file
-    in those directories.
+    when presented with a filename without a directory, searching for an
+    existing file in those directories.
 
-    Be sure to look also at wxStandardPaths if you only
-    want to search files in some standard paths.
+    Be sure to look also at wxStandardPaths if you only want to search files in
+    some standard paths.
 
     @library{wxbase}
     @category{file}
 
-    @seealso
-    wxArrayString, wxStandardPaths, wxFileName
+    @see wxArrayString, wxStandardPaths, wxFileName
 */
 class wxPathList : public wxArrayString
 {
 public:
-    //@{
+    wxPathList();
+
     /**
         Constructs the object calling the Add() function.
     */
-    wxPathList();
     wxPathList(const wxArrayString& arr);
-    //@}
 
-    //@{
     /**
-        The first form adds the given directory to the path list, if the path is not
-        already in the list.
+        Adds the given directory to the path list, if the @a path is not already in the list.
         If the path cannot be normalized for some reason, it returns @false.
-        The second form just calls the first form on all elements of the given array.
-        The @a path is always considered a directory but no existence checks will be
-        done on it
-        (because if it doesn't exist, it could be created later and thus result a valid
-        path when
-        FindValidPath() is called).
-        @b Note: if the given path is relative, it won't be made absolute before adding
-        it
-        (this is why FindValidPath() may return relative paths).
+
+        The @a path is always considered to be a directory but no existence checks will be
+        done on it (because if it doesn't exist, it could be created later and thus result a
+        valid path when FindValidPath() is called).
+
+        @note if the given path is relative, it won't be made absolute before adding it
+              (this is why FindValidPath() may return relative paths).
     */
     bool Add(const wxString& path);
+
+    /**
+        Adds all elements of the given array as paths.
+    */
     void Add(const wxArrayString& arr);
-    //@}
 
     /**
         Finds the value of the given environment variable, and adds all paths
-        to the path list. Useful for finding files in the @c PATH variable, for
-        example.
+        to the path list.
+
+        Useful for finding files in the @c PATH variable, for example.
     */
     void AddEnvList(const wxString& env_variable);
 
     /**
-        Given a full filename (with path), calls Add() with the path
-        of the file.
+        Given a full filename (with path), calls Add() with the path of the file.
     */
     bool EnsureFileAccessible(const wxString& filename);
 
     /**
-        Like FindValidPath() but this function always
-        returns an absolute path (eventually prepending the current working directory
-        to the value returned wxPathList::FindValidPath) or an
-        empty string.
+        Like FindValidPath() but this function always returns an absolute path
+        (eventually prepending the current working directory to the value returned
+        wxPathList::FindValidPath()) or an empty string.
     */
-    wxString FindAbsoluteValidPath(const wxString& file);
+    wxString FindAbsoluteValidPath(const wxString& file) const;
 
     /**
         Searches the given file in all paths stored in this class.
+
         The first path which concatenated to the given string points to an existing
-        file (see @ref wxFile::exists wxFileExists) is returned.
-        If the file wasn't found in any of the stored paths, an empty string is
-        returned.
+        file (see wxFileExists()) is returned.
+
+        If the file wasn't found in any of the stored paths, an empty string is returned.
+
         The given string must be a file name, eventually with a path prefix (if the path
         prefix is absolute, only its name will be searched); i.e. it must not end with
-        a directory separator (see wxFileName::GetPathSeparator)
-        otherwise an assertion will fail.
+        a directory separator (see wxFileName::GetPathSeparator) otherwise an assertion
+        will fail.
+
         The returned path may be relative to the current working directory.
+
         Note in fact that wxPathList can be used to store both relative and absolute
-        paths so that
-        if you Added() relative paths, then the current working directory
-        (see wxGetCwd and wxSetWorkingDirectory)
-        may affect the value returned by this function!
+        paths so that if you added relative paths, then the current working directory
+        (see wxGetCwd() and wxSetWorkingDirectory()) may affect the value returned
+        by this function!
     */
-    wxString FindValidPath(const wxString& file);
+    wxString FindValidPath(const wxString& file) const;
 };
 
 
+
 // ============================================================================
 // Global functions/macros
 // ============================================================================
 
+/** @ingroup group_funcmacro_file */
+//@{
+
+/**
+    Under Unix this macro changes the current process umask to the given value,
+    unless it is equal to -1 in which case nothing is done, and restores it to
+    the original value on scope exit. It works by declaring a variable which
+    sets umask to @a mask in its constructor and restores it in its destructor.
+    Under other platforms this macro expands to nothing.
+
+    @header{wx/filefn.h}
+*/
+#define wxCHANGE_UMASK(int mask)
+
 /**
     This function returns the total number of bytes and number of free bytes on
-    the disk containing the directory @a path (it should exist). Both
-    @a total and @a free parameters may be @NULL if the corresponding
-    information is not needed.
+    the disk containing the directory @a path (it should exist). Both @a total
+    and @a free parameters may be @NULL if the corresponding information is not
+    needed.
+
+    @since 2.3.2
+
+    @note The generic Unix implementation depends on the system having the
+          @c statfs() or @c statvfs() function.
+
+    @returns @true on success, @false if an error occurred (for example, the
+             directory doesn’t exist).
+
+    @header{wx/filefn.h}
 */
 bool wxGetDiskSpace(const wxString& path,
                     wxLongLong total = NULL,
                     wxLongLong free = NULL);
 
 /**
-    Returns the Windows directory under Windows; on other platforms returns the
+    Returns the Windows directory under Windows; other platforms return an
     empty string.
+
+    @header{wx/filefn.h}
 */
 wxString wxGetOSDirectory();
 
 /**
-    Parses the @e wildCard, returning the number of filters.
-    Returns 0 if none or if there's a problem.
-    The arrays will contain an equal number of items found before the error.
-    On platforms where native dialogs handle only one filter per entry,
-    entries in arrays are automatically adjusted.
-    @a wildCard is in the form:
+    Parses the @a wildCard, returning the number of filters. Returns 0 if none
+    or if there's a problem.
+
+    The arrays will contain an equal number of items found before the error. On
+    platforms where native dialogs handle only one filter per entry, entries in
+    arrays are automatically adjusted. @a wildCard is in the form:
 
     @code
     "All files (*)|*|Image Files (*.jpeg *.png)|*.jpg;*.png"
     @endcode
+
+    @header{wx/filefn.h}
 */
 int wxParseCommonDialogsFilter(const wxString& wildCard,
                                wxArrayString& descriptions,
                                wxArrayString& filters);
 
 /**
-    This function is deprecated, use wxFileName instead.
-    Converts a Unix to a DOS filename by replacing forward
-    slashes with backslashes.
+    Converts a DOS to a Unix filename by replacing backslashes with forward
+    slashes.
+
+    @header{wx/filefn.h}
+*/
+void wxDos2UnixFilename(wxChar* s);
+
+/**
+    @warning This function is deprecated, use wxFileName instead.
+
+    Converts a Unix to a DOS filename by replacing forward slashes with
+    backslashes.
+
+    @header{wx/filefn.h}
 */
 void wxUnix2DosFilename(wxChar* s);
 
 /**
     Returns @true if @a dirname exists and is a directory.
+
+    @header{wx/filefn.h}
 */
 bool wxDirExists(const wxString& dirname);
 
 /**
-    @b NB: This function is obsolete, please use
-    wxFileName::SplitPath instead.
+    @warning This function is obsolete, please use wxFileName::SplitPath()
+             instead.
+
     This function splits a full file name into components: the path (including
-    possible disk/drive
-    specification under Windows), the base name and the extension. Any of the
-    output parameters
-    (@e path, @a name or @e ext) may be @NULL if you are not interested in the value
-    of
-    a particular component.
+    possible disk/drive specification under Windows), the base name, and the
+    extension. Any of the output parameters (@a path, @a name or @a ext) may be
+    @NULL if you are not interested in the value of a particular component.
+
     wxSplitPath() will correctly handle filenames with both DOS and Unix path
-    separators under
-    Windows, however it will not consider backslashes as path separators under Unix
-    (where backslash
-    is a valid character in a filename).
+    separators under Windows, however it will not consider backslashes as path
+    separators under Unix (where backslash is a valid character in a filename).
+
     On entry, @a fullname should be non-@NULL (it may be empty though).
-    On return, @a path contains the file path (without the trailing separator), @e
-    name
-    contains the file name and @a ext contains the file extension without leading
-    dot. All
-    three of them may be empty if the corresponding component is. The old contents
-    of the
-    strings pointed to by these parameters will be overwritten in any case (if the
-    pointers
-    are not @NULL).
-*/
-void wxSplitPath(const wxString& fullname, wxString* path,
-                 wxString* name,
-                 wxString* ext);
 
-/**
-    Under Unix this macro changes the current process umask to the given value,
-    unless it is equal to -1 in which case nothing is done, and restores it to
-    the original value on scope exit. It works by declaring a variable which sets
-    umask to @a mask in its constructor and restores it in its destructor.
-    Under other platforms this macro expands to nothing.
+    On return, @a path contains the file path (without the trailing separator),
+    @a name contains the file name and @c ext contains the file extension
+    without leading dot. All three of them may be empty if the corresponding
+    component is. The old contents of the strings pointed to by these
+    parameters will be overwritten in any case (if the pointers are not @NULL).
+
+    @header{wx/filefn.h}
 */
-#define wxCHANGE_UMASK(int mask)     /* implementation is private */
+void wxSplitPath(const wxString& fullname,
+                  wxString* path,
+                  wxString* name,
+                  wxString* ext);
 
 /**
     Returns time of last modification of given file.
-    The function returns @c (time_t)-1 if an error occurred (e.g. file not
-    found).
-*/
-time_t wxFileModificationTime(const wxString& filename);
 
-//@{
-/**
-    @b NB: This function is obsolete, please use
-    wxFileName::SplitPath instead.
-    Returns the filename for a full path. The second form returns a pointer to
-    temporary storage that should not be deallocated.
+    The function returns <tt>(time_t)-1</tt> if an error occurred (e.g. file
+    not found).
+
+    @header{wx/filefn.h}
 */
-wxString wxFileNameFromPath(const wxString& path);
-char* wxFileNameFromPath(char* path);
-//@}
+time_t wxFileModificationTime(const wxString& filename);
 
 /**
     Renames @a file1 to @e file2, returning @true if successful.
+
     If @a overwrite parameter is @true (default), the destination file is
-    overwritten if it exists, but if @a overwrite is @false, the functions fails
-    in this case.
+    overwritten if it exists, but if @a overwrite is @false, the functions
+    fails in this case.
+
+    @header{wx/filefn.h}
 */
-bool wxRenameFile(const wxString& file1, const wxString& file2,
-                  bool overwrite = true);
+bool wxRenameFile(const wxString& file1,
+                   const wxString& file2,
+                   bool overwrite = true);
 
 /**
-    Copies @a file1 to @e file2, returning @true if successful. If
-    @a overwrite parameter is @true (default), the destination file is overwritten
-    if it exists, but if @a overwrite is @false, the functions fails in this
-    case.
+    Copies @a file1 to @e file2, returning @true if successful. If @a overwrite
+    parameter is @true (default), the destination file is overwritten if it
+    exists, but if @a overwrite is @false, the functions fails in this case.
+
     This function supports resources forks under Mac OS.
+
+    @header{wx/filefn.h}
 */
-bool wxCopyFile(const wxString& file1, const wxString& file2,
-                bool overwrite = true);
+bool wxCopyFile(const wxString& file1,
+                 const wxString& file2,
+                 bool overwrite = true);
 
 /**
     Returns @true if the file exists and is a plain file.
+
+    @header{wx/filefn.h}
 */
 bool wxFileExists(const wxString& filename);
 
 /**
-    Returns @true if the @a pattern matches the @e text; if @a dot_special is @true,
-    filenames beginning with a dot are not matched
-    with wildcard characters. See wxIsWild.
+    Returns @true if the @a pattern matches the @e text; if @a dot_special is
+    @true, filenames beginning with a dot are not matched with wildcard
+    characters.
+
+    @see wxIsWild()
+
+    @header{wx/filefn.h}
 */
-bool wxMatchWild(const wxString& pattern, const wxString& text,
-                 bool dot_special);
+bool wxMatchWild(const wxString& pattern,
+                  const wxString& text,
+                  bool dot_special);
 
 /**
-    @b NB: This function is deprecated: use wxGetCwd instead.
-    Copies the current working directory into the buffer if supplied, or
-    copies the working directory into new storage (which you must delete
-    yourself) if the buffer is @NULL.
+    @warning This function is deprecated, use wxGetCwd() instead.
+
+    Copies the current working directory into the buffer if supplied, or copies
+    the working directory into new storage (which you must delete yourself) if
+    the buffer is @NULL.
+
     @a sz is the size of the buffer if supplied.
+
+    @header{wx/filefn.h}
 */
 wxString wxGetWorkingDirectory(char* buf = NULL, int sz = 1000);
 
 /**
     Returns the directory part of the filename.
+
+    @header{wx/filefn.h}
 */
 wxString wxPathOnly(const wxString& path);
 
 /**
-    Returns @true if the pattern contains wildcards. See wxMatchWild.
+    Returns @true if the pattern contains wildcards.
+
+    @see wxMatchWild()
+
+    @header{wx/filefn.h}
 */
 bool wxIsWild(const wxString& pattern);
 
+/**
+    Returns @true if the argument is an absolute filename, i.e. with a slash
+    or drive name at the beginning.
+
+    @header{wx/filefn.h}
+*/
+bool wxIsAbsolutePath(const wxString& filename);
+
 /**
     Returns a string containing the current (or working) directory.
+
+    @header{wx/filefn.h}
 */
 wxString wxGetCwd();
 
 /**
-    Converts a DOS to a Unix filename by replacing backslashes with forward
-    slashes.
+    Sets the current working directory, returning @true if the operation
+    succeeded. Under MS Windows, the current drive is also changed if @a dir
+    contains a drive specification.
+
+    @header{wx/filefn.h}
 */
-void wxDos2UnixFilename(wxChar* s);
+bool wxSetWorkingDirectory(const wxString& dir);
 
 /**
-    Concatenates @a file1 and @a file2 to @e file3, returning
-    @true if successful.
+    Concatenates @a file1 and @a file2 to @e file3, returning @true if
+    successful.
+
+    @header{wx/filefn.h}
 */
-bool wxConcatFiles(const wxString& file1, const wxString& file2,
-                   const wxString& file3);
+bool wxConcatFiles(const wxString& file1,
+                    const wxString& file2,
+                    const wxString& file3);
 
 /**
     Removes @e file, returning @true if successful.
+
+    @header{wx/filefn.h}
 */
 bool wxRemoveFile(const wxString& file);
 
 /**
-    Sets the current working directory, returning @true if the operation succeeded.
-    Under MS Windows, the current drive is also changed if @a dir contains a drive
-    specification.
-*/
-bool wxSetWorkingDirectory(const wxString& dir);
+    Makes the directory @a dir, returning @true if successful.
 
-/**
-    Makes the directory @e dir, returning @true if successful.
     @a perm is the access mask for the directory for the systems on which it is
     supported (Unix) and doesn't have any effect on the other ones.
+
+    @header{wx/filefn.h}
 */
 bool wxMkdir(const wxString& dir, int perm = 0777);
 
 /**
-    Returns @true if the argument is an absolute filename, i.e. with a slash
-    or drive name at the beginning.
+    Removes the directory @a dir, returning @true if successful. Does not work
+    under VMS.
+
+    The @a flags parameter is reserved for future use.
+
+    @note There is also a wxRmDir() function which simply wraps the standard
+          POSIX @c rmdir() function and so return an integer error code instead
+          of a boolean value (but otherwise is currently identical to
+          wxRmdir()), don't confuse these two functions.
+
+    @header{wx/filefn.h}
 */
-bool wxIsAbsolutePath(const wxString& filename);
+bool wxRmdir(const wxString& dir, int flags = 0);
 
 /**
-    Returns the next file that matches the path passed to wxFindFirstFile.
-    See wxFindFirstFile for an example.
+    Returns the next file that matches the path passed to wxFindFirstFile().
+
+    See wxFindFirstFile() for an example.
+
+    @header{wx/filefn.h}
 */
 wxString wxFindNextFile();
 
 /**
-    This function does directory searching; returns the first file
-    that matches the path @e spec, or the empty string. Use wxFindNextFile to
-    get the next matching file. Neither will report the current directory "." or the
-    parent directory "..".
+    This function does directory searching; returns the first file that matches
+    the path @a spec, or the empty string. Use wxFindNextFile() to get the next
+    matching file. Neither will report the current directory "." or the parent
+    directory "..".
+
+    @warning As of 2.5.2, these functions are not thread-safe! (they use static
+             variables). You probably want to use wxDir::GetFirst() or
+             wxDirTraverser instead.
+
+    @a spec may contain wildcards.
+
+    @a flags may be wxDIR for restricting the query to directories, wxFILE for
+    files or zero for either.
+
+    For example:
+
+    @code
+    wxString f = wxFindFirstFile("/home/project/*.*");
+    while ( !f.empty() )
+    {
+        ...
+        f = wxFindNextFile();
+    }
+    @endcode
+
+    @header{wx/filefn.h}
 */
 wxString wxFindFirstFile(const wxString& spec, int flags = 0);
 
+/**
+    File kind enumerations returned from wxGetFileKind().
+
+    @header{wx/filefn.h}
+*/
+enum wxFileKind
+{
+    wxFILE_KIND_UNKNOWN,  ///< Unknown file kind, or unable to determine
+    wxFILE_KIND_DISK,     ///< A file supporting seeking to arbitrary offsets
+    wxFILE_KIND_TERMINAL, ///< A tty
+    wxFILE_KIND_PIPE      ///< A pipe
+};
+
+//@}
+
+/** @ingroup group_funcmacro_file */
 //@{
 /**
-    Returns the type of an open file. Possible return values are:
+    Returns the type of an open file. Possible return values are enumerations
+    of ::wxFileKind.
 
-    @code
-    enum wxFileKind
-    {
-      wxFILE_KIND_UNKNOWN,
-      wxFILE_KIND_DISK,     // a file supporting seeking to arbitrary offsets
-      wxFILE_KIND_TERMINAL, // a tty
-      wxFILE_KIND_PIPE      // a pipe
-    };
-    @endcode
+    @header{wx/filefn.h}
 */
 wxFileKind wxGetFileKind(int fd);
 wxFileKind wxGetFileKind(FILE* fp);
 //@}
 
+/** @ingroup group_funcmacro_file */
 //@{
 /**
-    @b NB: These functions are obsolete, please use
-    wxFileName::CreateTempFileName
-    instead.
+    @warning This function is obsolete, please use wxFileName::SplitPath()
+             instead.
+
+    Returns the filename for a full path. The second form returns a pointer to
+    temporary storage that should not be deallocated.
+
+    @header{wx/filefn.h}
 */
-char* wxGetTempFileName(const wxString& prefix, char* buf = NULL);
-bool wxGetTempFileName(const wxString& prefix, wxString& buf);
+wxString wxFileNameFromPath(const wxString& path);
+char* wxFileNameFromPath(char* path);
 //@}
 
+/** @ingroup group_funcmacro_file */
+//@{
 /**
-    Removes the directory @e dir, returning @true if successful. Does not work under
-    VMS.
-    The @a flags parameter is reserved for future use.
-    Please notice that there is also a wxRmDir() function which simply wraps the
-    standard POSIX rmdir() function and so return an integer error code instead of
-    a boolean value (but otherwise is currently identical to wxRmdir), don't
-    confuse these two functions.
+    @warning This function is obsolete, please use
+             wxFileName::CreateTempFileName() instead.
+
+    @header{wx/filefn.h}
 */
-bool wxRmdir(const wxString& dir, int flags = 0);
+char* wxGetTempFileName(const wxString& prefix, char* buf = NULL);
+bool wxGetTempFileName(const wxString& prefix, wxString& buf);
+//@}