37 #ifndef VIGRA_CONFIG_HXX
38 #define VIGRA_CONFIG_HXX
40 #include "configVersion.hxx"
53 #if(_MSC_VER < 1100) // before VisualC++ 5.0
54 #error "Need VisualC++ 5.0, Service Pack 2, or later"
55 #endif // _MSC_VER < 1100
58 #define NO_TYPENAME // no 'typename' keyword
59 #define TEMPLATE_COPY_CONSTRUCTOR_BUG
60 #define NO_STL_MEMBER_TEMPLATES
61 #define NO_INLINE_STATIC_CONST_DEFINITION
62 #define CMATH_NOT_IN_STD
63 #define NO_COVARIANT_RETURN_TYPES
65 #ifdef VIGRA_NO_STD_MINMAX // activate if necessary
69 const T& min(
const T& x,
const T& y)
77 const T& max(
const T& x,
const T& y)
84 #endif // VIGRA_NO_STD_MINMAX
85 #endif // (_MSC_VER < 1300)
88 #pragma warning( disable : 4786 4250 4244 4305)
90 #define NO_PARTIAL_TEMPLATE_SPECIALIZATION
91 #define NO_OUT_OF_LINE_MEMBER_TEMPLATES
94 #ifdef _MSC_EXTENSIONS
95 #ifndef CMATH_NOT_IN_STD
97 #endif // CMATH_NOT_IN_STD
98 inline double abs(
double v) {
return fabs(v); }
99 inline float abs(
float v) {
return fabs(v); }
100 #ifndef CMATH_NOT_IN_STD
102 #endif // CMATH_NOT_IN_STD
103 #endif // _MSC_EXTENSIONS
104 #endif // _MSC_VER < 1310
107 #define VIGRA_NO_WORKING_STRINGSTREAM
111 #define VIGRA_HAS_UNIQUE_PTR
114 #define VIGRA_NEED_BIN_STREAMS
116 #define VIGRA_NO_THREADSAFE_STATIC_INIT // at least up to _MSC_VER <= 1600, probably higher
121 #define VIGRA_SAFE_STATIC(p, v) \
122 0; while(p == 0) ::vigra::detail::safeStaticInit(&p, v)
124 namespace vigra {
namespace detail {
126 inline void safeStaticInit(T ** p, T * v)
128 if (InterlockedCompareExchangePointer((PVOID *)p, v, 0) != 0)
133 #ifndef VIGRA_ENABLE_ANNOYING_WARNINGS
134 #pragma warning ( disable: 4244 4267) // implicit integer conversion warnings
138 #define VIGRA_EXPORT __declspec(dllexport)
139 #elif defined(VIGRA_STATIC_LIB)
142 #define VIGRA_EXPORT __declspec(dllimport)
152 #if defined(__GNUC__)
153 #if __GNUC__ < 2 || ((__GNUC__ == 2) && (__GNUC_MINOR__ <= 8))
154 #error "Need at least g++ 2.95"
157 #define VIGRA_NO_WORKING_STRINGSTREAM
159 #define HAS_HASH_CONTAINERS
162 #pragma GCC diagnostic ignored "-Wstrict-aliasing"
163 #pragma GCC diagnostic ignored "-Wshadow"
165 #if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L
166 #define VIGRA_HAS_UNIQUE_PTR
177 #if defined(__MINGW32__)
178 #define VIGRA_NEED_BIN_STREAMS
181 #define VIGRA_EXPORT __declspec(dllexport)
182 #elif defined(VIGRA_STATIC_LIB)
185 #define VIGRA_EXPORT __declspec(dllimport)
187 #endif // __MINGW32__
195 #if defined(__sgi) && !defined(__GNUC__)
196 #if _COMPILER_VERSION < 720
197 #error "Need SGI C++ 7.2 or later"
199 #if (_COMPILER_VERSION == 720) || (_COMPILER_VERSION == 721)
200 #define SPECIAL_STDEXCEPTION_DEFINITION_NEEDED
203 typedef std::exception StdException;
206 #define NO_NAMESPACE_STD
207 #endif // _COMPILER_VERSION
208 #define HAS_HASH_CONTAINERS
217 #if defined(__sun) && !defined(__GNUC__)
218 #define VIGRA_HAS_ERF
227 #ifdef CMATH_NOT_IN_STD
230 #define VIGRA_CSTD std
245 #ifdef VIGRA_HAS_UNIQUE_PTR
246 # define VIGRA_UNIQUE_PTR std::unique_ptr
248 # define VIGRA_UNIQUE_PTR std::auto_ptr
251 #ifndef VIGRA_NO_THREADSAFE_STATIC_INIT
255 #define VIGRA_SAFE_STATIC(p, v) v
260 #ifndef SPECIAL_STDEXCEPTION_DEFINITION_NEEDED
261 typedef std::exception StdException;
267 # define doxygen_overloaded_function(fun) fun(...);
269 # define doxygen_overloaded_function(fun)
273 #endif // VIGRA_CONFIG_HXX
Definition: array_vector.hxx:903
Definition: accessor.hxx:43
FFTWComplex< R >::NormType abs(const FFTWComplex< R > &a)
absolute value (= magnitude)
Definition: fftw3.hxx:1002