]> git.lyx.org Git - lyx.git/blobdiff - src/support/FileName.h
cosmetics
[lyx.git] / src / support / FileName.h
index b7583a390c5c5cb3b514dc5c846959298e817b07..c293f66021fada455cd4ad35df7cabf2aba3d827 100644 (file)
 #ifndef FILENAME_H
 #define FILENAME_H
 
-#include "strfwd.h"
+#include "support/strfwd.h"
 
 #include <ctime>
-#include <string>
-#include <vector>
 
 
 namespace lyx {
 namespace support {
 
+/// Defined in "FileNameList.h".
+class FileNameList;
 
 /**
  * Class for storing file names.
@@ -46,7 +46,7 @@ public:
        ///
        FileName & operator=(FileName const &);
 
-       virtual ~FileName() {}
+       virtual ~FileName();
        /** Set a new filename.
         * \param filename the file in question. Must have an absolute path.
         * Encoding is always UTF-8.
@@ -71,6 +71,8 @@ public:
        bool isFileEmpty() const;
        /// returns time of last write access
        std::time_t lastModified() const;
+       /// generates a checksum of a file
+       unsigned long checksum() const;
        /// return true when file is readable but not writabel
        bool isReadOnly() const;
        /// return true when it names a directory
@@ -83,6 +85,8 @@ public:
        bool isWritable() const;
        /// return true when file/directory is writable (write test file)
        bool isDirWritable() const;
+       /// \return list other files in the directory having optional extension 'ext'.
+       FileNameList dirList(std::string const & ext) const;
        
        /// copy a file
        /// \return true when file/directory is writable (write test file)
@@ -99,25 +103,19 @@ public:
        /// Creates directory. Returns true on success
        bool createDirectory(int permissions) const;
 
-       /// \return list files in a directory having optional extension ext..
-       std::vector<FileName> dirList(
-               std::string const & ext = std::string());
-
-       /// Get the contents of a file as a huge std::string
-       std::string fileContents() const;
-       /**
-        * Get a FileName from \p name in the encoding used by the file system.
-        * Only use this for filenames you got directly from the file system,
-        * e.g. from reading a directory.
-        * \p name must have an absolute path.
-        */
+       /// Get the contents of a file as a huge docstring.
+       /// \param encoding defines the encoding of the file contents.
+       /// Only four encodings are supported:
+       /// "UTF-8", "ascii", "latin1" and "local8bit" which uses the
+       /// current system locale.
+       docstring fileContents(std::string const & encoding) const;
 
        /// Change extension.
        /**
        * If oldname does not have an extension, it is appended.
        * If the extension is empty, any extension is removed from the name.
        */
-        void changeExtension(std::string const & extension);
+       void changeExtension(std::string const & extension);
 
        /** Guess the file format name (as in Format::name()) from contents.
         Normally you don't want to use this directly, but rather
@@ -132,7 +130,7 @@ public:
        /// (securely) create a temporary file in the given dir with the given mask
        /// \p mask must be in filesystem encoding
        static FileName tempName(FileName const & dir = FileName(),
-                                               std::string const & mask = std::string());
+                                               std::string const & mask = empty_string());
 
        /// filename without path
        std::string onlyFileName() const;
@@ -141,8 +139,15 @@ public:
        /// used for display in the Gui
        docstring displayName(int threshold = 1000) const;
 
+       /// change to a directory, return success
+       bool chdir() const;
+       
+       /// \param buffer_path if empty, uses `pwd`
+       docstring const relPath(std::string const & path) const;
+       
+       docstring const absoluteFilePath() const;
+
 private:
-       friend class DocFileName;
        ///
        struct Private;
        Private * const d;
@@ -182,9 +187,9 @@ public:
 
        bool saveAbsPath() const { return save_abs_path_; }
        /// \param buffer_path if empty, uses `pwd`
-       std::string const relFilename(std::string const & buffer_path = std::string()) const;
+       std::string relFilename(std::string const & buffer_path = empty_string()) const;
        /// \param buf_path if empty, uses `pwd`
-       std::string const outputFilename(std::string const & buf_path = std::string()) const;
+       std::string outputFilename(std::string const & buf_path = empty_string()) const;
        
        /** @returns a mangled representation of the absolute file name
         *  suitable for use in the temp dir when, for example, converting
@@ -206,13 +211,13 @@ public:
         *  Only the mangled file name is returned. It is not prepended
         *  with @c dir.
         */
-       std::string const
-       mangledFilename(std::string const & dir = std::string()) const;
+       std::string
+       mangledFilename(std::string const & dir = empty_string()) const;
 
        /// \return true if the file is compressed.
        bool isZipped() const;
        /// \return the absolute file name without its .gz, .z, .Z extension
-       std::string const unzippedFilename() const;
+       std::string unzippedFilename() const;
 
 private:
        bool save_abs_path_;
@@ -226,7 +231,6 @@ private:
 bool operator==(DocFileName const &, DocFileName const &);
 bool operator!=(DocFileName const &, DocFileName const &);
 
-
 } // namespace support
 } // namespace lyx