29 #define STRINGIFY(PARAM) STRINGIFY_INTERNAL(PARAM)
30 #define STRINGIFY_INTERNAL(PARAM) #PARAM
33 #if !defined(_MSC_VER)
34 # if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L
35 # define TYPEOF decltype
37 # define TYPEOF typeof
43 #pragma warning(disable: 4251) //member is not dllexport
44 #pragma warning(disable: 4267) //conversion from 'size_t' to 'type', possible loss of data
45 #pragma warning(disable: 4275) //base class is not dllexport
46 #pragma warning(disable: 4244) //conversion to (or from) smaller integer type
47 #pragma warning(disable: 4355) //'this' pointer used in initializer list
48 #pragma warning(disable: 4800) //non-bool value coerced into bool (e.g. bool a = 5;)
49 #pragma warning(disable: 4503) //decorated name too long, truncated
50 #pragma warning(disable: 4344) //template specialisation results in different function being called (getProperty<>)
54 #if defined(DLL_TULIP) || defined(DLL_TULIP_GL) || defined(DLL_TULIP_QT) || defined(DLL_TULIP_QT2)
55 #pragma warning(disable: 4996) //deprecated functions
59 # define _DEPRECATED __declspec(deprecated)
60 # define _DEPRECATED_TYPEDEF(type, deprecated_type) typedef _DEPRECATED type deprecated_type
61 # define TYPEOF decltype
64 # include "boost/typeof/typeof.hpp"
65 # define TYPEOF BOOST_TYPEOF
71 static double sqrt(
int i) {
72 return sqrt((
double)i);
74 static double sqrt(
unsigned int i) {
75 return sqrt((
double)i);
78 static double log(
int i) {
79 return log((
double)i);
81 static double log(
unsigned int i) {
82 return log((
double)i);
85 static double floor(
int i) {
86 return floor((
double)i);
88 static double floor(
unsigned int i) {
89 return floor((
double)i);
92 static double round(
double d) {
93 return floor(d + 0.5);
96 static double fabs(
int i) {
97 return fabs((
double)i);
100 static float strtof(
const char* cptr,
char** endptr) {
101 return strtod(cptr, endptr);
104 # define __PRETTY_FUNCTION__ __FUNCTION__ //MSVC has a different name for pretty_function
105 # define strcasecmp stricmp //strcasecmp does not exists for VC, workaround
106 # define isnan(x) ((x) != (x)) //you guessed it, this is a C99 feature, and VC++ does not support C99. workaroud this.
107 # define rint(arg) arg > 0 ? (int)std::floor((double)arg) : (int)std::ceil((double)arg) //Hey, nother C99 feature !
111 # define _DEPRECATED __attribute__ ((deprecated))
112 # define _DEPRECATED_TYPEDEF(type, deprecated_type) typedef type deprecated_type _DEPRECATED
113 # define stdext __gnu_cxx
117 # define _DEPRECATED __attribute__ ((deprecated))
118 # define _DEPRECATED_TYPEDEF(type, deprecated_type) typedef type deprecated_type _DEPRECATED
119 # define stdext __gnu_cxx
120 # if (__GNUC_MINOR__ < 4 && __GNUC__ < 4)
121 # include <ext/stl_hash_fun.h>
122 # elif (__GNUC_MINOR__ < 3)
123 # include <ext/hash_fun.h>
130 # define TLP_SCOPE __declspec(dllexport)
132 # define TLP_SCOPE __declspec(dllimport)
141 # define TLP_GL_SCOPE __declspec(dllexport)
143 # define TLP_GL_SCOPE __declspec(dllimport)
147 # define TLP_GL_SCOPE
152 # define TLP_QT_SCOPE __declspec(dllexport)
154 # define TLP_QT_SCOPE __declspec(dllimport)
158 # define TLP_QT_SCOPE
162 # ifdef DLL_TULIP_PYTHON
163 # define TLP_PYTHON_SCOPE __declspec(dllexport)
165 # define TLP_PYTHON_SCOPE __declspec(dllimport)
168 #ifndef TLP_PYTHON_SCOPE
169 # define TLP_PYTHON_SCOPE
173 # ifdef DLL_TULIP_OGDF
174 # define TLP_OGDF_SCOPE __declspec(dllexport)
176 # define TLP_OGDF_SCOPE __declspec(dllimport)
179 #ifndef TLP_OGDF_SCOPE
180 # define TLP_OGDF_SCOPE
190 extern TLP_SCOPE std::ostream& debug();
195 extern TLP_SCOPE
void setDebugOutput(std::ostream& os);
200 extern TLP_SCOPE std::ostream& warning();
205 extern TLP_SCOPE
void setWarningOutput(std::ostream& os);
210 extern TLP_SCOPE std::ostream& error();
215 extern TLP_SCOPE
void setErrorOutput(std::ostream& os);