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,6 +1,6 @@
1
1
  /////////////////////////////////////////////////////////////////////////////
2
2
  //
3
- // (C) Copyright Ion Gaztanaga 2007-2012
3
+ // (C) Copyright Ion Gaztanaga 2007-2014
4
4
  //
5
5
  // Distributed under the Boost Software License, Version 1.0.
6
6
  // (See accompanying file LICENSE_1_0.txt or copy at
@@ -10,20 +10,93 @@
10
10
  //
11
11
  /////////////////////////////////////////////////////////////////////////////
12
12
 
13
- #ifndef BOOST_INTRUSIVE_TREE_ALGORITHMS_HPP
14
- #define BOOST_INTRUSIVE_TREE_ALGORITHMS_HPP
13
+ #ifndef BOOST_INTRUSIVE_BSTREE_ALGORITHMS_HPP
14
+ #define BOOST_INTRUSIVE_BSTREE_ALGORITHMS_HPP
15
15
 
16
+ #include <cstddef>
16
17
  #include <boost/intrusive/detail/config_begin.hpp>
17
- #include <boost/intrusive/detail/assert.hpp>
18
18
  #include <boost/intrusive/intrusive_fwd.hpp>
19
- #include <cstddef>
20
- #include <boost/intrusive/detail/utilities.hpp>
21
- #include <boost/intrusive/pointer_traits.hpp>
19
+ #include <boost/intrusive/detail/bstree_algorithms_base.hpp>
20
+ #include <boost/intrusive/detail/assert.hpp>
21
+ #include <boost/intrusive/detail/uncast.hpp>
22
+ #include <boost/intrusive/detail/math.hpp>
23
+ #include <boost/intrusive/detail/algo_type.hpp>
24
+
25
+ #include <boost/intrusive/detail/minimal_pair_header.hpp>
26
+
27
+ #if defined(BOOST_HAS_PRAGMA_ONCE)
28
+ # pragma once
29
+ #endif
22
30
 
23
31
  namespace boost {
24
32
  namespace intrusive {
33
+
34
+ /// @cond
35
+
36
+ //! This type is the information that will be filled by insert_unique_check
37
+ template <class NodePtr>
38
+ struct insert_commit_data_t
39
+ {
40
+ bool link_left;
41
+ NodePtr node;
42
+ };
43
+
44
+ template <class NodePtr>
45
+ struct data_for_rebalance_t
46
+ {
47
+ NodePtr x;
48
+ NodePtr x_parent;
49
+ NodePtr y;
50
+ };
51
+
25
52
  namespace detail {
26
53
 
54
+ template<class ValueTraits, class NodePtrCompare, class ExtraChecker>
55
+ struct bstree_node_checker
56
+ : public ExtraChecker
57
+ {
58
+ typedef ExtraChecker base_checker_t;
59
+ typedef ValueTraits value_traits;
60
+ typedef typename value_traits::node_traits node_traits;
61
+ typedef typename node_traits::const_node_ptr const_node_ptr;
62
+
63
+ struct return_type
64
+ : public base_checker_t::return_type
65
+ {
66
+ return_type() : min_key_node_ptr(const_node_ptr()), max_key_node_ptr(const_node_ptr()), node_count(0) {}
67
+
68
+ const_node_ptr min_key_node_ptr;
69
+ const_node_ptr max_key_node_ptr;
70
+ size_t node_count;
71
+ };
72
+
73
+ bstree_node_checker(const NodePtrCompare& comp, ExtraChecker extra_checker)
74
+ : base_checker_t(extra_checker), comp_(comp)
75
+ {}
76
+
77
+ void operator () (const const_node_ptr& p,
78
+ const return_type& check_return_left, const return_type& check_return_right,
79
+ return_type& check_return)
80
+ {
81
+ if (check_return_left.max_key_node_ptr)
82
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(!comp_(p, check_return_left.max_key_node_ptr));
83
+ if (check_return_right.min_key_node_ptr)
84
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(!comp_(check_return_right.min_key_node_ptr, p));
85
+ check_return.min_key_node_ptr = node_traits::get_left(p)? check_return_left.min_key_node_ptr : p;
86
+ check_return.max_key_node_ptr = node_traits::get_right(p)? check_return_right.max_key_node_ptr : p;
87
+ check_return.node_count = check_return_left.node_count + check_return_right.node_count + 1;
88
+ base_checker_t::operator()(p, check_return_left, check_return_right, check_return);
89
+ }
90
+
91
+ const NodePtrCompare comp_;
92
+ };
93
+
94
+ } // namespace detail
95
+
96
+ /// @endcond
97
+
98
+
99
+
27
100
  //! This is an implementation of a binary search tree.
28
101
  //! A node in the search tree has references to its children and its parent. This
29
102
  //! is to allow traversal of the whole tree from a given node making the
@@ -66,14 +139,13 @@ namespace detail {
66
139
  //! | | | | | | | |
67
140
  //! +---------+ +---------+ +---------+ +---------+
68
141
  //!
69
-
70
- //! tree_algorithms is configured with a NodeTraits class, which encapsulates the
142
+ //! bstree_algorithms is configured with a NodeTraits class, which encapsulates the
71
143
  //! information about the node to be manipulated. NodeTraits must support the
72
144
  //! following interface:
73
145
  //!
74
146
  //! <b>Typedefs</b>:
75
147
  //!
76
- //! <tt>node</tt>: The type of the node that forms the circular list
148
+ //! <tt>node</tt>: The type of the node that forms the binary search tree
77
149
  //!
78
150
  //! <tt>node_ptr</tt>: A pointer to a node
79
151
  //!
@@ -93,31 +165,19 @@ namespace detail {
93
165
  //!
94
166
  //! <tt>static void set_right(node_ptr n, node_ptr right);</tt>
95
167
  template<class NodeTraits>
96
- class tree_algorithms
168
+ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
97
169
  {
98
170
  public:
99
171
  typedef typename NodeTraits::node node;
100
172
  typedef NodeTraits node_traits;
101
173
  typedef typename NodeTraits::node_ptr node_ptr;
102
174
  typedef typename NodeTraits::const_node_ptr const_node_ptr;
103
-
104
- //! This type is the information that will be filled by insert_unique_check
105
- struct insert_commit_data
106
- {
107
- insert_commit_data()
108
- : link_left(false)
109
- , node()
110
- {}
111
- bool link_left;
112
- node_ptr node;
113
- };
114
-
115
- struct nop_erase_fixup
116
- {
117
- void operator()(const node_ptr&, const node_ptr&){}
118
- };
175
+ typedef insert_commit_data_t<node_ptr> insert_commit_data;
176
+ typedef data_for_rebalance_t<node_ptr> data_for_rebalance;
119
177
 
120
178
  /// @cond
179
+ typedef bstree_algorithms<NodeTraits> this_type;
180
+ typedef bstree_algorithms_base<NodeTraits> base_type;
121
181
  private:
122
182
  template<class Disposer>
123
183
  struct dispose_subtree_disposer
@@ -136,22 +196,46 @@ class tree_algorithms
136
196
  }
137
197
  }
138
198
  Disposer *disposer_;
139
- node_ptr subtree_;
199
+ const node_ptr subtree_;
140
200
  };
141
201
 
142
- static node_ptr uncast(const const_node_ptr & ptr)
143
- { return pointer_traits<node_ptr>::const_cast_from(ptr); }
144
-
145
202
  /// @endcond
146
203
 
147
204
  public:
205
+ //! <b>Requires</b>: 'header' is the header node of a tree.
206
+ //!
207
+ //! <b>Effects</b>: Returns the first node of the tree, the header if the tree is empty.
208
+ //!
209
+ //! <b>Complexity</b>: Constant time.
210
+ //!
211
+ //! <b>Throws</b>: Nothing.
148
212
  static node_ptr begin_node(const const_node_ptr & header)
149
213
  { return node_traits::get_left(header); }
150
214
 
215
+ //! <b>Requires</b>: 'header' is the header node of a tree.
216
+ //!
217
+ //! <b>Effects</b>: Returns the header of the tree.
218
+ //!
219
+ //! <b>Complexity</b>: Constant time.
220
+ //!
221
+ //! <b>Throws</b>: Nothing.
151
222
  static node_ptr end_node(const const_node_ptr & header)
152
- { return uncast(header); }
223
+ { return detail::uncast(header); }
224
+
225
+ //! <b>Requires</b>: 'header' is the header node of a tree.
226
+ //!
227
+ //! <b>Effects</b>: Returns the root of the tree if any, header otherwise
228
+ //!
229
+ //! <b>Complexity</b>: Constant time.
230
+ //!
231
+ //! <b>Throws</b>: Nothing.
232
+ static node_ptr root_node(const const_node_ptr & header)
233
+ {
234
+ node_ptr p = node_traits::get_parent(header);
235
+ return p ? p : detail::uncast(header);
236
+ }
153
237
 
154
- //! <b>Requires</b>: 'node' is a node of the tree or an node initialized
238
+ //! <b>Requires</b>: 'node' is a node of the tree or a node initialized
155
239
  //! by init(...) or init_node.
156
240
  //!
157
241
  //! <b>Effects</b>: Returns true if the node is initialized by init() or init_node().
@@ -162,16 +246,16 @@ class tree_algorithms
162
246
  static bool unique(const const_node_ptr & node)
163
247
  { return !NodeTraits::get_parent(node); }
164
248
 
165
- static node_ptr get_header(const const_node_ptr & node)
166
- {
167
- node_ptr h = uncast(node);
168
- if(NodeTraits::get_parent(node)){
169
- h = NodeTraits::get_parent(node);
170
- while(!is_header(h))
171
- h = NodeTraits::get_parent(h);
172
- }
173
- return h;
174
- }
249
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
250
+ //! <b>Requires</b>: 'node' is a node of the tree or a header node.
251
+ //!
252
+ //! <b>Effects</b>: Returns the header of the tree.
253
+ //!
254
+ //! <b>Complexity</b>: Logarithmic.
255
+ //!
256
+ //! <b>Throws</b>: Nothing.
257
+ static node_ptr get_header(const const_node_ptr & node);
258
+ #endif
175
259
 
176
260
  //! <b>Requires</b>: node1 and node2 can't be header nodes
177
261
  //! of two trees.
@@ -193,7 +277,7 @@ class tree_algorithms
193
277
  if(node1 == node2)
194
278
  return;
195
279
 
196
- node_ptr header1(get_header(node1)), header2(get_header(node2));
280
+ node_ptr header1(base_type::get_header(node1)), header2(base_type::get_header(node2));
197
281
  swap_nodes(node1, header1, node2, header2);
198
282
  }
199
283
 
@@ -358,14 +442,12 @@ class tree_algorithms
358
442
  //! <b>Note</b>: This function will break container ordering invariants if
359
443
  //! new_node is not equivalent to node_to_be_replaced according to the
360
444
  //! ordering rules. This function is faster than erasing and inserting
361
- //! the node, since no rebalancing and comparison is needed.
362
- //!
363
- //!Experimental function
445
+ //! the node, since no rebalancing and comparison is needed. Experimental function
364
446
  static void replace_node(const node_ptr & node_to_be_replaced, const node_ptr & new_node)
365
447
  {
366
448
  if(node_to_be_replaced == new_node)
367
449
  return;
368
- replace_node(node_to_be_replaced, get_header(node_to_be_replaced), new_node);
450
+ replace_node(node_to_be_replaced, base_type::get_header(node_to_be_replaced), new_node);
369
451
  }
370
452
 
371
453
  //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
@@ -381,9 +463,7 @@ class tree_algorithms
381
463
  //! <b>Note</b>: This function will break container ordering invariants if
382
464
  //! new_node is not equivalent to node_to_be_replaced according to the
383
465
  //! ordering rules. This function is faster than erasing and inserting
384
- //! the node, since no rebalancing or comparison is needed.
385
- //!
386
- //!Experimental function
466
+ //! the node, since no rebalancing or comparison is needed. Experimental function
387
467
  static void replace_node(const node_ptr & node_to_be_replaced, const node_ptr & header, const node_ptr & new_node)
388
468
  {
389
469
  if(node_to_be_replaced == new_node)
@@ -427,6 +507,7 @@ class tree_algorithms
427
507
  }
428
508
  }
429
509
 
510
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
430
511
  //! <b>Requires</b>: 'node' is a node from the tree except the header.
431
512
  //!
432
513
  //! <b>Effects</b>: Returns the next node of the tree.
@@ -434,22 +515,7 @@ class tree_algorithms
434
515
  //! <b>Complexity</b>: Average constant time.
435
516
  //!
436
517
  //! <b>Throws</b>: Nothing.
437
- static node_ptr next_node(const node_ptr & node)
438
- {
439
- node_ptr p_right(NodeTraits::get_right(node));
440
- if(p_right){
441
- return minimum(p_right);
442
- }
443
- else {
444
- node_ptr p(node);
445
- node_ptr x = NodeTraits::get_parent(p);
446
- while(p == NodeTraits::get_right(x)){
447
- p = x;
448
- x = NodeTraits::get_parent(x);
449
- }
450
- return NodeTraits::get_right(p) != x ? x : uncast(p);
451
- }
452
- }
518
+ static node_ptr next_node(const node_ptr & node);
453
519
 
454
520
  //! <b>Requires</b>: 'node' is a node from the tree except the leftmost node.
455
521
  //!
@@ -458,25 +524,7 @@ class tree_algorithms
458
524
  //! <b>Complexity</b>: Average constant time.
459
525
  //!
460
526
  //! <b>Throws</b>: Nothing.
461
- static node_ptr prev_node(const node_ptr & node)
462
- {
463
- if(is_header(node)){
464
- return NodeTraits::get_right(node);
465
- //return maximum(NodeTraits::get_parent(node));
466
- }
467
- else if(NodeTraits::get_left(node)){
468
- return maximum(NodeTraits::get_left(node));
469
- }
470
- else {
471
- node_ptr p(node);
472
- node_ptr x = NodeTraits::get_parent(p);
473
- while(p == NodeTraits::get_left(x)){
474
- p = x;
475
- x = NodeTraits::get_parent(x);
476
- }
477
- return x;
478
- }
479
- }
527
+ static node_ptr prev_node(const node_ptr & node);
480
528
 
481
529
  //! <b>Requires</b>: 'node' is a node of a tree but not the header.
482
530
  //!
@@ -485,15 +533,7 @@ class tree_algorithms
485
533
  //! <b>Complexity</b>: Logarithmic to the size of the subtree.
486
534
  //!
487
535
  //! <b>Throws</b>: Nothing.
488
- static node_ptr minimum (node_ptr node)
489
- {
490
- for(node_ptr p_left = NodeTraits::get_left(node)
491
- ;p_left
492
- ;p_left = NodeTraits::get_left(node)){
493
- node = p_left;
494
- }
495
- return node;
496
- }
536
+ static node_ptr minimum(node_ptr node);
497
537
 
498
538
  //! <b>Requires</b>: 'node' is a node of a tree but not the header.
499
539
  //!
@@ -502,15 +542,8 @@ class tree_algorithms
502
542
  //! <b>Complexity</b>: Logarithmic to the size of the subtree.
503
543
  //!
504
544
  //! <b>Throws</b>: Nothing.
505
- static node_ptr maximum(node_ptr node)
506
- {
507
- for(node_ptr p_right = NodeTraits::get_right(node)
508
- ;p_right
509
- ;p_right = NodeTraits::get_right(node)){
510
- node = p_right;
511
- }
512
- return node;
513
- }
545
+ static node_ptr maximum(node_ptr node);
546
+ #endif
514
547
 
515
548
  //! <b>Requires</b>: 'node' must not be part of any tree.
516
549
  //!
@@ -602,7 +635,7 @@ class tree_algorithms
602
635
 
603
636
  if (leftmost_right){
604
637
  NodeTraits::set_parent(leftmost_right, leftmost_parent);
605
- NodeTraits::set_left(header, tree_algorithms::minimum(leftmost_right));
638
+ NodeTraits::set_left(header, base_type::minimum(leftmost_right));
606
639
 
607
640
  if (is_root)
608
641
  NodeTraits::set_parent(header, leftmost_right);
@@ -621,42 +654,6 @@ class tree_algorithms
621
654
  return leftmost;
622
655
  }
623
656
 
624
- //! <b>Requires</b>: node is a node of the tree but it's not the header.
625
- //!
626
- //! <b>Effects</b>: Returns the number of nodes of the subtree.
627
- //!
628
- //! <b>Complexity</b>: Linear time.
629
- //!
630
- //! <b>Throws</b>: Nothing.
631
- static std::size_t count(const const_node_ptr & subtree)
632
- {
633
- if(!subtree) return 0;
634
- std::size_t count = 0;
635
- node_ptr p = minimum(uncast(subtree));
636
- bool continue_looping = true;
637
- while(continue_looping){
638
- ++count;
639
- node_ptr p_right(NodeTraits::get_right(p));
640
- if(p_right){
641
- p = minimum(p_right);
642
- }
643
- else {
644
- for(;;){
645
- node_ptr q;
646
- if (p == subtree){
647
- continue_looping = false;
648
- break;
649
- }
650
- q = p;
651
- p = NodeTraits::get_parent(p);
652
- if (NodeTraits::get_left(p) == q)
653
- break;
654
- }
655
- }
656
- }
657
- return count;
658
- }
659
-
660
657
  //! <b>Requires</b>: node is a node of the tree but it's not the header.
661
658
  //!
662
659
  //! <b>Effects</b>: Returns the number of nodes of the subtree.
@@ -669,7 +666,7 @@ class tree_algorithms
669
666
  node_ptr beg(begin_node(header));
670
667
  node_ptr end(end_node(header));
671
668
  std::size_t i = 0;
672
- for(;beg != end; beg = next_node(beg)) ++i;
669
+ for(;beg != end; beg = base_type::next_node(beg)) ++i;
673
670
  return i;
674
671
  }
675
672
 
@@ -722,29 +719,23 @@ class tree_algorithms
722
719
  }
723
720
  }
724
721
 
725
- static bool is_header(const const_node_ptr & p)
726
- {
727
- node_ptr p_left (NodeTraits::get_left(p));
728
- node_ptr p_right(NodeTraits::get_right(p));
729
- if(!NodeTraits::get_parent(p) || //Header condition when empty tree
730
- (p_left && p_right && //Header always has leftmost and rightmost
731
- (p_left == p_right || //Header condition when only node
732
- (NodeTraits::get_parent(p_left) != p ||
733
- NodeTraits::get_parent(p_right) != p ))
734
- //When tree size > 1 headers can't be leftmost's
735
- //and rightmost's parent
736
- )){
737
- return true;
738
- }
739
- return false;
740
- }
722
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
723
+ //! <b>Requires</b>: p is a node of a tree.
724
+ //!
725
+ //! <b>Effects</b>: Returns true if p is the header of the tree.
726
+ //!
727
+ //! <b>Complexity</b>: Constant.
728
+ //!
729
+ //! <b>Throws</b>: Nothing.
730
+ static bool is_header(const const_node_ptr & p);
731
+ #endif
741
732
 
742
733
  //! <b>Requires</b>: "header" must be the header node of a tree.
743
734
  //! KeyNodePtrCompare is a function object that induces a strict weak
744
735
  //! ordering compatible with the strict weak ordering used to create the
745
736
  //! the tree. KeyNodePtrCompare can compare KeyType with tree's node_ptrs.
746
737
  //!
747
- //! <b>Effects</b>: Returns an node_ptr to the element that is equivalent to
738
+ //! <b>Effects</b>: Returns a node_ptr to the first element that is equivalent to
748
739
  //! "key" according to "comp" or "header" if that element does not exist.
749
740
  //!
750
741
  //! <b>Complexity</b>: Logarithmic.
@@ -754,7 +745,7 @@ class tree_algorithms
754
745
  static node_ptr find
755
746
  (const const_node_ptr & header, const KeyType &key, KeyNodePtrCompare comp)
756
747
  {
757
- node_ptr end = uncast(header);
748
+ node_ptr end = detail::uncast(header);
758
749
  node_ptr y = lower_bound(header, key, comp);
759
750
  return (y == end || comp(key, y)) ? end : y;
760
751
  }
@@ -764,7 +755,7 @@ class tree_algorithms
764
755
  //! ordering compatible with the strict weak ordering used to create the
765
756
  //! the tree. KeyNodePtrCompare can compare KeyType with tree's node_ptrs.
766
757
  //! 'lower_key' must not be greater than 'upper_key' according to 'comp'. If
767
- //! 'lower_key' == 'upper_key', ('left_closed' || 'right_closed') must be false.
758
+ //! 'lower_key' == 'upper_key', ('left_closed' || 'right_closed') must be true.
768
759
  //!
769
760
  //! <b>Effects</b>: Returns an a pair with the following criteria:
770
761
  //!
@@ -778,6 +769,8 @@ class tree_algorithms
778
769
  //!
779
770
  //! <b>Note</b>: This function can be more efficient than calling upper_bound
780
771
  //! and lower_bound for lower_key and upper_key.
772
+ //!
773
+ //! <b>Note</b>: Experimental function, the interface might change.
781
774
  template< class KeyType, class KeyNodePtrCompare>
782
775
  static std::pair<node_ptr, node_ptr> bounded_range
783
776
  ( const const_node_ptr & header
@@ -787,7 +780,7 @@ class tree_algorithms
787
780
  , bool left_closed
788
781
  , bool right_closed)
789
782
  {
790
- node_ptr y = uncast(header);
783
+ node_ptr y = detail::uncast(header);
791
784
  node_ptr x = NodeTraits::get_parent(header);
792
785
 
793
786
  while(x){
@@ -801,12 +794,11 @@ class tree_algorithms
801
794
  //If the upper_key is less than x, the target
802
795
  //range is on the left part
803
796
  else if(comp(upper_key, x)){
804
- //y > upper_key
805
797
  y = x;
806
798
  x = NodeTraits::get_left(x);
807
799
  }
808
800
  else{
809
- //x is inside the bounded range( x >= lower_key && x <= upper_key),
801
+ //x is inside the bounded range(lower_key <= x <= upper_key),
810
802
  //so we must split lower and upper searches
811
803
  //
812
804
  //Sanity check: if lower_key and upper_key are equal, then both left_closed and right_closed can't be false
@@ -835,6 +827,30 @@ class tree_algorithms
835
827
  return std::pair<node_ptr,node_ptr> (y, y);
836
828
  }
837
829
 
830
+ //! <b>Requires</b>: "header" must be the header node of a tree.
831
+ //! KeyNodePtrCompare is a function object that induces a strict weak
832
+ //! ordering compatible with the strict weak ordering used to create the
833
+ //! the tree. KeyNodePtrCompare can compare KeyType with tree's node_ptrs.
834
+ //!
835
+ //! <b>Effects</b>: Returns the number of elements with a key equivalent to "key"
836
+ //! according to "comp".
837
+ //!
838
+ //! <b>Complexity</b>: Logarithmic.
839
+ //!
840
+ //! <b>Throws</b>: If "comp" throws.
841
+ template<class KeyType, class KeyNodePtrCompare>
842
+ static std::size_t count
843
+ (const const_node_ptr & header, const KeyType &key, KeyNodePtrCompare comp)
844
+ {
845
+ std::pair<node_ptr, node_ptr> ret = equal_range(header, key, comp);
846
+ std::size_t n = 0;
847
+ while(ret.first != ret.second){
848
+ ++n;
849
+ ret.first = base_type::next_node(ret.first);
850
+ }
851
+ return n;
852
+ }
853
+
838
854
  //! <b>Requires</b>: "header" must be the header node of a tree.
839
855
  //! KeyNodePtrCompare is a function object that induces a strict weak
840
856
  //! ordering compatible with the strict weak ordering used to create the
@@ -860,7 +876,32 @@ class tree_algorithms
860
876
  //! ordering compatible with the strict weak ordering used to create the
861
877
  //! the tree. KeyNodePtrCompare can compare KeyType with tree's node_ptrs.
862
878
  //!
863
- //! <b>Effects</b>: Returns an node_ptr to the first element that is
879
+ //! <b>Effects</b>: Returns an a pair of node_ptr delimiting a range containing
880
+ //! the first element that is equivalent to "key" according to "comp" or an
881
+ //! empty range that indicates the position where that element would be
882
+ //! if there are no equivalent elements.
883
+ //!
884
+ //! <b>Complexity</b>: Logarithmic.
885
+ //!
886
+ //! <b>Throws</b>: If "comp" throws.
887
+ template<class KeyType, class KeyNodePtrCompare>
888
+ static std::pair<node_ptr, node_ptr> lower_bound_range
889
+ (const const_node_ptr & header, const KeyType &key, KeyNodePtrCompare comp)
890
+ {
891
+ node_ptr const lb(lower_bound(header, key, comp));
892
+ std::pair<node_ptr, node_ptr> ret_ii(lb, lb);
893
+ if(lb != header && !comp(key, lb)){
894
+ ret_ii.second = base_type::next_node(ret_ii.second);
895
+ }
896
+ return ret_ii;
897
+ }
898
+
899
+ //! <b>Requires</b>: "header" must be the header node of a tree.
900
+ //! KeyNodePtrCompare is a function object that induces a strict weak
901
+ //! ordering compatible with the strict weak ordering used to create the
902
+ //! the tree. KeyNodePtrCompare can compare KeyType with tree's node_ptrs.
903
+ //!
904
+ //! <b>Effects</b>: Returns a node_ptr to the first element that is
864
905
  //! not less than "key" according to "comp" or "header" if that element does
865
906
  //! not exist.
866
907
  //!
@@ -871,7 +912,7 @@ class tree_algorithms
871
912
  static node_ptr lower_bound
872
913
  (const const_node_ptr & header, const KeyType &key, KeyNodePtrCompare comp)
873
914
  {
874
- return lower_bound_loop(NodeTraits::get_parent(header), uncast(header), key, comp);
915
+ return lower_bound_loop(NodeTraits::get_parent(header), detail::uncast(header), key, comp);
875
916
  }
876
917
 
877
918
  //! <b>Requires</b>: "header" must be the header node of a tree.
@@ -879,7 +920,7 @@ class tree_algorithms
879
920
  //! ordering compatible with the strict weak ordering used to create the
880
921
  //! the tree. KeyNodePtrCompare can compare KeyType with tree's node_ptrs.
881
922
  //!
882
- //! <b>Effects</b>: Returns an node_ptr to the first element that is greater
923
+ //! <b>Effects</b>: Returns a node_ptr to the first element that is greater
883
924
  //! than "key" according to "comp" or "header" if that element does not exist.
884
925
  //!
885
926
  //! <b>Complexity</b>: Logarithmic.
@@ -889,7 +930,7 @@ class tree_algorithms
889
930
  static node_ptr upper_bound
890
931
  (const const_node_ptr & header, const KeyType &key, KeyNodePtrCompare comp)
891
932
  {
892
- return upper_bound_loop(NodeTraits::get_parent(header), uncast(header), key, comp);
933
+ return upper_bound_loop(NodeTraits::get_parent(header), detail::uncast(header), key, comp);
893
934
  }
894
935
 
895
936
  //! <b>Requires</b>: "header" must be the header node of a tree.
@@ -913,32 +954,6 @@ class tree_algorithms
913
954
  (const node_ptr & header, const node_ptr & new_value, const insert_commit_data &commit_data)
914
955
  { return insert_commit(header, new_value, commit_data); }
915
956
 
916
- static void insert_commit
917
- (const node_ptr & header, const node_ptr & new_node, const insert_commit_data &commit_data)
918
- {
919
- //Check if commit_data has not been initialized by a insert_unique_check call.
920
- BOOST_INTRUSIVE_INVARIANT_ASSERT(commit_data.node != node_ptr());
921
- node_ptr parent_node(commit_data.node);
922
- if(parent_node == header){
923
- NodeTraits::set_parent(header, new_node);
924
- NodeTraits::set_right(header, new_node);
925
- NodeTraits::set_left(header, new_node);
926
- }
927
- else if(commit_data.link_left){
928
- NodeTraits::set_left(parent_node, new_node);
929
- if(parent_node == NodeTraits::get_left(header))
930
- NodeTraits::set_left(header, new_node);
931
- }
932
- else{
933
- NodeTraits::set_right(parent_node, new_node);
934
- if(parent_node == NodeTraits::get_right(header))
935
- NodeTraits::set_right(header, new_node);
936
- }
937
- NodeTraits::set_parent(new_node, parent_node);
938
- NodeTraits::set_right(new_node, node_ptr());
939
- NodeTraits::set_left(new_node, node_ptr());
940
- }
941
-
942
957
  //! <b>Requires</b>: "header" must be the header node of a tree.
943
958
  //! KeyNodePtrCompare is a function object that induces a strict weak
944
959
  //! ordering compatible with the strict weak ordering used to create the
@@ -975,11 +990,15 @@ class tree_algorithms
975
990
  //! if no more objects are inserted or erased from the set.
976
991
  template<class KeyType, class KeyNodePtrCompare>
977
992
  static std::pair<node_ptr, bool> insert_unique_check
978
- (const const_node_ptr & header, const KeyType &key
979
- ,KeyNodePtrCompare comp, insert_commit_data &commit_data, std::size_t *pdepth = 0)
993
+ (const const_node_ptr & header, const KeyType &key
994
+ ,KeyNodePtrCompare comp, insert_commit_data &commit_data
995
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
996
+ , std::size_t *pdepth = 0
997
+ #endif
998
+ )
980
999
  {
981
1000
  std::size_t depth = 0;
982
- node_ptr h(uncast(header));
1001
+ node_ptr h(detail::uncast(header));
983
1002
  node_ptr y(h);
984
1003
  node_ptr x(NodeTraits::get_parent(y));
985
1004
  node_ptr prev = node_ptr();
@@ -999,28 +1018,67 @@ class tree_algorithms
999
1018
  //Since we've found the upper bound there is no other value with the same key if:
1000
1019
  // - There is no previous node
1001
1020
  // - The previous node is less than the key
1002
- if(!prev || comp(prev, key)){
1021
+ const bool not_present = !prev || comp(prev, key);
1022
+ if(not_present){
1003
1023
  commit_data.link_left = left_child;
1004
1024
  commit_data.node = y;
1005
- return std::pair<node_ptr, bool>(node_ptr(), true);
1006
- }
1007
- //If the previous value was not less than key, it means that it's equal
1008
- //(because we've checked the upper bound)
1009
- else{
1010
- return std::pair<node_ptr, bool>(prev, false);
1011
1025
  }
1026
+ return std::pair<node_ptr, bool>(prev, not_present);
1012
1027
  }
1013
1028
 
1029
+ //! <b>Requires</b>: "header" must be the header node of a tree.
1030
+ //! KeyNodePtrCompare is a function object that induces a strict weak
1031
+ //! ordering compatible with the strict weak ordering used to create the
1032
+ //! the tree. NodePtrCompare compares KeyType with a node_ptr.
1033
+ //! "hint" is node from the "header"'s tree.
1034
+ //!
1035
+ //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
1036
+ //! tree according to "comp" using "hint" as a hint to where it should be
1037
+ //! inserted and obtains the needed information to realize
1038
+ //! a constant-time node insertion if there is no equivalent node.
1039
+ //! If "hint" is the upper_bound the function has constant time
1040
+ //! complexity (two comparisons in the worst case).
1041
+ //!
1042
+ //! <b>Returns</b>: If there is an equivalent value
1043
+ //! returns a pair containing a node_ptr to the already present node
1044
+ //! and false. If there is not equivalent key can be inserted returns true
1045
+ //! in the returned pair's boolean and fills "commit_data" that is meant to
1046
+ //! be used with the "insert_commit" function to achieve a constant-time
1047
+ //! insertion function.
1048
+ //!
1049
+ //! <b>Complexity</b>: Average complexity is at most logarithmic, but it is
1050
+ //! amortized constant time if new_node should be inserted immediately before "hint".
1051
+ //!
1052
+ //! <b>Throws</b>: If "comp" throws.
1053
+ //!
1054
+ //! <b>Notes</b>: This function is used to improve performance when constructing
1055
+ //! a node is expensive and the user does not want to have two equivalent nodes
1056
+ //! in the tree: if there is an equivalent value
1057
+ //! the constructed object must be discarded. Many times, the part of the
1058
+ //! node that is used to impose the order is much cheaper to construct
1059
+ //! than the node and this function offers the possibility to use that part
1060
+ //! to check if the insertion will be successful.
1061
+ //!
1062
+ //! If the check is successful, the user can construct the node and use
1063
+ //! "insert_commit" to insert the node in constant-time. This gives a total
1064
+ //! logarithmic complexity to the insertion: check(O(log(N)) + commit(O(1)).
1065
+ //!
1066
+ //! "commit_data" remains valid for a subsequent "insert_unique_commit" only
1067
+ //! if no more objects are inserted or erased from the set.
1014
1068
  template<class KeyType, class KeyNodePtrCompare>
1015
1069
  static std::pair<node_ptr, bool> insert_unique_check
1016
1070
  (const const_node_ptr & header, const node_ptr &hint, const KeyType &key
1017
- ,KeyNodePtrCompare comp, insert_commit_data &commit_data, std::size_t *pdepth = 0)
1071
+ ,KeyNodePtrCompare comp, insert_commit_data &commit_data
1072
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1073
+ , std::size_t *pdepth = 0
1074
+ #endif
1075
+ )
1018
1076
  {
1019
1077
  //hint must be bigger than the key
1020
1078
  if(hint == header || comp(key, hint)){
1021
1079
  node_ptr prev(hint);
1022
1080
  //Previous value should be less than the key
1023
- if(hint == begin_node(header) || comp((prev = prev_node(hint)), key)){
1081
+ if(hint == begin_node(header) || comp((prev = base_type::prev_node(hint)), key)){
1024
1082
  commit_data.link_left = unique(header) || !NodeTraits::get_left(hint);
1025
1083
  commit_data.node = commit_data.link_left ? hint : prev;
1026
1084
  if(pdepth){
@@ -1033,44 +1091,27 @@ class tree_algorithms
1033
1091
  return insert_unique_check(header, key, comp, commit_data, pdepth);
1034
1092
  }
1035
1093
 
1036
- template<class NodePtrCompare>
1037
- static void insert_equal_check
1038
- (const node_ptr &header, const node_ptr & hint, const node_ptr & new_node, NodePtrCompare comp
1039
- , insert_commit_data &commit_data, std::size_t *pdepth = 0)
1040
- {
1041
- if(hint == header || !comp(hint, new_node)){
1042
- node_ptr prev(hint);
1043
- if(hint == NodeTraits::get_left(header) ||
1044
- !comp(new_node, (prev = prev_node(hint)))){
1045
- bool link_left = unique(header) || !NodeTraits::get_left(hint);
1046
- commit_data.link_left = link_left;
1047
- commit_data.node = link_left ? hint : prev;
1048
- if(pdepth){
1049
- *pdepth = commit_data.node == header ? 0 : depth(commit_data.node) + 1;
1050
- }
1051
- }
1052
- else{
1053
- insert_equal_upper_bound_check(header, new_node, comp, commit_data, pdepth);
1054
- }
1055
- }
1056
- else{
1057
- insert_equal_lower_bound_check(header, new_node, comp, commit_data, pdepth);
1058
- }
1059
- }
1060
-
1061
- template<class NodePtrCompare>
1062
- static void insert_equal_upper_bound_check
1063
- (const node_ptr & h, const node_ptr & new_node, NodePtrCompare comp, insert_commit_data & commit_data, std::size_t *pdepth = 0)
1064
- { insert_equal_check_impl(true, h, new_node, comp, commit_data, pdepth); }
1065
-
1066
- template<class NodePtrCompare>
1067
- static void insert_equal_lower_bound_check
1068
- (const node_ptr & h, const node_ptr & new_node, NodePtrCompare comp, insert_commit_data & commit_data, std::size_t *pdepth = 0)
1069
- { insert_equal_check_impl(false, h, new_node, comp, commit_data, pdepth); }
1070
-
1094
+ //! <b>Requires</b>: "header" must be the header node of a tree.
1095
+ //! NodePtrCompare is a function object that induces a strict weak
1096
+ //! ordering compatible with the strict weak ordering used to create the
1097
+ //! the tree. NodePtrCompare compares two node_ptrs. "hint" is node from
1098
+ //! the "header"'s tree.
1099
+ //!
1100
+ //! <b>Effects</b>: Inserts new_node into the tree, using "hint" as a hint to
1101
+ //! where it will be inserted. If "hint" is the upper_bound
1102
+ //! the insertion takes constant time (two comparisons in the worst case).
1103
+ //!
1104
+ //! <b>Complexity</b>: Logarithmic in general, but it is amortized
1105
+ //! constant time if new_node is inserted immediately before "hint".
1106
+ //!
1107
+ //! <b>Throws</b>: If "comp" throws.
1071
1108
  template<class NodePtrCompare>
1072
1109
  static node_ptr insert_equal
1073
- (const node_ptr & h, const node_ptr & hint, const node_ptr & new_node, NodePtrCompare comp, std::size_t *pdepth = 0)
1110
+ (const node_ptr & h, const node_ptr & hint, const node_ptr & new_node, NodePtrCompare comp
1111
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1112
+ , std::size_t *pdepth = 0
1113
+ #endif
1114
+ )
1074
1115
  {
1075
1116
  insert_commit_data commit_data;
1076
1117
  insert_equal_check(h, hint, new_node, comp, commit_data, pdepth);
@@ -1078,9 +1119,25 @@ class tree_algorithms
1078
1119
  return new_node;
1079
1120
  }
1080
1121
 
1122
+ //! <b>Requires</b>: "h" must be the header node of a tree.
1123
+ //! NodePtrCompare is a function object that induces a strict weak
1124
+ //! ordering compatible with the strict weak ordering used to create the
1125
+ //! the tree. NodePtrCompare compares two node_ptrs.
1126
+ //!
1127
+ //! <b>Effects</b>: Inserts new_node into the tree before the upper bound
1128
+ //! according to "comp".
1129
+ //!
1130
+ //! <b>Complexity</b>: Average complexity for insert element is at
1131
+ //! most logarithmic.
1132
+ //!
1133
+ //! <b>Throws</b>: If "comp" throws.
1081
1134
  template<class NodePtrCompare>
1082
1135
  static node_ptr insert_equal_upper_bound
1083
- (const node_ptr & h, const node_ptr & new_node, NodePtrCompare comp, std::size_t *pdepth = 0)
1136
+ (const node_ptr & h, const node_ptr & new_node, NodePtrCompare comp
1137
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1138
+ , std::size_t *pdepth = 0
1139
+ #endif
1140
+ )
1084
1141
  {
1085
1142
  insert_commit_data commit_data;
1086
1143
  insert_equal_upper_bound_check(h, new_node, comp, commit_data, pdepth);
@@ -1088,9 +1145,25 @@ class tree_algorithms
1088
1145
  return new_node;
1089
1146
  }
1090
1147
 
1148
+ //! <b>Requires</b>: "h" must be the header node of a tree.
1149
+ //! NodePtrCompare is a function object that induces a strict weak
1150
+ //! ordering compatible with the strict weak ordering used to create the
1151
+ //! the tree. NodePtrCompare compares two node_ptrs.
1152
+ //!
1153
+ //! <b>Effects</b>: Inserts new_node into the tree before the lower bound
1154
+ //! according to "comp".
1155
+ //!
1156
+ //! <b>Complexity</b>: Average complexity for insert element is at
1157
+ //! most logarithmic.
1158
+ //!
1159
+ //! <b>Throws</b>: If "comp" throws.
1091
1160
  template<class NodePtrCompare>
1092
1161
  static node_ptr insert_equal_lower_bound
1093
- (const node_ptr & h, const node_ptr & new_node, NodePtrCompare comp, std::size_t *pdepth = 0)
1162
+ (const node_ptr & h, const node_ptr & new_node, NodePtrCompare comp
1163
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1164
+ , std::size_t *pdepth = 0
1165
+ #endif
1166
+ )
1094
1167
  {
1095
1168
  insert_commit_data commit_data;
1096
1169
  insert_equal_lower_bound_check(h, new_node, comp, commit_data, pdepth);
@@ -1098,8 +1171,26 @@ class tree_algorithms
1098
1171
  return new_node;
1099
1172
  }
1100
1173
 
1174
+ //! <b>Requires</b>: "header" must be the header node of a tree.
1175
+ //! "pos" must be a valid iterator or header (end) node.
1176
+ //! "pos" must be an iterator pointing to the successor to "new_node"
1177
+ //! once inserted according to the order of already inserted nodes. This function does not
1178
+ //! check "pos" and this precondition must be guaranteed by the caller.
1179
+ //!
1180
+ //! <b>Effects</b>: Inserts new_node into the tree before "pos".
1181
+ //!
1182
+ //! <b>Complexity</b>: Constant-time.
1183
+ //!
1184
+ //! <b>Throws</b>: Nothing.
1185
+ //!
1186
+ //! <b>Note</b>: If "pos" is not the successor of the newly inserted "new_node"
1187
+ //! tree invariants might be broken.
1101
1188
  static node_ptr insert_before
1102
- (const node_ptr & header, const node_ptr & pos, const node_ptr & new_node, std::size_t *pdepth = 0)
1189
+ (const node_ptr & header, const node_ptr & pos, const node_ptr & new_node
1190
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1191
+ , std::size_t *pdepth = 0
1192
+ #endif
1193
+ )
1103
1194
  {
1104
1195
  insert_commit_data commit_data;
1105
1196
  insert_before_check(header, pos, commit_data, pdepth);
@@ -1107,59 +1198,56 @@ class tree_algorithms
1107
1198
  return new_node;
1108
1199
  }
1109
1200
 
1110
- static void insert_before_check
1111
- (const node_ptr &header, const node_ptr & pos
1112
- , insert_commit_data &commit_data, std::size_t *pdepth = 0)
1113
- {
1114
- node_ptr prev(pos);
1115
- if(pos != NodeTraits::get_left(header))
1116
- prev = prev_node(pos);
1117
- bool link_left = unique(header) || !NodeTraits::get_left(pos);
1118
- commit_data.link_left = link_left;
1119
- commit_data.node = link_left ? pos : prev;
1120
- if(pdepth){
1121
- *pdepth = commit_data.node == header ? 0 : depth(commit_data.node) + 1;
1122
- }
1123
- }
1124
-
1201
+ //! <b>Requires</b>: "header" must be the header node of a tree.
1202
+ //! "new_node" must be, according to the used ordering no less than the
1203
+ //! greatest inserted key.
1204
+ //!
1205
+ //! <b>Effects</b>: Inserts new_node into the tree before "pos".
1206
+ //!
1207
+ //! <b>Complexity</b>: Constant-time.
1208
+ //!
1209
+ //! <b>Throws</b>: Nothing.
1210
+ //!
1211
+ //! <b>Note</b>: If "new_node" is less than the greatest inserted key
1212
+ //! tree invariants are broken. This function is slightly faster than
1213
+ //! using "insert_before".
1125
1214
  static void push_back
1126
- (const node_ptr & header, const node_ptr & new_node, std::size_t *pdepth = 0)
1215
+ (const node_ptr & header, const node_ptr & new_node
1216
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1217
+ , std::size_t *pdepth = 0
1218
+ #endif
1219
+ )
1127
1220
  {
1128
1221
  insert_commit_data commit_data;
1129
1222
  push_back_check(header, commit_data, pdepth);
1130
1223
  insert_commit(header, new_node, commit_data);
1131
1224
  }
1132
1225
 
1133
- static void push_back_check
1134
- (const node_ptr & header, insert_commit_data &commit_data, std::size_t *pdepth = 0)
1135
- {
1136
- node_ptr prev(NodeTraits::get_right(header));
1137
- if(pdepth){
1138
- *pdepth = prev == header ? 0 : depth(prev) + 1;
1139
- }
1140
- commit_data.link_left = false;
1141
- commit_data.node = prev;
1142
- }
1143
-
1226
+ //! <b>Requires</b>: "header" must be the header node of a tree.
1227
+ //! "new_node" must be, according to the used ordering, no greater than the
1228
+ //! lowest inserted key.
1229
+ //!
1230
+ //! <b>Effects</b>: Inserts new_node into the tree before "pos".
1231
+ //!
1232
+ //! <b>Complexity</b>: Constant-time.
1233
+ //!
1234
+ //! <b>Throws</b>: Nothing.
1235
+ //!
1236
+ //! <b>Note</b>: If "new_node" is greater than the lowest inserted key
1237
+ //! tree invariants are broken. This function is slightly faster than
1238
+ //! using "insert_before".
1144
1239
  static void push_front
1145
- (const node_ptr & header, const node_ptr & new_node, std::size_t *pdepth = 0)
1240
+ (const node_ptr & header, const node_ptr & new_node
1241
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1242
+ , std::size_t *pdepth = 0
1243
+ #endif
1244
+ )
1146
1245
  {
1147
1246
  insert_commit_data commit_data;
1148
1247
  push_front_check(header, commit_data, pdepth);
1149
1248
  insert_commit(header, new_node, commit_data);
1150
1249
  }
1151
1250
 
1152
- static void push_front_check
1153
- (const node_ptr & header, insert_commit_data &commit_data, std::size_t *pdepth = 0)
1154
- {
1155
- node_ptr pos(NodeTraits::get_left(header));
1156
- if(pdepth){
1157
- *pdepth = pos == header ? 0 : depth(pos) + 1;
1158
- }
1159
- commit_data.link_left = true;
1160
- commit_data.node = pos;
1161
- }
1162
-
1163
1251
  //! <b>Requires</b>: 'node' can't be a header node.
1164
1252
  //!
1165
1253
  //! <b>Effects</b>: Calculates the depth of a node: the depth of a
@@ -1193,26 +1281,582 @@ class tree_algorithms
1193
1281
  //! the nodes of the target tree. If "cloner" throws, the cloned target nodes
1194
1282
  //! are disposed using <tt>void disposer(const node_ptr &)</tt>.
1195
1283
  //!
1196
- //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
1284
+ //! <b>Complexity</b>: Linear to the number of element of the source tree plus the
1197
1285
  //! number of elements of tree target tree when calling this function.
1198
1286
  //!
1199
- //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
1200
- template <class Cloner, class Disposer>
1201
- static void clone
1202
- (const const_node_ptr & source_header, const node_ptr & target_header, Cloner cloner, Disposer disposer)
1287
+ //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
1288
+ template <class Cloner, class Disposer>
1289
+ static void clone
1290
+ (const const_node_ptr & source_header, const node_ptr & target_header, Cloner cloner, Disposer disposer)
1291
+ {
1292
+ if(!unique(target_header)){
1293
+ clear_and_dispose(target_header, disposer);
1294
+ }
1295
+
1296
+ node_ptr leftmost, rightmost;
1297
+ node_ptr new_root = clone_subtree
1298
+ (source_header, target_header, cloner, disposer, leftmost, rightmost);
1299
+
1300
+ //Now update header node
1301
+ NodeTraits::set_parent(target_header, new_root);
1302
+ NodeTraits::set_left (target_header, leftmost);
1303
+ NodeTraits::set_right (target_header, rightmost);
1304
+ }
1305
+
1306
+ //! <b>Requires</b>: header must be the header of a tree, z a node
1307
+ //! of that tree and z != header.
1308
+ //!
1309
+ //! <b>Effects</b>: Erases node "z" from the tree with header "header".
1310
+ //!
1311
+ //! <b>Complexity</b>: Amortized constant time.
1312
+ //!
1313
+ //! <b>Throws</b>: Nothing.
1314
+ static void erase(const node_ptr & header, const node_ptr & z)
1315
+ {
1316
+ data_for_rebalance ignored;
1317
+ erase(header, z, ignored);
1318
+ }
1319
+
1320
+ //! <b>Requires</b>: node is a tree node but not the header.
1321
+ //!
1322
+ //! <b>Effects</b>: Unlinks the node and rebalances the tree.
1323
+ //!
1324
+ //! <b>Complexity</b>: Average complexity is constant time.
1325
+ //!
1326
+ //! <b>Throws</b>: Nothing.
1327
+ static void unlink(const node_ptr & node)
1328
+ {
1329
+ node_ptr x = NodeTraits::get_parent(node);
1330
+ if(x){
1331
+ while(!base_type::is_header(x))
1332
+ x = NodeTraits::get_parent(x);
1333
+ erase(x, node);
1334
+ }
1335
+ }
1336
+
1337
+ //! <b>Requires</b>: header must be the header of a tree.
1338
+ //!
1339
+ //! <b>Effects</b>: Rebalances the tree.
1340
+ //!
1341
+ //! <b>Throws</b>: Nothing.
1342
+ //!
1343
+ //! <b>Complexity</b>: Linear.
1344
+ static void rebalance(const node_ptr & header)
1345
+ {
1346
+ node_ptr root = NodeTraits::get_parent(header);
1347
+ if(root){
1348
+ rebalance_subtree(root);
1349
+ }
1350
+ }
1351
+
1352
+ //! <b>Requires</b>: old_root is a node of a tree. It shall not be null.
1353
+ //!
1354
+ //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
1355
+ //!
1356
+ //! <b>Returns</b>: The new root of the subtree.
1357
+ //!
1358
+ //! <b>Throws</b>: Nothing.
1359
+ //!
1360
+ //! <b>Complexity</b>: Linear.
1361
+ static node_ptr rebalance_subtree(const node_ptr & old_root)
1362
+ {
1363
+ //Taken from:
1364
+ //"Tree rebalancing in optimal time and space"
1365
+ //Quentin F. Stout and Bette L. Warren
1366
+
1367
+ //To avoid irregularities in the algorithm (old_root can be a
1368
+ //left or right child or even the root of the tree) just put the
1369
+ //root as the right child of its parent. Before doing this backup
1370
+ //information to restore the original relationship after
1371
+ //the algorithm is applied.
1372
+ node_ptr super_root = NodeTraits::get_parent(old_root);
1373
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(super_root);
1374
+
1375
+ //Get root info
1376
+ node_ptr super_root_right_backup = NodeTraits::get_right(super_root);
1377
+ bool super_root_is_header = NodeTraits::get_parent(super_root) == old_root;
1378
+ bool old_root_is_right = is_right_child(old_root);
1379
+ NodeTraits::set_right(super_root, old_root);
1380
+
1381
+ std::size_t size;
1382
+ subtree_to_vine(super_root, size);
1383
+ vine_to_subtree(super_root, size);
1384
+ node_ptr new_root = NodeTraits::get_right(super_root);
1385
+
1386
+ //Recover root
1387
+ if(super_root_is_header){
1388
+ NodeTraits::set_right(super_root, super_root_right_backup);
1389
+ NodeTraits::set_parent(super_root, new_root);
1390
+ }
1391
+ else if(old_root_is_right){
1392
+ NodeTraits::set_right(super_root, new_root);
1393
+ }
1394
+ else{
1395
+ NodeTraits::set_right(super_root, super_root_right_backup);
1396
+ NodeTraits::set_left(super_root, new_root);
1397
+ }
1398
+ return new_root;
1399
+ }
1400
+
1401
+ //! <b>Effects</b>: Asserts the integrity of the container with additional checks provided by the user.
1402
+ //!
1403
+ //! <b>Requires</b>: header must be the header of a tree.
1404
+ //!
1405
+ //! <b>Complexity</b>: Linear time.
1406
+ //!
1407
+ //! <b>Note</b>: The method might not have effect when asserts are turned off (e.g., with NDEBUG).
1408
+ //! Experimental function, interface might change in future versions.
1409
+ template<class Checker>
1410
+ static void check(const const_node_ptr& header, Checker checker, typename Checker::return_type& checker_return)
1411
+ {
1412
+ const_node_ptr root_node_ptr = NodeTraits::get_parent(header);
1413
+ if (!root_node_ptr){
1414
+ // check left&right header pointers
1415
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(NodeTraits::get_left(header) == header);
1416
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(NodeTraits::get_right(header) == header);
1417
+ }
1418
+ else{
1419
+ // check parent pointer of root node
1420
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(NodeTraits::get_parent(root_node_ptr) == header);
1421
+ // check subtree from root
1422
+ check_subtree(root_node_ptr, checker, checker_return);
1423
+ // check left&right header pointers
1424
+ const_node_ptr p = root_node_ptr;
1425
+ while (NodeTraits::get_left(p)) { p = NodeTraits::get_left(p); }
1426
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(NodeTraits::get_left(header) == p);
1427
+ p = root_node_ptr;
1428
+ while (NodeTraits::get_right(p)) { p = NodeTraits::get_right(p); }
1429
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(NodeTraits::get_right(header) == p);
1430
+ }
1431
+ }
1432
+
1433
+ protected:
1434
+ static void erase(const node_ptr & header, const node_ptr & z, data_for_rebalance &info)
1435
+ {
1436
+ node_ptr y(z);
1437
+ node_ptr x;
1438
+ const node_ptr z_left(NodeTraits::get_left(z));
1439
+ const node_ptr z_right(NodeTraits::get_right(z));
1440
+
1441
+ if(!z_left){
1442
+ x = z_right; // x might be null.
1443
+ }
1444
+ else if(!z_right){ // z has exactly one non-null child. y == z.
1445
+ x = z_left; // x is not null.
1446
+ BOOST_ASSERT(x);
1447
+ }
1448
+ else{ //make y != z
1449
+ // y = find z's successor
1450
+ y = base_type::minimum(z_right);
1451
+ x = NodeTraits::get_right(y); // x might be null.
1452
+ }
1453
+
1454
+ node_ptr x_parent;
1455
+ const node_ptr z_parent(NodeTraits::get_parent(z));
1456
+ const bool z_is_leftchild(NodeTraits::get_left(z_parent) == z);
1457
+
1458
+ if(y != z){ //has two children and y is the minimum of z
1459
+ //y is z's successor and it has a null left child.
1460
+ //x is the right child of y (it can be null)
1461
+ //Relink y in place of z and link x with y's old parent
1462
+ NodeTraits::set_parent(z_left, y);
1463
+ NodeTraits::set_left(y, z_left);
1464
+ if(y != z_right){
1465
+ //Link y with the right tree of z
1466
+ NodeTraits::set_right(y, z_right);
1467
+ NodeTraits::set_parent(z_right, y);
1468
+ //Link x with y's old parent (y must be a left child)
1469
+ x_parent = NodeTraits::get_parent(y);
1470
+ BOOST_ASSERT(NodeTraits::get_left(x_parent) == y);
1471
+ if(x)
1472
+ NodeTraits::set_parent(x, x_parent);
1473
+ //Since y was the successor and not the right child of z, it must be a left child
1474
+ NodeTraits::set_left(x_parent, x);
1475
+ }
1476
+ else{ //y was the right child of y so no need to fix x's position
1477
+ x_parent = y;
1478
+ }
1479
+ NodeTraits::set_parent(y, z_parent);
1480
+ this_type::set_child(header, y, z_parent, z_is_leftchild);
1481
+ }
1482
+ else { // z has zero or one child, x is one child (it can be null)
1483
+ //Just link x to z's parent
1484
+ x_parent = z_parent;
1485
+ if(x)
1486
+ NodeTraits::set_parent(x, z_parent);
1487
+ this_type::set_child(header, x, z_parent, z_is_leftchild);
1488
+
1489
+ //Now update leftmost/rightmost in case z was one of them
1490
+ if(NodeTraits::get_left(header) == z){
1491
+ //z_left must be null because z is the leftmost
1492
+ BOOST_ASSERT(!z_left);
1493
+ NodeTraits::set_left(header, !z_right ?
1494
+ z_parent : // makes leftmost == header if z == root
1495
+ base_type::minimum(z_right));
1496
+ }
1497
+ if(NodeTraits::get_right(header) == z){
1498
+ //z_right must be null because z is the rightmost
1499
+ BOOST_ASSERT(!z_right);
1500
+ NodeTraits::set_right(header, !z_left ?
1501
+ z_parent : // makes rightmost == header if z == root
1502
+ base_type::maximum(z_left));
1503
+ }
1504
+ }
1505
+
1506
+ //If z had 0/1 child, y == z and one of its children (and maybe null)
1507
+ //If z had 2 children, y is the successor of z and x is the right child of y
1508
+ info.x = x;
1509
+ info.y = y;
1510
+ //If z had 0/1 child, x_parent is the new parent of the old right child of y (z's successor)
1511
+ //If z had 2 children, x_parent is the new parent of y (z_parent)
1512
+ BOOST_ASSERT(!x || NodeTraits::get_parent(x) == x_parent);
1513
+ info.x_parent = x_parent;
1514
+ }
1515
+
1516
+ //! <b>Requires</b>: node is a node of the tree but it's not the header.
1517
+ //!
1518
+ //! <b>Effects</b>: Returns the number of nodes of the subtree.
1519
+ //!
1520
+ //! <b>Complexity</b>: Linear time.
1521
+ //!
1522
+ //! <b>Throws</b>: Nothing.
1523
+ static std::size_t subtree_size(const const_node_ptr & subtree)
1524
+ {
1525
+ std::size_t count = 0;
1526
+ if (subtree){
1527
+ node_ptr n = detail::uncast(subtree);
1528
+ node_ptr m = NodeTraits::get_left(n);
1529
+ while(m){
1530
+ n = m;
1531
+ m = NodeTraits::get_left(n);
1532
+ }
1533
+
1534
+ while(1){
1535
+ ++count;
1536
+ node_ptr n_right(NodeTraits::get_right(n));
1537
+ if(n_right){
1538
+ n = n_right;
1539
+ m = NodeTraits::get_left(n);
1540
+ while(m){
1541
+ n = m;
1542
+ m = NodeTraits::get_left(n);
1543
+ }
1544
+ }
1545
+ else {
1546
+ do{
1547
+ if (n == subtree){
1548
+ return count;
1549
+ }
1550
+ m = n;
1551
+ n = NodeTraits::get_parent(n);
1552
+ }while(NodeTraits::get_left(n) != m);
1553
+ }
1554
+ }
1555
+ }
1556
+ return count;
1557
+ }
1558
+
1559
+ //! <b>Requires</b>: p is a node of a tree.
1560
+ //!
1561
+ //! <b>Effects</b>: Returns true if p is a left child.
1562
+ //!
1563
+ //! <b>Complexity</b>: Constant.
1564
+ //!
1565
+ //! <b>Throws</b>: Nothing.
1566
+ static bool is_left_child(const node_ptr & p)
1567
+ { return NodeTraits::get_left(NodeTraits::get_parent(p)) == p; }
1568
+
1569
+ //! <b>Requires</b>: p is a node of a tree.
1570
+ //!
1571
+ //! <b>Effects</b>: Returns true if p is a right child.
1572
+ //!
1573
+ //! <b>Complexity</b>: Constant.
1574
+ //!
1575
+ //! <b>Throws</b>: Nothing.
1576
+ static bool is_right_child(const node_ptr & p)
1577
+ { return NodeTraits::get_right(NodeTraits::get_parent(p)) == p; }
1578
+
1579
+ static void insert_before_check
1580
+ (const node_ptr &header, const node_ptr & pos
1581
+ , insert_commit_data &commit_data
1582
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1583
+ , std::size_t *pdepth = 0
1584
+ #endif
1585
+ )
1586
+ {
1587
+ node_ptr prev(pos);
1588
+ if(pos != NodeTraits::get_left(header))
1589
+ prev = base_type::prev_node(pos);
1590
+ bool link_left = unique(header) || !NodeTraits::get_left(pos);
1591
+ commit_data.link_left = link_left;
1592
+ commit_data.node = link_left ? pos : prev;
1593
+ if(pdepth){
1594
+ *pdepth = commit_data.node == header ? 0 : depth(commit_data.node) + 1;
1595
+ }
1596
+ }
1597
+
1598
+ static void push_back_check
1599
+ (const node_ptr & header, insert_commit_data &commit_data
1600
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1601
+ , std::size_t *pdepth = 0
1602
+ #endif
1603
+ )
1604
+ {
1605
+ node_ptr prev(NodeTraits::get_right(header));
1606
+ if(pdepth){
1607
+ *pdepth = prev == header ? 0 : depth(prev) + 1;
1608
+ }
1609
+ commit_data.link_left = false;
1610
+ commit_data.node = prev;
1611
+ }
1612
+
1613
+ static void push_front_check
1614
+ (const node_ptr & header, insert_commit_data &commit_data
1615
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1616
+ , std::size_t *pdepth = 0
1617
+ #endif
1618
+ )
1619
+ {
1620
+ node_ptr pos(NodeTraits::get_left(header));
1621
+ if(pdepth){
1622
+ *pdepth = pos == header ? 0 : depth(pos) + 1;
1623
+ }
1624
+ commit_data.link_left = true;
1625
+ commit_data.node = pos;
1626
+ }
1627
+
1628
+ template<class NodePtrCompare>
1629
+ static void insert_equal_check
1630
+ (const node_ptr &header, const node_ptr & hint, const node_ptr & new_node, NodePtrCompare comp
1631
+ , insert_commit_data &commit_data
1632
+ /// @cond
1633
+ , std::size_t *pdepth = 0
1634
+ /// @endcond
1635
+ )
1636
+ {
1637
+ if(hint == header || !comp(hint, new_node)){
1638
+ node_ptr prev(hint);
1639
+ if(hint == NodeTraits::get_left(header) ||
1640
+ !comp(new_node, (prev = base_type::prev_node(hint)))){
1641
+ bool link_left = unique(header) || !NodeTraits::get_left(hint);
1642
+ commit_data.link_left = link_left;
1643
+ commit_data.node = link_left ? hint : prev;
1644
+ if(pdepth){
1645
+ *pdepth = commit_data.node == header ? 0 : depth(commit_data.node) + 1;
1646
+ }
1647
+ }
1648
+ else{
1649
+ insert_equal_upper_bound_check(header, new_node, comp, commit_data, pdepth);
1650
+ }
1651
+ }
1652
+ else{
1653
+ insert_equal_lower_bound_check(header, new_node, comp, commit_data, pdepth);
1654
+ }
1655
+ }
1656
+
1657
+ template<class NodePtrCompare>
1658
+ static void insert_equal_upper_bound_check
1659
+ (const node_ptr & h, const node_ptr & new_node, NodePtrCompare comp, insert_commit_data & commit_data, std::size_t *pdepth = 0)
1660
+ {
1661
+ std::size_t depth = 0;
1662
+ node_ptr y(h);
1663
+ node_ptr x(NodeTraits::get_parent(y));
1664
+
1665
+ while(x){
1666
+ ++depth;
1667
+ y = x;
1668
+ x = comp(new_node, x) ?
1669
+ NodeTraits::get_left(x) : NodeTraits::get_right(x);
1670
+ }
1671
+ if(pdepth) *pdepth = depth;
1672
+ commit_data.link_left = (y == h) || comp(new_node, y);
1673
+ commit_data.node = y;
1674
+ }
1675
+
1676
+ template<class NodePtrCompare>
1677
+ static void insert_equal_lower_bound_check
1678
+ (const node_ptr & h, const node_ptr & new_node, NodePtrCompare comp, insert_commit_data & commit_data, std::size_t *pdepth = 0)
1679
+ {
1680
+ std::size_t depth = 0;
1681
+ node_ptr y(h);
1682
+ node_ptr x(NodeTraits::get_parent(y));
1683
+
1684
+ while(x){
1685
+ ++depth;
1686
+ y = x;
1687
+ x = !comp(x, new_node) ?
1688
+ NodeTraits::get_left(x) : NodeTraits::get_right(x);
1689
+ }
1690
+ if(pdepth) *pdepth = depth;
1691
+ commit_data.link_left = (y == h) || !comp(y, new_node);
1692
+ commit_data.node = y;
1693
+ }
1694
+
1695
+ static void insert_commit
1696
+ (const node_ptr & header, const node_ptr & new_node, const insert_commit_data &commit_data)
1697
+ {
1698
+ //Check if commit_data has not been initialized by a insert_unique_check call.
1699
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(commit_data.node != node_ptr());
1700
+ node_ptr parent_node(commit_data.node);
1701
+ if(parent_node == header){
1702
+ NodeTraits::set_parent(header, new_node);
1703
+ NodeTraits::set_right(header, new_node);
1704
+ NodeTraits::set_left(header, new_node);
1705
+ }
1706
+ else if(commit_data.link_left){
1707
+ NodeTraits::set_left(parent_node, new_node);
1708
+ if(parent_node == NodeTraits::get_left(header))
1709
+ NodeTraits::set_left(header, new_node);
1710
+ }
1711
+ else{
1712
+ NodeTraits::set_right(parent_node, new_node);
1713
+ if(parent_node == NodeTraits::get_right(header))
1714
+ NodeTraits::set_right(header, new_node);
1715
+ }
1716
+ NodeTraits::set_parent(new_node, parent_node);
1717
+ NodeTraits::set_right(new_node, node_ptr());
1718
+ NodeTraits::set_left(new_node, node_ptr());
1719
+ }
1720
+
1721
+ //Fix header and own's parent data when replacing x with own, providing own's old data with parent
1722
+ static void set_child(const node_ptr & header, const node_ptr & new_child, const node_ptr & new_parent, const bool link_left)
1723
+ {
1724
+ if(new_parent == header)
1725
+ NodeTraits::set_parent(header, new_child);
1726
+ else if(link_left)
1727
+ NodeTraits::set_left(new_parent, new_child);
1728
+ else
1729
+ NodeTraits::set_right(new_parent, new_child);
1730
+ }
1731
+
1732
+ // rotate p to left (no header and p's parent fixup)
1733
+ static void rotate_left_no_parent_fix(const node_ptr & p, const node_ptr &p_right)
1734
+ {
1735
+ node_ptr p_right_left(NodeTraits::get_left(p_right));
1736
+ NodeTraits::set_right(p, p_right_left);
1737
+ if(p_right_left){
1738
+ NodeTraits::set_parent(p_right_left, p);
1739
+ }
1740
+ NodeTraits::set_left(p_right, p);
1741
+ NodeTraits::set_parent(p, p_right);
1742
+ }
1743
+
1744
+ // rotate p to left (with header and p's parent fixup)
1745
+ static void rotate_left(const node_ptr & p, const node_ptr & p_right, const node_ptr & p_parent, const node_ptr & header)
1746
+ {
1747
+ const bool p_was_left(NodeTraits::get_left(p_parent) == p);
1748
+ rotate_left_no_parent_fix(p, p_right);
1749
+ NodeTraits::set_parent(p_right, p_parent);
1750
+ set_child(header, p_right, p_parent, p_was_left);
1751
+ }
1752
+
1753
+ // rotate p to right (no header and p's parent fixup)
1754
+ static void rotate_right_no_parent_fix(const node_ptr & p, const node_ptr &p_left)
1755
+ {
1756
+ node_ptr p_left_right(NodeTraits::get_right(p_left));
1757
+ NodeTraits::set_left(p, p_left_right);
1758
+ if(p_left_right){
1759
+ NodeTraits::set_parent(p_left_right, p);
1760
+ }
1761
+ NodeTraits::set_right(p_left, p);
1762
+ NodeTraits::set_parent(p, p_left);
1763
+ }
1764
+
1765
+ // rotate p to right (with header and p's parent fixup)
1766
+ static void rotate_right(const node_ptr & p, const node_ptr & p_left, const node_ptr & p_parent, const node_ptr & header)
1767
+ {
1768
+ const bool p_was_left(NodeTraits::get_left(p_parent) == p);
1769
+ rotate_right_no_parent_fix(p, p_left);
1770
+ NodeTraits::set_parent(p_left, p_parent);
1771
+ set_child(header, p_left, p_parent, p_was_left);
1772
+ }
1773
+
1774
+ private:
1775
+
1776
+ static void subtree_to_vine(node_ptr vine_tail, std::size_t &size)
1777
+ {
1778
+ //Inspired by LibAVL:
1779
+ //It uses a clever optimization for trees with parent pointers.
1780
+ //No parent pointer is updated when transforming a tree to a vine as
1781
+ //most of them will be overriten during compression rotations.
1782
+ //A final pass must be made after the rebalancing to updated those
1783
+ //pointers not updated by tree_to_vine + compression calls
1784
+ std::size_t len = 0;
1785
+ node_ptr remainder = NodeTraits::get_right(vine_tail);
1786
+ while(remainder){
1787
+ node_ptr tempptr = NodeTraits::get_left(remainder);
1788
+ if(!tempptr){ //move vine-tail down one
1789
+ vine_tail = remainder;
1790
+ remainder = NodeTraits::get_right(remainder);
1791
+ ++len;
1792
+ }
1793
+ else{ //rotate
1794
+ NodeTraits::set_left(remainder, NodeTraits::get_right(tempptr));
1795
+ NodeTraits::set_right(tempptr, remainder);
1796
+ remainder = tempptr;
1797
+ NodeTraits::set_right(vine_tail, tempptr);
1798
+ }
1799
+ }
1800
+ size = len;
1801
+ }
1802
+
1803
+ static void compress_subtree(node_ptr scanner, std::size_t count)
1804
+ {
1805
+ while(count--){ //compress "count" spine nodes in the tree with pseudo-root scanner
1806
+ node_ptr child = NodeTraits::get_right(scanner);
1807
+ node_ptr child_right = NodeTraits::get_right(child);
1808
+ NodeTraits::set_right(scanner, child_right);
1809
+ //Avoid setting the parent of child_right
1810
+ scanner = child_right;
1811
+ node_ptr scanner_left = NodeTraits::get_left(scanner);
1812
+ NodeTraits::set_right(child, scanner_left);
1813
+ if(scanner_left)
1814
+ NodeTraits::set_parent(scanner_left, child);
1815
+ NodeTraits::set_left(scanner, child);
1816
+ NodeTraits::set_parent(child, scanner);
1817
+ }
1818
+ }
1819
+
1820
+ static void vine_to_subtree(const node_ptr & super_root, std::size_t count)
1821
+ {
1822
+ const std::size_t one_szt = 1u;
1823
+ std::size_t leaf_nodes = count + one_szt - std::size_t(one_szt << detail::floor_log2(count + one_szt));
1824
+ compress_subtree(super_root, leaf_nodes); //create deepest leaves
1825
+ std::size_t vine_nodes = count - leaf_nodes;
1826
+ while(vine_nodes > 1){
1827
+ vine_nodes /= 2;
1828
+ compress_subtree(super_root, vine_nodes);
1829
+ }
1830
+
1831
+ //Update parents of nodes still in the in the original vine line
1832
+ //as those have not been updated by subtree_to_vine or compress_subtree
1833
+ for ( node_ptr q = super_root, p = NodeTraits::get_right(super_root)
1834
+ ; p
1835
+ ; q = p, p = NodeTraits::get_right(p)){
1836
+ NodeTraits::set_parent(p, q);
1837
+ }
1838
+ }
1839
+
1840
+ //! <b>Requires</b>: "n" must be a node inserted in a tree.
1841
+ //!
1842
+ //! <b>Effects</b>: Returns a pointer to the header node of the tree.
1843
+ //!
1844
+ //! <b>Complexity</b>: Logarithmic.
1845
+ //!
1846
+ //! <b>Throws</b>: Nothing.
1847
+ static node_ptr get_root(const node_ptr & node)
1203
1848
  {
1204
- if(!unique(target_header)){
1205
- clear_and_dispose(target_header, disposer);
1849
+ BOOST_INTRUSIVE_INVARIANT_ASSERT((!inited(node)));
1850
+ node_ptr x = NodeTraits::get_parent(node);
1851
+ if(x){
1852
+ while(!base_type::is_header(x)){
1853
+ x = NodeTraits::get_parent(x);
1854
+ }
1855
+ return x;
1856
+ }
1857
+ else{
1858
+ return node;
1206
1859
  }
1207
-
1208
- node_ptr leftmost, rightmost;
1209
- node_ptr new_root = clone_subtree
1210
- (source_header, target_header, cloner, disposer, leftmost, rightmost);
1211
-
1212
- //Now update header node
1213
- NodeTraits::set_parent(target_header, new_root);
1214
- NodeTraits::set_left (target_header, leftmost);
1215
- NodeTraits::set_right (target_header, rightmost);
1216
1860
  }
1217
1861
 
1218
1862
  template <class Cloner, class Disposer>
@@ -1310,304 +1954,6 @@ class tree_algorithms
1310
1954
  }
1311
1955
  }
1312
1956
 
1313
- //! <b>Requires</b>: p is a node of a tree.
1314
- //!
1315
- //! <b>Effects</b>: Returns true if p is a left child.
1316
- //!
1317
- //! <b>Complexity</b>: Constant.
1318
- //!
1319
- //! <b>Throws</b>: Nothing.
1320
- static bool is_left_child(const node_ptr & p)
1321
- { return NodeTraits::get_left(NodeTraits::get_parent(p)) == p; }
1322
-
1323
- //! <b>Requires</b>: p is a node of a tree.
1324
- //!
1325
- //! <b>Effects</b>: Returns true if p is a right child.
1326
- //!
1327
- //! <b>Complexity</b>: Constant.
1328
- //!
1329
- //! <b>Throws</b>: Nothing.
1330
- static bool is_right_child(const node_ptr & p)
1331
- { return NodeTraits::get_right(NodeTraits::get_parent(p)) == p; }
1332
-
1333
- //Fix header and own's parent data when replacing x with own, providing own's old data with parent
1334
- static void replace_own_impl(const node_ptr & own, const node_ptr & x, const node_ptr & header, const node_ptr & own_parent, bool own_was_left)
1335
- {
1336
- if(NodeTraits::get_parent(header) == own)
1337
- NodeTraits::set_parent(header, x);
1338
- else if(own_was_left)
1339
- NodeTraits::set_left(own_parent, x);
1340
- else
1341
- NodeTraits::set_right(own_parent, x);
1342
- }
1343
-
1344
- //Fix header and own's parent data when replacing x with own, supposing own
1345
- //links with its parent are still ok
1346
- static void replace_own(const node_ptr & own, const node_ptr & x, const node_ptr & header)
1347
- {
1348
- node_ptr own_parent(NodeTraits::get_parent(own));
1349
- bool own_is_left(NodeTraits::get_left(own_parent) == own);
1350
- replace_own_impl(own, x, header, own_parent, own_is_left);
1351
- }
1352
-
1353
- // rotate parent p to left (no header and p's parent fixup)
1354
- static node_ptr rotate_left(const node_ptr & p)
1355
- {
1356
- node_ptr x(NodeTraits::get_right(p));
1357
- node_ptr x_left(NodeTraits::get_left(x));
1358
- NodeTraits::set_right(p, x_left);
1359
- if(x_left){
1360
- NodeTraits::set_parent(x_left, p);
1361
- }
1362
- NodeTraits::set_left(x, p);
1363
- NodeTraits::set_parent(p, x);
1364
- return x;
1365
- }
1366
-
1367
- // rotate parent p to left (with header and p's parent fixup)
1368
- static void rotate_left(const node_ptr & p, const node_ptr & header)
1369
- {
1370
- bool p_was_left(is_left_child(p));
1371
- node_ptr p_old_parent(NodeTraits::get_parent(p));
1372
- node_ptr x(rotate_left(p));
1373
- NodeTraits::set_parent(x, p_old_parent);
1374
- replace_own_impl(p, x, header, p_old_parent, p_was_left);
1375
- }
1376
-
1377
- // rotate parent p to right (no header and p's parent fixup)
1378
- static node_ptr rotate_right(const node_ptr & p)
1379
- {
1380
- node_ptr x(NodeTraits::get_left(p));
1381
- node_ptr x_right(NodeTraits::get_right(x));
1382
- NodeTraits::set_left(p, x_right);
1383
- if(x_right){
1384
- NodeTraits::set_parent(x_right, p);
1385
- }
1386
- NodeTraits::set_right(x, p);
1387
- NodeTraits::set_parent(p, x);
1388
- return x;
1389
- }
1390
-
1391
- // rotate parent p to right (with header and p's parent fixup)
1392
- static void rotate_right(const node_ptr & p, const node_ptr & header)
1393
- {
1394
- bool p_was_left(is_left_child(p));
1395
- node_ptr p_old_parent(NodeTraits::get_parent(p));
1396
- node_ptr x(rotate_right(p));
1397
- NodeTraits::set_parent(x, p_old_parent);
1398
- replace_own_impl(p, x, header, p_old_parent, p_was_left);
1399
- }
1400
-
1401
- static void erase(const node_ptr & header, const node_ptr & z)
1402
- {
1403
- data_for_rebalance ignored;
1404
- erase_impl(header, z, ignored);
1405
- }
1406
-
1407
- struct data_for_rebalance
1408
- {
1409
- node_ptr x;
1410
- node_ptr x_parent;
1411
- node_ptr y;
1412
- };
1413
-
1414
- template<class F>
1415
- static void erase(const node_ptr & header, const node_ptr & z, F z_and_successor_fixup, data_for_rebalance &info)
1416
- {
1417
- erase_impl(header, z, info);
1418
- if(info.y != z){
1419
- z_and_successor_fixup(z, info.y);
1420
- }
1421
- }
1422
-
1423
- static void unlink(const node_ptr & node)
1424
- {
1425
- node_ptr x = NodeTraits::get_parent(node);
1426
- if(x){
1427
- while(!is_header(x))
1428
- x = NodeTraits::get_parent(x);
1429
- erase(x, node);
1430
- }
1431
- }
1432
-
1433
- static void tree_to_vine(const node_ptr & header)
1434
- { subtree_to_vine(NodeTraits::get_parent(header)); }
1435
-
1436
- static void vine_to_tree(const node_ptr & header, std::size_t count)
1437
- { vine_to_subtree(NodeTraits::get_parent(header), count); }
1438
-
1439
- static void rebalance(const node_ptr & header)
1440
- {
1441
- //Taken from:
1442
- //"Tree rebalancing in optimal time and space"
1443
- //Quentin F. Stout and Bette L. Warren
1444
- std::size_t len = 0;
1445
- subtree_to_vine(NodeTraits::get_parent(header), &len);
1446
- vine_to_subtree(NodeTraits::get_parent(header), len);
1447
- }
1448
-
1449
- static node_ptr rebalance_subtree(const node_ptr & old_root)
1450
- {
1451
- std::size_t len = 0;
1452
- node_ptr new_root = subtree_to_vine(old_root, &len);
1453
- return vine_to_subtree(new_root, len);
1454
- }
1455
-
1456
- static node_ptr subtree_to_vine(const node_ptr & old_root, std::size_t *plen = 0)
1457
- {
1458
- std::size_t len;
1459
- len = 0;
1460
- if(!old_root) return node_ptr();
1461
-
1462
- //To avoid irregularities in the algorithm (old_root can be a
1463
- //left or right child or even the root of the tree) just put the
1464
- //root as the right child of its parent. Before doing this backup
1465
- //information to restore the original relationship after
1466
- //the algorithm is applied.
1467
- node_ptr super_root = NodeTraits::get_parent(old_root);
1468
- BOOST_INTRUSIVE_INVARIANT_ASSERT(super_root);
1469
-
1470
- //Get info
1471
- node_ptr super_root_right_backup = NodeTraits::get_right(super_root);
1472
- bool super_root_is_header = is_header(super_root);
1473
- bool old_root_is_right = is_right_child(old_root);
1474
-
1475
- node_ptr x(old_root);
1476
- node_ptr new_root(x);
1477
- node_ptr save;
1478
- bool moved_to_right = false;
1479
- for( ; x; x = save){
1480
- save = NodeTraits::get_left(x);
1481
- if(save){
1482
- // Right rotation
1483
- node_ptr save_right = NodeTraits::get_right(save);
1484
- node_ptr x_parent = NodeTraits::get_parent(x);
1485
- NodeTraits::set_parent(save, x_parent);
1486
- NodeTraits::set_right (x_parent, save);
1487
- NodeTraits::set_parent(x, save);
1488
- NodeTraits::set_right (save, x);
1489
- NodeTraits::set_left(x, save_right);
1490
- if(save_right)
1491
- NodeTraits::set_parent(save_right, x);
1492
- if(!moved_to_right)
1493
- new_root = save;
1494
- }
1495
- else{
1496
- moved_to_right = true;
1497
- save = NodeTraits::get_right(x);
1498
- ++len;
1499
- }
1500
- }
1501
-
1502
- if(super_root_is_header){
1503
- NodeTraits::set_right(super_root, super_root_right_backup);
1504
- NodeTraits::set_parent(super_root, new_root);
1505
- }
1506
- else if(old_root_is_right){
1507
- NodeTraits::set_right(super_root, new_root);
1508
- }
1509
- else{
1510
- NodeTraits::set_right(super_root, super_root_right_backup);
1511
- NodeTraits::set_left(super_root, new_root);
1512
- }
1513
- if(plen) *plen = len;
1514
- return new_root;
1515
- }
1516
-
1517
- static node_ptr vine_to_subtree(const node_ptr & old_root, std::size_t count)
1518
- {
1519
- std::size_t leaf_nodes = count + 1 - ((std::size_t) 1 << floor_log2 (count + 1));
1520
- std::size_t vine_nodes = count - leaf_nodes;
1521
-
1522
- node_ptr new_root = compress_subtree(old_root, leaf_nodes);
1523
- while(vine_nodes > 1){
1524
- vine_nodes /= 2;
1525
- new_root = compress_subtree(new_root, vine_nodes);
1526
- }
1527
- return new_root;
1528
- }
1529
-
1530
- static node_ptr compress_subtree(const node_ptr & old_root, std::size_t count)
1531
- {
1532
- if(!old_root) return old_root;
1533
-
1534
- //To avoid irregularities in the algorithm (old_root can be
1535
- //left or right child or even the root of the tree) just put the
1536
- //root as the right child of its parent. First obtain
1537
- //information to restore the original relationship after
1538
- //the algorithm is applied.
1539
- node_ptr super_root = NodeTraits::get_parent(old_root);
1540
- BOOST_INTRUSIVE_INVARIANT_ASSERT(super_root);
1541
-
1542
- //Get info
1543
- node_ptr super_root_right_backup = NodeTraits::get_right(super_root);
1544
- bool super_root_is_header = is_header(super_root);
1545
- bool old_root_is_right = is_right_child(old_root);
1546
-
1547
- //Put old_root as right child
1548
- NodeTraits::set_right(super_root, old_root);
1549
-
1550
- //Start the compression algorithm
1551
- node_ptr even_parent = super_root;
1552
- node_ptr new_root = old_root;
1553
-
1554
- while(count--){
1555
- node_ptr even = NodeTraits::get_right(even_parent);
1556
- node_ptr odd = NodeTraits::get_right(even);
1557
-
1558
- if(new_root == old_root)
1559
- new_root = odd;
1560
-
1561
- node_ptr even_right = NodeTraits::get_left(odd);
1562
- NodeTraits::set_right(even, even_right);
1563
- if (even_right)
1564
- NodeTraits::set_parent(even_right, even);
1565
-
1566
- NodeTraits::set_right(even_parent, odd);
1567
- NodeTraits::set_parent(odd, even_parent);
1568
- NodeTraits::set_left(odd, even);
1569
- NodeTraits::set_parent(even, odd);
1570
- even_parent = odd;
1571
- }
1572
-
1573
- if(super_root_is_header){
1574
- NodeTraits::set_parent(super_root, new_root);
1575
- NodeTraits::set_right(super_root, super_root_right_backup);
1576
- }
1577
- else if(old_root_is_right){
1578
- NodeTraits::set_right(super_root, new_root);
1579
- }
1580
- else{
1581
- NodeTraits::set_left(super_root, new_root);
1582
- NodeTraits::set_right(super_root, super_root_right_backup);
1583
- }
1584
- return new_root;
1585
- }
1586
-
1587
- //! <b>Requires</b>: "n" must be a node inserted in a tree.
1588
- //!
1589
- //! <b>Effects</b>: Returns a pointer to the header node of the tree.
1590
- //!
1591
- //! <b>Complexity</b>: Logarithmic.
1592
- //!
1593
- //! <b>Throws</b>: Nothing.
1594
- static node_ptr get_root(const node_ptr & node)
1595
- {
1596
- BOOST_INTRUSIVE_INVARIANT_ASSERT((!inited(node)));
1597
- node_ptr x = NodeTraits::get_parent(node);
1598
- if(x){
1599
- while(!is_header(x)){
1600
- x = NodeTraits::get_parent(x);
1601
- }
1602
- return x;
1603
- }
1604
- else{
1605
- return node;
1606
- }
1607
- }
1608
-
1609
- private:
1610
-
1611
1957
  template<class KeyType, class KeyNodePtrCompare>
1612
1958
  static node_ptr lower_bound_loop
1613
1959
  (node_ptr x, node_ptr y, const KeyType &key, KeyNodePtrCompare comp)
@@ -1640,103 +1986,46 @@ class tree_algorithms
1640
1986
  return y;
1641
1987
  }
1642
1988
 
1643
-
1644
- template<class NodePtrCompare>
1645
- static void insert_equal_check_impl
1646
- (bool upper, const node_ptr & h, const node_ptr & new_node, NodePtrCompare comp, insert_commit_data & commit_data, std::size_t *pdepth = 0)
1989
+ template<class Checker>
1990
+ static void check_subtree(const const_node_ptr& node, Checker checker, typename Checker::return_type& check_return)
1647
1991
  {
1648
- std::size_t depth = 0;
1649
- node_ptr y(h);
1650
- node_ptr x(NodeTraits::get_parent(y));
1651
- bool link_left;
1652
-
1653
- if(upper){
1654
- while(x){
1655
- ++depth;
1656
- y = x;
1657
- x = comp(new_node, x) ?
1658
- NodeTraits::get_left(x) : NodeTraits::get_right(x);
1659
- }
1660
- link_left = (y == h) || comp(new_node, y);
1992
+ const_node_ptr left = NodeTraits::get_left(node);
1993
+ const_node_ptr right = NodeTraits::get_right(node);
1994
+ typename Checker::return_type check_return_left;
1995
+ typename Checker::return_type check_return_right;
1996
+ if (left)
1997
+ {
1998
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(NodeTraits::get_parent(left) == node);
1999
+ check_subtree(left, checker, check_return_left);
1661
2000
  }
1662
- else{
1663
- while(x){
1664
- ++depth;
1665
- y = x;
1666
- x = !comp(x, new_node) ?
1667
- NodeTraits::get_left(x) : NodeTraits::get_right(x);
1668
- }
1669
- link_left = (y == h) || !comp(y, new_node);
2001
+ if (right)
2002
+ {
2003
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(NodeTraits::get_parent(right) == node);
2004
+ check_subtree(right, checker, check_return_right);
1670
2005
  }
1671
-
1672
- commit_data.link_left = link_left;
1673
- commit_data.node = y;
1674
- if(pdepth) *pdepth = depth;
2006
+ checker(node, check_return_left, check_return_right, check_return);
1675
2007
  }
2008
+ };
1676
2009
 
1677
- static void erase_impl(const node_ptr & header, const node_ptr & z, data_for_rebalance &info)
1678
- {
1679
- node_ptr y(z);
1680
- node_ptr x;
1681
- node_ptr x_parent = node_ptr();
1682
- node_ptr z_left(NodeTraits::get_left(z));
1683
- node_ptr z_right(NodeTraits::get_right(z));
1684
- if(!z_left){
1685
- x = z_right; // x might be null.
1686
- }
1687
- else if(!z_right){ // z has exactly one non-null child. y == z.
1688
- x = z_left; // x is not null.
1689
- }
1690
- else{
1691
- // find z's successor
1692
- y = tree_algorithms::minimum (z_right);
1693
- x = NodeTraits::get_right(y); // x might be null.
1694
- }
2010
+ /// @cond
1695
2011
 
1696
- if(y != z){
1697
- // relink y in place of z. y is z's successor
1698
- NodeTraits::set_parent(NodeTraits::get_left(z), y);
1699
- NodeTraits::set_left(y, NodeTraits::get_left(z));
1700
- if(y != NodeTraits::get_right(z)){
1701
- x_parent = NodeTraits::get_parent(y);
1702
- if(x)
1703
- NodeTraits::set_parent(x, x_parent);
1704
- NodeTraits::set_left(x_parent, x); // y must be a child of left_
1705
- NodeTraits::set_right(y, NodeTraits::get_right(z));
1706
- NodeTraits::set_parent(NodeTraits::get_right(z), y);
1707
- }
1708
- else
1709
- x_parent = y;
1710
- tree_algorithms::replace_own (z, y, header);
1711
- NodeTraits::set_parent(y, NodeTraits::get_parent(z));
1712
- }
1713
- else { // y == z --> z has only one child, or none
1714
- x_parent = NodeTraits::get_parent(z);
1715
- if(x)
1716
- NodeTraits::set_parent(x, x_parent);
1717
- tree_algorithms::replace_own (z, x, header);
1718
- if(NodeTraits::get_left(header) == z){
1719
- NodeTraits::set_left(header, !NodeTraits::get_right(z) ? // z->get_left() must be null also
1720
- NodeTraits::get_parent(z) : // makes leftmost == header if z == root
1721
- tree_algorithms::minimum (x));
1722
- }
1723
- if(NodeTraits::get_right(header) == z){
1724
- NodeTraits::set_right(header, !NodeTraits::get_left(z) ? // z->get_right() must be null also
1725
- NodeTraits::get_parent(z) : // makes rightmost == header if z == root
1726
- tree_algorithms::maximum(x));
1727
- }
1728
- }
2012
+ template<class NodeTraits>
2013
+ struct get_algo<BsTreeAlgorithms, NodeTraits>
2014
+ {
2015
+ typedef bstree_algorithms<NodeTraits> type;
2016
+ };
1729
2017
 
1730
- info.x = x;
1731
- info.x_parent = x_parent;
1732
- info.y = y;
1733
- }
2018
+ template <class ValueTraits, class NodePtrCompare, class ExtraChecker>
2019
+ struct get_node_checker<BsTreeAlgorithms, ValueTraits, NodePtrCompare, ExtraChecker>
2020
+ {
2021
+ typedef detail::bstree_node_checker<ValueTraits, NodePtrCompare, ExtraChecker> type;
1734
2022
  };
1735
2023
 
1736
- } //namespace detail {
2024
+ /// @endcond
2025
+
1737
2026
  } //namespace intrusive
1738
2027
  } //namespace boost
1739
2028
 
1740
2029
  #include <boost/intrusive/detail/config_end.hpp>
1741
2030
 
1742
- #endif //BOOST_INTRUSIVE_TREE_ALGORITHMS_HPP
2031
+ #endif //BOOST_INTRUSIVE_BSTREE_ALGORITHMS_HPP