G+Smo  24.08.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HelperMacros.h
1 #ifndef UNITTEST_HELPERMACROS_H
2 #define UNITTEST_HELPERMACROS_H
3 
4 #include "Config.h"
5 
6 #define UNITTEST_MULTILINE_MACRO_BEGIN do {
7 
8 #if defined(UNITTEST_WIN32) && !defined(UNITTEST_COMPILER_IS_MSVC6)
9  #define UNITTEST_MULTILINE_MACRO_END \
10  } __pragma(warning(push)) __pragma(warning(disable:4127)) while (0) __pragma(warning(pop))
11 #else
12  #define UNITTEST_MULTILINE_MACRO_END } while(0)
13 #endif
14 
15 
16 #ifdef UNITTEST_WIN32_DLL
17  #define UNITTEST_IMPORT __declspec(dllimport)
18  #define UNITTEST_EXPORT __declspec(dllexport)
19 
20  #ifdef UNITTEST_DLL_EXPORT
21  #define UNITTEST_LINKAGE UNITTEST_EXPORT
22  #define UNITTEST_IMPEXP_TEMPLATE
23  #else
24  #define UNITTEST_LINKAGE UNITTEST_IMPORT
25  #define UNITTEST_IMPEXP_TEMPLATE extern
26  #endif
27 
28  #define UNITTEST_STDVECTOR_LINKAGE(T) \
29  __pragma(warning(push)) \
30  __pragma(warning(disable:4231)) \
31  UNITTEST_IMPEXP_TEMPLATE template class UNITTEST_LINKAGE std::allocator< T >; \
32  UNITTEST_IMPEXP_TEMPLATE template class UNITTEST_LINKAGE std::vector< T >; \
33  __pragma(warning(pop))
34 #else
35  #define UNITTEST_IMPORT
36  #define UNITTEST_EXPORT
37  #define UNITTEST_LINKAGE
38  #define UNITTEST_IMPEXP_TEMPLATE
39  #define UNITTEST_STDVECTOR_LINKAGE(T)
40 #endif
41 
42 #ifdef UNITTEST_WIN32
43  #define UNITTEST_JMPBUF jmp_buf
44  #define UNITTEST_SETJMP setjmp
45  #define UNITTEST_LONGJMP longjmp
46 #elif defined UNITTEST_POSIX
47  #define UNITTEST_JMPBUF std::jmp_buf
48  #define UNITTEST_SETJMP setjmp
49  #define UNITTEST_LONGJMP std::longjmp
50 #endif
51 
52 #endif