95290eae31311688eaa3d2a2a5de6dcf63621aad
[libcds.git] / cds / compiler / defs.h
1 //$$CDS-header$$
2
3 #ifndef __CDS_ARH_COMPILER_DEFS_H
4 #define __CDS_ARH_COMPILER_DEFS_H
5
6 /*
7     Required C++11 features:
8     - move semantics [CDS_RVALUE_SUPPORT, CDS_MOVE_SEMANTICS_SUPPORT]
9     - variadic template [CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT]
10     - template alias [CDS_CXX11_TEMPLATE_ALIAS_SUPPORT]
11     - explicit conversion operator [CDS_CXX11_EXPLICIT_CONVERSION_OPERATOR_SUPPORT]
12     - default template argument for function [CDS_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS_SUPPORT]
13     - explicit default functions (=default) [CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT]
14     - =delete [CDS_CXX11_DELETE_DEFINITION_SUPPORT]
15 */
16
17 #if CDS_COMPILER == CDS_COMPILER_MSVC
18 #   include <cds/compiler/vc/defs.h>
19 #elif CDS_COMPILER == CDS_COMPILER_GCC
20 #   include <cds/compiler/gcc/defs.h>
21 #elif CDS_COMPILER == CDS_COMPILER_INTEL
22 #   include <cds/compiler/icl/defs.h>
23 #elif CDS_COMPILER == CDS_COMPILER_CLANG
24 #   include <cds/compiler/clang/defs.h>
25 #elif CDS_COMPILER == CDS_COMPILER_UNKNOWN
26 #   error Unknown compiler. Compilation aborted
27 #else
28 #   error Unknown value of CDS_COMPILER macro
29 #endif
30
31 #ifndef CDS_STDCALL
32 #   define CDS_STDCALL
33 #endif
34
35 #ifndef CDS_EXPORT_API
36 #   define CDS_EXPORT_API
37 #endif
38
39 #endif  // #ifndef __CDS_ARH_COMPILER_DEFS_H