Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
Boost.Nowide
config.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2012 Artyom Beilis (Tonkikh)
3 // Copyright (c) 2019 - 2022 Alexander Grund
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 // https://www.boost.org/LICENSE_1_0.txt
7 
8 #ifndef BOOST_NOWIDE_CONFIG_HPP_INCLUDED
9 #define BOOST_NOWIDE_CONFIG_HPP_INCLUDED
10 
12 
13 #include <boost/config.hpp>
15 #include <boost/version.hpp>
16 
18 
19 #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_NOWIDE_DYN_LINK)
20 #ifdef BOOST_NOWIDE_SOURCE
21 #define BOOST_NOWIDE_DECL BOOST_SYMBOL_EXPORT
22 #else
23 #define BOOST_NOWIDE_DECL BOOST_SYMBOL_IMPORT
24 #endif // BOOST_NOWIDE_SOURCE
25 #else
26 #define BOOST_NOWIDE_DECL
27 #endif // BOOST_NOWIDE_DYN_LINK
28 
29 // Automatically link to the correct build variant where possible.
30 #if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_NOWIDE_NO_LIB) && !defined(BOOST_NOWIDE_SOURCE)
31 //
32 // Set the name of our library, this will get undef'ed by auto_link.hpp
33 // once it's done with it:
34 //
35 #define BOOST_LIB_NAME boost_nowide
36 //
37 // If we're importing code from a dll, then tell auto_link.hpp about it:
38 //
39 #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_NOWIDE_DYN_LINK)
40 #define BOOST_DYN_LINK
41 #endif
42 //
43 // And include the header that does the work:
44 //
45 #include <boost/config/auto_link.hpp>
46 #endif // auto-linking disabled
47 
49 
54 #ifndef BOOST_NOWIDE_USE_WCHAR_OVERLOADS
55 #if defined(BOOST_WINDOWS) || defined(__CYGWIN__) || defined(BOOST_NOWIDE_DOXYGEN)
56 #define BOOST_NOWIDE_USE_WCHAR_OVERLOADS 1
57 #else
58 #define BOOST_NOWIDE_USE_WCHAR_OVERLOADS 0
59 #endif
60 #endif
61 
72 #if defined(BOOST_WINDOWS) || defined(BOOST_NOWIDE_DOXYGEN)
73 #ifdef BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT
74 #undef BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT
75 #endif
76 #define BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT 1
77 #elif !defined(BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT)
78 #define BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT BOOST_NOWIDE_USE_WCHAR_OVERLOADS
79 #endif
80 
82 
83 #if BOOST_VERSION < 106500 && defined(__GNUC__) && __GNUC__ >= 7
84 #define BOOST_NOWIDE_FALLTHROUGH __attribute__((fallthrough))
85 #else
86 #define BOOST_NOWIDE_FALLTHROUGH BOOST_FALLTHROUGH
87 #endif
88 
89 // The std::codecvt<char16/32_t, char, std::mbstate_t> are deprecated in C++20
90 // These macros can suppress this warning
91 #if defined(_MSC_VER)
92 #define BOOST_NOWIDE_SUPPRESS_UTF_CODECVT_DEPRECATION_BEGIN __pragma(warning(push)) __pragma(warning(disable : 4996))
93 #define BOOST_NOWIDE_SUPPRESS_UTF_CODECVT_DEPRECATION_END __pragma(warning(pop))
94 #elif(__cplusplus >= 202002L) && defined(__clang__)
95 #define BOOST_NOWIDE_SUPPRESS_UTF_CODECVT_DEPRECATION_BEGIN \
96  _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
97 #define BOOST_NOWIDE_SUPPRESS_UTF_CODECVT_DEPRECATION_END _Pragma("clang diagnostic pop")
98 #elif(__cplusplus >= 202002L) && defined(__GNUC__)
99 #define BOOST_NOWIDE_SUPPRESS_UTF_CODECVT_DEPRECATION_BEGIN \
100  _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
101 #define BOOST_NOWIDE_SUPPRESS_UTF_CODECVT_DEPRECATION_END _Pragma("GCC diagnostic pop")
102 #else
103 #define BOOST_NOWIDE_SUPPRESS_UTF_CODECVT_DEPRECATION_BEGIN
104 #define BOOST_NOWIDE_SUPPRESS_UTF_CODECVT_DEPRECATION_END
105 #endif
106 
108 
109 namespace boost {
116 namespace nowide {}
117 } // namespace boost
118 
119 #endif