// -*- 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"
+namespace lyx {
+namespace support {
-// 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)?
+/// FIXME: some point to this hmm ?
+int kill(int pid, int sig);
-// This should have been a namespace
-#ifdef CXX_WORKING_NAMESPACES
-///
-namespace lyx {
- ///
- char * getcwd(char * buffer, size_t size);
- ///
- int chdir(char const * name);
- ///
- int chdir(string const & name);
- /// Returns false it it fails
- bool rename(char const * from, char const * to);
- /// Returns false if it fails
- bool rename(string const & from, string const & to);
- /// Returns false it it fails
- bool copy(string const & from, string const & to);
- /// generates a checksum
- unsigned long sum(char const * file);
- /// generates a checksum
- unsigned long sum(string const & file);
- /// returns a date string (not used currently)
- char * date();
- /// returns the name of the user (not used currently)
- string const getUserName();
- ///
- int kill(long int pid, int sig);
- ///
- void abort();
- ///
- int mkdir(string const & pathname, unsigned long int mode);
- ///
- int putenv(char const * str);
- ///
- int unlink(string const & file);
- ///
- int rmdir(string const & file);
- ///
- int atoi(string const & nstr);
+/**
+ * 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
-///
-struct lyx {
- ///
- static char * getcwd(char * buffer, size_t size);
- ///
- static int chdir(char const * name);
- ///
- static int chdir(string const & name);
- /// Returns false it it fails
- static bool rename(char const * from, char const * to);
- /// Returns false if it fails
- static bool rename(string const & from, string const & to);
- /// Returns false it it fails
- static bool copy(string const & from, string const & to);
- /// generates a checksum
- static unsigned long sum(char const * file);
- /// generates a checksum
- static unsigned long sum(string const & file);
- /// returns a date string (not used currently)
- static char * date();
- /// returns the name of the user (not used currently)
- static string const getUserName();
- ///
- static int kill(long int pid, int sig);
- ///
- static void abort();
- ///
- static int mkdir(string const & pathname, unsigned long int mode);
- ///
- static int putenv(char const * str);
- ///
- int unlink(string const & file);
- ///
- int rmdir(string const & file);
- ///
- int atoi(string const & nstr);
-};
-#endif // CXX_WORKING_NAMESPACES
-#endif
+
+} // namespace support
+} // namespace lyx
+
+#endif /* LYX_LIB_H */