passenger 5.0.24 → 5.0.25

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (1796) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +8 -18
  3. data/CHANGELOG +20 -0
  4. data/build/cplusplus_support.rb +3 -3
  5. data/build/cxx_dependency_map.rb +148 -96
  6. data/build/cxx_tests.rb +24 -12
  7. data/build/packaging.rb +1 -2
  8. data/dev/copy_boost_headers +32 -9
  9. data/resources/templates/standalone/config.erb +2 -0
  10. data/resources/templates/standalone/footer.erb +3 -0
  11. data/resources/templates/standalone/server.erb +7 -0
  12. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +2 -2
  13. data/src/agent/Core/SpawningKit/DirectSpawner.h +3 -0
  14. data/src/agent/Core/UnionStation/Transaction.h +1 -15
  15. data/src/agent/README.md +15 -3
  16. data/src/agent/UstRouter/Controller.h +95 -90
  17. data/src/agent/UstRouter/FileSink.h +3 -2
  18. data/src/agent/UstRouter/LogSink.h +5 -6
  19. data/src/agent/UstRouter/RemoteSender.h +41 -12
  20. data/src/agent/UstRouter/RemoteSink.h +3 -2
  21. data/src/agent/UstRouter/Transaction.h +198 -66
  22. data/src/apache2_module/Configuration.cpp +57 -2
  23. data/src/apache2_module/Configuration.h +3 -1
  24. data/src/apache2_module/Configuration.hpp +3 -1
  25. data/src/apache2_module/Hooks.cpp +4 -2
  26. data/src/cxx_supportlib/Constants.h +1 -1
  27. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -0
  28. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -0
  29. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +4 -3
  30. data/src/cxx_supportlib/ServerKit/Server.h +1 -0
  31. data/src/cxx_supportlib/Utils/BufferedIO.h +21 -4
  32. data/src/cxx_supportlib/Utils/IOUtils.cpp +62 -12
  33. data/src/cxx_supportlib/Utils/StrIntUtils.cpp +3 -3
  34. data/src/cxx_supportlib/Utils/StrIntUtils.h +2 -2
  35. data/src/cxx_supportlib/WatchdogLauncher.cpp +13 -1
  36. data/src/cxx_supportlib/WatchdogLauncher.h +4 -1
  37. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/classification.hpp +312 -0
  38. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/concept.hpp +1 -1
  39. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +353 -0
  40. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format.hpp +1 -1
  41. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format_all.hpp +1 -1
  42. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format_store.hpp +1 -1
  43. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +87 -0
  44. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +1 -8
  45. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder_regex.hpp +122 -0
  46. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
  47. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter_regex.hpp +61 -0
  48. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/predicate.hpp +77 -0
  49. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +95 -0
  50. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/util.hpp +1 -1
  51. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/erase.hpp +1 -1
  52. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find.hpp +334 -0
  53. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -1
  54. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_iterator.hpp +388 -0
  55. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +1 -1
  56. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +1 -1
  57. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +193 -0
  58. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/join.hpp +145 -0
  59. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +475 -0
  60. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate_facade.hpp +42 -0
  61. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/regex.hpp +646 -0
  62. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/regex_find_format.hpp +90 -0
  63. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/replace.hpp +1 -1
  64. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/sequence_traits.hpp +0 -73
  65. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +163 -0
  66. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/list_traits.hpp +68 -0
  67. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/rope_traits.hpp +81 -0
  68. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/slist_traits.hpp +69 -0
  69. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/string_traits.hpp +44 -0
  70. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std_containers_traits.hpp +26 -0
  71. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim.hpp +398 -0
  72. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim_all.hpp +217 -0
  73. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +20 -0
  74. data/src/cxx_supportlib/vendor-modified/boost/align/detail/address.hpp +29 -0
  75. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align.hpp +40 -0
  76. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +22 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +29 -0
  78. data/src/cxx_supportlib/vendor-modified/boost/aligned_storage.hpp +1 -164
  79. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +33 -84
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +1 -1
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +83 -231
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +33 -0
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +161 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +70 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +774 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +53 -0
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_alpha.hpp +34 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +56 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +134 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +36 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sparc.hpp +34 -0
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +62 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +52 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_linux_arm.hpp +35 -0
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_arm.hpp +34 -0
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +50 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +57 -36
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +140 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +297 -16
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/link.hpp +58 -0
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +30 -76
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +24 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +35 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +30 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +105 -0
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +161 -0
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +68 -0
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +876 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +973 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +395 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +802 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +240 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +270 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +514 -0
  115. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +616 -0
  116. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +178 -0
  117. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +824 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +38 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +928 -0
  120. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +43 -0
  121. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +91 -32
  122. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +280 -0
  123. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +67 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +18 -1
  125. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +74 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/bind/arg.hpp +5 -5
  127. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +507 -2
  128. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +214 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/bind/make_adaptable.hpp +187 -0
  130. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +130 -0
  131. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +29 -36
  132. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +304 -0
  133. data/src/cxx_supportlib/vendor-modified/boost/checked_delete.hpp +13 -65
  134. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +9 -13
  135. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +10 -4
  136. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -2
  137. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/concept_def.hpp +0 -17
  138. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +0 -8
  140. data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +25 -26
  141. data/src/cxx_supportlib/vendor-modified/boost/config.hpp +9 -12
  142. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +17 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +36 -6
  144. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +135 -14
  145. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +41 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +48 -9
  147. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +33 -5
  148. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +36 -16
  149. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +121 -87
  150. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +39 -5
  151. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +13 -9
  152. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +327 -64
  153. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +44 -10
  154. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +38 -4
  155. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +0 -12
  156. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +36 -3
  157. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +37 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +63 -23
  159. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +44 -13
  160. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +102 -128
  161. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +258 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cloudabi.hpp +18 -0
  163. data/src/cxx_supportlib/vendor-modified/boost/config/platform/haiku.hpp +31 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +2 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/config/platform/macos.hpp +1 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp +4 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/config/select_compiler_config.hpp +43 -7
  168. data/src/cxx_supportlib/vendor-modified/boost/config/select_platform_config.hpp +32 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/config/select_stdlib_config.hpp +28 -8
  170. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +58 -15
  171. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +13 -2
  172. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +43 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +129 -14
  174. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +13 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +13 -9
  176. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +12 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +14 -4
  178. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +13 -8
  179. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +13 -3
  180. data/src/cxx_supportlib/vendor-modified/boost/config/suffix.hpp +159 -85
  181. data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +15 -6
  182. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +351 -0
  183. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +371 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +283 -213
  185. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +195 -51
  186. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +840 -625
  187. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +166 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +24 -13
  189. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +41 -0
  190. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +289 -181
  191. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +35 -0
  192. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +60 -0
  193. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +314 -0
  194. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +11 -7
  195. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +24 -25
  196. data/src/cxx_supportlib/vendor-modified/boost/container/detail/auto_link.hpp +51 -0
  197. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +139 -0
  198. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +157 -0
  199. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +74 -0
  200. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +16 -14
  201. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +1 -5
  202. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +62 -0
  203. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +1142 -0
  204. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +61 -48
  205. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +293 -0
  206. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dlmalloc.hpp +103 -0
  207. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +335 -408
  208. data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +9 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +383 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +40 -0
  211. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator_to_raw_pointer.hpp +58 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +300 -83
  213. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +13 -3
  214. data/src/cxx_supportlib/vendor-modified/boost/container/detail/min_max.hpp +37 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/container/detail/minimal_char_traits_header.hpp +32 -0
  216. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +45 -118
  217. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +22 -10
  218. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +288 -0
  219. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +75 -0
  220. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +115 -109
  221. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +157 -0
  222. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +33 -23
  223. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +62 -89
  224. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +30 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +11 -6
  226. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +102 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +191 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/container/detail/singleton.hpp +121 -0
  229. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +56 -0
  230. data/src/cxx_supportlib/vendor-modified/boost/container/detail/to_raw_pointer.hpp +33 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +17 -13
  232. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +646 -595
  233. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +44 -184
  234. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +7 -3
  235. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +9 -4
  236. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +23 -5
  237. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +50 -15
  238. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +627 -287
  239. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +608 -657
  240. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +395 -376
  241. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +616 -625
  242. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +179 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +344 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +80 -0
  245. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/deque.hpp +43 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +63 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +59 -0
  248. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +66 -0
  249. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/list.hpp +43 -0
  250. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +63 -0
  251. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +101 -0
  252. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +180 -0
  253. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +166 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/pool_options.hpp +52 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +193 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +59 -0
  257. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/slist.hpp +43 -0
  258. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/small_vector.hpp +43 -0
  259. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/stable_vector.hpp +43 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/string.hpp +48 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +138 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +194 -0
  263. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/vector.hpp +43 -0
  264. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +423 -1019
  265. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator_fwd.hpp +23 -35
  266. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +520 -626
  267. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +416 -407
  268. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +574 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +711 -470
  270. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +314 -145
  271. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +477 -282
  272. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +63 -3
  273. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +169 -0
  274. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +73 -0
  275. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +1660 -945
  276. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +162 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +69 -0
  278. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +128 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/core/enable_if.hpp +128 -0
  280. data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +154 -0
  281. data/src/cxx_supportlib/vendor-modified/boost/core/ignore_unused.hpp +70 -0
  282. data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +40 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +171 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +56 -0
  285. data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +44 -0
  286. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +48 -0
  287. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +44 -0
  288. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +301 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/{detail/scoped_enum_emulation.hpp → core/scoped_enum.hpp} +19 -164
  290. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +60 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +151 -0
  292. data/src/cxx_supportlib/vendor-modified/boost/core/underlying_type.hpp +79 -0
  293. data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +132 -95
  294. data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +8 -5
  295. data/src/cxx_supportlib/vendor-modified/boost/date_time/adjust_functors.hpp +1 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_local_time_adjustor.hpp +69 -0
  297. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +3 -3
  298. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +1 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +1 -1
  300. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +3 -3
  301. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_clock_device.hpp +7 -7
  302. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_defs.hpp +1 -1
  303. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +1 -1
  304. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +1 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_format_simple.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting.hpp +1 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_limited.hpp +1 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_locales.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generator_formatter.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generator_parser.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_iterator.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_names_put.hpp +1 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +1 -3
  316. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +75 -0
  318. data/src/cxx_supportlib/vendor-modified/boost/date_time/filetime_functions.hpp +1 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +11 -7
  320. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/conversion.hpp +1 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_calendar.hpp +1 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +1 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +1 -1
  326. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day_of_year.hpp +1 -1
  327. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +1 -1
  328. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +1 -1
  329. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +352 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +1 -1
  331. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +517 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +1 -1
  333. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +1 -1
  334. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_ymd.hpp +1 -1
  335. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian.hpp +1 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_io.hpp +1 -1
  337. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_types.hpp +1 -1
  338. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +1 -1
  339. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +1 -1
  340. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +6 -6
  341. data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +3 -3
  342. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +1 -1
  343. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/conversion.hpp +34 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/custom_time_zone.hpp +169 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/date_duration_operators.hpp +115 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/dst_transition_day_rules.hpp +77 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +528 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time.hpp +24 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +184 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_types.hpp +52 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/posix_time_zone.hpp +474 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/tz_database.hpp +32 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time_adjustor.hpp +218 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_timezone_defs.hpp +193 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +1 -1
  356. data/src/cxx_supportlib/vendor-modified/boost/date_time/microsec_time_clock.hpp +2 -2
  357. data/src/cxx_supportlib/vendor-modified/boost/date_time/parse_format_base.hpp +1 -1
  358. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +1 -1
  359. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +1 -1
  360. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +1 -1
  361. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +9 -1
  362. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
  363. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time.hpp +1 -1
  364. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +1 -1
  365. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +4 -4
  366. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +1 -4
  367. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_legacy_io.hpp +153 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_system.hpp +1 -1
  369. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +1 -1
  370. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +1 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +212 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +1 -1
  373. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_period.hpp +1 -1
  374. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +201 -0
  375. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_defs.hpp +1 -1
  376. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_convert.hpp +1 -2
  378. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +1 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +1 -3
  380. data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +3 -1
  381. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_clock.hpp +1 -1
  382. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_defs.hpp +1 -1
  383. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +3 -1
  384. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +3 -3
  385. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_formatting_streams.hpp +1 -1
  386. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_iterator.hpp +1 -1
  387. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +1 -1
  388. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +6 -6
  389. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +2 -2
  390. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +99 -0
  392. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +98 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +396 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +1 -1
  395. data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +1 -1
  396. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +139 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +1 -6
  398. data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +3 -118
  399. data/src/cxx_supportlib/vendor-modified/boost/detail/fenv.hpp +30 -3
  400. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -283
  401. data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +9 -477
  402. data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +12 -82
  403. data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +0 -21
  404. data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +8 -107
  405. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -1
  406. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +8 -3
  407. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +7 -9
  408. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +2 -2
  409. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +16 -0
  410. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +11 -12
  411. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +37 -0
  412. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +12 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +12 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +12 -0
  415. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +12 -0
  416. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +12 -0
  417. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +12 -0
  418. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +12 -0
  419. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +12 -0
  420. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +12 -0
  421. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +12 -0
  422. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +12 -0
  423. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +6 -24
  424. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +1 -2
  425. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +35 -30
  426. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +45 -0
  427. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +26 -0
  428. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/float_functions.hpp +4 -4
  429. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/hash_float.hpp +22 -28
  430. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/limits.hpp +3 -2
  431. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/extensions.hpp +5 -66
  432. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash.hpp +77 -48
  433. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash_fwd.hpp +3 -7
  434. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +5 -1
  435. data/src/cxx_supportlib/vendor-modified/boost/get_pointer.hpp +28 -0
  436. data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +25 -24
  437. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +102 -0
  438. data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +23 -0
  439. data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +1 -6
  440. data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +47 -55
  441. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +655 -2197
  442. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set_hook.hpp +16 -22
  443. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +376 -1605
  444. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +329 -601
  445. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +982 -0
  446. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set_hook.hpp +17 -27
  447. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +2101 -0
  448. data/src/cxx_supportlib/vendor-modified/boost/intrusive/{detail/tree_algorithms.hpp → bstree_algorithms.hpp} +973 -684
  449. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +121 -66
  450. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +30 -28
  451. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +22 -15
  452. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algo_type.hpp +50 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +90 -0
  454. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +48 -61
  455. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +95 -0
  456. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/assert.hpp +6 -2
  457. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +19 -24
  458. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +184 -0
  459. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +104 -8
  460. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +2 -3
  461. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_end.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +69 -0
  463. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +235 -39
  464. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/empty_node_checker.hpp +44 -0
  465. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +48 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +88 -0
  467. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/function_detector.hpp +8 -4
  468. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +107 -95
  469. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/get_value_traits.hpp +222 -0
  470. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/has_member_function_callable_with.hpp +279 -296
  471. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +122 -85
  472. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +186 -0
  473. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +121 -0
  474. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/is_stateful_value_traits.hpp +9 -5
  475. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +155 -0
  476. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +99 -0
  477. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +133 -0
  478. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +14 -139
  479. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +295 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/minimal_less_equal_header.hpp +30 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/minimal_pair_header.hpp +30 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +160 -337
  483. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +105 -0
  484. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_holder.hpp +35 -0
  485. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +130 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +34 -11
  487. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/pointer_element.hpp +168 -0
  488. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +22 -19
  489. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +144 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +50 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +84 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +124 -0
  493. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +14 -117
  494. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/std_fwd.hpp +43 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +46 -0
  496. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +18 -20
  497. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +171 -0
  498. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +13 -133
  499. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +89 -0
  500. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/uncast.hpp +55 -0
  501. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +22 -6
  502. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +2006 -1615
  503. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +450 -229
  504. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +17 -2
  505. data/src/cxx_supportlib/vendor-modified/boost/intrusive/link_mode.hpp +21 -4
  506. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +253 -282
  507. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +17 -20
  508. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +21 -7
  509. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +94 -648
  510. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +374 -0
  511. data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +10 -4
  512. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +16 -8
  513. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +188 -0
  514. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +97 -44
  515. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +29 -4
  516. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +366 -1592
  517. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +297 -639
  518. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +619 -2187
  519. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +16 -22
  520. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +661 -2252
  521. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +468 -1493
  522. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +163 -594
  523. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +326 -307
  524. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +16 -21
  525. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +686 -2238
  526. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +425 -1575
  527. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +422 -703
  528. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +440 -1122
  529. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +158 -406
  530. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +558 -2257
  531. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +14 -2
  532. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +476 -1611
  533. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +36 -27
  534. data/src/cxx_supportlib/vendor-modified/boost/iterator.hpp +3 -42
  535. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +4 -13
  536. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +0 -1
  537. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +2 -5
  538. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +15 -22
  539. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +8 -4
  540. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +59 -64
  541. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +77 -50
  542. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +13 -22
  543. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +318 -212
  544. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +17 -49
  545. data/src/cxx_supportlib/vendor-modified/boost/iterator/{detail/minimum_category.hpp → minimum_category.hpp} +24 -45
  546. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +10 -5
  547. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +17 -18
  548. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +29 -2649
  549. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +101 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +498 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +787 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +194 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +197 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +58 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +46 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +294 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +40 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +212 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +24 -11
  560. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cpp_regex_traits.cpp +3 -3
  561. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +40 -40
  562. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +14 -17
  563. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +3 -3
  564. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_raw_buffer.cpp +3 -3
  565. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +2 -2
  566. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +8 -4
  567. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +24 -11
  568. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +11 -14
  569. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +3 -420
  570. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +2 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +3 -5
  572. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +0 -6
  573. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +173 -77
  574. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +83 -33
  575. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +11 -1
  576. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +42 -12
  577. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +196 -18
  578. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +52 -8
  579. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +111 -13
  580. data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +40 -8
  581. data/src/cxx_supportlib/vendor-modified/boost/math/tools/real_cast.hpp +3 -1
  582. data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +8 -0
  583. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +9 -5
  584. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +233 -0
  585. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +10 -3
  586. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +223 -54
  587. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +201 -0
  588. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +6 -10
  589. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_end.hpp +2 -10
  590. data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +661 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +73 -0
  592. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +468 -62
  593. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +120 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +206 -129
  595. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +30 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +14 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +1078 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +591 -0
  599. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +55 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +33 -19
  601. data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +237 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/move/move.hpp +9 -1
  603. data/src/cxx_supportlib/vendor-modified/boost/move/traits.hpp +30 -95
  604. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +871 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +53 -98
  606. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +317 -0
  607. data/src/cxx_supportlib/vendor-modified/boost/mpl/O1_size.hpp +3 -3
  608. data/src/cxx_supportlib/vendor-modified/boost/mpl/O1_size_fwd.hpp +3 -3
  609. data/src/cxx_supportlib/vendor-modified/boost/mpl/accumulate.hpp +3 -3
  610. data/src/cxx_supportlib/vendor-modified/boost/mpl/advance.hpp +3 -3
  611. data/src/cxx_supportlib/vendor-modified/boost/mpl/advance_fwd.hpp +3 -3
  612. data/src/cxx_supportlib/vendor-modified/boost/mpl/alias.hpp +3 -3
  613. data/src/cxx_supportlib/vendor-modified/boost/mpl/always.hpp +6 -7
  614. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +5 -5
  615. data/src/cxx_supportlib/vendor-modified/boost/mpl/apply.hpp +3 -3
  616. data/src/cxx_supportlib/vendor-modified/boost/mpl/apply_fwd.hpp +3 -3
  617. data/src/cxx_supportlib/vendor-modified/boost/mpl/apply_wrap.hpp +3 -3
  618. data/src/cxx_supportlib/vendor-modified/boost/mpl/arg.hpp +3 -3
  619. data/src/cxx_supportlib/vendor-modified/boost/mpl/arg_fwd.hpp +3 -3
  620. data/src/cxx_supportlib/vendor-modified/boost/mpl/arithmetic.hpp +3 -3
  621. data/src/cxx_supportlib/vendor-modified/boost/mpl/as_sequence.hpp +3 -3
  622. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +6 -5
  623. data/src/cxx_supportlib/vendor-modified/boost/mpl/at.hpp +3 -3
  624. data/src/cxx_supportlib/vendor-modified/boost/mpl/at_fwd.hpp +3 -3
  625. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/O1_size_impl.hpp +3 -3
  626. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/adl_barrier.hpp +3 -3
  627. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/advance_backward.hpp +3 -3
  628. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/advance_forward.hpp +3 -3
  629. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/apply_1st.hpp +3 -3
  630. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arg_typedef.hpp +3 -3
  631. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arithmetic_op.hpp +3 -3
  632. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arity.hpp +3 -3
  633. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arity_spec.hpp +3 -3
  634. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/at_impl.hpp +3 -3
  635. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/back_impl.hpp +3 -3
  636. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/basic_bind.hpp +3 -3
  637. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/begin_end_impl.hpp +3 -3
  638. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/clear_impl.hpp +3 -3
  639. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +3 -3
  640. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/comparison_op.hpp +3 -3
  641. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +3 -3
  642. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +3 -3
  643. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +1 -1
  644. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +3 -3
  645. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +3 -3
  646. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +3 -3
  647. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dependent_nttp.hpp +3 -3
  648. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp +3 -3
  649. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
  650. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/eti.hpp +3 -3
  651. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +3 -3
  652. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/gcc.hpp +3 -3
  653. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/gpu.hpp +35 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/has_apply.hpp +3 -3
  655. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/has_xxx.hpp +3 -3
  656. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +3 -3
  657. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/intel.hpp +3 -3
  658. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/lambda.hpp +3 -3
  659. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/msvc.hpp +3 -3
  660. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/msvc_typename.hpp +3 -3
  661. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/nttp.hpp +3 -3
  662. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +4 -3
  663. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +3 -3
  664. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/pp_counter.hpp +3 -3
  665. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +3 -3
  666. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/static_constant.hpp +3 -3
  667. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +3 -3
  668. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/typeof.hpp +3 -3
  669. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/use_preprocessed.hpp +3 -3
  670. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/workaround.hpp +3 -3
  671. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/contains_impl.hpp +3 -3
  672. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_args.hpp +3 -3
  673. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +3 -3
  674. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/empty_impl.hpp +3 -3
  675. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/erase_impl.hpp +3 -3
  676. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/erase_key_impl.hpp +3 -3
  677. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/filter_iter.hpp +3 -3
  678. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl.hpp +3 -3
  679. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
  680. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_op.hpp +3 -3
  681. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_pred.hpp +3 -3
  682. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/front_impl.hpp +3 -3
  683. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/full_lambda.hpp +3 -3
  684. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_apply.hpp +3 -3
  685. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_begin.hpp +3 -3
  686. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_key_impl.hpp +3 -3
  687. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +3 -3
  688. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_size.hpp +3 -3
  689. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_tag.hpp +3 -3
  690. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_type.hpp +3 -3
  691. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/include_preprocessed.hpp +3 -3
  692. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/insert_impl.hpp +3 -3
  693. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/insert_range_impl.hpp +22 -19
  694. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/inserter_algorithm.hpp +3 -3
  695. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +4 -4
  696. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/is_msvc_eti_arg.hpp +3 -3
  697. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_apply.hpp +3 -3
  698. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_fold_if_impl.hpp +3 -3
  699. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_fold_impl.hpp +3 -3
  700. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_push_front.hpp +3 -3
  701. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/joint_iter.hpp +3 -3
  702. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_arity_param.hpp +3 -3
  703. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_no_ctps.hpp +3 -3
  704. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_spec.hpp +3 -3
  705. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
  706. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/largest_int.hpp +3 -3
  707. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/logical_op.hpp +3 -3
  708. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_dtw.hpp +3 -3
  709. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_eti_base.hpp +3 -3
  710. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_is_class.hpp +3 -3
  711. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_never_true.hpp +3 -3
  712. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_type.hpp +3 -3
  713. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na.hpp +3 -3
  714. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +3 -3
  715. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_fwd.hpp +3 -3
  716. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_spec.hpp +3 -3
  717. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +3 -3
  718. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nttp_decl.hpp +3 -3
  719. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/numeric_cast_utils.hpp +3 -3
  720. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/numeric_op.hpp +3 -3
  721. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/order_impl.hpp +3 -3
  722. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/overload_names.hpp +3 -3
  723. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/partition_op.hpp +3 -3
  724. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/pop_back_impl.hpp +3 -3
  725. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/pop_front_impl.hpp +3 -3
  726. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/add.hpp +3 -3
  727. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/def_params_tail.hpp +3 -3
  728. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/default_params.hpp +3 -3
  729. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/enum.hpp +3 -3
  730. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/ext_params.hpp +3 -3
  731. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/filter_params.hpp +3 -3
  732. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/is_seq.hpp +3 -3
  733. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/params.hpp +3 -3
  734. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/partial_spec_params.hpp +3 -3
  735. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/range.hpp +11 -4
  736. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/repeat.hpp +3 -3
  737. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/sub.hpp +3 -3
  738. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/token_equal.hpp +3 -3
  739. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/tuple.hpp +3 -3
  740. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +3 -3
  741. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/push_back_impl.hpp +3 -3
  742. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/push_front_impl.hpp +3 -3
  743. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/O1_size.hpp +3 -3
  744. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/back.hpp +3 -3
  745. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/empty.hpp +3 -3
  746. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/front.hpp +3 -3
  747. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/iterator.hpp +3 -3
  748. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/size.hpp +3 -3
  749. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/tag.hpp +3 -3
  750. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/reverse_fold_impl.hpp +3 -3
  751. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/reverse_fold_impl_body.hpp +3 -3
  752. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/reverse_iter_fold_impl.hpp +3 -3
  753. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/sequence_wrapper.hpp +3 -3
  754. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/shift_op.hpp +3 -3
  755. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/single_element_iter.hpp +3 -3
  756. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +3 -3
  757. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/sort_impl.hpp +3 -3
  758. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +3 -3
  759. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity.hpp +3 -3
  760. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity_fwd.hpp +3 -3
  761. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test.hpp +3 -3
  762. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test/assert.hpp +3 -3
  763. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test/data.hpp +3 -3
  764. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test/test_case.hpp +3 -3
  765. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/traits_lambda_spec.hpp +3 -3
  766. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/transform_iter.hpp +3 -3
  767. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/type_wrapper.hpp +3 -3
  768. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/unwrap.hpp +7 -3
  769. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/value_wknd.hpp +3 -3
  770. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/yes_no.hpp +3 -3
  771. data/src/cxx_supportlib/vendor-modified/boost/mpl/back.hpp +3 -3
  772. data/src/cxx_supportlib/vendor-modified/boost/mpl/back_fwd.hpp +3 -3
  773. data/src/cxx_supportlib/vendor-modified/boost/mpl/back_inserter.hpp +3 -3
  774. data/src/cxx_supportlib/vendor-modified/boost/mpl/base.hpp +3 -3
  775. data/src/cxx_supportlib/vendor-modified/boost/mpl/begin.hpp +3 -3
  776. data/src/cxx_supportlib/vendor-modified/boost/mpl/begin_end.hpp +3 -3
  777. data/src/cxx_supportlib/vendor-modified/boost/mpl/begin_end_fwd.hpp +3 -3
  778. data/src/cxx_supportlib/vendor-modified/boost/mpl/bind.hpp +3 -3
  779. data/src/cxx_supportlib/vendor-modified/boost/mpl/bind_fwd.hpp +3 -3
  780. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +5 -5
  781. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +5 -5
  782. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitwise.hpp +3 -3
  783. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitxor.hpp +3 -3
  784. data/src/cxx_supportlib/vendor-modified/boost/mpl/bool.hpp +4 -4
  785. data/src/cxx_supportlib/vendor-modified/boost/mpl/bool_fwd.hpp +3 -3
  786. data/src/cxx_supportlib/vendor-modified/boost/mpl/clear.hpp +3 -3
  787. data/src/cxx_supportlib/vendor-modified/boost/mpl/clear_fwd.hpp +3 -3
  788. data/src/cxx_supportlib/vendor-modified/boost/mpl/comparison.hpp +3 -3
  789. data/src/cxx_supportlib/vendor-modified/boost/mpl/contains.hpp +3 -3
  790. data/src/cxx_supportlib/vendor-modified/boost/mpl/contains_fwd.hpp +3 -3
  791. data/src/cxx_supportlib/vendor-modified/boost/mpl/copy.hpp +3 -3
  792. data/src/cxx_supportlib/vendor-modified/boost/mpl/copy_if.hpp +3 -3
  793. data/src/cxx_supportlib/vendor-modified/boost/mpl/count.hpp +3 -3
  794. data/src/cxx_supportlib/vendor-modified/boost/mpl/count_fwd.hpp +3 -3
  795. data/src/cxx_supportlib/vendor-modified/boost/mpl/count_if.hpp +3 -3
  796. data/src/cxx_supportlib/vendor-modified/boost/mpl/deque.hpp +3 -3
  797. data/src/cxx_supportlib/vendor-modified/boost/mpl/deref.hpp +3 -3
  798. data/src/cxx_supportlib/vendor-modified/boost/mpl/distance.hpp +3 -3
  799. data/src/cxx_supportlib/vendor-modified/boost/mpl/distance_fwd.hpp +3 -3
  800. data/src/cxx_supportlib/vendor-modified/boost/mpl/divides.hpp +3 -3
  801. data/src/cxx_supportlib/vendor-modified/boost/mpl/empty.hpp +3 -3
  802. data/src/cxx_supportlib/vendor-modified/boost/mpl/empty_base.hpp +13 -9
  803. data/src/cxx_supportlib/vendor-modified/boost/mpl/empty_fwd.hpp +3 -3
  804. data/src/cxx_supportlib/vendor-modified/boost/mpl/empty_sequence.hpp +5 -4
  805. data/src/cxx_supportlib/vendor-modified/boost/mpl/end.hpp +3 -3
  806. data/src/cxx_supportlib/vendor-modified/boost/mpl/equal.hpp +3 -3
  807. data/src/cxx_supportlib/vendor-modified/boost/mpl/equal_to.hpp +3 -3
  808. data/src/cxx_supportlib/vendor-modified/boost/mpl/erase.hpp +3 -3
  809. data/src/cxx_supportlib/vendor-modified/boost/mpl/erase_fwd.hpp +3 -3
  810. data/src/cxx_supportlib/vendor-modified/boost/mpl/erase_key.hpp +3 -3
  811. data/src/cxx_supportlib/vendor-modified/boost/mpl/erase_key_fwd.hpp +3 -3
  812. data/src/cxx_supportlib/vendor-modified/boost/mpl/eval_if.hpp +6 -6
  813. data/src/cxx_supportlib/vendor-modified/boost/mpl/filter_view.hpp +3 -3
  814. data/src/cxx_supportlib/vendor-modified/boost/mpl/find.hpp +3 -3
  815. data/src/cxx_supportlib/vendor-modified/boost/mpl/find_if.hpp +3 -3
  816. data/src/cxx_supportlib/vendor-modified/boost/mpl/fold.hpp +3 -3
  817. data/src/cxx_supportlib/vendor-modified/boost/mpl/for_each.hpp +11 -4
  818. data/src/cxx_supportlib/vendor-modified/boost/mpl/front.hpp +3 -3
  819. data/src/cxx_supportlib/vendor-modified/boost/mpl/front_fwd.hpp +3 -3
  820. data/src/cxx_supportlib/vendor-modified/boost/mpl/front_inserter.hpp +3 -3
  821. data/src/cxx_supportlib/vendor-modified/boost/mpl/greater.hpp +3 -3
  822. data/src/cxx_supportlib/vendor-modified/boost/mpl/greater_equal.hpp +3 -3
  823. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_key.hpp +3 -3
  824. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_key_fwd.hpp +3 -3
  825. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +12 -5
  826. data/src/cxx_supportlib/vendor-modified/boost/mpl/identity.hpp +3 -3
  827. data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +3 -3
  828. data/src/cxx_supportlib/vendor-modified/boost/mpl/index_if.hpp +3 -3
  829. data/src/cxx_supportlib/vendor-modified/boost/mpl/index_of.hpp +3 -3
  830. data/src/cxx_supportlib/vendor-modified/boost/mpl/inherit.hpp +3 -3
  831. data/src/cxx_supportlib/vendor-modified/boost/mpl/inherit_linearly.hpp +3 -3
  832. data/src/cxx_supportlib/vendor-modified/boost/mpl/insert.hpp +3 -3
  833. data/src/cxx_supportlib/vendor-modified/boost/mpl/insert_fwd.hpp +3 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/mpl/insert_range.hpp +3 -3
  835. data/src/cxx_supportlib/vendor-modified/boost/mpl/insert_range_fwd.hpp +3 -3
  836. data/src/cxx_supportlib/vendor-modified/boost/mpl/inserter.hpp +3 -3
  837. data/src/cxx_supportlib/vendor-modified/boost/mpl/int.hpp +3 -3
  838. data/src/cxx_supportlib/vendor-modified/boost/mpl/int_fwd.hpp +3 -3
  839. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +3 -3
  840. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c_fwd.hpp +3 -3
  841. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c_tag.hpp +3 -3
  842. data/src/cxx_supportlib/vendor-modified/boost/mpl/is_placeholder.hpp +3 -3
  843. data/src/cxx_supportlib/vendor-modified/boost/mpl/is_sequence.hpp +3 -3
  844. data/src/cxx_supportlib/vendor-modified/boost/mpl/iter_fold.hpp +3 -3
  845. data/src/cxx_supportlib/vendor-modified/boost/mpl/iter_fold_if.hpp +3 -3
  846. data/src/cxx_supportlib/vendor-modified/boost/mpl/iterator_category.hpp +3 -3
  847. data/src/cxx_supportlib/vendor-modified/boost/mpl/iterator_range.hpp +3 -3
  848. data/src/cxx_supportlib/vendor-modified/boost/mpl/iterator_tags.hpp +3 -3
  849. data/src/cxx_supportlib/vendor-modified/boost/mpl/joint_view.hpp +3 -3
  850. data/src/cxx_supportlib/vendor-modified/boost/mpl/key_type.hpp +3 -3
  851. data/src/cxx_supportlib/vendor-modified/boost/mpl/key_type_fwd.hpp +3 -3
  852. data/src/cxx_supportlib/vendor-modified/boost/mpl/lambda.hpp +3 -3
  853. data/src/cxx_supportlib/vendor-modified/boost/mpl/lambda_fwd.hpp +3 -3
  854. data/src/cxx_supportlib/vendor-modified/boost/mpl/less.hpp +3 -3
  855. data/src/cxx_supportlib/vendor-modified/boost/mpl/less_equal.hpp +3 -3
  856. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/arity.hpp +3 -3
  857. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/list.hpp +3 -3
  858. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/map.hpp +3 -3
  859. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/set.hpp +3 -3
  860. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/unrolling.hpp +3 -3
  861. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/vector.hpp +3 -3
  862. data/src/cxx_supportlib/vendor-modified/boost/mpl/list.hpp +3 -3
  863. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/O1_size.hpp +3 -3
  864. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/begin_end.hpp +3 -3
  865. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/clear.hpp +3 -3
  866. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/empty.hpp +3 -3
  867. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/front.hpp +3 -3
  868. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/include_preprocessed.hpp +3 -3
  869. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/item.hpp +3 -3
  870. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/iterator.hpp +3 -3
  871. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/numbered.hpp +3 -3
  872. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/numbered_c.hpp +3 -3
  873. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/pop_front.hpp +3 -3
  874. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/push_back.hpp +3 -3
  875. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/push_front.hpp +3 -3
  876. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/size.hpp +3 -3
  877. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/tag.hpp +3 -3
  878. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list0.hpp +3 -3
  879. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list0_c.hpp +3 -3
  880. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list10.hpp +3 -3
  881. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list10_c.hpp +3 -3
  882. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list20.hpp +3 -3
  883. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list20_c.hpp +3 -3
  884. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list30.hpp +3 -3
  885. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list30_c.hpp +3 -3
  886. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list40.hpp +3 -3
  887. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list40_c.hpp +3 -3
  888. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list50.hpp +3 -3
  889. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list50_c.hpp +3 -3
  890. data/src/cxx_supportlib/vendor-modified/boost/mpl/list_c.hpp +3 -3
  891. data/src/cxx_supportlib/vendor-modified/boost/mpl/logical.hpp +3 -3
  892. data/src/cxx_supportlib/vendor-modified/boost/mpl/long.hpp +3 -3
  893. data/src/cxx_supportlib/vendor-modified/boost/mpl/long_fwd.hpp +3 -3
  894. data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +3 -3
  895. data/src/cxx_supportlib/vendor-modified/boost/mpl/map.hpp +3 -3
  896. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/at_impl.hpp +3 -3
  897. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/begin_end_impl.hpp +3 -3
  898. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/clear_impl.hpp +3 -3
  899. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/contains_impl.hpp +3 -3
  900. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/empty_impl.hpp +3 -3
  901. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/erase_impl.hpp +3 -3
  902. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/erase_key_impl.hpp +3 -3
  903. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/has_key_impl.hpp +3 -3
  904. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/include_preprocessed.hpp +3 -3
  905. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/insert_impl.hpp +3 -3
  906. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/insert_range_impl.hpp +41 -0
  907. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/item.hpp +6 -3
  908. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/iterator.hpp +3 -3
  909. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/key_type_impl.hpp +3 -3
  910. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/map0.hpp +3 -3
  911. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/numbered.hpp +3 -3
  912. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/size_impl.hpp +3 -3
  913. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/tag.hpp +3 -3
  914. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/value_type_impl.hpp +3 -3
  915. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map0.hpp +4 -3
  916. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map10.hpp +3 -3
  917. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map20.hpp +3 -3
  918. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map30.hpp +3 -3
  919. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map40.hpp +3 -3
  920. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map50.hpp +3 -3
  921. data/src/cxx_supportlib/vendor-modified/boost/mpl/math/fixed_c.hpp +3 -3
  922. data/src/cxx_supportlib/vendor-modified/boost/mpl/math/is_even.hpp +3 -3
  923. data/src/cxx_supportlib/vendor-modified/boost/mpl/math/rational_c.hpp +3 -3
  924. data/src/cxx_supportlib/vendor-modified/boost/mpl/max.hpp +3 -3
  925. data/src/cxx_supportlib/vendor-modified/boost/mpl/max_element.hpp +3 -3
  926. data/src/cxx_supportlib/vendor-modified/boost/mpl/min.hpp +3 -3
  927. data/src/cxx_supportlib/vendor-modified/boost/mpl/min_element.hpp +3 -3
  928. data/src/cxx_supportlib/vendor-modified/boost/mpl/min_max.hpp +3 -3
  929. data/src/cxx_supportlib/vendor-modified/boost/mpl/minus.hpp +3 -3
  930. data/src/cxx_supportlib/vendor-modified/boost/mpl/modulus.hpp +3 -3
  931. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiplies.hpp +3 -3
  932. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/count_impl.hpp +3 -3
  933. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/insert_impl.hpp +3 -3
  934. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/item.hpp +3 -3
  935. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/multiset0.hpp +3 -3
  936. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/tag.hpp +3 -3
  937. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/multiset0.hpp +3 -3
  938. data/src/cxx_supportlib/vendor-modified/boost/mpl/negate.hpp +3 -3
  939. data/src/cxx_supportlib/vendor-modified/boost/mpl/next.hpp +3 -3
  940. data/src/cxx_supportlib/vendor-modified/boost/mpl/next_prior.hpp +3 -3
  941. data/src/cxx_supportlib/vendor-modified/boost/mpl/not.hpp +3 -3
  942. data/src/cxx_supportlib/vendor-modified/boost/mpl/not_equal_to.hpp +3 -3
  943. data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +3 -3
  944. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +5 -5
  945. data/src/cxx_supportlib/vendor-modified/boost/mpl/order.hpp +3 -3
  946. data/src/cxx_supportlib/vendor-modified/boost/mpl/order_fwd.hpp +3 -3
  947. data/src/cxx_supportlib/vendor-modified/boost/mpl/pair.hpp +3 -3
  948. data/src/cxx_supportlib/vendor-modified/boost/mpl/pair_view.hpp +3 -3
  949. data/src/cxx_supportlib/vendor-modified/boost/mpl/partition.hpp +3 -3
  950. data/src/cxx_supportlib/vendor-modified/boost/mpl/placeholders.hpp +3 -3
  951. data/src/cxx_supportlib/vendor-modified/boost/mpl/plus.hpp +3 -3
  952. data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_back.hpp +3 -3
  953. data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_back_fwd.hpp +3 -3
  954. data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_front.hpp +3 -3
  955. data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_front_fwd.hpp +3 -3
  956. data/src/cxx_supportlib/vendor-modified/boost/mpl/print.hpp +7 -6
  957. data/src/cxx_supportlib/vendor-modified/boost/mpl/prior.hpp +3 -3
  958. data/src/cxx_supportlib/vendor-modified/boost/mpl/protect.hpp +3 -3
  959. data/src/cxx_supportlib/vendor-modified/boost/mpl/push_back.hpp +3 -3
  960. data/src/cxx_supportlib/vendor-modified/boost/mpl/push_back_fwd.hpp +3 -3
  961. data/src/cxx_supportlib/vendor-modified/boost/mpl/push_front.hpp +3 -3
  962. data/src/cxx_supportlib/vendor-modified/boost/mpl/push_front_fwd.hpp +3 -3
  963. data/src/cxx_supportlib/vendor-modified/boost/mpl/quote.hpp +3 -3
  964. data/src/cxx_supportlib/vendor-modified/boost/mpl/range_c.hpp +3 -3
  965. data/src/cxx_supportlib/vendor-modified/boost/mpl/remove.hpp +3 -3
  966. data/src/cxx_supportlib/vendor-modified/boost/mpl/remove_if.hpp +3 -3
  967. data/src/cxx_supportlib/vendor-modified/boost/mpl/replace.hpp +3 -3
  968. data/src/cxx_supportlib/vendor-modified/boost/mpl/replace_if.hpp +3 -3
  969. data/src/cxx_supportlib/vendor-modified/boost/mpl/reverse.hpp +3 -3
  970. data/src/cxx_supportlib/vendor-modified/boost/mpl/reverse_fold.hpp +3 -3
  971. data/src/cxx_supportlib/vendor-modified/boost/mpl/reverse_iter_fold.hpp +3 -3
  972. data/src/cxx_supportlib/vendor-modified/boost/mpl/same_as.hpp +3 -3
  973. data/src/cxx_supportlib/vendor-modified/boost/mpl/sequence_tag.hpp +3 -3
  974. data/src/cxx_supportlib/vendor-modified/boost/mpl/sequence_tag_fwd.hpp +3 -3
  975. data/src/cxx_supportlib/vendor-modified/boost/mpl/set.hpp +3 -3
  976. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/at_impl.hpp +3 -3
  977. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/begin_end_impl.hpp +3 -3
  978. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/clear_impl.hpp +3 -3
  979. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/empty_impl.hpp +3 -3
  980. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/erase_impl.hpp +3 -3
  981. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/erase_key_impl.hpp +3 -3
  982. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/has_key_impl.hpp +3 -3
  983. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/include_preprocessed.hpp +3 -3
  984. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/insert_impl.hpp +3 -3
  985. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/insert_range_impl.hpp +41 -0
  986. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/item.hpp +8 -6
  987. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/iterator.hpp +3 -3
  988. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/key_type_impl.hpp +3 -3
  989. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/numbered.hpp +3 -3
  990. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/numbered_c.hpp +3 -3
  991. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/set0.hpp +3 -3
  992. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/size_impl.hpp +3 -3
  993. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/tag.hpp +3 -3
  994. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/value_type_impl.hpp +3 -3
  995. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set0.hpp +4 -3
  996. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set0_c.hpp +3 -3
  997. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set10.hpp +3 -3
  998. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set10_c.hpp +3 -3
  999. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set20.hpp +3 -3
  1000. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set20_c.hpp +3 -3
  1001. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set30.hpp +3 -3
  1002. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set30_c.hpp +3 -3
  1003. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set40.hpp +3 -3
  1004. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set40_c.hpp +3 -3
  1005. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set50.hpp +3 -3
  1006. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set50_c.hpp +3 -3
  1007. data/src/cxx_supportlib/vendor-modified/boost/mpl/set_c.hpp +3 -3
  1008. data/src/cxx_supportlib/vendor-modified/boost/mpl/shift_left.hpp +3 -3
  1009. data/src/cxx_supportlib/vendor-modified/boost/mpl/shift_right.hpp +3 -3
  1010. data/src/cxx_supportlib/vendor-modified/boost/mpl/single_view.hpp +3 -3
  1011. data/src/cxx_supportlib/vendor-modified/boost/mpl/size.hpp +3 -3
  1012. data/src/cxx_supportlib/vendor-modified/boost/mpl/size_fwd.hpp +3 -3
  1013. data/src/cxx_supportlib/vendor-modified/boost/mpl/size_t.hpp +3 -3
  1014. data/src/cxx_supportlib/vendor-modified/boost/mpl/size_t_fwd.hpp +3 -3
  1015. data/src/cxx_supportlib/vendor-modified/boost/mpl/sizeof.hpp +3 -3
  1016. data/src/cxx_supportlib/vendor-modified/boost/mpl/sort.hpp +3 -3
  1017. data/src/cxx_supportlib/vendor-modified/boost/mpl/stable_partition.hpp +3 -3
  1018. data/src/cxx_supportlib/vendor-modified/boost/mpl/string.hpp +2 -2
  1019. data/src/cxx_supportlib/vendor-modified/boost/mpl/switch.hpp +3 -3
  1020. data/src/cxx_supportlib/vendor-modified/boost/mpl/tag.hpp +3 -3
  1021. data/src/cxx_supportlib/vendor-modified/boost/mpl/times.hpp +3 -3
  1022. data/src/cxx_supportlib/vendor-modified/boost/mpl/transform.hpp +3 -3
  1023. data/src/cxx_supportlib/vendor-modified/boost/mpl/transform_view.hpp +3 -3
  1024. data/src/cxx_supportlib/vendor-modified/boost/mpl/unique.hpp +3 -3
  1025. data/src/cxx_supportlib/vendor-modified/boost/mpl/unpack_args.hpp +3 -3
  1026. data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +3 -3
  1027. data/src/cxx_supportlib/vendor-modified/boost/mpl/value_type.hpp +3 -3
  1028. data/src/cxx_supportlib/vendor-modified/boost/mpl/value_type_fwd.hpp +3 -3
  1029. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector.hpp +3 -3
  1030. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/O1_size.hpp +3 -3
  1031. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +3 -3
  1032. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/back.hpp +3 -3
  1033. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/begin_end.hpp +3 -3
  1034. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/clear.hpp +3 -3
  1035. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/empty.hpp +3 -3
  1036. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/front.hpp +3 -3
  1037. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/include_preprocessed.hpp +3 -3
  1038. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/item.hpp +3 -3
  1039. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/iterator.hpp +3 -3
  1040. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/numbered.hpp +3 -3
  1041. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/numbered_c.hpp +3 -3
  1042. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/pop_back.hpp +3 -3
  1043. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/pop_front.hpp +3 -3
  1044. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/push_back.hpp +3 -3
  1045. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/push_front.hpp +3 -3
  1046. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/size.hpp +3 -3
  1047. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/tag.hpp +3 -3
  1048. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/vector0.hpp +3 -3
  1049. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector0.hpp +3 -3
  1050. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector0_c.hpp +3 -3
  1051. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector10.hpp +3 -3
  1052. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector10_c.hpp +3 -3
  1053. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector20.hpp +3 -3
  1054. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector20_c.hpp +3 -3
  1055. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector30.hpp +3 -3
  1056. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector30_c.hpp +3 -3
  1057. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector40.hpp +3 -3
  1058. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector40_c.hpp +3 -3
  1059. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector50.hpp +3 -3
  1060. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector50_c.hpp +3 -3
  1061. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector_c.hpp +3 -3
  1062. data/src/cxx_supportlib/vendor-modified/boost/mpl/void.hpp +3 -3
  1063. data/src/cxx_supportlib/vendor-modified/boost/mpl/void_fwd.hpp +3 -3
  1064. data/src/cxx_supportlib/vendor-modified/boost/mpl/zip_view.hpp +3 -3
  1065. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +118 -4
  1066. data/src/cxx_supportlib/vendor-modified/boost/noncopyable.hpp +12 -43
  1067. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +32 -1
  1068. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +18 -2
  1069. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +9 -37
  1070. data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +32 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +660 -84
  1072. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +3 -2
  1073. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +94 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +4 -27
  1075. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +2 -4
  1076. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +0 -84
  1077. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +1 -2
  1078. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +2 -2
  1079. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +0 -6
  1080. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +2 -28
  1081. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +0 -30
  1082. data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +5 -15
  1083. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +6 -107
  1084. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +2 -28
  1085. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +1 -1
  1086. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +12 -12
  1087. data/src/cxx_supportlib/vendor-modified/boost/predef.h +24 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +32 -0
  1089. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +59 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +70 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +46 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +65 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +49 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +82 -0
  1095. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +73 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +64 -0
  1097. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +72 -0
  1098. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +42 -0
  1099. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +56 -0
  1100. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +54 -0
  1101. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +67 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +43 -0
  1103. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +43 -0
  1104. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +38 -0
  1105. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +87 -0
  1106. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +50 -0
  1107. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +42 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +43 -0
  1109. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +63 -0
  1110. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +56 -0
  1111. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +61 -0
  1112. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +66 -0
  1113. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +56 -0
  1114. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +56 -0
  1115. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +56 -0
  1116. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +56 -0
  1117. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +57 -0
  1118. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +68 -0
  1119. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +53 -0
  1120. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +66 -0
  1121. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +61 -0
  1122. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +56 -0
  1123. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +72 -0
  1124. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +65 -0
  1125. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +56 -0
  1126. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +57 -0
  1127. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +53 -0
  1128. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +77 -0
  1129. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +53 -0
  1130. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +63 -0
  1131. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +56 -0
  1132. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +60 -0
  1133. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +66 -0
  1134. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +76 -0
  1135. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +53 -0
  1136. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +91 -0
  1137. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +56 -0
  1138. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/_cassert.h +17 -0
  1139. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/_exception.h +15 -0
  1140. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/comp_detected.h +10 -0
  1141. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +26 -0
  1142. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/os_detected.h +10 -0
  1143. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/platform_detected.h +10 -0
  1144. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/test.h +17 -0
  1145. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/test_def.h +71 -0
  1146. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware.h +16 -0
  1147. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +107 -0
  1148. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +57 -0
  1149. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +32 -0
  1150. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +69 -0
  1151. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +51 -0
  1152. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +123 -0
  1153. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +129 -0
  1154. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +87 -0
  1155. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +51 -0
  1156. data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +17 -0
  1157. data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +42 -0
  1158. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +53 -0
  1159. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +121 -0
  1160. data/src/cxx_supportlib/vendor-modified/boost/predef/library.h +16 -0
  1161. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c.h +20 -0
  1162. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/_prefix.h +13 -0
  1163. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +61 -0
  1164. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +47 -0
  1165. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +47 -0
  1166. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +56 -0
  1167. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +25 -0
  1168. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/_prefix.h +23 -0
  1169. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +46 -0
  1170. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +52 -0
  1171. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +47 -0
  1172. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +45 -0
  1173. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +53 -0
  1174. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +56 -0
  1175. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +51 -0
  1176. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +53 -0
  1177. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +59 -0
  1178. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +44 -0
  1179. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +89 -0
  1180. data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +33 -0
  1181. data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +66 -0
  1182. data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +46 -0
  1183. data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +45 -0
  1184. data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +45 -0
  1185. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +103 -0
  1186. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +48 -0
  1187. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +50 -0
  1188. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +60 -0
  1189. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +84 -0
  1190. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +171 -0
  1191. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +45 -0
  1192. data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +46 -0
  1193. data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +47 -0
  1194. data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +51 -0
  1195. data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +46 -0
  1196. data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +46 -0
  1197. data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +65 -0
  1198. data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +45 -0
  1199. data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +59 -0
  1200. data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +46 -0
  1201. data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +76 -0
  1202. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +52 -0
  1203. data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +51 -0
  1204. data/src/cxx_supportlib/vendor-modified/boost/predef/other.h +16 -0
  1205. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +204 -0
  1206. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +21 -0
  1207. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +69 -0
  1208. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +45 -0
  1209. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +43 -0
  1210. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +45 -0
  1211. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +43 -0
  1212. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +15 -0
  1213. data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +53 -0
  1214. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/dec.hpp +1 -0
  1215. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +55 -0
  1216. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/push_back.hpp +3 -1
  1217. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/push_front.hpp +3 -1
  1218. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +17 -3
  1219. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +16 -3
  1220. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +12 -1
  1221. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +11 -12
  1222. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +55 -0
  1223. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/empty.hpp +2 -0
  1224. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/identity.hpp +4 -0
  1225. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty.hpp +17 -4
  1226. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_or_1.hpp +2 -1
  1227. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +57 -0
  1228. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/library.hpp +1 -0
  1229. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +33 -1
  1230. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +27 -4
  1231. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation.hpp +2 -0
  1232. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/detail/is_begin_parens.hpp +48 -0
  1233. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/is_begin_parens.hpp +51 -0
  1234. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/remove_parens.hpp +39 -0
  1235. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +19 -1
  1236. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq.hpp +1 -0
  1237. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +10 -2
  1238. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +49 -0
  1239. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +57 -10
  1240. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +58 -10
  1241. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +18 -2
  1242. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +19 -3
  1243. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/size.hpp +1 -0
  1244. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/variadic_seq_to_seq.hpp +28 -0
  1245. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple.hpp +8 -1
  1246. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +28 -0
  1247. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/eat.hpp +10 -1
  1248. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +12 -2
  1249. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +37 -0
  1250. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +64 -0
  1251. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +65 -0
  1252. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +31 -0
  1253. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +32 -0
  1254. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +18 -3
  1255. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +64 -0
  1256. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +37 -0
  1257. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +4 -1
  1258. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_array.hpp +3 -1
  1259. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +3 -1
  1260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +6 -1
  1261. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +28 -0
  1262. data/src/cxx_supportlib/vendor-modified/boost/range/algorithm/equal.hpp +5 -3
  1263. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +1 -1
  1264. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +5 -13
  1265. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +35 -15
  1266. data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +9 -7
  1267. data/src/cxx_supportlib/vendor-modified/boost/range/const_iterator.hpp +39 -30
  1268. data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +4 -3
  1269. data/src/cxx_supportlib/vendor-modified/boost/range/detail/extract_optional_type.hpp +21 -25
  1270. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +66 -0
  1271. data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +11 -0
  1272. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +132 -0
  1273. data/src/cxx_supportlib/vendor-modified/boost/range/difference_type.hpp +20 -2
  1274. data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +1 -1
  1275. data/src/cxx_supportlib/vendor-modified/boost/range/empty.hpp +1 -1
  1276. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +5 -13
  1277. data/src/cxx_supportlib/vendor-modified/boost/range/functions.hpp +1 -1
  1278. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +83 -0
  1279. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +36 -34
  1280. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +481 -251
  1281. data/src/cxx_supportlib/vendor-modified/boost/range/mutable_iterator.hpp +41 -29
  1282. data/src/cxx_supportlib/vendor-modified/boost/range/range_fwd.hpp +63 -0
  1283. data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +1 -1
  1284. data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +1 -1
  1285. data/src/cxx_supportlib/vendor-modified/boost/range/reverse_iterator.hpp +5 -3
  1286. data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +30 -6
  1287. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +18 -12
  1288. data/src/cxx_supportlib/vendor-modified/boost/range/value_type.hpp +1 -5
  1289. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +4 -4
  1290. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +1 -1
  1291. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +1 -1
  1292. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +4 -4
  1293. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +1 -1
  1294. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +63 -3
  1295. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +25 -0
  1296. data/src/cxx_supportlib/vendor-modified/boost/ref.hpp +12 -184
  1297. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +51 -9
  1298. data/src/cxx_supportlib/vendor-modified/boost/regex/mfc.hpp +30 -34
  1299. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +2 -2
  1300. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +10 -7
  1301. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +11 -5
  1302. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +18 -19
  1303. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +25 -38
  1304. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +211 -14
  1305. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +161 -106
  1306. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +7 -7
  1307. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +9 -9
  1308. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +24 -21
  1309. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +3 -3
  1310. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -1
  1311. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +24 -19
  1312. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +1 -1
  1313. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +46 -20
  1314. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +38 -14
  1315. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +206 -31
  1316. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +122 -16
  1317. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +2 -2
  1318. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +1 -1
  1319. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +15 -15
  1320. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +1 -1
  1321. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +3 -3
  1322. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +1 -1
  1323. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +2 -2
  1324. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +4 -4
  1325. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +2 -2
  1326. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +5 -5
  1327. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +6 -15
  1328. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +10 -10
  1329. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +10 -4
  1330. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +5 -4
  1331. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +23 -3
  1332. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +75 -71
  1333. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +2 -2
  1334. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +6 -15
  1335. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +43 -41
  1336. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +103 -172
  1337. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_allocator.hpp +318 -0
  1338. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_count_impl.hpp +67 -0
  1339. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_traits.hpp +16 -9
  1340. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_utility.hpp +106 -70
  1341. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +36 -59
  1342. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +59 -0
  1343. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/{atomic_count_pthreads.hpp → atomic_count_pt.hpp} +5 -4
  1344. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +62 -0
  1345. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +60 -0
  1346. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +2 -1
  1347. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +116 -10
  1348. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -0
  1349. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +15 -1
  1350. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +140 -0
  1351. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +16 -15
  1352. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +137 -0
  1353. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +21 -4
  1354. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_disable_deprecated.hpp +40 -0
  1355. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_forward.hpp +13 -0
  1356. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_if_array.hpp +8 -5
  1357. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_nullptr_t.hpp +1 -1
  1358. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +10 -1
  1359. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +1 -0
  1360. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pool.hpp +2 -2
  1361. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +83 -0
  1362. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +30 -2
  1363. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +10 -0
  1364. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +12 -0
  1365. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +80 -169
  1366. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +121 -118
  1367. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +10 -0
  1368. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +8 -6
  1369. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +54 -12
  1370. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +4 -19
  1371. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +11 -6
  1372. data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +1 -0
  1373. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +467 -0
  1374. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +1 -2
  1375. data/src/cxx_supportlib/vendor-modified/boost/thread/barrier.hpp +222 -36
  1376. data/src/cxx_supportlib/vendor-modified/boost/thread/caller_context.hpp +59 -0
  1377. data/src/cxx_supportlib/vendor-modified/boost/thread/completion_latch.hpp +4 -11
  1378. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +209 -0
  1379. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +202 -0
  1380. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_views.hpp +165 -0
  1381. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +223 -0
  1382. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +223 -0
  1383. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +209 -0
  1384. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +202 -0
  1385. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +46 -0
  1386. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_views.hpp +155 -0
  1387. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +725 -0
  1388. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +327 -0
  1389. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +369 -0
  1390. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +335 -0
  1391. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +466 -0
  1392. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +45 -0
  1393. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/devector.hpp +102 -0
  1394. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +49 -0
  1395. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +35 -0
  1396. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory.hpp +61 -0
  1397. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +41 -0
  1398. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +35 -0
  1399. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +16 -0
  1400. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +41 -0
  1401. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +35 -0
  1402. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +35 -0
  1403. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +42 -0
  1404. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +28 -0
  1405. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +45 -0
  1406. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +49 -0
  1407. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +35 -0
  1408. data/src/cxx_supportlib/vendor-modified/boost/thread/cv_status.hpp +1 -1
  1409. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +32 -4
  1410. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/counter.hpp +17 -4
  1411. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/delete.hpp +2 -1
  1412. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/function_wrapper.hpp +93 -0
  1413. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +373 -120
  1414. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoker.hpp +762 -0
  1415. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/is_convertible.hpp +4 -3
  1416. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/memory.hpp +11 -119
  1417. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +116 -4
  1418. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +234 -0
  1419. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +41 -16
  1420. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_group.hpp +4 -3
  1421. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/variadic_footer.hpp +10 -0
  1422. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/variadic_header.hpp +19 -0
  1423. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptional_ptr.hpp +44 -0
  1424. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +4 -4
  1425. data/src/cxx_supportlib/vendor-modified/boost/thread/executor.hpp +15 -0
  1426. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +318 -0
  1427. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/priority_executor_base.hpp +77 -0
  1428. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/scheduled_executor_base.hpp +66 -0
  1429. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +148 -0
  1430. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +136 -0
  1431. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +213 -0
  1432. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +171 -0
  1433. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +205 -0
  1434. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +48 -0
  1435. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +271 -0
  1436. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +51 -0
  1437. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +216 -0
  1438. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +170 -0
  1439. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +157 -0
  1440. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +30 -0
  1441. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/config/inline_namespace.hpp +23 -0
  1442. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/exception_list.hpp +16 -0
  1443. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v1/exception_list.hpp +70 -0
  1444. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v1/inline_namespace.hpp +28 -0
  1445. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/inline_namespace.hpp +29 -0
  1446. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +316 -0
  1447. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/task_region.hpp +16 -0
  1448. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +2 -2
  1449. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +3327 -1705
  1450. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/future_error.hpp +98 -0
  1451. data/src/cxx_supportlib/vendor-modified/boost/thread/{future_error_code.hpp → futures/future_error_code.hpp} +7 -7
  1452. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/future_status.hpp +30 -0
  1453. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/is_future_type.hpp +21 -0
  1454. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/launch.hpp +31 -0
  1455. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_all.hpp +74 -0
  1456. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +161 -0
  1457. data/src/cxx_supportlib/vendor-modified/boost/thread/latch.hpp +43 -15
  1458. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_types.hpp +45 -41
  1459. data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_adapter.hpp +28 -28
  1460. data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp +1 -1
  1461. data/src/cxx_supportlib/vendor-modified/boost/thread/ostream_buffer.hpp +45 -0
  1462. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +2 -2
  1463. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +101 -56
  1464. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +141 -47
  1465. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +20 -13
  1466. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +4 -4
  1467. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +4 -4
  1468. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +11 -8
  1469. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +39 -10
  1470. data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +15 -11
  1471. data/src/cxx_supportlib/vendor-modified/boost/thread/shared_mutex.hpp +1 -0
  1472. data/src/cxx_supportlib/vendor-modified/boost/thread/sync_bounded_queue.hpp +2 -580
  1473. data/src/cxx_supportlib/vendor-modified/boost/thread/sync_queue.hpp +2 -502
  1474. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +78 -11
  1475. data/src/cxx_supportlib/vendor-modified/boost/thread/testable_mutex.hpp +4 -0
  1476. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_pool.hpp +15 -0
  1477. data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +8 -8
  1478. data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +202 -0
  1479. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +6 -6
  1480. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/thread.hpp +73 -1
  1481. data/src/cxx_supportlib/vendor-modified/boost/thread/with_lock_guard.hpp +234 -0
  1482. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +7 -5
  1483. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +3 -17
  1484. data/src/cxx_supportlib/vendor-modified/boost/token_iterator.hpp +14 -14
  1485. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +14 -5
  1486. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -24
  1487. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_const.hpp +9 -10
  1488. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_cv.hpp +2 -9
  1489. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_lvalue_reference.hpp +8 -7
  1490. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +6 -17
  1491. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +14 -62
  1492. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_rvalue_reference.hpp +5 -7
  1493. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_volatile.hpp +2 -9
  1494. data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +134 -9
  1495. data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +9 -18
  1496. data/src/cxx_supportlib/vendor-modified/boost/type_traits/{detail/wrap.hpp → alignment_traits.hpp} +7 -10
  1497. data/src/cxx_supportlib/vendor-modified/boost/type_traits/arithmetic_traits.hpp +20 -0
  1498. data/src/cxx_supportlib/vendor-modified/boost/type_traits/array_traits.hpp +15 -0
  1499. data/src/cxx_supportlib/vendor-modified/boost/type_traits/broken_compiler_spec.hpp +9 -105
  1500. data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +118 -131
  1501. data/src/cxx_supportlib/vendor-modified/boost/type_traits/conditional.hpp +20 -0
  1502. data/src/cxx_supportlib/vendor-modified/boost/type_traits/config.hpp +5 -60
  1503. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv.hpp +34 -0
  1504. data/src/cxx_supportlib/vendor-modified/boost/type_traits/decay.hpp +12 -13
  1505. data/src/cxx_supportlib/vendor-modified/boost/type_traits/declval.hpp +44 -0
  1506. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/bool_trait_def.hpp +9 -26
  1507. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/bool_trait_undef.hpp +2 -2
  1508. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +212 -0
  1509. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_type_impl.hpp +107 -0
  1510. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/composite_member_pointer_type.hpp +113 -0
  1511. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/composite_pointer_type.hpp +153 -0
  1512. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +72 -0
  1513. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +12 -19
  1514. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +12 -19
  1515. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +14 -19
  1516. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_and.hpp +7 -0
  1517. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_eq.hpp +7 -0
  1518. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_not.hpp +7 -0
  1519. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_or.hpp +7 -0
  1520. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +13 -57
  1521. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +13 -218
  1522. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +13 -107
  1523. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +15 -974
  1524. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/mp_defer.hpp +56 -0
  1525. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/template_arity_spec.hpp +6 -21
  1526. data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +138 -0
  1527. data/src/cxx_supportlib/vendor-modified/boost/type_traits/floating_point_promotion.hpp +20 -0
  1528. data/src/cxx_supportlib/vendor-modified/boost/type_traits/function_traits.hpp +0 -62
  1529. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_and.hpp +49 -0
  1530. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_and_assign.hpp +55 -0
  1531. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_or.hpp +49 -0
  1532. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_or_assign.hpp +55 -0
  1533. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_xor.hpp +49 -0
  1534. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_xor_assign.hpp +55 -0
  1535. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_complement.hpp +32 -0
  1536. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +31 -0
  1537. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_divides.hpp +40 -0
  1538. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_divides_assign.hpp +47 -0
  1539. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_equal_to.hpp +49 -0
  1540. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater.hpp +49 -0
  1541. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater_equal.hpp +49 -0
  1542. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_left_shift.hpp +19 -19
  1543. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_left_shift_assign.hpp +55 -0
  1544. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less.hpp +49 -0
  1545. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less_equal.hpp +49 -0
  1546. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_logical_and.hpp +40 -0
  1547. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_logical_not.hpp +32 -0
  1548. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_logical_or.hpp +40 -0
  1549. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +60 -0
  1550. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +65 -0
  1551. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_modulus.hpp +49 -0
  1552. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_modulus_assign.hpp +55 -0
  1553. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_multiplies.hpp +40 -0
  1554. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_multiplies_assign.hpp +47 -0
  1555. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_negate.hpp +25 -0
  1556. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_new_operator.hpp +147 -0
  1557. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_not_equal_to.hpp +49 -0
  1558. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_assign.hpp +57 -18
  1559. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_constructor.hpp +43 -24
  1560. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +52 -23
  1561. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +47 -0
  1562. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_operator.hpp +51 -0
  1563. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus.hpp +54 -0
  1564. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +66 -0
  1565. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +44 -0
  1566. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +44 -0
  1567. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +44 -0
  1568. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +44 -0
  1569. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_right_shift.hpp +19 -19
  1570. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_right_shift_assign.hpp +55 -0
  1571. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_assign.hpp +23 -29
  1572. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_constructor.hpp +31 -25
  1573. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_copy.hpp +34 -36
  1574. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_destructor.hpp +21 -22
  1575. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +40 -25
  1576. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +45 -25
  1577. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_unary_minus.hpp +25 -0
  1578. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_unary_plus.hpp +23 -0
  1579. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_virtual_destructor.hpp +26 -0
  1580. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +86 -33
  1581. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +181 -0
  1582. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +116 -41
  1583. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_abstract.hpp +6 -10
  1584. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_arithmetic.hpp +3 -32
  1585. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +12 -60
  1586. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +76 -0
  1587. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +9 -19
  1588. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_of.hpp +8 -20
  1589. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_of_tr1.hpp +37 -0
  1590. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_class.hpp +17 -43
  1591. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complex.hpp +24 -0
  1592. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +2 -24
  1593. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +8 -127
  1594. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +80 -0
  1595. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +94 -98
  1596. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +141 -0
  1597. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +187 -0
  1598. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +64 -0
  1599. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +60 -0
  1600. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +8 -117
  1601. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +19 -42
  1602. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +30 -0
  1603. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_float.hpp +2 -9
  1604. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +12 -9
  1605. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +9 -18
  1606. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +2 -21
  1607. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +43 -37
  1608. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +8 -76
  1609. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +18 -34
  1610. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_object_pointer.hpp +24 -0
  1611. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +8 -79
  1612. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +32 -35
  1613. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +43 -41
  1614. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_object.hpp +7 -32
  1615. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pod.hpp +14 -101
  1616. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +12 -127
  1617. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_polymorphic.hpp +122 -0
  1618. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_reference.hpp +6 -21
  1619. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -8
  1620. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +4 -66
  1621. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scalar.hpp +3 -31
  1622. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +83 -60
  1623. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_stateless.hpp +8 -23
  1624. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_union.hpp +6 -32
  1625. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +85 -57
  1626. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +105 -0
  1627. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_void.hpp +7 -19
  1628. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +8 -115
  1629. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_signed.hpp +35 -57
  1630. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_unsigned.hpp +34 -57
  1631. data/src/cxx_supportlib/vendor-modified/boost/type_traits/promote.hpp +20 -0
  1632. data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +86 -0
  1633. data/src/cxx_supportlib/vendor-modified/boost/type_traits/reference_traits.hpp +15 -0
  1634. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +35 -0
  1635. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_bounds.hpp +4 -31
  1636. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +8 -65
  1637. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +13 -57
  1638. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +35 -0
  1639. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +8 -23
  1640. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_reference.hpp +5 -21
  1641. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +7 -61
  1642. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_identity.hpp +22 -0
  1643. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +101 -239
  1644. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +100 -0
  1645. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +61 -0
  1646. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +34 -0
  1647. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +14 -0
  1648. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +118 -0
  1649. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +80 -0
  1650. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +121 -0
  1651. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +283 -0
  1652. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +38 -0
  1653. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +50 -0
  1654. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +135 -0
  1655. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +62 -0
  1656. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +32 -0
  1657. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +15 -0
  1658. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +15 -0
  1659. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +17 -0
  1660. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +27 -0
  1661. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +55 -0
  1662. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +18 -0
  1663. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +21 -0
  1664. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +58 -0
  1665. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +17 -0
  1666. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +40 -0
  1667. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +23 -0
  1668. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +17 -0
  1669. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +18 -0
  1670. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +17 -0
  1671. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +22 -0
  1672. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +32 -0
  1673. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +17 -0
  1674. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +17 -0
  1675. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +24 -0
  1676. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +15 -0
  1677. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +21 -0
  1678. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +17 -0
  1679. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +160 -0
  1680. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +149 -0
  1681. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +27 -0
  1682. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +37 -0
  1683. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +186 -0
  1684. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +29 -0
  1685. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +166 -0
  1686. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +321 -0
  1687. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +471 -0
  1688. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +621 -0
  1689. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +171 -0
  1690. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocate.hpp +42 -34
  1691. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/buckets.hpp +108 -56
  1692. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/equivalent.hpp +30 -24
  1693. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/extract_key.hpp +21 -16
  1694. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +3 -3
  1695. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/table.hpp +45 -33
  1696. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unique.hpp +21 -15
  1697. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/util.hpp +8 -2
  1698. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +11 -6
  1699. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +3 -3
  1700. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +11 -6
  1701. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +3 -3
  1702. data/src/cxx_supportlib/vendor-modified/boost/unordered_map.hpp +3 -2
  1703. data/src/cxx_supportlib/vendor-modified/boost/unordered_set.hpp +3 -2
  1704. data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +21 -0
  1705. data/src/cxx_supportlib/vendor-modified/boost/utility/addressof.hpp +11 -96
  1706. data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +171 -0
  1707. data/src/cxx_supportlib/vendor-modified/boost/utility/binary.hpp +708 -0
  1708. data/src/cxx_supportlib/vendor-modified/boost/utility/declval.hpp +5 -41
  1709. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +18 -5
  1710. data/src/cxx_supportlib/vendor-modified/boost/utility/empty_deleter.hpp +43 -0
  1711. data/src/cxx_supportlib/vendor-modified/boost/utility/enable_if.hpp +10 -112
  1712. data/src/cxx_supportlib/vendor-modified/boost/utility/explicit_operator_bool.hpp +17 -0
  1713. data/src/cxx_supportlib/vendor-modified/boost/utility/identity_type.hpp +46 -0
  1714. data/src/cxx_supportlib/vendor-modified/boost/utility/in_place_factory.hpp +2 -4
  1715. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +25 -9
  1716. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +536 -0
  1717. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref_fwd.hpp +37 -0
  1718. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +10 -48
  1719. data/src/cxx_supportlib/vendor-modified/boost/utility/typed_in_place_factory.hpp +77 -0
  1720. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +281 -0
  1721. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +6 -6
  1722. data/src/cxx_supportlib/vendor-modified/boost/visit_each.hpp +0 -2
  1723. data/src/cxx_supportlib/vendor-modified/modp_b64.cpp +3 -1
  1724. data/src/nginx_module/Configuration.c +157 -6
  1725. data/src/nginx_module/Configuration.h +3 -1
  1726. data/src/nginx_module/ContentHandler.c +2 -1
  1727. data/src/nginx_module/ngx_http_passenger_module.c +27 -46
  1728. data/src/nodejs_supportlib/phusion_passenger/log_express.js +1 -1
  1729. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  1730. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +102 -0
  1731. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +20 -3
  1732. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +36 -3
  1733. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -0
  1734. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +3 -1
  1735. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/LICENSE.md +1 -1
  1736. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core.rb +7 -0
  1737. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/api.rb +28 -0
  1738. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter/misc.rb +4 -0
  1739. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/spec_helper.rb +18 -0
  1740. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/transaction.rb +1 -10
  1741. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/version_data.rb +4 -4
  1742. metadata +609 -62
  1743. data/src/agent/UstRouter/DataStoreId.h +0 -184
  1744. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/output.0 +0 -15374
  1745. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/output.1 +0 -15374
  1746. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/output.2 +0 -15374
  1747. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/requests +0 -568
  1748. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/traces.0 +0 -3104
  1749. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/traces.1 +0 -3104
  1750. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/traces.2 +0 -699
  1751. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/base.hpp +0 -585
  1752. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas32strong.hpp +0 -885
  1753. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas32weak.hpp +0 -947
  1754. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas64strong.hpp +0 -443
  1755. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-alpha.hpp +0 -368
  1756. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-armv6plus.hpp +0 -252
  1757. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-cas.hpp +0 -157
  1758. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-ppc.hpp +0 -2850
  1759. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-sparcv9.hpp +0 -1259
  1760. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-x86.hpp +0 -1766
  1761. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/generic-cas.hpp +0 -206
  1762. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/linux-arm.hpp +0 -189
  1763. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type-classification.hpp +0 -45
  1764. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithms.hpp +0 -84
  1765. data/src/cxx_supportlib/vendor-modified/boost/container/detail/memory_util.hpp +0 -83
  1766. data/src/cxx_supportlib/vendor-modified/boost/container/detail/preprocessor.hpp +0 -232
  1767. data/src/cxx_supportlib/vendor-modified/boost/container/detail/utilities.hpp +0 -1141
  1768. data/src/cxx_supportlib/vendor-modified/boost/detail/is_incrementable.hpp +0 -134
  1769. data/src/cxx_supportlib/vendor-modified/boost/detail/is_xxx.hpp +0 -61
  1770. data/src/cxx_supportlib/vendor-modified/boost/detail/limits.hpp +0 -449
  1771. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/attribute_noreturn.hpp +0 -17
  1772. data/src/cxx_supportlib/vendor-modified/boost/indirect_reference.hpp +0 -43
  1773. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/clear_on_destructor_base.hpp +0 -36
  1774. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/memory_util.hpp +0 -288
  1775. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/preprocessor.hpp +0 -52
  1776. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/utilities.hpp +0 -858
  1777. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set_hook.hpp +0 -292
  1778. data/src/cxx_supportlib/vendor-modified/boost/libs/atomic/lockpool.cpp +0 -24
  1779. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/local_free_on_destruction.hpp +0 -40
  1780. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/timeconv.inl +0 -151
  1781. data/src/cxx_supportlib/vendor-modified/boost/math/common_factor_ct.hpp +0 -180
  1782. data/src/cxx_supportlib/vendor-modified/boost/math_fwd.hpp +0 -108
  1783. data/src/cxx_supportlib/vendor-modified/boost/parameter.hpp +0 -21
  1784. data/src/cxx_supportlib/vendor-modified/boost/pointee.hpp +0 -74
  1785. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/allocate_array_helper.hpp +0 -169
  1786. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_deleter.hpp +0 -124
  1787. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/make_array_helper.hpp +0 -157
  1788. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/async_func.hpp +0 -571
  1789. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_type_imp.hpp +0 -333
  1790. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/cv_traits_impl.hpp +0 -97
  1791. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/false_result.hpp +0 -28
  1792. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/size_t_trait_def.hpp +0 -60
  1793. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/size_t_trait_undef.hpp +0 -16
  1794. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/type_trait_def.hpp +0 -67
  1795. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/type_trait_undef.hpp +0 -19
  1796. data/src/cxx_supportlib/vendor-modified/boost/units/detail/utility.hpp +0 -104
@@ -1,252 +0,0 @@
1
- #ifndef BOOST_ATOMIC_DETAIL_GCC_ARMV6PLUS_HPP
2
- #define BOOST_ATOMIC_DETAIL_GCC_ARMV6PLUS_HPP
3
-
4
- // Distributed under the Boost Software License, Version 1.0.
5
- // See accompanying file LICENSE_1_0.txt or copy at
6
- // http://www.boost.org/LICENSE_1_0.txt)
7
- //
8
- // Copyright (c) 2009 Helge Bahmann
9
- // Copyright (c) 2009 Phil Endecott
10
- // Copyright (c) 2013 Tim Blechmann
11
- // ARM Code by Phil Endecott, based on other architectures.
12
-
13
- #include <cstddef>
14
- #include <boost/cstdint.hpp>
15
- #include <boost/atomic/detail/config.hpp>
16
-
17
- #ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE
18
- #pragma once
19
- #endif
20
-
21
- // From the ARM Architecture Reference Manual for architecture v6:
22
- //
23
- // LDREX{<cond>} <Rd>, [<Rn>]
24
- // <Rd> Specifies the destination register for the memory word addressed by <Rd>
25
- // <Rn> Specifies the register containing the address.
26
- //
27
- // STREX{<cond>} <Rd>, <Rm>, [<Rn>]
28
- // <Rd> Specifies the destination register for the returned status value.
29
- // 0 if the operation updates memory
30
- // 1 if the operation fails to update memory
31
- // <Rm> Specifies the register containing the word to be stored to memory.
32
- // <Rn> Specifies the register containing the address.
33
- // Rd must not be the same register as Rm or Rn.
34
- //
35
- // ARM v7 is like ARM v6 plus:
36
- // There are half-word and byte versions of the LDREX and STREX instructions,
37
- // LDREXH, LDREXB, STREXH and STREXB.
38
- // There are also double-word versions, LDREXD and STREXD.
39
- // (Actually it looks like these are available from version 6k onwards.)
40
- // FIXME these are not yet used; should be mostly a matter of copy-and-paste.
41
- // I think you can supply an immediate offset to the address.
42
- //
43
- // A memory barrier is effected using a "co-processor 15" instruction,
44
- // though a separate assembler mnemonic is available for it in v7.
45
-
46
- namespace boost {
47
- namespace atomics {
48
- namespace detail {
49
-
50
- // "Thumb 1" is a subset of the ARM instruction set that uses a 16-bit encoding. It
51
- // doesn't include all instructions and in particular it doesn't include the co-processor
52
- // instruction used for the memory barrier or the load-locked/store-conditional
53
- // instructions. So, if we're compiling in "Thumb 1" mode, we need to wrap all of our
54
- // asm blocks with code to temporarily change to ARM mode.
55
- //
56
- // You can only change between ARM and Thumb modes when branching using the bx instruction.
57
- // bx takes an address specified in a register. The least significant bit of the address
58
- // indicates the mode, so 1 is added to indicate that the destination code is Thumb.
59
- // A temporary register is needed for the address and is passed as an argument to these
60
- // macros. It must be one of the "low" registers accessible to Thumb code, specified
61
- // using the "l" attribute in the asm statement.
62
- //
63
- // Architecture v7 introduces "Thumb 2", which does include (almost?) all of the ARM
64
- // instruction set. So in v7 we don't need to change to ARM mode; we can write "universal
65
- // assembler" which will assemble to Thumb 2 or ARM code as appropriate. The only thing
66
- // we need to do to make this "universal" assembler mode work is to insert "IT" instructions
67
- // to annotate the conditional instructions. These are ignored in other modes (e.g. v6),
68
- // so they can always be present.
69
-
70
- #if defined(__thumb__) && !defined(__ARM_ARCH_7A__)
71
- // FIXME also other v7 variants.
72
- #define BOOST_ATOMIC_ARM_ASM_START(TMPREG) "adr " #TMPREG ", 1f\n" "bx " #TMPREG "\n" ".arm\n" ".align 4\n" "1: "
73
- #define BOOST_ATOMIC_ARM_ASM_END(TMPREG) "adr " #TMPREG ", 1f + 1\n" "bx " #TMPREG "\n" ".thumb\n" ".align 2\n" "1: "
74
-
75
- #else
76
- // The tmpreg is wasted in this case, which is non-optimal.
77
- #define BOOST_ATOMIC_ARM_ASM_START(TMPREG)
78
- #define BOOST_ATOMIC_ARM_ASM_END(TMPREG)
79
- #endif
80
-
81
- #if defined(__ARM_ARCH_7A__)
82
- // FIXME ditto.
83
- #define BOOST_ATOMIC_ARM_DMB "dmb\n"
84
- #else
85
- #define BOOST_ATOMIC_ARM_DMB "mcr\tp15, 0, r0, c7, c10, 5\n"
86
- #endif
87
-
88
- inline void
89
- arm_barrier(void)
90
- {
91
- int brtmp;
92
- __asm__ __volatile__ (
93
- BOOST_ATOMIC_ARM_ASM_START(%0)
94
- BOOST_ATOMIC_ARM_DMB
95
- BOOST_ATOMIC_ARM_ASM_END(%0)
96
- : "=&l" (brtmp) :: "memory"
97
- );
98
- }
99
-
100
- inline void
101
- platform_fence_before(memory_order order)
102
- {
103
- switch(order) {
104
- case memory_order_release:
105
- case memory_order_acq_rel:
106
- case memory_order_seq_cst:
107
- arm_barrier();
108
- case memory_order_consume:
109
- default:;
110
- }
111
- }
112
-
113
- inline void
114
- platform_fence_after(memory_order order)
115
- {
116
- switch(order) {
117
- case memory_order_acquire:
118
- case memory_order_acq_rel:
119
- case memory_order_seq_cst:
120
- arm_barrier();
121
- default:;
122
- }
123
- }
124
-
125
- inline void
126
- platform_fence_before_store(memory_order order)
127
- {
128
- platform_fence_before(order);
129
- }
130
-
131
- inline void
132
- platform_fence_after_store(memory_order order)
133
- {
134
- if (order == memory_order_seq_cst)
135
- arm_barrier();
136
- }
137
-
138
- inline void
139
- platform_fence_after_load(memory_order order)
140
- {
141
- platform_fence_after(order);
142
- }
143
-
144
- template<typename T>
145
- inline bool
146
- platform_cmpxchg32(T & expected, T desired, volatile T * ptr)
147
- {
148
- int success;
149
- int tmp;
150
- __asm__ (
151
- BOOST_ATOMIC_ARM_ASM_START(%2)
152
- "mov %1, #0\n" // success = 0
153
- "ldrex %0, %3\n" // expected' = *(&i)
154
- "teq %0, %4\n" // flags = expected'==expected
155
- "ittt eq\n"
156
- "strexeq %2, %5, %3\n" // if (flags.equal) *(&i) = desired, tmp = !OK
157
- "teqeq %2, #0\n" // if (flags.equal) flags = tmp==0
158
- "moveq %1, #1\n" // if (flags.equal) success = 1
159
- BOOST_ATOMIC_ARM_ASM_END(%2)
160
- : "=&r" (expected), // %0
161
- "=&r" (success), // %1
162
- "=&l" (tmp), // %2
163
- "+Q" (*ptr) // %3
164
- : "r" (expected), // %4
165
- "r" (desired) // %5
166
- : "cc"
167
- );
168
- return success;
169
- }
170
-
171
- }
172
- }
173
-
174
- #define BOOST_ATOMIC_THREAD_FENCE 2
175
- inline void
176
- atomic_thread_fence(memory_order order)
177
- {
178
- switch(order) {
179
- case memory_order_acquire:
180
- case memory_order_release:
181
- case memory_order_acq_rel:
182
- case memory_order_seq_cst:
183
- atomics::detail::arm_barrier();
184
- default:;
185
- }
186
- }
187
-
188
- #define BOOST_ATOMIC_SIGNAL_FENCE 2
189
- inline void
190
- atomic_signal_fence(memory_order)
191
- {
192
- __asm__ __volatile__ ("" ::: "memory");
193
- }
194
-
195
- class atomic_flag
196
- {
197
- private:
198
- atomic_flag(const atomic_flag &) /* = delete */ ;
199
- atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
200
- uint32_t v_;
201
- public:
202
- BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {}
203
-
204
- void
205
- clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
206
- {
207
- atomics::detail::platform_fence_before_store(order);
208
- const_cast<volatile uint32_t &>(v_) = 0;
209
- atomics::detail::platform_fence_after_store(order);
210
- }
211
-
212
- bool
213
- test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
214
- {
215
- atomics::detail::platform_fence_before(order);
216
- uint32_t expected = v_;
217
- do {
218
- if (expected == 1)
219
- break;
220
- } while (!atomics::detail::platform_cmpxchg32(expected, (uint32_t)1, &v_));
221
- atomics::detail::platform_fence_after(order);
222
- return expected;
223
- }
224
- };
225
- #define BOOST_ATOMIC_FLAG_LOCK_FREE 2
226
-
227
- }
228
-
229
- #undef BOOST_ATOMIC_ARM_ASM_START
230
- #undef BOOST_ATOMIC_ARM_ASM_END
231
-
232
- #include <boost/atomic/detail/base.hpp>
233
-
234
- #if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
235
-
236
- #define BOOST_ATOMIC_CHAR_LOCK_FREE 2
237
- #define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2
238
- #define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2
239
- #define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2
240
- #define BOOST_ATOMIC_SHORT_LOCK_FREE 2
241
- #define BOOST_ATOMIC_INT_LOCK_FREE 2
242
- #define BOOST_ATOMIC_LONG_LOCK_FREE 2
243
- #define BOOST_ATOMIC_LLONG_LOCK_FREE 0
244
- #define BOOST_ATOMIC_POINTER_LOCK_FREE 2
245
- #define BOOST_ATOMIC_BOOL_LOCK_FREE 2
246
-
247
- #include <boost/atomic/detail/cas32weak.hpp>
248
-
249
- #endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
250
-
251
- #endif
252
-
@@ -1,157 +0,0 @@
1
- // Copyright (c) 2011 Helge Bahmann
2
- // Copyright (c) 2013 Tim Blechmann
3
- //
4
- // Distributed under the Boost Software License, Version 1.0.
5
- // See accompanying file LICENSE_1_0.txt or copy at
6
- // http://www.boost.org/LICENSE_1_0.txt)
7
-
8
- // Use the gnu builtin __sync_val_compare_and_swap to build
9
- // atomic operations for 32 bit and smaller.
10
-
11
- #ifndef BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP
12
- #define BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP
13
-
14
- #include <cstddef>
15
- #include <boost/cstdint.hpp>
16
- #include <boost/atomic/detail/config.hpp>
17
-
18
- #ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE
19
- #pragma once
20
- #endif
21
-
22
- namespace boost {
23
-
24
- #define BOOST_ATOMIC_THREAD_FENCE 2
25
- inline void
26
- atomic_thread_fence(memory_order order)
27
- {
28
- switch(order) {
29
- case memory_order_relaxed:
30
- break;
31
- case memory_order_release:
32
- case memory_order_consume:
33
- case memory_order_acquire:
34
- case memory_order_acq_rel:
35
- case memory_order_seq_cst:
36
- __sync_synchronize();
37
- break;
38
- }
39
- }
40
-
41
- namespace atomics {
42
- namespace detail {
43
-
44
- inline void
45
- platform_fence_before(memory_order)
46
- {
47
- /* empty, as compare_and_swap is synchronizing already */
48
- }
49
-
50
- inline void
51
- platform_fence_after(memory_order)
52
- {
53
- /* empty, as compare_and_swap is synchronizing already */
54
- }
55
-
56
- inline void
57
- platform_fence_before_store(memory_order order)
58
- {
59
- switch(order) {
60
- case memory_order_relaxed:
61
- case memory_order_acquire:
62
- case memory_order_consume:
63
- break;
64
- case memory_order_release:
65
- case memory_order_acq_rel:
66
- case memory_order_seq_cst:
67
- __sync_synchronize();
68
- break;
69
- }
70
- }
71
-
72
- inline void
73
- platform_fence_after_store(memory_order order)
74
- {
75
- if (order == memory_order_seq_cst)
76
- __sync_synchronize();
77
- }
78
-
79
- inline void
80
- platform_fence_after_load(memory_order order)
81
- {
82
- switch(order) {
83
- case memory_order_relaxed:
84
- case memory_order_release:
85
- break;
86
- case memory_order_consume:
87
- case memory_order_acquire:
88
- case memory_order_acq_rel:
89
- case memory_order_seq_cst:
90
- __sync_synchronize();
91
- break;
92
- }
93
- }
94
-
95
- template<typename T>
96
- inline bool
97
- platform_cmpxchg32_strong(T & expected, T desired, volatile T * ptr)
98
- {
99
- T found = __sync_val_compare_and_swap(ptr, expected, desired);
100
- bool success = (found == expected);
101
- expected = found;
102
- return success;
103
- }
104
-
105
- class atomic_flag
106
- {
107
- private:
108
- atomic_flag(const atomic_flag &) /* = delete */ ;
109
- atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
110
- uint32_t v_;
111
- public:
112
- BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {}
113
-
114
- void
115
- clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
116
- {
117
- atomics::detail::platform_fence_before_store(order);
118
- const_cast<volatile uint32_t &>(v_) = 0;
119
- atomics::detail::platform_fence_after_store(order);
120
- }
121
-
122
- bool
123
- test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
124
- {
125
- atomics::detail::platform_fence_before(order);
126
- uint32_t expected = v_;
127
- do {
128
- if (expected == 1)
129
- break;
130
- } while (!atomics::detail::platform_cmpxchg32(expected, (uint32_t)1, &v_));
131
- atomics::detail::platform_fence_after(order);
132
- return expected;
133
- }
134
- };
135
- #define BOOST_ATOMIC_FLAG_LOCK_FREE 2
136
-
137
- }
138
- }
139
- }
140
-
141
- #include <boost/atomic/detail/base.hpp>
142
-
143
- #if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
144
-
145
- #define BOOST_ATOMIC_CHAR_LOCK_FREE 2
146
- #define BOOST_ATOMIC_SHORT_LOCK_FREE 2
147
- #define BOOST_ATOMIC_INT_LOCK_FREE 2
148
- #define BOOST_ATOMIC_LONG_LOCK_FREE (sizeof(long) <= 4 ? 2 : 0)
149
- #define BOOST_ATOMIC_LLONG_LOCK_FREE (sizeof(long long) <= 4 ? 2 : 0)
150
- #define BOOST_ATOMIC_POINTER_LOCK_FREE (sizeof(void *) <= 4 ? 2 : 0)
151
- #define BOOST_ATOMIC_BOOL_LOCK_FREE 2
152
-
153
- #include <boost/atomic/detail/cas32strong.hpp>
154
-
155
- #endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
156
-
157
- #endif
@@ -1,2850 +0,0 @@
1
- #ifndef BOOST_ATOMIC_DETAIL_GCC_PPC_HPP
2
- #define BOOST_ATOMIC_DETAIL_GCC_PPC_HPP
3
-
4
- // Copyright (c) 2009 Helge Bahmann
5
- // Copyright (c) 2013 Tim Blechmann
6
- //
7
- // Distributed under the Boost Software License, Version 1.0.
8
- // See accompanying file LICENSE_1_0.txt or copy at
9
- // http://www.boost.org/LICENSE_1_0.txt)
10
-
11
- #include <cstddef>
12
- #include <boost/cstdint.hpp>
13
- #include <boost/atomic/detail/config.hpp>
14
-
15
- #ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE
16
- #pragma once
17
- #endif
18
-
19
- /*
20
- Refer to: Motorola: "Programming Environments Manual for 32-Bit
21
- Implementations of the PowerPC Architecture", Appendix E:
22
- "Synchronization Programming Examples" for an explanation of what is
23
- going on here (can be found on the web at various places by the
24
- name "MPCFPE32B.pdf", Google is your friend...)
25
-
26
- Most of the atomic operations map to instructions in a relatively
27
- straight-forward fashion, but "load"s may at first glance appear
28
- a bit strange as they map to:
29
-
30
- lwz %rX, addr
31
- cmpw %rX, %rX
32
- bne- 1f
33
- 1:
34
-
35
- That is, the CPU is forced to perform a branch that "formally" depends
36
- on the value retrieved from memory. This scheme has an overhead of
37
- about 1-2 clock cycles per load, but it allows to map "acquire" to
38
- the "isync" instruction instead of "sync" uniformly and for all type
39
- of atomic operations. Since "isync" has a cost of about 15 clock
40
- cycles, while "sync" hast a cost of about 50 clock cycles, the small
41
- penalty to atomic loads more than compensates for this.
42
-
43
- Byte- and halfword-sized atomic values are realized by encoding the
44
- value to be represented into a word, performing sign/zero extension
45
- as appropriate. This means that after add/sub operations the value
46
- needs fixing up to accurately preserve the wrap-around semantic of
47
- the smaller type. (Nothing special needs to be done for the bit-wise
48
- and the "exchange type" operators as the compiler already sees to
49
- it that values carried in registers are extended appropriately and
50
- everything falls into place naturally).
51
-
52
- The register constraint "b" instructs gcc to use any register
53
- except r0; this is sometimes required because the encoding for
54
- r0 is used to signify "constant zero" in a number of instructions,
55
- making r0 unusable in this place. For simplicity this constraint
56
- is used everywhere since I am to lazy to look this up on a
57
- per-instruction basis, and ppc has enough registers for this not
58
- to pose a problem.
59
- */
60
-
61
- namespace boost {
62
- namespace atomics {
63
- namespace detail {
64
-
65
- inline void
66
- ppc_fence_before(memory_order order)
67
- {
68
- switch(order) {
69
- case memory_order_release:
70
- case memory_order_acq_rel:
71
- #if defined(__powerpc64__)
72
- __asm__ __volatile__ ("lwsync" ::: "memory");
73
- break;
74
- #endif
75
- case memory_order_seq_cst:
76
- __asm__ __volatile__ ("sync" ::: "memory");
77
- default:;
78
- }
79
- }
80
-
81
- inline void
82
- ppc_fence_after(memory_order order)
83
- {
84
- switch(order) {
85
- case memory_order_acquire:
86
- case memory_order_acq_rel:
87
- case memory_order_seq_cst:
88
- __asm__ __volatile__ ("isync");
89
- case memory_order_consume:
90
- __asm__ __volatile__ ("" ::: "memory");
91
- default:;
92
- }
93
- }
94
-
95
- inline void
96
- ppc_fence_after_store(memory_order order)
97
- {
98
- switch(order) {
99
- case memory_order_seq_cst:
100
- __asm__ __volatile__ ("sync");
101
- default:;
102
- }
103
- }
104
-
105
- }
106
- }
107
-
108
- class atomic_flag
109
- {
110
- private:
111
- atomic_flag(const atomic_flag &) /* = delete */ ;
112
- atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
113
- uint32_t v_;
114
- public:
115
- BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {}
116
-
117
- void
118
- clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
119
- {
120
- atomics::detail::ppc_fence_before(order);
121
- const_cast<volatile uint32_t &>(v_) = 0;
122
- atomics::detail::ppc_fence_after_store(order);
123
- }
124
-
125
- bool
126
- test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
127
- {
128
- uint32_t original;
129
- atomics::detail::ppc_fence_before(order);
130
- __asm__ (
131
- "1:\n"
132
- "lwarx %0,%y1\n"
133
- "stwcx. %2,%y1\n"
134
- "bne- 1b\n"
135
- : "=&b" (original), "+Z"(v_)
136
- : "b" (1)
137
- : "cr0"
138
- );
139
- atomics::detail::ppc_fence_after(order);
140
- return original;
141
- }
142
- };
143
-
144
- } /* namespace boost */
145
-
146
- #define BOOST_ATOMIC_FLAG_LOCK_FREE 2
147
-
148
- #include <boost/atomic/detail/base.hpp>
149
-
150
- #if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
151
-
152
- #define BOOST_ATOMIC_CHAR_LOCK_FREE 2
153
- #define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2
154
- #define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2
155
- #define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2
156
- #define BOOST_ATOMIC_SHORT_LOCK_FREE 2
157
- #define BOOST_ATOMIC_INT_LOCK_FREE 2
158
- #define BOOST_ATOMIC_LONG_LOCK_FREE 2
159
- #define BOOST_ATOMIC_POINTER_LOCK_FREE 2
160
- #if defined(__powerpc64__)
161
- #define BOOST_ATOMIC_LLONG_LOCK_FREE 2
162
- #else
163
- #define BOOST_ATOMIC_LLONG_LOCK_FREE 0
164
- #endif
165
- #define BOOST_ATOMIC_BOOL_LOCK_FREE 2
166
-
167
- /* Would like to move the slow-path of failed compare_exchange
168
- (that clears the "success" bit) out-of-line. gcc can in
169
- principle do that using ".subsection"/".previous", but Apple's
170
- binutils seemingly does not understand that. Therefore wrap
171
- the "clear" of the flag in a macro and let it remain
172
- in-line for Apple
173
- */
174
-
175
- #if !defined(__APPLE__)
176
-
177
- #define BOOST_ATOMIC_ASM_SLOWPATH_CLEAR \
178
- "9:\n" \
179
- ".subsection 2\n" \
180
- "2: addi %1,0,0\n" \
181
- "b 9b\n" \
182
- ".previous\n" \
183
-
184
- #else
185
-
186
- #define BOOST_ATOMIC_ASM_SLOWPATH_CLEAR \
187
- "b 9f\n" \
188
- "2: addi %1,0,0\n" \
189
- "9:\n" \
190
-
191
- #endif
192
-
193
- namespace boost {
194
- namespace atomics {
195
- namespace detail {
196
-
197
- /* integral types */
198
-
199
- template<typename T>
200
- class base_atomic<T, int, 1, true>
201
- {
202
- typedef base_atomic this_type;
203
- typedef T value_type;
204
- typedef int32_t storage_type;
205
- typedef T difference_type;
206
- public:
207
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
208
- base_atomic(void) {}
209
-
210
- void
211
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
212
- {
213
- ppc_fence_before(order);
214
- __asm__ (
215
- "stw %1, %0\n"
216
- : "+m"(v_)
217
- : "r" (v)
218
- );
219
- ppc_fence_after_store(order);
220
- }
221
-
222
- value_type
223
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
224
- {
225
- value_type v;
226
- __asm__ __volatile__ (
227
- "lwz %0, %1\n"
228
- "cmpw %0, %0\n"
229
- "bne- 1f\n"
230
- "1:\n"
231
- : "=&r" (v)
232
- : "m" (v_)
233
- );
234
- ppc_fence_after(order);
235
- return v;
236
- }
237
-
238
- value_type
239
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
240
- {
241
- value_type original;
242
- ppc_fence_before(order);
243
- __asm__ (
244
- "1:\n"
245
- "lwarx %0,%y1\n"
246
- "stwcx. %2,%y1\n"
247
- "bne- 1b\n"
248
- : "=&b" (original), "+Z"(v_)
249
- : "b" (v)
250
- : "cr0"
251
- );
252
- ppc_fence_after(order);
253
- return original;
254
- }
255
-
256
- bool
257
- compare_exchange_weak(
258
- value_type & expected,
259
- value_type desired,
260
- memory_order success_order,
261
- memory_order failure_order) volatile BOOST_NOEXCEPT
262
- {
263
- int success;
264
- ppc_fence_before(success_order);
265
- __asm__(
266
- "lwarx %0,%y2\n"
267
- "cmpw %0, %3\n"
268
- "bne- 2f\n"
269
- "stwcx. %4,%y2\n"
270
- "bne- 2f\n"
271
- "addi %1,0,1\n"
272
- "1:"
273
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
274
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
275
- : "b" (expected), "b" (desired)
276
- : "cr0"
277
- );
278
- if (success)
279
- ppc_fence_after(success_order);
280
- else
281
- ppc_fence_after(failure_order);
282
- return success;
283
- }
284
-
285
- bool
286
- compare_exchange_strong(
287
- value_type & expected,
288
- value_type desired,
289
- memory_order success_order,
290
- memory_order failure_order) volatile BOOST_NOEXCEPT
291
- {
292
- int success;
293
- ppc_fence_before(success_order);
294
- __asm__(
295
- "0: lwarx %0,%y2\n"
296
- "cmpw %0, %3\n"
297
- "bne- 2f\n"
298
- "stwcx. %4,%y2\n"
299
- "bne- 0b\n"
300
- "addi %1,0,1\n"
301
- "1:"
302
-
303
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
304
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
305
- : "b" (expected), "b" (desired)
306
- : "cr0"
307
- );
308
- if (success)
309
- ppc_fence_after(success_order);
310
- else
311
- ppc_fence_after(failure_order);
312
- return success;
313
- }
314
-
315
- value_type
316
- fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
317
- {
318
- value_type original, tmp;
319
- ppc_fence_before(order);
320
- __asm__ (
321
- "1:\n"
322
- "lwarx %0,%y2\n"
323
- "add %1,%0,%3\n"
324
- "extsb %1, %1\n"
325
- "stwcx. %1,%y2\n"
326
- "bne- 1b\n"
327
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
328
- : "b" (v)
329
- : "cc");
330
- ppc_fence_after(order);
331
- return original;
332
- }
333
-
334
- value_type
335
- fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
336
- {
337
- value_type original, tmp;
338
- ppc_fence_before(order);
339
- __asm__ (
340
- "1:\n"
341
- "lwarx %0,%y2\n"
342
- "sub %1,%0,%3\n"
343
- "extsb %1, %1\n"
344
- "stwcx. %1,%y2\n"
345
- "bne- 1b\n"
346
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
347
- : "b" (v)
348
- : "cc");
349
- ppc_fence_after(order);
350
- return original;
351
- }
352
-
353
- value_type
354
- fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
355
- {
356
- value_type original, tmp;
357
- ppc_fence_before(order);
358
- __asm__ (
359
- "1:\n"
360
- "lwarx %0,%y2\n"
361
- "and %1,%0,%3\n"
362
- "stwcx. %1,%y2\n"
363
- "bne- 1b\n"
364
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
365
- : "b" (v)
366
- : "cc");
367
- ppc_fence_after(order);
368
- return original;
369
- }
370
-
371
- value_type
372
- fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
373
- {
374
- value_type original, tmp;
375
- ppc_fence_before(order);
376
- __asm__ (
377
- "1:\n"
378
- "lwarx %0,%y2\n"
379
- "or %1,%0,%3\n"
380
- "stwcx. %1,%y2\n"
381
- "bne- 1b\n"
382
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
383
- : "b" (v)
384
- : "cc");
385
- ppc_fence_after(order);
386
- return original;
387
- }
388
-
389
- value_type
390
- fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
391
- {
392
- value_type original, tmp;
393
- ppc_fence_before(order);
394
- __asm__ (
395
- "1:\n"
396
- "lwarx %0,%y2\n"
397
- "xor %1,%0,%3\n"
398
- "stwcx. %1,%y2\n"
399
- "bne- 1b\n"
400
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
401
- : "b" (v)
402
- : "cc");
403
- ppc_fence_after(order);
404
- return original;
405
- }
406
-
407
- bool
408
- is_lock_free(void) const volatile BOOST_NOEXCEPT
409
- {
410
- return true;
411
- }
412
-
413
- BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
414
- private:
415
- base_atomic(const base_atomic &) /* = delete */ ;
416
- void operator=(const base_atomic &) /* = delete */ ;
417
- storage_type v_;
418
- };
419
-
420
- template<typename T>
421
- class base_atomic<T, int, 1, false>
422
- {
423
- typedef base_atomic this_type;
424
- typedef T value_type;
425
- typedef uint32_t storage_type;
426
- typedef T difference_type;
427
- public:
428
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
429
- base_atomic(void) {}
430
-
431
- void
432
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
433
- {
434
- ppc_fence_before(order);
435
- __asm__ (
436
- "stw %1, %0\n"
437
- : "+m"(v_)
438
- : "r" (v)
439
- );
440
- ppc_fence_after_store(order);
441
- }
442
-
443
- value_type
444
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
445
- {
446
- value_type v;
447
- __asm__ __volatile__ (
448
- "lwz %0, %1\n"
449
- "cmpw %0, %0\n"
450
- "bne- 1f\n"
451
- "1:\n"
452
- : "=&r" (v)
453
- : "m" (v_)
454
- );
455
- ppc_fence_after(order);
456
- return v;
457
- }
458
-
459
- value_type
460
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
461
- {
462
- value_type original;
463
- ppc_fence_before(order);
464
- __asm__ (
465
- "1:\n"
466
- "lwarx %0,%y1\n"
467
- "stwcx. %2,%y1\n"
468
- "bne- 1b\n"
469
- : "=&b" (original), "+Z"(v_)
470
- : "b" (v)
471
- : "cr0"
472
- );
473
- ppc_fence_after(order);
474
- return original;
475
- }
476
-
477
- bool
478
- compare_exchange_weak(
479
- value_type & expected,
480
- value_type desired,
481
- memory_order success_order,
482
- memory_order failure_order) volatile BOOST_NOEXCEPT
483
- {
484
- int success;
485
- ppc_fence_before(success_order);
486
- __asm__(
487
- "lwarx %0,%y2\n"
488
- "cmpw %0, %3\n"
489
- "bne- 2f\n"
490
- "stwcx. %4,%y2\n"
491
- "bne- 2f\n"
492
- "addi %1,0,1\n"
493
- "1:"
494
-
495
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
496
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
497
- : "b" (expected), "b" (desired)
498
- : "cr0"
499
- );
500
- if (success)
501
- ppc_fence_after(success_order);
502
- else
503
- ppc_fence_after(failure_order);
504
- return success;
505
- }
506
-
507
- bool
508
- compare_exchange_strong(
509
- value_type & expected,
510
- value_type desired,
511
- memory_order success_order,
512
- memory_order failure_order) volatile BOOST_NOEXCEPT
513
- {
514
- int success;
515
- ppc_fence_before(success_order);
516
- __asm__(
517
- "0: lwarx %0,%y2\n"
518
- "cmpw %0, %3\n"
519
- "bne- 2f\n"
520
- "stwcx. %4,%y2\n"
521
- "bne- 0b\n"
522
- "addi %1,0,1\n"
523
- "1:"
524
-
525
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
526
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
527
- : "b" (expected), "b" (desired)
528
- : "cr0"
529
- );
530
- if (success)
531
- ppc_fence_after(success_order);
532
- else
533
- ppc_fence_after(failure_order);
534
- return success;
535
- }
536
-
537
- value_type
538
- fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
539
- {
540
- value_type original, tmp;
541
- ppc_fence_before(order);
542
- __asm__ (
543
- "1:\n"
544
- "lwarx %0,%y2\n"
545
- "add %1,%0,%3\n"
546
- "rlwinm %1, %1, 0, 0xff\n"
547
- "stwcx. %1,%y2\n"
548
- "bne- 1b\n"
549
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
550
- : "b" (v)
551
- : "cc");
552
- ppc_fence_after(order);
553
- return original;
554
- }
555
-
556
- value_type
557
- fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
558
- {
559
- value_type original, tmp;
560
- ppc_fence_before(order);
561
- __asm__ (
562
- "1:\n"
563
- "lwarx %0,%y2\n"
564
- "sub %1,%0,%3\n"
565
- "rlwinm %1, %1, 0, 0xff\n"
566
- "stwcx. %1,%y2\n"
567
- "bne- 1b\n"
568
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
569
- : "b" (v)
570
- : "cc");
571
- ppc_fence_after(order);
572
- return original;
573
- }
574
-
575
- value_type
576
- fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
577
- {
578
- value_type original, tmp;
579
- ppc_fence_before(order);
580
- __asm__ (
581
- "1:\n"
582
- "lwarx %0,%y2\n"
583
- "and %1,%0,%3\n"
584
- "stwcx. %1,%y2\n"
585
- "bne- 1b\n"
586
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
587
- : "b" (v)
588
- : "cc");
589
- ppc_fence_after(order);
590
- return original;
591
- }
592
-
593
- value_type
594
- fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
595
- {
596
- value_type original, tmp;
597
- ppc_fence_before(order);
598
- __asm__ (
599
- "1:\n"
600
- "lwarx %0,%y2\n"
601
- "or %1,%0,%3\n"
602
- "stwcx. %1,%y2\n"
603
- "bne- 1b\n"
604
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
605
- : "b" (v)
606
- : "cc");
607
- ppc_fence_after(order);
608
- return original;
609
- }
610
-
611
- value_type
612
- fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
613
- {
614
- value_type original, tmp;
615
- ppc_fence_before(order);
616
- __asm__ (
617
- "1:\n"
618
- "lwarx %0,%y2\n"
619
- "xor %1,%0,%3\n"
620
- "stwcx. %1,%y2\n"
621
- "bne- 1b\n"
622
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
623
- : "b" (v)
624
- : "cc");
625
- ppc_fence_after(order);
626
- return original;
627
- }
628
-
629
- bool
630
- is_lock_free(void) const volatile BOOST_NOEXCEPT
631
- {
632
- return true;
633
- }
634
-
635
- BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
636
- private:
637
- base_atomic(const base_atomic &) /* = delete */ ;
638
- void operator=(const base_atomic &) /* = delete */ ;
639
- storage_type v_;
640
- };
641
-
642
- template<typename T>
643
- class base_atomic<T, int, 2, true>
644
- {
645
- typedef base_atomic this_type;
646
- typedef T value_type;
647
- typedef int32_t storage_type;
648
- typedef T difference_type;
649
- public:
650
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
651
- base_atomic(void) {}
652
-
653
- void
654
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
655
- {
656
- ppc_fence_before(order);
657
- __asm__ (
658
- "stw %1, %0\n"
659
- : "+m"(v_)
660
- : "r" (v)
661
- );
662
- ppc_fence_after_store(order);
663
- }
664
-
665
- value_type
666
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
667
- {
668
- value_type v;
669
- __asm__ __volatile__ (
670
- "lwz %0, %1\n"
671
- "cmpw %0, %0\n"
672
- "bne- 1f\n"
673
- "1:\n"
674
- : "=&r" (v)
675
- : "m" (v_)
676
- );
677
- ppc_fence_after(order);
678
- return v;
679
- }
680
-
681
- value_type
682
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
683
- {
684
- value_type original;
685
- ppc_fence_before(order);
686
- __asm__ (
687
- "1:\n"
688
- "lwarx %0,%y1\n"
689
- "stwcx. %2,%y1\n"
690
- "bne- 1b\n"
691
- : "=&b" (original), "+Z"(v_)
692
- : "b" (v)
693
- : "cr0"
694
- );
695
- ppc_fence_after(order);
696
- return original;
697
- }
698
-
699
- bool
700
- compare_exchange_weak(
701
- value_type & expected,
702
- value_type desired,
703
- memory_order success_order,
704
- memory_order failure_order) volatile BOOST_NOEXCEPT
705
- {
706
- int success;
707
- ppc_fence_before(success_order);
708
- __asm__(
709
- "lwarx %0,%y2\n"
710
- "cmpw %0, %3\n"
711
- "bne- 2f\n"
712
- "stwcx. %4,%y2\n"
713
- "bne- 2f\n"
714
- "addi %1,0,1\n"
715
- "1:"
716
-
717
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
718
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
719
- : "b" (expected), "b" (desired)
720
- : "cr0"
721
- );
722
- if (success)
723
- ppc_fence_after(success_order);
724
- else
725
- ppc_fence_after(failure_order);
726
- return success;
727
- }
728
-
729
- bool
730
- compare_exchange_strong(
731
- value_type & expected,
732
- value_type desired,
733
- memory_order success_order,
734
- memory_order failure_order) volatile BOOST_NOEXCEPT
735
- {
736
- int success;
737
- ppc_fence_before(success_order);
738
- __asm__(
739
- "0: lwarx %0,%y2\n"
740
- "cmpw %0, %3\n"
741
- "bne- 2f\n"
742
- "stwcx. %4,%y2\n"
743
- "bne- 0b\n"
744
- "addi %1,0,1\n"
745
- "1:"
746
-
747
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
748
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
749
- : "b" (expected), "b" (desired)
750
- : "cr0"
751
- );
752
- if (success)
753
- ppc_fence_after(success_order);
754
- else
755
- ppc_fence_after(failure_order);
756
- return success;
757
- }
758
-
759
- value_type
760
- fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
761
- {
762
- value_type original, tmp;
763
- ppc_fence_before(order);
764
- __asm__ (
765
- "1:\n"
766
- "lwarx %0,%y2\n"
767
- "add %1,%0,%3\n"
768
- "extsh %1, %1\n"
769
- "stwcx. %1,%y2\n"
770
- "bne- 1b\n"
771
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
772
- : "b" (v)
773
- : "cc");
774
- ppc_fence_after(order);
775
- return original;
776
- }
777
-
778
- value_type
779
- fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
780
- {
781
- value_type original, tmp;
782
- ppc_fence_before(order);
783
- __asm__ (
784
- "1:\n"
785
- "lwarx %0,%y2\n"
786
- "sub %1,%0,%3\n"
787
- "extsh %1, %1\n"
788
- "stwcx. %1,%y2\n"
789
- "bne- 1b\n"
790
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
791
- : "b" (v)
792
- : "cc");
793
- ppc_fence_after(order);
794
- return original;
795
- }
796
-
797
- value_type
798
- fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
799
- {
800
- value_type original, tmp;
801
- ppc_fence_before(order);
802
- __asm__ (
803
- "1:\n"
804
- "lwarx %0,%y2\n"
805
- "and %1,%0,%3\n"
806
- "stwcx. %1,%y2\n"
807
- "bne- 1b\n"
808
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
809
- : "b" (v)
810
- : "cc");
811
- ppc_fence_after(order);
812
- return original;
813
- }
814
-
815
- value_type
816
- fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
817
- {
818
- value_type original, tmp;
819
- ppc_fence_before(order);
820
- __asm__ (
821
- "1:\n"
822
- "lwarx %0,%y2\n"
823
- "or %1,%0,%3\n"
824
- "stwcx. %1,%y2\n"
825
- "bne- 1b\n"
826
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
827
- : "b" (v)
828
- : "cc");
829
- ppc_fence_after(order);
830
- return original;
831
- }
832
-
833
- value_type
834
- fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
835
- {
836
- value_type original, tmp;
837
- ppc_fence_before(order);
838
- __asm__ (
839
- "1:\n"
840
- "lwarx %0,%y2\n"
841
- "xor %1,%0,%3\n"
842
- "stwcx. %1,%y2\n"
843
- "bne- 1b\n"
844
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
845
- : "b" (v)
846
- : "cc");
847
- ppc_fence_after(order);
848
- return original;
849
- }
850
-
851
- bool
852
- is_lock_free(void) const volatile BOOST_NOEXCEPT
853
- {
854
- return true;
855
- }
856
-
857
- BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
858
- private:
859
- base_atomic(const base_atomic &) /* = delete */ ;
860
- void operator=(const base_atomic &) /* = delete */ ;
861
- storage_type v_;
862
- };
863
-
864
- template<typename T>
865
- class base_atomic<T, int, 2, false>
866
- {
867
- typedef base_atomic this_type;
868
- typedef T value_type;
869
- typedef uint32_t storage_type;
870
- typedef T difference_type;
871
- public:
872
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
873
- base_atomic(void) {}
874
-
875
- void
876
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
877
- {
878
- ppc_fence_before(order);
879
- __asm__ (
880
- "stw %1, %0\n"
881
- : "+m"(v_)
882
- : "r" (v)
883
- );
884
- ppc_fence_after_store(order);
885
- }
886
-
887
- value_type
888
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
889
- {
890
- value_type v;
891
- __asm__ __volatile__ (
892
- "lwz %0, %1\n"
893
- "cmpw %0, %0\n"
894
- "bne- 1f\n"
895
- "1:\n"
896
- : "=&r" (v)
897
- : "m" (v_)
898
- );
899
- ppc_fence_after(order);
900
- return v;
901
- }
902
-
903
- value_type
904
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
905
- {
906
- value_type original;
907
- ppc_fence_before(order);
908
- __asm__ (
909
- "1:\n"
910
- "lwarx %0,%y1\n"
911
- "stwcx. %2,%y1\n"
912
- "bne- 1b\n"
913
- : "=&b" (original), "+Z"(v_)
914
- : "b" (v)
915
- : "cr0"
916
- );
917
- ppc_fence_after(order);
918
- return original;
919
- }
920
-
921
- bool
922
- compare_exchange_weak(
923
- value_type & expected,
924
- value_type desired,
925
- memory_order success_order,
926
- memory_order failure_order) volatile BOOST_NOEXCEPT
927
- {
928
- int success;
929
- ppc_fence_before(success_order);
930
- __asm__(
931
- "lwarx %0,%y2\n"
932
- "cmpw %0, %3\n"
933
- "bne- 2f\n"
934
- "stwcx. %4,%y2\n"
935
- "bne- 2f\n"
936
- "addi %1,0,1\n"
937
- "1:"
938
-
939
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
940
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
941
- : "b" (expected), "b" (desired)
942
- : "cr0"
943
- );
944
- if (success)
945
- ppc_fence_after(success_order);
946
- else
947
- ppc_fence_after(failure_order);
948
- return success;
949
- }
950
-
951
- bool
952
- compare_exchange_strong(
953
- value_type & expected,
954
- value_type desired,
955
- memory_order success_order,
956
- memory_order failure_order) volatile BOOST_NOEXCEPT
957
- {
958
- int success;
959
- ppc_fence_before(success_order);
960
- __asm__(
961
- "0: lwarx %0,%y2\n"
962
- "cmpw %0, %3\n"
963
- "bne- 2f\n"
964
- "stwcx. %4,%y2\n"
965
- "bne- 0b\n"
966
- "addi %1,0,1\n"
967
- "1:"
968
-
969
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
970
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
971
- : "b" (expected), "b" (desired)
972
- : "cr0"
973
- );
974
- if (success)
975
- ppc_fence_after(success_order);
976
- else
977
- ppc_fence_after(failure_order);
978
- return success;
979
- }
980
-
981
- value_type
982
- fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
983
- {
984
- value_type original, tmp;
985
- ppc_fence_before(order);
986
- __asm__ (
987
- "1:\n"
988
- "lwarx %0,%y2\n"
989
- "add %1,%0,%3\n"
990
- "rlwinm %1, %1, 0, 0xffff\n"
991
- "stwcx. %1,%y2\n"
992
- "bne- 1b\n"
993
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
994
- : "b" (v)
995
- : "cc");
996
- ppc_fence_after(order);
997
- return original;
998
- }
999
-
1000
- value_type
1001
- fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1002
- {
1003
- value_type original, tmp;
1004
- ppc_fence_before(order);
1005
- __asm__ (
1006
- "1:\n"
1007
- "lwarx %0,%y2\n"
1008
- "sub %1,%0,%3\n"
1009
- "rlwinm %1, %1, 0, 0xffff\n"
1010
- "stwcx. %1,%y2\n"
1011
- "bne- 1b\n"
1012
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1013
- : "b" (v)
1014
- : "cc");
1015
- ppc_fence_after(order);
1016
- return original;
1017
- }
1018
-
1019
- value_type
1020
- fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1021
- {
1022
- value_type original, tmp;
1023
- ppc_fence_before(order);
1024
- __asm__ (
1025
- "1:\n"
1026
- "lwarx %0,%y2\n"
1027
- "and %1,%0,%3\n"
1028
- "stwcx. %1,%y2\n"
1029
- "bne- 1b\n"
1030
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1031
- : "b" (v)
1032
- : "cc");
1033
- ppc_fence_after(order);
1034
- return original;
1035
- }
1036
-
1037
- value_type
1038
- fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1039
- {
1040
- value_type original, tmp;
1041
- ppc_fence_before(order);
1042
- __asm__ (
1043
- "1:\n"
1044
- "lwarx %0,%y2\n"
1045
- "or %1,%0,%3\n"
1046
- "stwcx. %1,%y2\n"
1047
- "bne- 1b\n"
1048
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1049
- : "b" (v)
1050
- : "cc");
1051
- ppc_fence_after(order);
1052
- return original;
1053
- }
1054
-
1055
- value_type
1056
- fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1057
- {
1058
- value_type original, tmp;
1059
- ppc_fence_before(order);
1060
- __asm__ (
1061
- "1:\n"
1062
- "lwarx %0,%y2\n"
1063
- "xor %1,%0,%3\n"
1064
- "stwcx. %1,%y2\n"
1065
- "bne- 1b\n"
1066
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1067
- : "b" (v)
1068
- : "cc");
1069
- ppc_fence_after(order);
1070
- return original;
1071
- }
1072
-
1073
- bool
1074
- is_lock_free(void) const volatile BOOST_NOEXCEPT
1075
- {
1076
- return true;
1077
- }
1078
-
1079
- BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
1080
- private:
1081
- base_atomic(const base_atomic &) /* = delete */ ;
1082
- void operator=(const base_atomic &) /* = delete */ ;
1083
- storage_type v_;
1084
- };
1085
-
1086
- template<typename T, bool Sign>
1087
- class base_atomic<T, int, 4, Sign>
1088
- {
1089
- typedef base_atomic this_type;
1090
- typedef T value_type;
1091
- typedef T difference_type;
1092
- public:
1093
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
1094
- base_atomic(void) {}
1095
-
1096
- void
1097
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1098
- {
1099
- ppc_fence_before(order);
1100
- const_cast<volatile value_type &>(v_) = v;
1101
- ppc_fence_after_store(order);
1102
- }
1103
-
1104
- value_type
1105
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
1106
- {
1107
- value_type v = const_cast<const volatile value_type &>(v_);
1108
- __asm__ __volatile__ (
1109
- "cmpw %0, %0\n"
1110
- "bne- 1f\n"
1111
- "1:\n"
1112
- : "+b"(v)
1113
- :
1114
- : "cr0"
1115
- );
1116
- ppc_fence_after(order);
1117
- return v;
1118
- }
1119
-
1120
- value_type
1121
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1122
- {
1123
- value_type original;
1124
- ppc_fence_before(order);
1125
- __asm__ (
1126
- "1:\n"
1127
- "lwarx %0,%y1\n"
1128
- "stwcx. %2,%y1\n"
1129
- "bne- 1b\n"
1130
- : "=&b" (original), "+Z"(v_)
1131
- : "b" (v)
1132
- : "cr0"
1133
- );
1134
- ppc_fence_after(order);
1135
- return original;
1136
- }
1137
-
1138
- bool
1139
- compare_exchange_weak(
1140
- value_type & expected,
1141
- value_type desired,
1142
- memory_order success_order,
1143
- memory_order failure_order) volatile BOOST_NOEXCEPT
1144
- {
1145
- int success;
1146
- ppc_fence_before(success_order);
1147
- __asm__(
1148
- "lwarx %0,%y2\n"
1149
- "cmpw %0, %3\n"
1150
- "bne- 2f\n"
1151
- "stwcx. %4,%y2\n"
1152
- "bne- 2f\n"
1153
- "addi %1,0,1\n"
1154
- "1:"
1155
-
1156
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1157
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1158
- : "b" (expected), "b" (desired)
1159
- : "cr0"
1160
- );
1161
- if (success)
1162
- ppc_fence_after(success_order);
1163
- else
1164
- ppc_fence_after(failure_order);
1165
- return success;
1166
- }
1167
-
1168
- bool
1169
- compare_exchange_strong(
1170
- value_type & expected,
1171
- value_type desired,
1172
- memory_order success_order,
1173
- memory_order failure_order) volatile BOOST_NOEXCEPT
1174
- {
1175
- int success;
1176
- ppc_fence_before(success_order);
1177
- __asm__(
1178
- "0: lwarx %0,%y2\n"
1179
- "cmpw %0, %3\n"
1180
- "bne- 2f\n"
1181
- "stwcx. %4,%y2\n"
1182
- "bne- 0b\n"
1183
- "addi %1,0,1\n"
1184
- "1:"
1185
-
1186
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1187
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1188
- : "b" (expected), "b" (desired)
1189
- : "cr0"
1190
- );
1191
- if (success)
1192
- ppc_fence_after(success_order);
1193
- else
1194
- ppc_fence_after(failure_order);
1195
- return success;
1196
- }
1197
-
1198
- value_type
1199
- fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1200
- {
1201
- value_type original, tmp;
1202
- ppc_fence_before(order);
1203
- __asm__ (
1204
- "1:\n"
1205
- "lwarx %0,%y2\n"
1206
- "add %1,%0,%3\n"
1207
- "stwcx. %1,%y2\n"
1208
- "bne- 1b\n"
1209
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1210
- : "b" (v)
1211
- : "cc");
1212
- ppc_fence_after(order);
1213
- return original;
1214
- }
1215
-
1216
- value_type
1217
- fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1218
- {
1219
- value_type original, tmp;
1220
- ppc_fence_before(order);
1221
- __asm__ (
1222
- "1:\n"
1223
- "lwarx %0,%y2\n"
1224
- "sub %1,%0,%3\n"
1225
- "stwcx. %1,%y2\n"
1226
- "bne- 1b\n"
1227
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1228
- : "b" (v)
1229
- : "cc");
1230
- ppc_fence_after(order);
1231
- return original;
1232
- }
1233
-
1234
- value_type
1235
- fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1236
- {
1237
- value_type original, tmp;
1238
- ppc_fence_before(order);
1239
- __asm__ (
1240
- "1:\n"
1241
- "lwarx %0,%y2\n"
1242
- "and %1,%0,%3\n"
1243
- "stwcx. %1,%y2\n"
1244
- "bne- 1b\n"
1245
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1246
- : "b" (v)
1247
- : "cc");
1248
- ppc_fence_after(order);
1249
- return original;
1250
- }
1251
-
1252
- value_type
1253
- fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1254
- {
1255
- value_type original, tmp;
1256
- ppc_fence_before(order);
1257
- __asm__ (
1258
- "1:\n"
1259
- "lwarx %0,%y2\n"
1260
- "or %1,%0,%3\n"
1261
- "stwcx. %1,%y2\n"
1262
- "bne- 1b\n"
1263
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1264
- : "b" (v)
1265
- : "cc");
1266
- ppc_fence_after(order);
1267
- return original;
1268
- }
1269
-
1270
- value_type
1271
- fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1272
- {
1273
- value_type original, tmp;
1274
- ppc_fence_before(order);
1275
- __asm__ (
1276
- "1:\n"
1277
- "lwarx %0,%y2\n"
1278
- "xor %1,%0,%3\n"
1279
- "stwcx. %1,%y2\n"
1280
- "bne- 1b\n"
1281
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1282
- : "b" (v)
1283
- : "cc");
1284
- ppc_fence_after(order);
1285
- return original;
1286
- }
1287
-
1288
- bool
1289
- is_lock_free(void) const volatile BOOST_NOEXCEPT
1290
- {
1291
- return true;
1292
- }
1293
-
1294
- BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
1295
- private:
1296
- base_atomic(const base_atomic &) /* = delete */ ;
1297
- void operator=(const base_atomic &) /* = delete */ ;
1298
- value_type v_;
1299
- };
1300
-
1301
- #if defined(__powerpc64__)
1302
-
1303
- template<typename T, bool Sign>
1304
- class base_atomic<T, int, 8, Sign>
1305
- {
1306
- typedef base_atomic this_type;
1307
- typedef T value_type;
1308
- typedef T difference_type;
1309
- public:
1310
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
1311
- base_atomic(void) {}
1312
-
1313
- void
1314
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1315
- {
1316
- ppc_fence_before(order);
1317
- const_cast<volatile value_type &>(v_) = v;
1318
- ppc_fence_after_store(order);
1319
- }
1320
-
1321
- value_type
1322
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
1323
- {
1324
- value_type v = const_cast<const volatile value_type &>(v_);
1325
- __asm__ __volatile__ (
1326
- "cmpd %0, %0\n"
1327
- "bne- 1f\n"
1328
- "1:\n"
1329
- : "+b"(v)
1330
- :
1331
- : "cr0"
1332
- );
1333
- ppc_fence_after(order);
1334
- return v;
1335
- }
1336
-
1337
- value_type
1338
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1339
- {
1340
- value_type original;
1341
- ppc_fence_before(order);
1342
- __asm__ (
1343
- "1:\n"
1344
- "ldarx %0,%y1\n"
1345
- "stdcx. %2,%y1\n"
1346
- "bne- 1b\n"
1347
- : "=&b" (original), "+Z"(v_)
1348
- : "b" (v)
1349
- : "cr0"
1350
- );
1351
- ppc_fence_after(order);
1352
- return original;
1353
- }
1354
-
1355
- bool
1356
- compare_exchange_weak(
1357
- value_type & expected,
1358
- value_type desired,
1359
- memory_order success_order,
1360
- memory_order failure_order) volatile BOOST_NOEXCEPT
1361
- {
1362
- int success;
1363
- ppc_fence_before(success_order);
1364
- __asm__(
1365
- "ldarx %0,%y2\n"
1366
- "cmpd %0, %3\n"
1367
- "bne- 2f\n"
1368
- "stdcx. %4,%y2\n"
1369
- "bne- 2f\n"
1370
- "addi %1,0,1\n"
1371
- "1:"
1372
-
1373
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1374
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1375
- : "b" (expected), "b" (desired)
1376
- : "cr0"
1377
- );
1378
- if (success)
1379
- ppc_fence_after(success_order);
1380
- else
1381
- ppc_fence_after(failure_order);
1382
- return success;
1383
- }
1384
-
1385
- bool
1386
- compare_exchange_strong(
1387
- value_type & expected,
1388
- value_type desired,
1389
- memory_order success_order,
1390
- memory_order failure_order) volatile BOOST_NOEXCEPT
1391
- {
1392
- int success;
1393
- ppc_fence_before(success_order);
1394
- __asm__(
1395
- "0: ldarx %0,%y2\n"
1396
- "cmpd %0, %3\n"
1397
- "bne- 2f\n"
1398
- "stdcx. %4,%y2\n"
1399
- "bne- 0b\n"
1400
- "addi %1,0,1\n"
1401
- "1:"
1402
-
1403
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1404
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1405
- : "b" (expected), "b" (desired)
1406
- : "cr0"
1407
- );
1408
- if (success)
1409
- ppc_fence_after(success_order);
1410
- else
1411
- ppc_fence_after(failure_order);
1412
- return success;
1413
- }
1414
-
1415
- value_type
1416
- fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1417
- {
1418
- value_type original, tmp;
1419
- ppc_fence_before(order);
1420
- __asm__ (
1421
- "1:\n"
1422
- "ldarx %0,%y2\n"
1423
- "add %1,%0,%3\n"
1424
- "stdcx. %1,%y2\n"
1425
- "bne- 1b\n"
1426
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1427
- : "b" (v)
1428
- : "cc");
1429
- ppc_fence_after(order);
1430
- return original;
1431
- }
1432
-
1433
- value_type
1434
- fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1435
- {
1436
- value_type original, tmp;
1437
- ppc_fence_before(order);
1438
- __asm__ (
1439
- "1:\n"
1440
- "ldarx %0,%y2\n"
1441
- "sub %1,%0,%3\n"
1442
- "stdcx. %1,%y2\n"
1443
- "bne- 1b\n"
1444
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1445
- : "b" (v)
1446
- : "cc");
1447
- ppc_fence_after(order);
1448
- return original;
1449
- }
1450
-
1451
- value_type
1452
- fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1453
- {
1454
- value_type original, tmp;
1455
- ppc_fence_before(order);
1456
- __asm__ (
1457
- "1:\n"
1458
- "ldarx %0,%y2\n"
1459
- "and %1,%0,%3\n"
1460
- "stdcx. %1,%y2\n"
1461
- "bne- 1b\n"
1462
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1463
- : "b" (v)
1464
- : "cc");
1465
- ppc_fence_after(order);
1466
- return original;
1467
- }
1468
-
1469
- value_type
1470
- fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1471
- {
1472
- value_type original, tmp;
1473
- ppc_fence_before(order);
1474
- __asm__ (
1475
- "1:\n"
1476
- "ldarx %0,%y2\n"
1477
- "or %1,%0,%3\n"
1478
- "stdcx. %1,%y2\n"
1479
- "bne- 1b\n"
1480
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1481
- : "b" (v)
1482
- : "cc");
1483
- ppc_fence_after(order);
1484
- return original;
1485
- }
1486
-
1487
- value_type
1488
- fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1489
- {
1490
- value_type original, tmp;
1491
- ppc_fence_before(order);
1492
- __asm__ (
1493
- "1:\n"
1494
- "ldarx %0,%y2\n"
1495
- "xor %1,%0,%3\n"
1496
- "stdcx. %1,%y2\n"
1497
- "bne- 1b\n"
1498
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1499
- : "b" (v)
1500
- : "cc");
1501
- ppc_fence_after(order);
1502
- return original;
1503
- }
1504
-
1505
- bool
1506
- is_lock_free(void) const volatile BOOST_NOEXCEPT
1507
- {
1508
- return true;
1509
- }
1510
-
1511
- BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
1512
- private:
1513
- base_atomic(const base_atomic &) /* = delete */ ;
1514
- void operator=(const base_atomic &) /* = delete */ ;
1515
- value_type v_;
1516
- };
1517
-
1518
- #endif
1519
-
1520
- /* pointer types */
1521
-
1522
- #if !defined(__powerpc64__)
1523
-
1524
- template<bool Sign>
1525
- class base_atomic<void *, void *, 4, Sign>
1526
- {
1527
- typedef base_atomic this_type;
1528
- typedef ptrdiff_t difference_type;
1529
- typedef void * value_type;
1530
- public:
1531
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
1532
- base_atomic(void) {}
1533
-
1534
- void
1535
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1536
- {
1537
- ppc_fence_before(order);
1538
- __asm__ (
1539
- "stw %1, %0\n"
1540
- : "+m" (v_)
1541
- : "r" (v)
1542
- );
1543
- ppc_fence_after_store(order);
1544
- }
1545
-
1546
- value_type
1547
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
1548
- {
1549
- value_type v;
1550
- __asm__ (
1551
- "lwz %0, %1\n"
1552
- "cmpw %0, %0\n"
1553
- "bne- 1f\n"
1554
- "1:\n"
1555
- : "=r"(v)
1556
- : "m"(v_)
1557
- : "cr0"
1558
- );
1559
- ppc_fence_after(order);
1560
- return v;
1561
- }
1562
-
1563
- value_type
1564
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1565
- {
1566
- value_type original;
1567
- ppc_fence_before(order);
1568
- __asm__ (
1569
- "1:\n"
1570
- "lwarx %0,%y1\n"
1571
- "stwcx. %2,%y1\n"
1572
- "bne- 1b\n"
1573
- : "=&b" (original), "+Z"(v_)
1574
- : "b" (v)
1575
- : "cr0"
1576
- );
1577
- ppc_fence_after(order);
1578
- return original;
1579
- }
1580
-
1581
- bool
1582
- compare_exchange_weak(
1583
- value_type & expected,
1584
- value_type desired,
1585
- memory_order success_order,
1586
- memory_order failure_order) volatile BOOST_NOEXCEPT
1587
- {
1588
- int success;
1589
- ppc_fence_before(success_order);
1590
- __asm__(
1591
- "lwarx %0,%y2\n"
1592
- "cmpw %0, %3\n"
1593
- "bne- 2f\n"
1594
- "stwcx. %4,%y2\n"
1595
- "bne- 2f\n"
1596
- "addi %1,0,1\n"
1597
- "1:"
1598
-
1599
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1600
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1601
- : "b" (expected), "b" (desired)
1602
- : "cr0"
1603
- );
1604
- if (success)
1605
- ppc_fence_after(success_order);
1606
- else
1607
- ppc_fence_after(failure_order);
1608
- return success;
1609
- }
1610
-
1611
- bool
1612
- compare_exchange_strong(
1613
- value_type & expected,
1614
- value_type desired,
1615
- memory_order success_order,
1616
- memory_order failure_order) volatile BOOST_NOEXCEPT
1617
- {
1618
- int success;
1619
- ppc_fence_before(success_order);
1620
- __asm__(
1621
- "0: lwarx %0,%y2\n"
1622
- "cmpw %0, %3\n"
1623
- "bne- 2f\n"
1624
- "stwcx. %4,%y2\n"
1625
- "bne- 0b\n"
1626
- "addi %1,0,1\n"
1627
- "1:"
1628
-
1629
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1630
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1631
- : "b" (expected), "b" (desired)
1632
- : "cr0"
1633
- );
1634
- if (success)
1635
- ppc_fence_after(success_order);
1636
- else
1637
- ppc_fence_after(failure_order);
1638
- return success;
1639
- }
1640
-
1641
- bool
1642
- is_lock_free(void) const volatile BOOST_NOEXCEPT
1643
- {
1644
- return true;
1645
- }
1646
-
1647
- value_type
1648
- fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1649
- {
1650
- value_type original, tmp;
1651
- ppc_fence_before(order);
1652
- __asm__ (
1653
- "1:\n"
1654
- "lwarx %0,%y2\n"
1655
- "add %1,%0,%3\n"
1656
- "stwcx. %1,%y2\n"
1657
- "bne- 1b\n"
1658
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1659
- : "b" (v)
1660
- : "cc");
1661
- ppc_fence_after(order);
1662
- return original;
1663
- }
1664
-
1665
- value_type
1666
- fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1667
- {
1668
- value_type original, tmp;
1669
- ppc_fence_before(order);
1670
- __asm__ (
1671
- "1:\n"
1672
- "lwarx %0,%y2\n"
1673
- "sub %1,%0,%3\n"
1674
- "stwcx. %1,%y2\n"
1675
- "bne- 1b\n"
1676
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1677
- : "b" (v)
1678
- : "cc");
1679
- ppc_fence_after(order);
1680
- return original;
1681
- }
1682
-
1683
- BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS
1684
- private:
1685
- base_atomic(const base_atomic &) /* = delete */ ;
1686
- void operator=(const base_atomic &) /* = delete */ ;
1687
- value_type v_;
1688
- };
1689
-
1690
- template<typename T, bool Sign>
1691
- class base_atomic<T *, void *, 4, Sign>
1692
- {
1693
- typedef base_atomic this_type;
1694
- typedef T * value_type;
1695
- typedef ptrdiff_t difference_type;
1696
- public:
1697
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
1698
- base_atomic(void) {}
1699
-
1700
- void
1701
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1702
- {
1703
- ppc_fence_before(order);
1704
- __asm__ (
1705
- "stw %1, %0\n"
1706
- : "+m" (v_)
1707
- : "r" (v)
1708
- );
1709
- ppc_fence_after_store(order);
1710
- }
1711
-
1712
- value_type
1713
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
1714
- {
1715
- value_type v;
1716
- __asm__ (
1717
- "lwz %0, %1\n"
1718
- "cmpw %0, %0\n"
1719
- "bne- 1f\n"
1720
- "1:\n"
1721
- : "=r"(v)
1722
- : "m"(v_)
1723
- : "cr0"
1724
- );
1725
- ppc_fence_after(order);
1726
- return v;
1727
- }
1728
-
1729
- value_type
1730
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1731
- {
1732
- value_type original;
1733
- ppc_fence_before(order);
1734
- __asm__ (
1735
- "1:\n"
1736
- "lwarx %0,%y1\n"
1737
- "stwcx. %2,%y1\n"
1738
- "bne- 1b\n"
1739
- : "=&b" (original), "+Z"(v_)
1740
- : "b" (v)
1741
- : "cr0"
1742
- );
1743
- ppc_fence_after(order);
1744
- return original;
1745
- }
1746
-
1747
- bool
1748
- compare_exchange_weak(
1749
- value_type & expected,
1750
- value_type desired,
1751
- memory_order success_order,
1752
- memory_order failure_order) volatile BOOST_NOEXCEPT
1753
- {
1754
- int success;
1755
- ppc_fence_before(success_order);
1756
- __asm__(
1757
- "lwarx %0,%y2\n"
1758
- "cmpw %0, %3\n"
1759
- "bne- 2f\n"
1760
- "stwcx. %4,%y2\n"
1761
- "bne- 2f\n"
1762
- "addi %1,0,1\n"
1763
- "1:"
1764
-
1765
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1766
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1767
- : "b" (expected), "b" (desired)
1768
- : "cr0"
1769
- );
1770
- if (success)
1771
- ppc_fence_after(success_order);
1772
- else
1773
- ppc_fence_after(failure_order);
1774
- return success;
1775
- }
1776
-
1777
- bool
1778
- compare_exchange_strong(
1779
- value_type & expected,
1780
- value_type desired,
1781
- memory_order success_order,
1782
- memory_order failure_order) volatile BOOST_NOEXCEPT
1783
- {
1784
- int success;
1785
- ppc_fence_before(success_order);
1786
- __asm__(
1787
- "0: lwarx %0,%y2\n"
1788
- "cmpw %0, %3\n"
1789
- "bne- 2f\n"
1790
- "stwcx. %4,%y2\n"
1791
- "bne- 0b\n"
1792
- "addi %1,0,1\n"
1793
- "1:"
1794
-
1795
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1796
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1797
- : "b" (expected), "b" (desired)
1798
- : "cr0"
1799
- );
1800
- if (success)
1801
- ppc_fence_after(success_order);
1802
- else
1803
- ppc_fence_after(failure_order);
1804
- return success;
1805
- }
1806
-
1807
- value_type
1808
- fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1809
- {
1810
- v = v * sizeof(*v_);
1811
- value_type original, tmp;
1812
- ppc_fence_before(order);
1813
- __asm__ (
1814
- "1:\n"
1815
- "lwarx %0,%y2\n"
1816
- "add %1,%0,%3\n"
1817
- "stwcx. %1,%y2\n"
1818
- "bne- 1b\n"
1819
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1820
- : "b" (v)
1821
- : "cc");
1822
- ppc_fence_after(order);
1823
- return original;
1824
- }
1825
-
1826
- value_type
1827
- fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1828
- {
1829
- v = v * sizeof(*v_);
1830
- value_type original, tmp;
1831
- ppc_fence_before(order);
1832
- __asm__ (
1833
- "1:\n"
1834
- "lwarx %0,%y2\n"
1835
- "sub %1,%0,%3\n"
1836
- "stwcx. %1,%y2\n"
1837
- "bne- 1b\n"
1838
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1839
- : "b" (v)
1840
- : "cc");
1841
- ppc_fence_after(order);
1842
- return original;
1843
- }
1844
-
1845
- bool
1846
- is_lock_free(void) const volatile BOOST_NOEXCEPT
1847
- {
1848
- return true;
1849
- }
1850
-
1851
- BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
1852
- private:
1853
- base_atomic(const base_atomic &) /* = delete */ ;
1854
- void operator=(const base_atomic &) /* = delete */ ;
1855
- value_type v_;
1856
- };
1857
-
1858
- #else
1859
-
1860
- template<bool Sign>
1861
- class base_atomic<void *, void *, 8, Sign>
1862
- {
1863
- typedef base_atomic this_type;
1864
- typedef ptrdiff_t difference_type;
1865
- typedef void * value_type;
1866
- public:
1867
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
1868
- base_atomic(void) {}
1869
-
1870
- void
1871
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1872
- {
1873
- ppc_fence_before(order);
1874
- __asm__ (
1875
- "std %1, %0\n"
1876
- : "+m" (v_)
1877
- : "r" (v)
1878
- );
1879
- ppc_fence_after_store(order);
1880
- }
1881
-
1882
- value_type
1883
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
1884
- {
1885
- value_type v;
1886
- __asm__ (
1887
- "ld %0, %1\n"
1888
- "cmpd %0, %0\n"
1889
- "bne- 1f\n"
1890
- "1:\n"
1891
- : "=r"(v)
1892
- : "m"(v_)
1893
- : "cr0"
1894
- );
1895
- ppc_fence_after(order);
1896
- return v;
1897
- }
1898
-
1899
- value_type
1900
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1901
- {
1902
- value_type original;
1903
- ppc_fence_before(order);
1904
- __asm__ (
1905
- "1:\n"
1906
- "ldarx %0,%y1\n"
1907
- "stdcx. %2,%y1\n"
1908
- "bne- 1b\n"
1909
- : "=&b" (original), "+Z"(v_)
1910
- : "b" (v)
1911
- : "cr0"
1912
- );
1913
- ppc_fence_after(order);
1914
- return original;
1915
- }
1916
-
1917
- bool
1918
- compare_exchange_weak(
1919
- value_type & expected,
1920
- value_type desired,
1921
- memory_order success_order,
1922
- memory_order failure_order) volatile BOOST_NOEXCEPT
1923
- {
1924
- int success;
1925
- ppc_fence_before(success_order);
1926
- __asm__(
1927
- "ldarx %0,%y2\n"
1928
- "cmpd %0, %3\n"
1929
- "bne- 2f\n"
1930
- "stdcx. %4,%y2\n"
1931
- "bne- 2f\n"
1932
- "addi %1,0,1\n"
1933
- "1:"
1934
-
1935
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1936
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1937
- : "b" (expected), "b" (desired)
1938
- : "cr0"
1939
- );
1940
- if (success)
1941
- ppc_fence_after(success_order);
1942
- else
1943
- ppc_fence_after(failure_order);
1944
- return success;
1945
- }
1946
-
1947
- bool
1948
- compare_exchange_strong(
1949
- value_type & expected,
1950
- value_type desired,
1951
- memory_order success_order,
1952
- memory_order failure_order) volatile BOOST_NOEXCEPT
1953
- {
1954
- int success;
1955
- ppc_fence_before(success_order);
1956
- __asm__(
1957
- "0: ldarx %0,%y2\n"
1958
- "cmpd %0, %3\n"
1959
- "bne- 2f\n"
1960
- "stdcx. %4,%y2\n"
1961
- "bne- 0b\n"
1962
- "addi %1,0,1\n"
1963
- "1:"
1964
-
1965
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
1966
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
1967
- : "b" (expected), "b" (desired)
1968
- : "cr0"
1969
- );
1970
- if (success)
1971
- ppc_fence_after(success_order);
1972
- else
1973
- ppc_fence_after(failure_order);
1974
- return success;
1975
- }
1976
-
1977
- bool
1978
- is_lock_free(void) const volatile BOOST_NOEXCEPT
1979
- {
1980
- return true;
1981
- }
1982
-
1983
- value_type
1984
- fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
1985
- {
1986
- value_type original, tmp;
1987
- ppc_fence_before(order);
1988
- __asm__ (
1989
- "1:\n"
1990
- "ldarx %0,%y2\n"
1991
- "add %1,%0,%3\n"
1992
- "stdcx. %1,%y2\n"
1993
- "bne- 1b\n"
1994
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
1995
- : "b" (v)
1996
- : "cc");
1997
- ppc_fence_after(order);
1998
- return original;
1999
- }
2000
-
2001
- value_type
2002
- fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2003
- {
2004
- value_type original, tmp;
2005
- ppc_fence_before(order);
2006
- __asm__ (
2007
- "1:\n"
2008
- "ldarx %0,%y2\n"
2009
- "sub %1,%0,%3\n"
2010
- "stdcx. %1,%y2\n"
2011
- "bne- 1b\n"
2012
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
2013
- : "b" (v)
2014
- : "cc");
2015
- ppc_fence_after(order);
2016
- return original;
2017
- }
2018
-
2019
- BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS
2020
- private:
2021
- base_atomic(const base_atomic &) /* = delete */ ;
2022
- void operator=(const base_atomic &) /* = delete */ ;
2023
- value_type v_;
2024
- };
2025
-
2026
- template<typename T, bool Sign>
2027
- class base_atomic<T *, void *, 8, Sign>
2028
- {
2029
- typedef base_atomic this_type;
2030
- typedef T * value_type;
2031
- typedef ptrdiff_t difference_type;
2032
- public:
2033
- BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {}
2034
- base_atomic(void) {}
2035
-
2036
- void
2037
- store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2038
- {
2039
- ppc_fence_before(order);
2040
- __asm__ (
2041
- "std %1, %0\n"
2042
- : "+m" (v_)
2043
- : "r" (v)
2044
- );
2045
- ppc_fence_after_store(order);
2046
- }
2047
-
2048
- value_type
2049
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
2050
- {
2051
- value_type v;
2052
- __asm__ (
2053
- "ld %0, %1\n"
2054
- "cmpd %0, %0\n"
2055
- "bne- 1f\n"
2056
- "1:\n"
2057
- : "=r"(v)
2058
- : "m"(v_)
2059
- : "cr0"
2060
- );
2061
- ppc_fence_after(order);
2062
- return v;
2063
- }
2064
-
2065
- value_type
2066
- exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2067
- {
2068
- value_type original;
2069
- ppc_fence_before(order);
2070
- __asm__ (
2071
- "1:\n"
2072
- "ldarx %0,%y1\n"
2073
- "stdcx. %2,%y1\n"
2074
- "bne- 1b\n"
2075
- : "=&b" (original), "+Z"(v_)
2076
- : "b" (v)
2077
- : "cr0"
2078
- );
2079
- ppc_fence_after(order);
2080
- return original;
2081
- }
2082
-
2083
- bool
2084
- compare_exchange_weak(
2085
- value_type & expected,
2086
- value_type desired,
2087
- memory_order success_order,
2088
- memory_order failure_order) volatile BOOST_NOEXCEPT
2089
- {
2090
- int success;
2091
- ppc_fence_before(success_order);
2092
- __asm__(
2093
- "ldarx %0,%y2\n"
2094
- "cmpd %0, %3\n"
2095
- "bne- 2f\n"
2096
- "stdcx. %4,%y2\n"
2097
- "bne- 2f\n"
2098
- "addi %1,0,1\n"
2099
- "1:"
2100
-
2101
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2102
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
2103
- : "b" (expected), "b" (desired)
2104
- : "cr0"
2105
- );
2106
- if (success)
2107
- ppc_fence_after(success_order);
2108
- else
2109
- ppc_fence_after(failure_order);
2110
- return success;
2111
- }
2112
-
2113
- bool
2114
- compare_exchange_strong(
2115
- value_type & expected,
2116
- value_type desired,
2117
- memory_order success_order,
2118
- memory_order failure_order) volatile BOOST_NOEXCEPT
2119
- {
2120
- int success;
2121
- ppc_fence_before(success_order);
2122
- __asm__(
2123
- "0: ldarx %0,%y2\n"
2124
- "cmpd %0, %3\n"
2125
- "bne- 2f\n"
2126
- "stdcx. %4,%y2\n"
2127
- "bne- 0b\n"
2128
- "addi %1,0,1\n"
2129
- "1:"
2130
-
2131
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2132
- : "=&b" (expected), "=&b" (success), "+Z"(v_)
2133
- : "b" (expected), "b" (desired)
2134
- : "cr0"
2135
- );
2136
- if (success)
2137
- ppc_fence_after(success_order);
2138
- else
2139
- ppc_fence_after(failure_order);
2140
- return success;
2141
- }
2142
-
2143
- value_type
2144
- fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2145
- {
2146
- v = v * sizeof(*v_);
2147
- value_type original, tmp;
2148
- ppc_fence_before(order);
2149
- __asm__ (
2150
- "1:\n"
2151
- "ldarx %0,%y2\n"
2152
- "add %1,%0,%3\n"
2153
- "stdcx. %1,%y2\n"
2154
- "bne- 1b\n"
2155
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
2156
- : "b" (v)
2157
- : "cc");
2158
- ppc_fence_after(order);
2159
- return original;
2160
- }
2161
-
2162
- value_type
2163
- fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2164
- {
2165
- v = v * sizeof(*v_);
2166
- value_type original, tmp;
2167
- ppc_fence_before(order);
2168
- __asm__ (
2169
- "1:\n"
2170
- "ldarx %0,%y2\n"
2171
- "sub %1,%0,%3\n"
2172
- "stdcx. %1,%y2\n"
2173
- "bne- 1b\n"
2174
- : "=&b" (original), "=&b" (tmp), "+Z"(v_)
2175
- : "b" (v)
2176
- : "cc");
2177
- ppc_fence_after(order);
2178
- return original;
2179
- }
2180
-
2181
- bool
2182
- is_lock_free(void) const volatile BOOST_NOEXCEPT
2183
- {
2184
- return true;
2185
- }
2186
-
2187
- BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
2188
- private:
2189
- base_atomic(const base_atomic &) /* = delete */ ;
2190
- void operator=(const base_atomic &) /* = delete */ ;
2191
- value_type v_;
2192
- };
2193
-
2194
- #endif
2195
-
2196
- /* generic */
2197
-
2198
- template<typename T, bool Sign>
2199
- class base_atomic<T, void, 1, Sign>
2200
- {
2201
- typedef base_atomic this_type;
2202
- typedef T value_type;
2203
- typedef uint32_t storage_type;
2204
- public:
2205
- explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
2206
- {
2207
- memcpy(&v_, &v, sizeof(value_type));
2208
- }
2209
- base_atomic(void) {}
2210
-
2211
- void
2212
- store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2213
- {
2214
- storage_type tmp = 0;
2215
- memcpy(&tmp, &v, sizeof(value_type));
2216
- ppc_fence_before(order);
2217
- __asm__ (
2218
- "stw %1, %0\n"
2219
- : "+m" (v_)
2220
- : "r" (tmp)
2221
- );
2222
- ppc_fence_after_store(order);
2223
- }
2224
-
2225
- value_type
2226
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
2227
- {
2228
- storage_type tmp;
2229
- __asm__ __volatile__ (
2230
- "lwz %0, %1\n"
2231
- "cmpw %0, %0\n"
2232
- "bne- 1f\n"
2233
- "1:\n"
2234
- : "=r"(tmp)
2235
- : "m"(v_)
2236
- : "cr0"
2237
- );
2238
- ppc_fence_after(order);
2239
-
2240
- value_type v;
2241
- memcpy(&v, &tmp, sizeof(value_type));
2242
- return v;
2243
- }
2244
-
2245
- value_type
2246
- exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2247
- {
2248
- storage_type tmp = 0, original;
2249
- memcpy(&tmp, &v, sizeof(value_type));
2250
- ppc_fence_before(order);
2251
- __asm__ (
2252
- "1:\n"
2253
- "lwarx %0,%y1\n"
2254
- "stwcx. %2,%y1\n"
2255
- "bne- 1b\n"
2256
- : "=&b" (original), "+Z"(v_)
2257
- : "b" (tmp)
2258
- : "cr0"
2259
- );
2260
- ppc_fence_after(order);
2261
- value_type res;
2262
- memcpy(&res, &original, sizeof(value_type));
2263
- return res;
2264
- }
2265
-
2266
- bool
2267
- compare_exchange_weak(
2268
- value_type & expected,
2269
- value_type const& desired,
2270
- memory_order success_order,
2271
- memory_order failure_order) volatile BOOST_NOEXCEPT
2272
- {
2273
- storage_type expected_s = 0, desired_s = 0;
2274
- memcpy(&expected_s, &expected, sizeof(value_type));
2275
- memcpy(&desired_s, &desired, sizeof(value_type));
2276
-
2277
- int success;
2278
- ppc_fence_before(success_order);
2279
- __asm__(
2280
- "lwarx %0,%y2\n"
2281
- "cmpw %0, %3\n"
2282
- "bne- 2f\n"
2283
- "stwcx. %4,%y2\n"
2284
- "bne- 2f\n"
2285
- "addi %1,0,1\n"
2286
- "1:"
2287
-
2288
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2289
- : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
2290
- : "b" (expected_s), "b" (desired_s)
2291
- : "cr0"
2292
- );
2293
- if (success)
2294
- ppc_fence_after(success_order);
2295
- else
2296
- ppc_fence_after(failure_order);
2297
- memcpy(&expected, &expected_s, sizeof(value_type));
2298
- return success;
2299
- }
2300
-
2301
- bool
2302
- compare_exchange_strong(
2303
- value_type & expected,
2304
- value_type const& desired,
2305
- memory_order success_order,
2306
- memory_order failure_order) volatile BOOST_NOEXCEPT
2307
- {
2308
- storage_type expected_s = 0, desired_s = 0;
2309
- memcpy(&expected_s, &expected, sizeof(value_type));
2310
- memcpy(&desired_s, &desired, sizeof(value_type));
2311
-
2312
- int success;
2313
- ppc_fence_before(success_order);
2314
- __asm__(
2315
- "0: lwarx %0,%y2\n"
2316
- "cmpw %0, %3\n"
2317
- "bne- 2f\n"
2318
- "stwcx. %4,%y2\n"
2319
- "bne- 0b\n"
2320
- "addi %1,0,1\n"
2321
- "1:"
2322
-
2323
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2324
- : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
2325
- : "b" (expected_s), "b" (desired_s)
2326
- : "cr0"
2327
- );
2328
- if (success)
2329
- ppc_fence_after(success_order);
2330
- else
2331
- ppc_fence_after(failure_order);
2332
- memcpy(&expected, &expected_s, sizeof(value_type));
2333
- return success;
2334
- }
2335
-
2336
- bool
2337
- is_lock_free(void) const volatile BOOST_NOEXCEPT
2338
- {
2339
- return true;
2340
- }
2341
-
2342
- BOOST_ATOMIC_DECLARE_BASE_OPERATORS
2343
- private:
2344
- base_atomic(const base_atomic &) /* = delete */ ;
2345
- void operator=(const base_atomic &) /* = delete */ ;
2346
- storage_type v_;
2347
- };
2348
-
2349
- template<typename T, bool Sign>
2350
- class base_atomic<T, void, 2, Sign>
2351
- {
2352
- typedef base_atomic this_type;
2353
- typedef T value_type;
2354
- typedef uint32_t storage_type;
2355
- public:
2356
- explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
2357
- {
2358
- memcpy(&v_, &v, sizeof(value_type));
2359
- }
2360
-
2361
- base_atomic(void) {}
2362
-
2363
- void
2364
- store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2365
- {
2366
- storage_type tmp = 0;
2367
- memcpy(&tmp, &v, sizeof(value_type));
2368
- ppc_fence_before(order);
2369
- __asm__ (
2370
- "stw %1, %0\n"
2371
- : "+m" (v_)
2372
- : "r" (tmp)
2373
- );
2374
- ppc_fence_after_store(order);
2375
- }
2376
-
2377
- value_type
2378
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
2379
- {
2380
- storage_type tmp;
2381
- __asm__ __volatile__ (
2382
- "lwz %0, %1\n"
2383
- "cmpw %0, %0\n"
2384
- "bne- 1f\n"
2385
- "1:\n"
2386
- : "=r"(tmp)
2387
- : "m"(v_)
2388
- : "cr0"
2389
- );
2390
- ppc_fence_after(order);
2391
-
2392
- value_type v;
2393
- memcpy(&v, &tmp, sizeof(value_type));
2394
- return v;
2395
- }
2396
-
2397
- value_type
2398
- exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2399
- {
2400
- storage_type tmp = 0, original;
2401
- memcpy(&tmp, &v, sizeof(value_type));
2402
- ppc_fence_before(order);
2403
- __asm__ (
2404
- "1:\n"
2405
- "lwarx %0,%y1\n"
2406
- "stwcx. %2,%y1\n"
2407
- "bne- 1b\n"
2408
- : "=&b" (original), "+Z"(v_)
2409
- : "b" (tmp)
2410
- : "cr0"
2411
- );
2412
- ppc_fence_after(order);
2413
- value_type res;
2414
- memcpy(&res, &original, sizeof(value_type));
2415
- return res;
2416
- }
2417
-
2418
- bool
2419
- compare_exchange_weak(
2420
- value_type & expected,
2421
- value_type const& desired,
2422
- memory_order success_order,
2423
- memory_order failure_order) volatile BOOST_NOEXCEPT
2424
- {
2425
- storage_type expected_s = 0, desired_s = 0;
2426
- memcpy(&expected_s, &expected, sizeof(value_type));
2427
- memcpy(&desired_s, &desired, sizeof(value_type));
2428
-
2429
- int success;
2430
- ppc_fence_before(success_order);
2431
- __asm__(
2432
- "lwarx %0,%y2\n"
2433
- "cmpw %0, %3\n"
2434
- "bne- 2f\n"
2435
- "stwcx. %4,%y2\n"
2436
- "bne- 2f\n"
2437
- "addi %1,0,1\n"
2438
- "1:"
2439
-
2440
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2441
- : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
2442
- : "b" (expected_s), "b" (desired_s)
2443
- : "cr0"
2444
- );
2445
- if (success)
2446
- ppc_fence_after(success_order);
2447
- else
2448
- ppc_fence_after(failure_order);
2449
- memcpy(&expected, &expected_s, sizeof(value_type));
2450
- return success;
2451
- }
2452
-
2453
- bool
2454
- compare_exchange_strong(
2455
- value_type & expected,
2456
- value_type const& desired,
2457
- memory_order success_order,
2458
- memory_order failure_order) volatile BOOST_NOEXCEPT
2459
- {
2460
- storage_type expected_s = 0, desired_s = 0;
2461
- memcpy(&expected_s, &expected, sizeof(value_type));
2462
- memcpy(&desired_s, &desired, sizeof(value_type));
2463
-
2464
- int success;
2465
- ppc_fence_before(success_order);
2466
- __asm__(
2467
- "0: lwarx %0,%y2\n"
2468
- "cmpw %0, %3\n"
2469
- "bne- 2f\n"
2470
- "stwcx. %4,%y2\n"
2471
- "bne- 0b\n"
2472
- "addi %1,0,1\n"
2473
- "1:"
2474
-
2475
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2476
- : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
2477
- : "b" (expected_s), "b" (desired_s)
2478
- : "cr0"
2479
- );
2480
- if (success)
2481
- ppc_fence_after(success_order);
2482
- else
2483
- ppc_fence_after(failure_order);
2484
- memcpy(&expected, &expected_s, sizeof(value_type));
2485
- return success;
2486
- }
2487
-
2488
- bool
2489
- is_lock_free(void) const volatile BOOST_NOEXCEPT
2490
- {
2491
- return true;
2492
- }
2493
-
2494
- BOOST_ATOMIC_DECLARE_BASE_OPERATORS
2495
- private:
2496
- base_atomic(const base_atomic &) /* = delete */ ;
2497
- void operator=(const base_atomic &) /* = delete */ ;
2498
- storage_type v_;
2499
- };
2500
-
2501
- template<typename T, bool Sign>
2502
- class base_atomic<T, void, 4, Sign>
2503
- {
2504
- typedef base_atomic this_type;
2505
- typedef T value_type;
2506
- typedef uint32_t storage_type;
2507
- public:
2508
- explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
2509
- {
2510
- memcpy(&v_, &v, sizeof(value_type));
2511
- }
2512
-
2513
- base_atomic(void) {}
2514
-
2515
- void
2516
- store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2517
- {
2518
- storage_type tmp = 0;
2519
- memcpy(&tmp, &v, sizeof(value_type));
2520
- ppc_fence_before(order);
2521
- __asm__ (
2522
- "stw %1, %0\n"
2523
- : "+m" (v_)
2524
- : "r" (tmp)
2525
- );
2526
- ppc_fence_after_store(order);
2527
- }
2528
-
2529
- value_type
2530
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
2531
- {
2532
- storage_type tmp;
2533
- __asm__ __volatile__ (
2534
- "lwz %0, %1\n"
2535
- "cmpw %0, %0\n"
2536
- "bne- 1f\n"
2537
- "1:\n"
2538
- : "=r"(tmp)
2539
- : "m"(v_)
2540
- : "cr0"
2541
- );
2542
- ppc_fence_after(order);
2543
-
2544
- value_type v;
2545
- memcpy(&v, &tmp, sizeof(value_type));
2546
- return v;
2547
- }
2548
-
2549
- value_type
2550
- exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2551
- {
2552
- storage_type tmp = 0, original;
2553
- memcpy(&tmp, &v, sizeof(value_type));
2554
- ppc_fence_before(order);
2555
- __asm__ (
2556
- "1:\n"
2557
- "lwarx %0,%y1\n"
2558
- "stwcx. %2,%y1\n"
2559
- "bne- 1b\n"
2560
- : "=&b" (original), "+Z"(v_)
2561
- : "b" (tmp)
2562
- : "cr0"
2563
- );
2564
- ppc_fence_after(order);
2565
- value_type res;
2566
- memcpy(&res, &original, sizeof(value_type));
2567
- return res;
2568
- }
2569
-
2570
- bool
2571
- compare_exchange_weak(
2572
- value_type & expected,
2573
- value_type const& desired,
2574
- memory_order success_order,
2575
- memory_order failure_order) volatile BOOST_NOEXCEPT
2576
- {
2577
- storage_type expected_s = 0, desired_s = 0;
2578
- memcpy(&expected_s, &expected, sizeof(value_type));
2579
- memcpy(&desired_s, &desired, sizeof(value_type));
2580
-
2581
- int success;
2582
- ppc_fence_before(success_order);
2583
- __asm__(
2584
- "lwarx %0,%y2\n"
2585
- "cmpw %0, %3\n"
2586
- "bne- 2f\n"
2587
- "stwcx. %4,%y2\n"
2588
- "bne- 2f\n"
2589
- "addi %1,0,1\n"
2590
- "1:"
2591
-
2592
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2593
- : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
2594
- : "b" (expected_s), "b" (desired_s)
2595
- : "cr0"
2596
- );
2597
- if (success)
2598
- ppc_fence_after(success_order);
2599
- else
2600
- ppc_fence_after(failure_order);
2601
- memcpy(&expected, &expected_s, sizeof(value_type));
2602
- return success;
2603
- }
2604
-
2605
- bool
2606
- compare_exchange_strong(
2607
- value_type & expected,
2608
- value_type const& desired,
2609
- memory_order success_order,
2610
- memory_order failure_order) volatile BOOST_NOEXCEPT
2611
- {
2612
- storage_type expected_s = 0, desired_s = 0;
2613
- memcpy(&expected_s, &expected, sizeof(value_type));
2614
- memcpy(&desired_s, &desired, sizeof(value_type));
2615
-
2616
- int success;
2617
- ppc_fence_before(success_order);
2618
- __asm__(
2619
- "0: lwarx %0,%y2\n"
2620
- "cmpw %0, %3\n"
2621
- "bne- 2f\n"
2622
- "stwcx. %4,%y2\n"
2623
- "bne- 0b\n"
2624
- "addi %1,0,1\n"
2625
- "1:"
2626
-
2627
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2628
- : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
2629
- : "b" (expected_s), "b" (desired_s)
2630
- : "cr0"
2631
- );
2632
- if (success)
2633
- ppc_fence_after(success_order);
2634
- else
2635
- ppc_fence_after(failure_order);
2636
- memcpy(&expected, &expected_s, sizeof(value_type));
2637
- return success;
2638
- }
2639
-
2640
- bool
2641
- is_lock_free(void) const volatile BOOST_NOEXCEPT
2642
- {
2643
- return true;
2644
- }
2645
-
2646
- BOOST_ATOMIC_DECLARE_BASE_OPERATORS
2647
- private:
2648
- base_atomic(const base_atomic &) /* = delete */ ;
2649
- void operator=(const base_atomic &) /* = delete */ ;
2650
- storage_type v_;
2651
- };
2652
-
2653
- #if defined(__powerpc64__)
2654
-
2655
- template<typename T, bool Sign>
2656
- class base_atomic<T, void, 8, Sign>
2657
- {
2658
- typedef base_atomic this_type;
2659
- typedef T value_type;
2660
- typedef uint64_t storage_type;
2661
- public:
2662
- explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
2663
- {
2664
- memcpy(&v_, &v, sizeof(value_type));
2665
- }
2666
-
2667
- base_atomic(void) {}
2668
-
2669
- void
2670
- store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2671
- {
2672
- storage_type tmp;
2673
- memcpy(&tmp, &v, sizeof(value_type));
2674
- ppc_fence_before(order);
2675
- __asm__ (
2676
- "std %1, %0\n"
2677
- : "+m" (v_)
2678
- : "r" (tmp)
2679
- );
2680
- ppc_fence_after_store(order);
2681
- }
2682
-
2683
- value_type
2684
- load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT
2685
- {
2686
- storage_type tmp;
2687
- __asm__ __volatile__ (
2688
- "ld %0, %1\n"
2689
- "cmpd %0, %0\n"
2690
- "bne- 1f\n"
2691
- "1:\n"
2692
- : "=r"(tmp)
2693
- : "m"(v_)
2694
- : "cr0"
2695
- );
2696
- ppc_fence_after(order);
2697
-
2698
- value_type v;
2699
- memcpy(&v, &tmp, sizeof(value_type));
2700
- return v;
2701
- }
2702
-
2703
- value_type
2704
- exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
2705
- {
2706
- storage_type tmp = 0, original;
2707
- memcpy(&tmp, &v, sizeof(value_type));
2708
- ppc_fence_before(order);
2709
- __asm__ (
2710
- "1:\n"
2711
- "ldarx %0,%y1\n"
2712
- "stdcx. %2,%y1\n"
2713
- "bne- 1b\n"
2714
- : "=&b" (original), "+Z"(v_)
2715
- : "b" (tmp)
2716
- : "cr0"
2717
- );
2718
- ppc_fence_after(order);
2719
- value_type res;
2720
- memcpy(&res, &original, sizeof(value_type));
2721
- return res;
2722
- }
2723
-
2724
- bool
2725
- compare_exchange_weak(
2726
- value_type & expected,
2727
- value_type const& desired,
2728
- memory_order success_order,
2729
- memory_order failure_order) volatile BOOST_NOEXCEPT
2730
- {
2731
- storage_type expected_s, desired_s;
2732
- memcpy(&expected_s, &expected, sizeof(value_type));
2733
- memcpy(&desired_s, &desired, sizeof(value_type));
2734
-
2735
- int success;
2736
- ppc_fence_before(success_order);
2737
- __asm__(
2738
- "ldarx %0,%y2\n"
2739
- "cmpd %0, %3\n"
2740
- "bne- 2f\n"
2741
- "stdcx. %4,%y2\n"
2742
- "bne- 2f\n"
2743
- "addi %1,0,1\n"
2744
- "1:"
2745
-
2746
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2747
- : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
2748
- : "b" (expected_s), "b" (desired_s)
2749
- : "cr0"
2750
- );
2751
- if (success)
2752
- ppc_fence_after(success_order);
2753
- else
2754
- ppc_fence_after(failure_order);
2755
- memcpy(&expected, &expected_s, sizeof(value_type));
2756
- return success;
2757
- }
2758
-
2759
- bool
2760
- compare_exchange_strong(
2761
- value_type & expected,
2762
- value_type const& desired,
2763
- memory_order success_order,
2764
- memory_order failure_order) volatile BOOST_NOEXCEPT
2765
- {
2766
- storage_type expected_s, desired_s;
2767
- memcpy(&expected_s, &expected, sizeof(value_type));
2768
- memcpy(&desired_s, &desired, sizeof(value_type));
2769
-
2770
- int success;
2771
- ppc_fence_before(success_order);
2772
- __asm__(
2773
- "0: ldarx %0,%y2\n"
2774
- "cmpd %0, %3\n"
2775
- "bne- 2f\n"
2776
- "stdcx. %4,%y2\n"
2777
- "bne- 0b\n"
2778
- "addi %1,0,1\n"
2779
- "1:"
2780
-
2781
- BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
2782
- : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
2783
- : "b" (expected_s), "b" (desired_s)
2784
- : "cr0"
2785
- );
2786
- if (success)
2787
- ppc_fence_after(success_order);
2788
- else
2789
- ppc_fence_after(failure_order);
2790
- memcpy(&expected, &expected_s, sizeof(value_type));
2791
- return success;
2792
- }
2793
-
2794
- bool
2795
- is_lock_free(void) const volatile BOOST_NOEXCEPT
2796
- {
2797
- return true;
2798
- }
2799
-
2800
- BOOST_ATOMIC_DECLARE_BASE_OPERATORS
2801
- private:
2802
- base_atomic(const base_atomic &) /* = delete */ ;
2803
- void operator=(const base_atomic &) /* = delete */ ;
2804
- storage_type v_;
2805
- };
2806
- #endif
2807
-
2808
- }
2809
- }
2810
-
2811
- #define BOOST_ATOMIC_THREAD_FENCE 2
2812
- inline void
2813
- atomic_thread_fence(memory_order order)
2814
- {
2815
- switch(order) {
2816
- case memory_order_acquire:
2817
- __asm__ __volatile__ ("isync" ::: "memory");
2818
- break;
2819
- case memory_order_release:
2820
- #if defined(__powerpc64__)
2821
- __asm__ __volatile__ ("lwsync" ::: "memory");
2822
- break;
2823
- #endif
2824
- case memory_order_acq_rel:
2825
- case memory_order_seq_cst:
2826
- __asm__ __volatile__ ("sync" ::: "memory");
2827
- default:;
2828
- }
2829
- }
2830
-
2831
- #define BOOST_ATOMIC_SIGNAL_FENCE 2
2832
- inline void
2833
- atomic_signal_fence(memory_order order)
2834
- {
2835
- switch(order) {
2836
- case memory_order_acquire:
2837
- case memory_order_release:
2838
- case memory_order_acq_rel:
2839
- case memory_order_seq_cst:
2840
- __asm__ __volatile__ ("" ::: "memory");
2841
- break;
2842
- default:;
2843
- }
2844
- }
2845
-
2846
- }
2847
-
2848
- #endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
2849
-
2850
- #endif