diff options
Diffstat (limited to 'Build/source/utils/asymptote/common.h')
-rw-r--r-- | Build/source/utils/asymptote/common.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/common.h b/Build/source/utils/asymptote/common.h new file mode 100644 index 00000000000..80dfef8ac31 --- /dev/null +++ b/Build/source/utils/asymptote/common.h @@ -0,0 +1,100 @@ +/**** + * common.h + * + * Definitions common to all files. + *****/ + +#ifndef COMMON_H +#define COMMON_H + +#undef NDEBUG + +#include <iostream> +#include <climits> + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#if !defined(FOR_SHARED) && \ + ((defined(HAVE_LIBGL) && defined(HAVE_LIBGLUT) && defined(HAVE_LIBGLM)) || \ + defined(HAVE_LIBOSMESA)) +#define HAVE_GL +#endif + +#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT) +#define HAVE_READLINE +#endif + +#ifdef HAVE_PTHREAD +#include <pthread.h> +#endif + +#include "memory.h" + +#if defined(HAVE_LONG_LONG) && defined(LLONG_MAX) && defined(LLONG_MIN) +#define Int_MAX2 LLONG_MAX +#define Int_MIN LLONG_MIN +typedef long long Int; +typedef unsigned long long unsignedInt; +#else +#undef HAVE_LONG_LONG +#ifdef HAVE_LONG +#define Int_MAX2 LONG_MAX +#define Int_MIN LONG_MIN +typedef long Int; +typedef unsigned long unsignedInt; +#else +#define Int_MAX2 INT_MAX +#define Int_MIN INT_MIN +typedef int Int; +typedef unsigned int unsignedInt; +#endif +#endif + +#ifndef COMPACT +#if Int_MAX2 >= 0x7fffffffffffffffLL +#define COMPACT 1 +#else +#define COMPACT 0 +#endif +#endif + +#if COMPACT +// Reserve highest two values for DefaultValue and Undefined states. +#define Int_MAX (Int_MAX2-2) +#define int_MAX (LONG_MAX-2) +#else +#define Int_MAX Int_MAX2 +#define int_MAX LONG_MAX +#endif + +#define int_MIN LONG_MIN + +#ifndef RANDOM_MAX +#define RANDOM_MAX 0x7FFFFFFF +#endif + +using std::cout; +using std::cin; +using std::cerr; +using std::endl; +using std::istream; +using std::ostream; + +using mem::string; +using mem::stringstream; +using mem::istringstream; +using mem::ostringstream; +using mem::stringbuf; + +static const struct ws_t {} ws={}; + +// Portable way of skipping whitespace +inline std::istream &operator >> (std::istream & s, const ws_t &ws) { + if(!s.eof()) + s >> std::ws; + return s; +} + +#endif |