1 // 2 // detail/pop_options.hpp 3 // ~~~~~~~~~~~~~~~~~~~~~~ 4 // 5 // Copyright (c) 2003-2021 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 # pragma GCC diagnostic pop 53 54 #elif defined(__GNUC__) 55 56 // GNU C++ 57 58 # if defined(__MINGW32__) || defined(__CYGWIN__) 59 # pragma pack (pop) 60 # endif 61 62 # if defined(__OBJC__) 63 # if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1) 64 # if defined(BOOST_ASIO_OBJC_WORKAROUND) 65 # undef Protocol 66 # undef id 67 # undef BOOST_ASIO_OBJC_WORKAROUND 68 # endif 69 # endif 70 # endif 71 72 # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) 73 # if !defined(BOOST_ASIO_DISABLE_VISIBILITY) 74 # pragma GCC visibility pop 75 # endif // !defined(BOOST_ASIO_DISABLE_VISIBILITY) 76 # endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) 77 78 # pragma GCC diagnostic pop 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__) && !defined(__clang__) 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