]> git.lyx.org Git - lyx.git/blobdiff - src/support/lyxlib.h
Display error/warning dialogs if possible.
[lyx.git] / src / support / lyxlib.h
index befb7bd6f8e94150f9bda4aa2c384b3618a69122..aacb7a6342a24d8f5322deb3a268975caa3e9256 100644 (file)
@@ -1,65 +1,72 @@
 // -*- C++ -*-
-/* This file is part of
- * ====================================================== 
- * 
- *           LyX, The Document Processor
- *        
- *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
+/**
+ * \file lyxlib.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- * ====================================================== */
+ * A selection of useful system functions made
+ * handy for C++ usage.
+ *
+ * \author Lars Gullik Bjønnes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef LYX_LIB_H
 #define LYX_LIB_H
 
-#include "LString.h"
+#include "support/filename.h"
+
+#include <string>
 
-// Where can I put this?  I found the occurence of the same code
-// three/four times. Don't you think it better to use a macro definition
-// (an inlined member of some class)?
 
-// Use a namespace if we can, a struct otherwise
-#ifdef CXX_WORKING_NAMESPACES
-#define OPT_STATIC
 namespace lyx {
-#else
-#define OPT_STATIC static
-struct lyx {
-#endif 
-       ///
-       OPT_STATIC char * getcwd(char * buffer, size_t size);
-        ///
-        OPT_STATIC int chdir(string const & name);
-        /// Returns false if it fails
-        OPT_STATIC bool rename(string const & from, string const & to);
-       /// Returns false it it fails
-       OPT_STATIC bool copy(string const & from, string const & to);
-       /// generates a checksum
-       OPT_STATIC unsigned long sum(string const & file);
-       /// returns a date string (not used currently)
-       OPT_STATIC char * date(); 
-       /// returns the name of the user (not used currently)
-       OPT_STATIC string const getUserName();
-       ///
-       OPT_STATIC int kill(int pid, int sig);
-       ///
-       OPT_STATIC void abort();
-        ///
-        OPT_STATIC int mkdir(string const & pathname, unsigned long int mode);
-       ///
-       OPT_STATIC int putenv(char const * str);
-        ///
-        OPT_STATIC int unlink(string const & file);
-        ///
-        OPT_STATIC int rmdir(string const & file);
-        ///
-        OPT_STATIC int atoi(string const & nstr);
-#ifdef CXX_WORKING_NAMESPACES
+namespace support {
+
+/// get the current working directory
+FileName const getcwd();
+/// change to a directory, 0 is returned on success.
+int chdir(FileName const & name);
+/// Change file permissions
+bool chmod(FileName const & file, unsigned long int mode);
+/**
+ * rename a file, returns false if it fails.
+ * It can handle renames across partitions.
+ */
+bool rename(FileName const & from, FileName const & to);
+/// copy a file, returns false it it fails
+bool copy(FileName const & from, FileName const & to,
+          unsigned long int mode = (unsigned long int)-1);
+/// generates a checksum of a file
+unsigned long sum(FileName const & file);
+/// FIXME: some point to this hmm ?
+int kill(int pid, int sig);
+/// FIXME: same here
+void abort();
+/// create the given directory with the given mode
+int mkdir(FileName const & pathname, unsigned long int mode);
+/// unlink the given file
+int unlink(FileName const & file);
+/// (securely) create a temporary file in the given dir with the given mask
+/// \p mask must be in filesystem encoding
+FileName const tempName(FileName const & dir = FileName(),
+                     std::string const & mask = std::string());
+
+
+/**
+ * Returns true if var is approximately equal to number with allowed error
+ * of 'error'.
+ *
+ * Usage: if (float_equal(var, number, 0.0001)) { }
+ *
+ * This will check if 'var' is approx. equal to 'number' with error of 1/1000
+ */
+inline bool float_equal(double var, double number, double error)
+{
+       return (number - error <= var && var <= number + error);
 }
-#else
-};
-#endif
 
-#undef OPT_STATIC
-       
+} // namespace support
+} // namespace lyx
+
 #endif /* LYX_LIB_H */