Chris@16
|
1 /*
|
Chris@101
|
2 Copyright Rene Rivera 2011-2013
|
Chris@16
|
3 Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
4 (See accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
5 http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
6 */
|
Chris@16
|
7
|
Chris@16
|
8 #ifndef BOOST_PREDEF_LANGUAGE_STDCPP_H
|
Chris@16
|
9 #define BOOST_PREDEF_LANGUAGE_STDCPP_H
|
Chris@16
|
10
|
Chris@16
|
11 #include <boost/predef/version_number.h>
|
Chris@16
|
12 #include <boost/predef/make.h>
|
Chris@16
|
13
|
Chris@16
|
14 /*`
|
Chris@16
|
15 [heading `BOOST_LANG_STDCPP`]
|
Chris@16
|
16
|
Chris@16
|
17 [@http://en.wikipedia.org/wiki/C%2B%2B Standard C++] language.
|
Chris@16
|
18 If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
|
Chris@16
|
19 Because of the way the C++ standardization process works the
|
Chris@16
|
20 defined version year will not be the commonly known year of the standard.
|
Chris@16
|
21 Specifically the defined versions are:
|
Chris@16
|
22
|
Chris@16
|
23 [table Detected Version Number vs. C++ Standard Year
|
Chris@16
|
24 [[Detected Version Number] [Standard Year] [C++ Standard]]
|
Chris@16
|
25 [[27.11.1] [1998] [ISO/IEC 14882:1998]]
|
Chris@16
|
26 [[41.12.1] [2011] [ISO/IEC 14882:2011]]
|
Chris@16
|
27 ]
|
Chris@16
|
28
|
Chris@16
|
29 [table
|
Chris@16
|
30 [[__predef_symbol__] [__predef_version__]]
|
Chris@16
|
31
|
Chris@16
|
32 [[`__cplusplus`] [__predef_detection__]]
|
Chris@16
|
33
|
Chris@16
|
34 [[`__cplusplus`] [YYYY.MM.1]]
|
Chris@16
|
35 ]
|
Chris@16
|
36 */
|
Chris@16
|
37
|
Chris@16
|
38 #define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
Chris@16
|
39
|
Chris@16
|
40 #if defined(__cplusplus)
|
Chris@16
|
41 # undef BOOST_LANG_STDCPP
|
Chris@16
|
42 # if (__cplusplus > 100)
|
Chris@16
|
43 # define BOOST_LANG_STDCPP BOOST_PREDEF_MAKE_YYYYMM(__cplusplus)
|
Chris@16
|
44 # else
|
Chris@16
|
45 # define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_AVAILABLE
|
Chris@16
|
46 # endif
|
Chris@16
|
47 #endif
|
Chris@16
|
48
|
Chris@16
|
49 #if BOOST_LANG_STDCPP
|
Chris@16
|
50 # define BOOST_LANG_STDCPP_AVAILABLE
|
Chris@16
|
51 #endif
|
Chris@16
|
52
|
Chris@16
|
53 #define BOOST_LANG_STDCPP_NAME "Standard C++"
|
Chris@16
|
54
|
Chris@16
|
55 #include <boost/predef/detail/test.h>
|
Chris@16
|
56 BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPP,BOOST_LANG_STDCPP_NAME)
|
Chris@16
|
57
|
Chris@16
|
58
|
Chris@16
|
59 /*`
|
Chris@16
|
60 [heading `BOOST_LANG_STDCPPCLI`]
|
Chris@16
|
61
|
Chris@16
|
62 [@http://en.wikipedia.org/wiki/C%2B%2B/CLI Standard C++/CLI] language.
|
Chris@16
|
63 If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
|
Chris@16
|
64
|
Chris@16
|
65 [table
|
Chris@16
|
66 [[__predef_symbol__] [__predef_version__]]
|
Chris@16
|
67
|
Chris@16
|
68 [[`__cplusplus_cli`] [__predef_detection__]]
|
Chris@16
|
69
|
Chris@16
|
70 [[`__cplusplus_cli`] [YYYY.MM.1]]
|
Chris@16
|
71 ]
|
Chris@16
|
72 */
|
Chris@16
|
73
|
Chris@16
|
74 #define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
Chris@16
|
75
|
Chris@16
|
76 #if defined(__cplusplus_cli)
|
Chris@16
|
77 # undef BOOST_LANG_STDCPPCLI
|
Chris@16
|
78 # if (__cplusplus_cli > 100)
|
Chris@16
|
79 # define BOOST_LANG_STDCPPCLI BOOST_PREDEF_MAKE_YYYYMM(__cplusplus_cli)
|
Chris@16
|
80 # else
|
Chris@16
|
81 # define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_AVAILABLE
|
Chris@16
|
82 # endif
|
Chris@16
|
83 #endif
|
Chris@16
|
84
|
Chris@16
|
85 #if BOOST_LANG_STDCPPCLI
|
Chris@16
|
86 # define BOOST_LANG_STDCPPCLI_AVAILABLE
|
Chris@16
|
87 #endif
|
Chris@16
|
88
|
Chris@16
|
89 #define BOOST_LANG_STDCPPCLI_NAME "Standard C++/CLI"
|
Chris@16
|
90
|
Chris@16
|
91 #include <boost/predef/detail/test.h>
|
Chris@16
|
92 BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPPCLI,BOOST_LANG_STDCPPCLI_NAME)
|
Chris@16
|
93
|
Chris@16
|
94
|
Chris@16
|
95 /*`
|
Chris@16
|
96 [heading `BOOST_LANG_STDECPP`]
|
Chris@16
|
97
|
Chris@16
|
98 [@http://en.wikipedia.org/wiki/Embedded_C%2B%2B Standard Embedded C++] language.
|
Chris@16
|
99
|
Chris@16
|
100 [table
|
Chris@16
|
101 [[__predef_symbol__] [__predef_version__]]
|
Chris@16
|
102
|
Chris@16
|
103 [[`__embedded_cplusplus`] [__predef_detection__]]
|
Chris@16
|
104 ]
|
Chris@16
|
105 */
|
Chris@16
|
106
|
Chris@16
|
107 #define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
Chris@16
|
108
|
Chris@16
|
109 #if defined(__embedded_cplusplus)
|
Chris@16
|
110 # undef BOOST_LANG_STDECPP
|
Chris@16
|
111 # define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_AVAILABLE
|
Chris@16
|
112 #endif
|
Chris@16
|
113
|
Chris@16
|
114 #if BOOST_LANG_STDECPP
|
Chris@16
|
115 # define BOOST_LANG_STDECPP_AVAILABLE
|
Chris@16
|
116 #endif
|
Chris@16
|
117
|
Chris@16
|
118 #define BOOST_LANG_STDECPP_NAME "Standard Embedded C++"
|
Chris@16
|
119
|
Chris@16
|
120 #include <boost/predef/detail/test.h>
|
Chris@16
|
121 BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDECPP,BOOST_LANG_STDECPP_NAME)
|
Chris@16
|
122
|
Chris@16
|
123
|
Chris@16
|
124 #endif
|