* The file is created in the constructor, and deleted in the destructor.
* You may do anything with the file (including deletion), but the instance
* of this class must stay alive as long as the file is needed.
+ * There is only one exception to this rule:
+ * If the file is supposed to be used by a different process then you need
+ * to be aware of OS specific file locking semantics: On windows, the file
+ * is opened with exclusive rights for the process which opened it. This
+ * is not the case on other OSes. Therefore, if the file is supposed to be
+ * used by a different process you need to sometheing similar to TempName
+ * in InsetExternal.cpp.
*/
class TempFile {
+ /// noncopyable
+ TempFile(TempFile const &);
+ /// nonassignable
+ TempFile & operator=(TempFile const &);
public:
/**
*Create a temporary file with the given mask.
- * \p mask must be in filesystem encoding, if it contains a
- * relative path, the template file will be created in the global
- * temporary directory as given by 'package().temp_dir()'.
+ * \p mask must be in filesystem encoding, the template file
+ * will be created in the global temporary directory as given
+ * by 'package().temp_dir()'.
* If the mask contains "XXXXXX" this portion will be replaced by
* a uniquely generated string. If it does not contain this portion,
* it will be automatically appended using a dot. Therefore, please
* This is empty if the file could not be created.
*/
FileName name() const;
+ /**
+ * Set whether the file should be automatically deleted in the
+ * destructor.
+ * Automatic deletion is the default, but it can be switched off if
+ * the file should be kept, because it should be renamed afterwards.
+ */
+ void setAutoRemove(bool autoremove);
private:
///
struct Private;