1 |
|
2 |
/******************************************************* |
3 |
* |
4 |
* Copyright (c) 2003-2009 by University of Queensland |
5 |
* Earth Systems Science Computational Center (ESSCC) |
6 |
* http://www.uq.edu.au/esscc |
7 |
* |
8 |
* Primary Business: Queensland, Australia |
9 |
* Licensed under the Open Software License version 3.0 |
10 |
* http://www.opensource.org/licenses/osl-3.0.php |
11 |
* |
12 |
*******************************************************/ |
13 |
|
14 |
|
15 |
/** |
16 |
\file esysUtils/src/system_dep.h |
17 |
\ingroup Other |
18 |
*/ |
19 |
/* |
20 |
* @(#) system_dep.h |
21 |
*/ |
22 |
|
23 |
#ifndef esysutils_system_dep_h |
24 |
#define esysutils_system_dep_h |
25 |
|
26 |
#if defined(_WIN32) && defined(__INTEL_COMPILER) |
27 |
/* The Intel compiler on windows has an "improved" math library compared to the usual Visual C++ one |
28 |
* In particular it has a acosh and other similar functions which aren't implemented in Visual C++ math.h |
29 |
* Note you will get a compile time error if any other header (including system ones) include math.h before mathimf.h |
30 |
* has been included. As a result system_dep.h must be included FIRST at all times (this prevents math.h from being included). |
31 |
*/ |
32 |
#include <mathimf.h> |
33 |
#else |
34 |
#include <math.h> |
35 |
#endif |
36 |
|
37 |
#define ESYSUTILS_DLL_API |
38 |
|
39 |
#ifdef _WIN32 |
40 |
# ifndef ESYSUTILS_STATIC_LIB |
41 |
# undef ESYSUTILS_DLL_API |
42 |
# ifdef ESYSUTILS_EXPORTS |
43 |
# define ESYSUTILS_DLL_API __declspec(dllexport) |
44 |
# else |
45 |
# define ESYSUTILS_DLL_API __declspec(dllimport) |
46 |
# endif |
47 |
# endif |
48 |
|
49 |
/* This is because of the different declarations of std::exception mentods |
50 |
* on windows. |
51 |
* Also, putting a "throw" in any declaration on windows causes a warning!!!!!! |
52 |
* If you wish to generate a throw() on other systems, please use |
53 |
* THROW(NO_ARG). This is because windows generates warnings if you say |
54 |
* THROW(), so the NO_ARG trick must be used to avoid the mass of warnings. |
55 |
*/ |
56 |
|
57 |
# define THROW(ARG) |
58 |
#else |
59 |
# define THROW(ARG) throw(ARG) |
60 |
#endif |
61 |
|
62 |
#define NO_ARG |
63 |
|
64 |
/* you'll need this one day. */ |
65 |
#ifndef __const |
66 |
# if (defined __STDC__ && __STDC__) || defined __cplusplus |
67 |
# define __const const |
68 |
# else |
69 |
# define __const |
70 |
# endif |
71 |
#endif |
72 |
|
73 |
#endif |