]> git.lyx.org Git - lyx.git/blobdiff - src/support/filename.h
chmod fixes for msvc
[lyx.git] / src / support / filename.h
index 4085c51fef0341705a1dbf82ba407a15ab136799..285f86efca2064984d0a1131ceaa170feb19000d 100644 (file)
@@ -22,7 +22,7 @@ namespace support {
 class FileName {
 public:
        FileName();
-       /** \param filename the file in question. Must have an absolute path.
+       /** \param abs_filename the file in question. Must have an absolute path.
         *  \param save_abs_path how is the file to be output to file?
         */
        FileName(std::string const & abs_filename, bool save_abs_path = true);
@@ -43,11 +43,29 @@ public:
        std::string const relFilename(std::string const & buffer_path = std::string()) const;
        /// \param buf_path if empty, uses `pwd`
        std::string const outputFilename(std::string const & buf_path = std::string()) const;
-       /** \return a mangled version of the absolute file name,
+
+       /** @returns a mangled representation of the absolute file name
         *  suitable for use in the temp dir when, for example, converting
         *  an image file to another format.
+        *
+        *  @param dir the directory that will contain this file with
+        *  its mangled name. This information is used by the mangling
+        *  algorithm when determining the maximum allowable length of
+        *  the mangled name.
+        *
+        *  An example of a mangled name:
+        *  C:/foo bar/baz.eps -> 0C__foo_bar_baz.eps
+        *
+        *  It is guaranteed that
+        *  - two different filenames have different mangled names
+        *  - two FileName instances with the same filename have identical
+        *    mangled names.
+        *
+        *  Only the mangled file name is returned. It is not prepended
+        *  with @c dir.
         */
-       std::string const mangledFilename() const;
+       std::string const
+       mangledFilename(std::string const & dir = std::string()) const;
 
        /// \return true if the file is compressed.
        bool isZipped() const;
@@ -57,6 +75,10 @@ public:
 private:
        std::string name_;
        bool save_abs_path_;
+       /// Cache for isZipped() because zippedFile() is expensive
+       mutable bool zipped_;
+       /// Is zipped_ valid?
+       mutable bool zipped_valid_;
 };