BVB Source Codes

mars Show workaround.hpp Source code

Return Download mars: download workaround.hpp Source code - Download mars Source code - Type:.hpp
  1. // Copyright David Abrahams 2002.
  2. // Distributed under the Boost Software License, Version 1.0. (See
  3. // accompanying file LICENSE_1_0.txt or copy at
  4. // http://www.boost.org/LICENSE_1_0.txt)
  5. #ifndef WORKAROUND_DWA2002126_HPP
  6. # define WORKAROUND_DWA2002126_HPP
  7.  
  8. // Compiler/library version workaround macro
  9. //
  10. // Usage:
  11. //
  12. //     #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
  13. //        // workaround for eVC4 and VC6
  14. //        ... // workaround code here
  15. //     #endif
  16. //
  17. // When BOOST_STRICT_CONFIG is defined, expands to 0. Otherwise, the
  18. // first argument must be undefined or expand to a numeric
  19. // value. The above expands to:
  20. //
  21. //     (BOOST_MSVC) != 0 && (BOOST_MSVC) < 1300
  22. //
  23. // When used for workarounds that apply to the latest known version
  24. // and all earlier versions of a compiler, the following convention
  25. // should be observed:
  26. //
  27. //     #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1301))
  28. //
  29. // The version number in this case corresponds to the last version in
  30. // which the workaround was known to have been required. When
  31. // BOOST_DETECT_OUTDATED_WORKAROUNDS is not the defined, the macro
  32. // BOOST_TESTED_AT(x) expands to "!= 0", which effectively activates
  33. // the workaround for any version of the compiler. When
  34. // BOOST_DETECT_OUTDATED_WORKAROUNDS is defined, a compiler warning or
  35. // error will be issued if the compiler version exceeds the argument
  36. // to BOOST_TESTED_AT().  This can be used to locate workarounds which
  37. // may be obsoleted by newer versions.
  38.  
  39. # ifndef BOOST_STRICT_CONFIG
  40.  
  41. #include <boost/config.hpp>
  42.  
  43. #ifndef __BORLANDC__
  44. #define __BORLANDC___WORKAROUND_GUARD 1
  45. #else
  46. #define __BORLANDC___WORKAROUND_GUARD 0
  47. #endif
  48. #ifndef __CODEGEARC__
  49. #define __CODEGEARC___WORKAROUND_GUARD 1
  50. #else
  51. #define __CODEGEARC___WORKAROUND_GUARD 0
  52. #endif
  53. #ifndef _MSC_VER
  54. #define _MSC_VER_WORKAROUND_GUARD 1
  55. #else
  56. #define _MSC_VER_WORKAROUND_GUARD 0
  57. #endif
  58. #ifndef _MSC_FULL_VER
  59. #define _MSC_FULL_VER_WORKAROUND_GUARD 1
  60. #else
  61. #define _MSC_FULL_VER_WORKAROUND_GUARD 0
  62. #endif
  63. #ifndef BOOST_MSVC
  64. #define BOOST_MSVC_WORKAROUND_GUARD 1
  65. #else
  66. #define BOOST_MSVC_WORKAROUND_GUARD 0
  67. #endif
  68. #ifndef BOOST_MSVC_FULL_VER
  69. #define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 1
  70. #else
  71. #define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 0
  72. #endif
  73. #ifndef __GNUC__
  74. #define __GNUC___WORKAROUND_GUARD 1
  75. #else
  76. #define __GNUC___WORKAROUND_GUARD 0
  77. #endif
  78. #ifndef __GNUC_MINOR__
  79. #define __GNUC_MINOR___WORKAROUND_GUARD 1
  80. #else
  81. #define __GNUC_MINOR___WORKAROUND_GUARD 0
  82. #endif
  83. #ifndef __GNUC_PATCHLEVEL__
  84. #define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 1
  85. #else
  86. #define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0
  87. #endif
  88. #ifndef __IBMCPP__
  89. #define __IBMCPP___WORKAROUND_GUARD 1
  90. #else
  91. #define __IBMCPP___WORKAROUND_GUARD 0
  92. #endif
  93. #ifndef __SUNPRO_CC
  94. #define __SUNPRO_CC_WORKAROUND_GUARD 1
  95. #else
  96. #define __SUNPRO_CC_WORKAROUND_GUARD 0
  97. #endif
  98. #ifndef __DECCXX_VER
  99. #define __DECCXX_VER_WORKAROUND_GUARD 1
  100. #else
  101. #define __DECCXX_VER_WORKAROUND_GUARD 0
  102. #endif
  103. #ifndef __MWERKS__
  104. #define __MWERKS___WORKAROUND_GUARD 1
  105. #else
  106. #define __MWERKS___WORKAROUND_GUARD 0
  107. #endif
  108. #ifndef __EDG__
  109. #define __EDG___WORKAROUND_GUARD 1
  110. #else
  111. #define __EDG___WORKAROUND_GUARD 0
  112. #endif
  113. #ifndef __EDG_VERSION__
  114. #define __EDG_VERSION___WORKAROUND_GUARD 1
  115. #else
  116. #define __EDG_VERSION___WORKAROUND_GUARD 0
  117. #endif
  118. #ifndef __HP_aCC
  119. #define __HP_aCC_WORKAROUND_GUARD 1
  120. #else
  121. #define __HP_aCC_WORKAROUND_GUARD 0
  122. #endif
  123. #ifndef __hpxstd98
  124. #define __hpxstd98_WORKAROUND_GUARD 1
  125. #else
  126. #define __hpxstd98_WORKAROUND_GUARD 0
  127. #endif
  128. #ifndef _CRAYC
  129. #define _CRAYC_WORKAROUND_GUARD 1
  130. #else
  131. #define _CRAYC_WORKAROUND_GUARD 0
  132. #endif
  133. #ifndef __DMC__
  134. #define __DMC___WORKAROUND_GUARD 1
  135. #else
  136. #define __DMC___WORKAROUND_GUARD 0
  137. #endif
  138. #ifndef MPW_CPLUS
  139. #define MPW_CPLUS_WORKAROUND_GUARD 1
  140. #else
  141. #define MPW_CPLUS_WORKAROUND_GUARD 0
  142. #endif
  143. #ifndef __COMO__
  144. #define __COMO___WORKAROUND_GUARD 1
  145. #else
  146. #define __COMO___WORKAROUND_GUARD 0
  147. #endif
  148. #ifndef __COMO_VERSION__
  149. #define __COMO_VERSION___WORKAROUND_GUARD 1
  150. #else
  151. #define __COMO_VERSION___WORKAROUND_GUARD 0
  152. #endif
  153. #ifndef __INTEL_COMPILER
  154. #define __INTEL_COMPILER_WORKAROUND_GUARD 1
  155. #else
  156. #define __INTEL_COMPILER_WORKAROUND_GUARD 0
  157. #endif
  158. #ifndef __ICL
  159. #define __ICL_WORKAROUND_GUARD 1
  160. #else
  161. #define __ICL_WORKAROUND_GUARD 0
  162. #endif
  163. #ifndef _COMPILER_VERSION
  164. #define _COMPILER_VERSION_WORKAROUND_GUARD 1
  165. #else
  166. #define _COMPILER_VERSION_WORKAROUND_GUARD 0
  167. #endif
  168.  
  169. #ifndef _RWSTD_VER
  170. #define _RWSTD_VER_WORKAROUND_GUARD 1
  171. #else
  172. #define _RWSTD_VER_WORKAROUND_GUARD 0
  173. #endif
  174. #ifndef BOOST_RWSTD_VER
  175. #define BOOST_RWSTD_VER_WORKAROUND_GUARD 1
  176. #else
  177. #define BOOST_RWSTD_VER_WORKAROUND_GUARD 0
  178. #endif
  179. #ifndef __GLIBCPP__
  180. #define __GLIBCPP___WORKAROUND_GUARD 1
  181. #else
  182. #define __GLIBCPP___WORKAROUND_GUARD 0
  183. #endif
  184. #ifndef _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
  185. #define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 1
  186. #else
  187. #define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 0
  188. #endif
  189. #ifndef __SGI_STL_PORT
  190. #define __SGI_STL_PORT_WORKAROUND_GUARD 1
  191. #else
  192. #define __SGI_STL_PORT_WORKAROUND_GUARD 0
  193. #endif
  194. #ifndef _STLPORT_VERSION
  195. #define _STLPORT_VERSION_WORKAROUND_GUARD 1
  196. #else
  197. #define _STLPORT_VERSION_WORKAROUND_GUARD 0
  198. #endif
  199. #ifndef __LIBCOMO_VERSION__
  200. #define __LIBCOMO_VERSION___WORKAROUND_GUARD 1
  201. #else
  202. #define __LIBCOMO_VERSION___WORKAROUND_GUARD 0
  203. #endif
  204. #ifndef _CPPLIB_VER
  205. #define _CPPLIB_VER_WORKAROUND_GUARD 1
  206. #else
  207. #define _CPPLIB_VER_WORKAROUND_GUARD 0
  208. #endif
  209.  
  210. #ifndef BOOST_INTEL_CXX_VERSION
  211. #define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 1
  212. #else
  213. #define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 0
  214. #endif
  215. #ifndef BOOST_INTEL_WIN
  216. #define BOOST_INTEL_WIN_WORKAROUND_GUARD 1
  217. #else
  218. #define BOOST_INTEL_WIN_WORKAROUND_GUARD 0
  219. #endif
  220. #ifndef BOOST_DINKUMWARE_STDLIB
  221. #define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 1
  222. #else
  223. #define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 0
  224. #endif
  225. #ifndef BOOST_INTEL
  226. #define BOOST_INTEL_WORKAROUND_GUARD 1
  227. #else
  228. #define BOOST_INTEL_WORKAROUND_GUARD 0
  229. #endif
  230. // Always define to zero, if it's used it'll be defined my MPL:
  231. #define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0
  232.  
  233. #  define BOOST_WORKAROUND(symbol, test)                \
  234.          ((symbol ## _WORKAROUND_GUARD + 0 == 0) &&     \
  235.          (symbol != 0) && (1 % (( (symbol test) ) + 1)))
  236. //                              ^ ^           ^ ^
  237. // The extra level of parenthesis nesting above, along with the
  238. // BOOST_OPEN_PAREN indirection below, is required to satisfy the
  239. // broken preprocessor in MWCW 8.3 and earlier.
  240. //
  241. // The basic mechanism works as follows:
  242. //      (symbol test) + 1        =>   if (symbol test) then 2 else 1
  243. //      1 % ((symbol test) + 1)  =>   if (symbol test) then 1 else 0
  244. //
  245. // The complication with % is for cooperation with BOOST_TESTED_AT().
  246. // When "test" is BOOST_TESTED_AT(x) and
  247. // BOOST_DETECT_OUTDATED_WORKAROUNDS is #defined,
  248. //
  249. //      symbol test              =>   if (symbol <= x) then 1 else -1
  250. //      (symbol test) + 1        =>   if (symbol <= x) then 2 else 0
  251. //      1 % ((symbol test) + 1)  =>   if (symbol <= x) then 1 else divide-by-zero
  252. //
  253.  
  254. #  ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS
  255. #   define BOOST_OPEN_PAREN (
  256. #   define BOOST_TESTED_AT(value)  > value) ?(-1): BOOST_OPEN_PAREN 1
  257. #  else
  258. #   define BOOST_TESTED_AT(value) != ((value)-(value))
  259. #  endif
  260.  
  261. # else
  262.  
  263. #  define BOOST_WORKAROUND(symbol, test) 0
  264.  
  265. # endif
  266.  
  267. #endif // WORKAROUND_DWA2002126_HPP
  268.  
downloadworkaround.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