1 | /* |
---|---|
2 | Copyright Henrik S. Gaßmann 2023 |
3 | Distributed under the Boost Software License, Version 1.0. |
4 | (See accompanying file LICENSE_1_0.txt or copy at |
5 | http://www.boost.org/LICENSE_1_0.txt) |
6 | */ |
7 | |
8 | #ifndef BOOST_PREDEF_LIBRARY_STD_MSVC_H |
9 | #define BOOST_PREDEF_LIBRARY_STD_MSVC_H |
10 | |
11 | #include <boost/predef/library/std/_prefix.h> |
12 | |
13 | #include <boost/predef/version_number.h> |
14 | #include <boost/predef/make.h> |
15 | |
16 | /* tag::reference[] |
17 | = `BOOST_LIB_STD_MSVC` |
18 | |
19 | https://github.com/microsoft/STL[Microsoft's {CPP} Standard Library]. |
20 | If available version number as major, minor, and patch. |
21 | The patch number is derived from `_MSVC_STL_UPDATE` by taking its five last |
22 | digits (see below). This implies that pasting a `_MSVC_STL_UPDATE` value into |
23 | `BOOST_VERSION_NUMBER` will produce a version number that is directly comparable |
24 | to `BOOST_LIB_STD_MSVC`. |
25 | |
26 | [options="header"] |
27 | |=== |
28 | | {predef_symbol} | {predef_version} |
29 | |
30 | | `+_MSVC_STL_VERSION+` | {predef_detection} |
31 | |
32 | | `+_MSVC_STL_VERSION+` | VV.R.0 |
33 | | `+_MSVC_STL_UPDATE+` | 00.0.0YYYMM |
34 | |=== |
35 | */ // end::reference[] |
36 | |
37 | #define BOOST_LIB_STD_MSVC BOOST_VERSION_NUMBER_NOT_AVAILABLE |
38 | |
39 | #if defined(_MSVC_STL_VERSION) |
40 | # undef BOOST_LIB_STD_MSVC |
41 | # define BOOST_LIB_STD_MSVC BOOST_PREDEF_MAKE_10_VVR_0PPPPP(_MSVC_STL_VERSION, _MSVC_STL_UPDATE) |
42 | #endif |
43 | |
44 | #if BOOST_LIB_STD_MSVC |
45 | # define BOOST_LIB_STD_MSVC_AVAILABLE |
46 | #endif |
47 | |
48 | #define BOOST_LIB_STD_MSVC_NAME "Microsoft stdlib" |
49 | |
50 | #endif |
51 | |
52 | #include <boost/predef/detail/test.h> |
53 | BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_MSVC, BOOST_LIB_STD_MSVC_NAME) |
54 |