lyx_mirror/src/support/lyxlib.h

76 lines
2.0 KiB
C
Raw Normal View History

// -*- C++ -*-
/* This file is part of
* ======================================================
*
* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
* Copyright 1995-2001 The LyX Team.
*
* ====================================================== */
#ifndef LYX_LIB_H
#define LYX_LIB_H
#include "LString.h"
// 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
namespace lyx {
///
string const getcwd();
///
int chdir(string const & name);
/// 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(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(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);
///
string const tempName(string const & dir = string(),
string const & mask = string());
/** Returns true if var is approximately equal to number with allowed error
* of 'error'.
*
* Reason: A float can be very close to the number, yet still need not be
* exactly equal, you can have exp(-10) which is very close to zero but not
* zero. If you only need an approximate equality (you usually do), use this
* template.
*
* 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(float var, float number, float error)
{
return (number - error <= var && var <= number + error);
}
} // namespace lyx
#endif /* LYX_LIB_H */