Chris@16: /* Chris@101: Copyright Rene Rivera 2011-2013 Chris@16: Distributed under the Boost Software License, Version 1.0. Chris@16: (See accompanying file LICENSE_1_0.txt or copy at Chris@16: http://www.boost.org/LICENSE_1_0.txt) Chris@16: */ Chris@16: Chris@16: #ifndef BOOST_PREDEF_LANGUAGE_STDCPP_H Chris@16: #define BOOST_PREDEF_LANGUAGE_STDCPP_H Chris@16: Chris@16: #include Chris@16: #include Chris@16: Chris@16: /*` Chris@16: [heading `BOOST_LANG_STDCPP`] Chris@16: Chris@16: [@http://en.wikipedia.org/wiki/C%2B%2B Standard C++] language. Chris@16: If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date. Chris@16: Because of the way the C++ standardization process works the Chris@16: defined version year will not be the commonly known year of the standard. Chris@16: Specifically the defined versions are: Chris@16: Chris@16: [table Detected Version Number vs. C++ Standard Year Chris@16: [[Detected Version Number] [Standard Year] [C++ Standard]] Chris@16: [[27.11.1] [1998] [ISO/IEC 14882:1998]] Chris@16: [[41.12.1] [2011] [ISO/IEC 14882:2011]] Chris@16: ] Chris@16: Chris@16: [table Chris@16: [[__predef_symbol__] [__predef_version__]] Chris@16: Chris@16: [[`__cplusplus`] [__predef_detection__]] Chris@16: Chris@16: [[`__cplusplus`] [YYYY.MM.1]] Chris@16: ] Chris@16: */ Chris@16: Chris@16: #define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_NOT_AVAILABLE Chris@16: Chris@16: #if defined(__cplusplus) Chris@16: # undef BOOST_LANG_STDCPP Chris@16: # if (__cplusplus > 100) Chris@16: # define BOOST_LANG_STDCPP BOOST_PREDEF_MAKE_YYYYMM(__cplusplus) Chris@16: # else Chris@16: # define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_AVAILABLE Chris@16: # endif Chris@16: #endif Chris@16: Chris@16: #if BOOST_LANG_STDCPP Chris@16: # define BOOST_LANG_STDCPP_AVAILABLE Chris@16: #endif Chris@16: Chris@16: #define BOOST_LANG_STDCPP_NAME "Standard C++" Chris@16: Chris@16: #include Chris@16: BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPP,BOOST_LANG_STDCPP_NAME) Chris@16: Chris@16: Chris@16: /*` Chris@16: [heading `BOOST_LANG_STDCPPCLI`] Chris@16: Chris@16: [@http://en.wikipedia.org/wiki/C%2B%2B/CLI Standard C++/CLI] language. Chris@16: If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date. Chris@16: Chris@16: [table Chris@16: [[__predef_symbol__] [__predef_version__]] Chris@16: Chris@16: [[`__cplusplus_cli`] [__predef_detection__]] Chris@16: Chris@16: [[`__cplusplus_cli`] [YYYY.MM.1]] Chris@16: ] Chris@16: */ Chris@16: Chris@16: #define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_NOT_AVAILABLE Chris@16: Chris@16: #if defined(__cplusplus_cli) Chris@16: # undef BOOST_LANG_STDCPPCLI Chris@16: # if (__cplusplus_cli > 100) Chris@16: # define BOOST_LANG_STDCPPCLI BOOST_PREDEF_MAKE_YYYYMM(__cplusplus_cli) Chris@16: # else Chris@16: # define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_AVAILABLE Chris@16: # endif Chris@16: #endif Chris@16: Chris@16: #if BOOST_LANG_STDCPPCLI Chris@16: # define BOOST_LANG_STDCPPCLI_AVAILABLE Chris@16: #endif Chris@16: Chris@16: #define BOOST_LANG_STDCPPCLI_NAME "Standard C++/CLI" Chris@16: Chris@16: #include Chris@16: BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPPCLI,BOOST_LANG_STDCPPCLI_NAME) Chris@16: Chris@16: Chris@16: /*` Chris@16: [heading `BOOST_LANG_STDECPP`] Chris@16: Chris@16: [@http://en.wikipedia.org/wiki/Embedded_C%2B%2B Standard Embedded C++] language. Chris@16: Chris@16: [table Chris@16: [[__predef_symbol__] [__predef_version__]] Chris@16: Chris@16: [[`__embedded_cplusplus`] [__predef_detection__]] Chris@16: ] Chris@16: */ Chris@16: Chris@16: #define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_NOT_AVAILABLE Chris@16: Chris@16: #if defined(__embedded_cplusplus) Chris@16: # undef BOOST_LANG_STDECPP Chris@16: # define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_AVAILABLE Chris@16: #endif Chris@16: Chris@16: #if BOOST_LANG_STDECPP Chris@16: # define BOOST_LANG_STDECPP_AVAILABLE Chris@16: #endif Chris@16: Chris@16: #define BOOST_LANG_STDECPP_NAME "Standard Embedded C++" Chris@16: Chris@16: #include Chris@16: BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDECPP,BOOST_LANG_STDECPP_NAME) Chris@16: Chris@16: Chris@16: #endif