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
53