BVB Source Codes

mars Show libstdcpp3.hpp Source code

Return Download mars: download libstdcpp3.hpp Source code - Download mars Source code - Type:.hpp
  1. //  (C) Copyright John Maddock 2001.
  2. //  (C) Copyright Jens Maurer 2001.
  3. //  Use, modification and distribution are subject to the
  4. //  Boost Software License, Version 1.0. (See accompanying file
  5. //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6.  
  7. //  See http://www.boost.org for most recent version.
  8.  
  9. //  config for libstdc++ v3
  10. //  not much to go in here:
  11.  
  12. #define BOOST_GNU_STDLIB 1
  13.  
  14. #ifdef __GLIBCXX__
  15. #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
  16. #else
  17. #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)
  18. #endif
  19.  
  20. #if !defined(_GLIBCPP_USE_WCHAR_T) && !defined(_GLIBCXX_USE_WCHAR_T)
  21. #  define BOOST_NO_CWCHAR
  22. #  define BOOST_NO_CWCTYPE
  23. #  define BOOST_NO_STD_WSTRING
  24. #  define BOOST_NO_STD_WSTREAMBUF
  25. #endif
  26.  
  27. #if defined(__osf__) && !defined(_REENTRANT) \
  28.   && ( defined(_GLIBCXX_HAVE_GTHR_DEFAULT) || defined(_GLIBCPP_HAVE_GTHR_DEFAULT) )
  29. // GCC 3 on Tru64 forces the definition of _REENTRANT when any std lib header
  30. // file is included, therefore for consistency we define it here as well.
  31. #  define _REENTRANT
  32. #endif
  33.  
  34. #ifdef __GLIBCXX__ // gcc 3.4 and greater:
  35. #  if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
  36.         || defined(_GLIBCXX__PTHREADS) \
  37.         || defined(_GLIBCXX_HAS_GTHREADS) \
  38.         || defined(_WIN32) \
  39.         || defined(_AIX) \
  40.         || defined(__HAIKU__)
  41.       //
  42.       // If the std lib has thread support turned on, then turn it on in Boost
  43.       // as well.  We do this because some gcc-3.4 std lib headers define _REENTANT
  44.       // while others do not...
  45.       //
  46. #     define BOOST_HAS_THREADS
  47. #  else
  48. #     define BOOST_DISABLE_THREADS
  49. #  endif
  50. #elif defined(__GLIBCPP__) \
  51.         && !defined(_GLIBCPP_HAVE_GTHR_DEFAULT) \
  52.         && !defined(_GLIBCPP__PTHREADS)
  53.    // disable thread support if the std lib was built single threaded:
  54. #  define BOOST_DISABLE_THREADS
  55. #endif
  56.  
  57. #if (defined(linux) || defined(__linux) || defined(__linux__)) && defined(__arm__) && defined(_GLIBCPP_HAVE_GTHR_DEFAULT)
  58. // linux on arm apparently doesn't define _REENTRANT
  59. // so just turn on threading support whenever the std lib is thread safe:
  60. #  define BOOST_HAS_THREADS
  61. #endif
  62.  
  63. #if !defined(_GLIBCPP_USE_LONG_LONG) \
  64.     && !defined(_GLIBCXX_USE_LONG_LONG)\
  65.     && defined(BOOST_HAS_LONG_LONG)
  66. // May have been set by compiler/*.hpp, but "long long" without library
  67. // support is useless.
  68. #  undef BOOST_HAS_LONG_LONG
  69. #endif
  70.  
  71. // Apple doesn't seem to reliably defined a *unix* macro
  72. #if !defined(CYGWIN) && (  defined(__unix__)  \
  73.                         || defined(__unix)    \
  74.                         || defined(unix)      \
  75.                         || defined(__APPLE__) \
  76.                         || defined(__APPLE)   \
  77.                         || defined(APPLE))
  78. #  include <unistd.h>
  79. #endif
  80.  
  81. #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
  82. #  define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
  83. #  define BOOST_HAS_SLIST
  84. #  define BOOST_HAS_HASH
  85. #  define BOOST_SLIST_HEADER <ext/slist>
  86. # if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
  87. #   define BOOST_HASH_SET_HEADER <ext/hash_set>
  88. #   define BOOST_HASH_MAP_HEADER <ext/hash_map>
  89. # else
  90. #   define BOOST_HASH_SET_HEADER <backward/hash_set>
  91. #   define BOOST_HASH_MAP_HEADER <backward/hash_map>
  92. # endif
  93. #endif
  94.  
  95. //
  96. // Decide whether we have C++11 support turned on:
  97. //
  98. #if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103)
  99. #  define BOOST_LIBSTDCXX11
  100. #endif
  101. //
  102. //  Decide which version of libstdc++ we have, normally
  103. //  stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly
  104. //  __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++
  105. //  developers. He also commented:
  106. //
  107. //       "I'm not sure how useful __GLIBCXX__ is for your purposes, for instance in
  108. //       GCC 4.2.4 it is set to 20080519 but in GCC 4.3.0 it is set to 20080305.
  109. //       Although 4.3.0 was released earlier than 4.2.4, it has better C++0x support
  110. //       than any release in the 4.2 series."
  111. //
  112. //  Another resource for understanding stdlibc++ features is:
  113. //  http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x
  114. //
  115. //  However, using the GCC version number fails when the compiler is clang since this
  116. //  only ever claims to emulate GCC-4.2, see https://svn.boost.org/trac/boost/ticket/7473
  117. //  for a long discussion on this issue.  What we can do though is use clang's __has_include
  118. //  to detect the presence of a C++11 header that was introduced with a specific GCC release.
  119. //  We still have to be careful though as many such headers were buggy and/or incomplete when
  120. //  first introduced, so we only check for headers that were fully featured from day 1, and then
  121. //  use that to infer the underlying GCC version:
  122. //
  123. #ifdef __clang__
  124.  
  125. #if __has_include(<experimental/any>)
  126. #  define BOOST_LIBSTDCXX_VERSION 50100
  127. #elif __has_include(<shared_mutex>)
  128. #  define BOOST_LIBSTDCXX_VERSION 40900
  129. #elif __has_include(<ext/cmath>)
  130. #  define BOOST_LIBSTDCXX_VERSION 40800
  131. #elif __has_include(<scoped_allocator>)
  132. #  define BOOST_LIBSTDCXX_VERSION 40700
  133. #elif __has_include(<typeindex>)
  134. #  define BOOST_LIBSTDCXX_VERSION 40600
  135. #elif __has_include(<future>)
  136. #  define BOOST_LIBSTDCXX_VERSION 40500
  137. #elif  __has_include(<ratio>)
  138. #  define BOOST_LIBSTDCXX_VERSION 40400
  139. #elif __has_include(<array>)
  140. #  define BOOST_LIBSTDCXX_VERSION 40300
  141. #endif
  142. //
  143. //  GCC 4.8 and 9 add working versions of <atomic> and <regex> respectively.
  144. //  However, we have no test for these as the headers were present but broken
  145. //  in early GCC versions.
  146. //
  147. #endif
  148.  
  149. #if defined(__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130) && (__cplusplus >= 201103L)
  150. //
  151. // Oracle Solaris compiler uses it's own verison of libstdc++ but doesn't
  152. // set __GNUC__
  153. //
  154. #define BOOST_LIBSTDCXX_VERSION 40800
  155. #endif
  156.  
  157. #if !defined(BOOST_LIBSTDCXX_VERSION)
  158. #  define BOOST_LIBSTDCXX_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
  159. #endif
  160.  
  161. //  C++0x headers in GCC 4.3.0 and later
  162. //
  163. #if (BOOST_LIBSTDCXX_VERSION < 40300) || !defined(BOOST_LIBSTDCXX11)
  164. #  define BOOST_NO_CXX11_HDR_ARRAY
  165. #  define BOOST_NO_CXX11_HDR_TUPLE
  166. #  define BOOST_NO_CXX11_HDR_UNORDERED_MAP
  167. #  define BOOST_NO_CXX11_HDR_UNORDERED_SET
  168. #  define BOOST_NO_CXX11_HDR_FUNCTIONAL
  169. #endif
  170.  
  171. //  C++0x headers in GCC 4.4.0 and later
  172. //
  173. #if (BOOST_LIBSTDCXX_VERSION < 40400) || !defined(BOOST_LIBSTDCXX11)
  174. #  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
  175. #  define BOOST_NO_CXX11_HDR_FORWARD_LIST
  176. #  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
  177. #  define BOOST_NO_CXX11_HDR_MUTEX
  178. #  define BOOST_NO_CXX11_HDR_RATIO
  179. #  define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
  180. #  define BOOST_NO_CXX11_SMART_PTR
  181. #else
  182. #  define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
  183. #  define BOOST_HAS_TR1_COMPLEX_OVERLOADS
  184. #endif
  185.  
  186. //  C++0x features in GCC 4.5.0 and later
  187. //
  188. #if (BOOST_LIBSTDCXX_VERSION < 40500) || !defined(BOOST_LIBSTDCXX11)
  189. #  define BOOST_NO_CXX11_NUMERIC_LIMITS
  190. #  define BOOST_NO_CXX11_HDR_FUTURE
  191. #  define BOOST_NO_CXX11_HDR_RANDOM
  192. #endif
  193.  
  194. //  C++0x features in GCC 4.6.0 and later
  195. //
  196. #if (BOOST_LIBSTDCXX_VERSION < 40600) || !defined(BOOST_LIBSTDCXX11)
  197. #  define BOOST_NO_CXX11_HDR_TYPEINDEX
  198. #  define BOOST_NO_CXX11_ADDRESSOF
  199. #endif
  200.  
  201. //  C++0x features in GCC 4.7.0 and later
  202. //
  203. #if (BOOST_LIBSTDCXX_VERSION < 40700) || !defined(BOOST_LIBSTDCXX11)
  204. // Note that although <chrono> existed prior to 4.7, "steady_clock" is spelled "monotonic_clock"
  205. // so 4.7.0 is the first truely conforming one.
  206. #  define BOOST_NO_CXX11_HDR_CHRONO
  207. #  define BOOST_NO_CXX11_ALLOCATOR
  208. #endif
  209. //  C++0x features in GCC 4.8.0 and later
  210. //
  211. #if (BOOST_LIBSTDCXX_VERSION < 40800) || !defined(BOOST_LIBSTDCXX11)
  212. // Note that although <atomic> existed prior to gcc 4.8 it was largely unimplemented for many types:
  213. #  define BOOST_NO_CXX11_HDR_ATOMIC
  214. #  define BOOST_NO_CXX11_HDR_THREAD
  215. #endif
  216. //  C++0x features in GCC 4.9.0 and later
  217. //
  218. #if (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
  219. // Although <regex> is present and compilable against, the actual implementation is not functional
  220. // even for the simplest patterns such as "\d" or "[0-9]". This is the case at least in gcc up to 4.8, inclusively.
  221. #  define BOOST_NO_CXX11_HDR_REGEX
  222. #endif
  223.  
  224. #if defined(__clang_major__) && ((__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 7)))
  225. // As of clang-3.6, libstdc++ header <atomic> throws up errors with clang:
  226. #  define BOOST_NO_CXX11_HDR_ATOMIC
  227. #endif
  228. //
  229. //  C++0x features in GCC 5.1 and later
  230. //
  231. #if (BOOST_LIBSTDCXX_VERSION < 50100) || !defined(BOOST_LIBSTDCXX11)
  232. #  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
  233. #  define BOOST_NO_CXX11_HDR_CODECVT
  234. #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
  235. #  define BOOST_NO_CXX11_STD_ALIGN
  236. #endif
  237.  
  238. #if defined(__has_include)
  239. #if !__has_include(<shared_mutex>)
  240. #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
  241. #elif __cplusplus <= 201103
  242. #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
  243. #endif
  244. #elif __cplusplus < 201402 || (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
  245. #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
  246. #endif
  247.  
  248. //
  249. // Headers not present on Solaris with the Oracle compiler:
  250. #if defined(__SUNPRO_CC)
  251. #define BOOST_NO_CXX11_HDR_FUTURE
  252. #define BOOST_NO_CXX11_HDR_FORWARD_LIST
  253. #define BOOST_NO_CXX11_HDR_ATOMIC
  254. // shared_ptr is present, but is not convertible to bool
  255. // which causes all kinds of problems especially in Boost.Thread
  256. // but probably elsewhere as well.
  257. #define BOOST_NO_CXX11_SMART_PTR
  258. #endif
  259.  
  260. #if (!defined(_GLIBCXX_HAS_GTHREADS) || !defined(_GLIBCXX_USE_C99_STDINT_TR1))
  261.    // Headers not always available:
  262. #  ifndef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
  263. #     define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
  264. #  endif
  265. #  ifndef BOOST_NO_CXX11_HDR_MUTEX
  266. #     define BOOST_NO_CXX11_HDR_MUTEX
  267. #  endif
  268. #  ifndef BOOST_NO_CXX11_HDR_THREAD
  269. #     define BOOST_NO_CXX11_HDR_THREAD
  270. #  endif
  271. #  ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX
  272. #     define BOOST_NO_CXX14_HDR_SHARED_MUTEX
  273. #  endif
  274. #endif
  275.  
  276. #if (!defined(_GTHREAD_USE_MUTEX_TIMEDLOCK) || (_GTHREAD_USE_MUTEX_TIMEDLOCK == 0)) && !defined(BOOST_NO_CXX11_HDR_MUTEX)
  277. // Timed mutexes are not always available:
  278. #  define BOOST_NO_CXX11_HDR_MUTEX
  279. #endif
  280.  
  281. //  --- end ---
  282.  
downloadlibstdcpp3.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top