// -*- C++ -*-
-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright (C) 1995 Matthias Ettrich
- * Copyright (C) 1995-1999 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 <ctime>
-#include <unistd.h>
+#include "support/FileName.h"
-#include "LString.h"
-#include "gettext.h"
-#include "support/filetools.h"
+#include <string>
-/// generates an checksum
-unsigned long lyxsum(char const * file);
-/// returns a date string
-inline char * date()
-{
- time_t tid;
- if ((tid=time(0)) == (time_t)-1)
- return (char*)0;
- else
- return (ctime(&tid));
-}
+namespace lyx {
+namespace support {
+
+/// get the current working directory
+FileName const getcwd();
+/// FIXME: some point to this hmm ?
+int kill(int pid, int sig);
+/// FIXME: same here
+void abort();
-// 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)?
-///
-inline string getUserName()
+
+/**
+ * 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)
{
- string userName(GetEnv("LOGNAME"));
- if (userName.empty())
- userName = GetEnv("USER");
- if (userName.empty())
- userName = _("unknown");
- return userName;
+ return (number - error <= var && var <= number + error);
}
-// This should have been a namespace
-struct lyx {
- static char * getcwd(char * buffer, size_t size) {
-#ifndef __EMX__
- return ::getcwd(buffer, size);
-#else
- return ::_getcwd2(buffer, size);
-#endif
- };
- static chdir(const char * name) {
-#ifndef __EMX__
- return ::chdir(name);
-#else
- return ::_chdir2(name);
-#endif
- };
-};
-#endif
+} // namespace support
+} // namespace lyx
+
+#endif /* LYX_LIB_H */