1 //
2 // detail/pop_options.hpp
3 // ~~~~~~~~~~~~~~~~~~~~~~
4 //
5 // Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6 //
7 // Distributed under the Boost Software License, Version 1.0. (See accompanying
8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 //
10 
11 // No header guard
12 
13 #if defined(__COMO__)
14 
15 // Comeau C++
16 
17 #elif defined(__DMC__)
18 
19 // Digital Mars C++
20 
21 #elif defined(__INTEL_COMPILER) || defined(__ICL) \
22   || defined(__ICC) || defined(__ECC)
23 
24 // Intel C++
25 
26 # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
27 #  if !defined(BOOST_ASIO_DISABLE_VISIBILITY)
28 #   pragma GCC visibility pop
29 #  endif // !defined(BOOST_ASIO_DISABLE_VISIBILITY)
30 # endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
31 
32 #elif defined(__clang__)
33 
34 // Clang
35 
36 # if defined(__OBJC__)
37 #  if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
38 #   if defined(BOOST_ASIO_OBJC_WORKAROUND)
39 #    undef Protocol
40 #    undef id
41 #    undef BOOST_ASIO_OBJC_WORKAROUND
42 #   endif
43 #  endif
44 # endif
45 
46 # if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
47 #  if !defined(BOOST_ASIO_DISABLE_VISIBILITY)
48 #   pragma GCC visibility pop
49 #  endif // !defined(BOOST_ASIO_DISABLE_VISIBILITY)
50 # endif // !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
51 
52 #elif defined(__GNUC__)
53 
54 // GNU C++
55 
56 # if defined(__MINGW32__) || defined(__CYGWIN__)
57 #  pragma pack (pop)
58 # endif
59 
60 # if defined(__OBJC__)
61 #  if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
62 #   if defined(BOOST_ASIO_OBJC_WORKAROUND)
63 #    undef Protocol
64 #    undef id
65 #    undef BOOST_ASIO_OBJC_WORKAROUND
66 #   endif
67 #  endif
68 # endif
69 
70 # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
71 #  if !defined(BOOST_ASIO_DISABLE_VISIBILITY)
72 #   pragma GCC visibility pop
73 #  endif // !defined(BOOST_ASIO_DISABLE_VISIBILITY)
74 # endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
75 
76 # if (__GNUC__ >= 7)
77 #  pragma GCC diagnostic pop
78 # endif // (__GNUC__ >= 7)
79 
80 #elif defined(__KCC)
81 
82 // Kai C++
83 
84 #elif defined(__sgi)
85 
86 // SGI MIPSpro C++
87 
88 #elif defined(__DECCXX)
89 
90 // Compaq Tru64 Unix cxx
91 
92 #elif defined(__ghs)
93 
94 // Greenhills C++
95 
96 #elif defined(__BORLANDC__)
97 
98 // Borland C++
99 
100 # pragma option pop
101 # pragma nopushoptwarn
102 # pragma nopackwarning
103 
104 #elif defined(__MWERKS__)
105 
106 // Metrowerks CodeWarrior
107 
108 #elif defined(__SUNPRO_CC)
109 
110 // Sun Workshop Compiler C++
111 
112 #elif defined(__HP_aCC)
113 
114 // HP aCC
115 
116 #elif defined(__MRC__) || defined(__SC__)
117 
118 // MPW MrCpp or SCpp
119 
120 #elif defined(__IBMCPP__)
121 
122 // IBM Visual Age
123 
124 #elif defined(_MSC_VER)
125 
126 // Microsoft Visual C++
127 //
128 // Must remain the last #elif since some other vendors (Metrowerks, for example)
129 // also #define _MSC_VER
130 
131 # pragma warning (pop)
132 # pragma pack (pop)
133 
134 # if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
135 #  if defined(BOOST_ASIO_CLR_WORKAROUND)
136 #   undef generic
137 #   undef BOOST_ASIO_CLR_WORKAROUND
138 #  endif
139 # endif
140 
141 #endif
142