You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

348 lines
7.9 KiB
C++

/// \defgroup rbd_common RBD common library
///@{
/// \file include.h
/// Set options and and details of include files.
#ifndef INCLUDE_LIB
#define INCLUDE_LIB
#define use_namespace // define name spaces
//#define SETUP_C_SUBSCRIPTS // allow element access via A[i][j]
//#define OPT_COMPATIBLE // for use with opt++
// Activate just one of the following 3 statements
//#define SimulateExceptions // use simulated exceptions
#define UseExceptions // use C++ exceptions
//#define DisableExceptions // do not use exceptions
//#define TEMPS_DESTROYED_QUICKLY // for compilers that delete
// temporaries too quickly
//#define TEMPS_DESTROYED_QUICKLY_R // the same thing but applied
// to return from functions only
//#define DO_FREE_CHECK // check news and deletes balance
#define USING_DOUBLE // elements of type double
//#define USING_FLOAT // elements of type float
#define bool_LIB 0 // for compatibility with my older libraries
//#define ios_format_flags ios::fmtflags // for Gnu 3 and Intel for Linux
//#define _STANDARD_ // using standard library
//#define use_float_h // use float.h for precision data
//#define HAS_INT64 // if unsigned _int64 is recognised
// used by newran03
// comment out next line if Exception causes a problem
#define TypeDefException
//*********************** end of options set by user ********************
// for Gnu C++ version 3
#if defined __GNUG__ && __GNUG__ >= 3
#define _STANDARD_ // use standard library
#define ios_format_flags ios::fmtflags
#endif
// for Intel C++ for Linux
#if defined __ICC
#define _STANDARD_ // use standard library
#define ios_format_flags ios::fmtflags
#endif
// for Microsoft Visual C++ 7 and above (and Intel simulating these)
#if defined _MSC_VER && _MSC_VER >= 1300
#define _STANDARD_ // use standard library
#endif
#ifdef _STANDARD_ // using standard library
#include <cstdlib>
#if defined _MSC_VER && _MSC_VER == 1200
#include <limits> // for VC++6
#endif
#ifdef WANT_STREAM
#include <iostream>
#include <iomanip>
#endif
#ifdef WANT_MATH
#include <cmath>
#endif
#ifdef WANT_STRING
#include <cstring>
#endif
#ifdef WANT_TIME
#include <ctime>
#endif
#ifdef WANT_FSTREAM
#include <fstream>
#endif
using namespace std;
#else
#define DEFAULT_HEADER // use AT&T style header
// if no other compiler is recognised
#ifdef _MSC_VER // Microsoft
#include <stdlib.h>
// reactivate these statements to run under MSC version 7.0
// typedef int jmp_buf[9];
// extern "C"
// {
// int __cdecl setjmp(jmp_buf);
// void __cdecl longjmp(jmp_buf, int);
// }
#ifdef WANT_STREAM
#include <iostream.h>
#include <iomanip.h>
#endif
#ifdef WANT_MATH
#include <math.h>
#include <float.h>
#endif
#ifdef WANT_STRING
#include <string.h>
#endif
#ifdef WANT_TIME
#include <time.h>
#endif
#ifdef WANT_FSTREAM
#include <fstream.h>
#endif
#undef DEFAULT_HEADER
#endif
#ifdef __ZTC__ // Zortech
#include <stdlib.h>
#ifdef WANT_STREAM
#include <iostream.hpp>
#include <iomanip.hpp>
#define flush "" // not defined in iomanip?
#endif
#ifdef WANT_MATH
#include <math.h>
#include <float.h>
#endif
#ifdef WANT_STRING
#include <string.h>
#endif
#ifdef WANT_TIME
#include <time.h>
#endif
#ifdef WANT_FSTREAM
#include <fstream.h>
#endif
#undef DEFAULT_HEADER
#endif
#if defined __BCPLUSPLUS__ || defined __TURBOC__ // Borland or Turbo
#include <stdlib.h>
#ifdef WANT_STREAM
#include <iostream.h>
#include <iomanip.h>
#endif
#ifdef WANT_MATH
#include <math.h>
#include <float.h> // Borland has both float and values
// but values.h returns +INF for
// MAXDOUBLE in BC5
#endif
#ifdef WANT_STRING
#include <string.h>
#endif
#ifdef WANT_TIME
#include <time.h>
#endif
#ifdef WANT_FSTREAM
#include <fstream.h>
#endif
#undef DEFAULT_HEADER
#endif
#ifdef __GNUG__ // Gnu C++
#include <stdlib.h>
#ifdef WANT_STREAM
#include <iostream.h>
#include <iomanip.h>
#endif
#ifdef WANT_MATH
#include <math.h>
#include <float.h>
#endif
#ifdef WANT_STRING
#include <string.h>
#endif
#ifdef WANT_TIME
#include <time.h>
#endif
#ifdef WANT_FSTREAM
#include <fstream.h>
#endif
#undef DEFAULT_HEADER
#endif
#ifdef __WATCOMC__ // Watcom C/C++
#include <stdlib.h>
#ifdef WANT_STREAM
#include <iostream.h>
#include <iomanip.h>
#endif
#ifdef WANT_MATH
#include <math.h>
#include <float.h>
#endif
#ifdef WANT_STRING
#include <string.h>
#endif
#ifdef WANT_TIME
#include <time.h>
#endif
#ifdef WANT_FSTREAM
#include <fstream.h>
#endif
#undef DEFAULT_HEADER
#endif
#ifdef macintosh // MPW C++ on the Mac
#include <stdlib.h>
#ifdef WANT_STREAM
#include <iostream.h>
#include <iomanip.h>
#endif
#ifdef WANT_MATH
#include <float.h>
#include <math.h>
#endif
#ifdef WANT_STRING
#include <string.h>
#endif
#ifdef WANT_TIME
#include <time.h>
#endif
#ifdef WANT_FSTREAM
#include <fstream.h>
#endif
#undef DEFAULT_HEADER
#endif
#ifdef use_float_h // use float.h for precision values
#include <stdlib.h>
#ifdef WANT_STREAM
#include <iostream.h>
#include <iomanip.h>
#endif
#ifdef WANT_MATH
#include <float.h>
#include <math.h>
#endif
#ifdef WANT_STRING
#include <string.h>
#endif
#ifdef WANT_TIME
#include <time.h>
#endif
#ifdef WANT_FSTREAM
#include <fstream.h>
#endif
#undef DEFAULT_HEADER
#endif
#ifdef DEFAULT_HEADER // for example AT&T
#define ATandT
#include <stdlib.h>
#ifdef WANT_STREAM
#include <iostream.h>
#include <iomanip.h>
#endif
#ifdef WANT_MATH
#include <math.h>
#define SystemV // use System V
#include <values.h>
#endif
#ifdef WANT_STRING
#include <string.h>
#endif
#ifdef WANT_TIME
#include <time.h>
#endif
#ifdef WANT_FSTREAM
#include <fstream.h>
#endif
#endif // DEFAULT_HEADER
#endif // _STANDARD_
#ifdef use_namespace
namespace RBD_COMMON {
#endif
#ifdef USING_FLOAT // set precision type to float
typedef float Real;
typedef double long_Real;
#endif
#ifdef USING_DOUBLE // set precision type to double
typedef double Real;
typedef long double long_Real;
#endif
// This is for (very old) compilers that do not have bool automatically defined
#ifndef bool_LIB
#define bool_LIB 0
class bool
{
int value;
public:
bool(const int b) { value = b ? 1 : 0; }
bool(const void* b) { value = b ? 1 : 0; }
bool() {}
operator int() const { return value; }
int operator!() const { return !value; }
};
const bool true = 1;
const bool false = 0;
#endif
#ifdef use_namespace
}
#endif
#ifdef use_namespace
namespace RBD_COMMON {}
namespace RBD_LIBRARIES // access all my libraries
{
using namespace RBD_COMMON;
}
#endif
#endif
///@}