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-2013
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
@@ -15,29 +15,25 @@
15
15
 
16
16
  #include <boost/intrusive/detail/config_begin.hpp>
17
17
  #include <boost/intrusive/intrusive_fwd.hpp>
18
- #include <boost/intrusive/detail/utilities.hpp>
18
+
19
19
  #include <boost/intrusive/detail/tree_node.hpp>
20
- #include <boost/intrusive/detail/tree_algorithms.hpp>
20
+ #include <boost/intrusive/bstree_algorithms.hpp>
21
21
  #include <boost/intrusive/options.hpp>
22
22
  #include <boost/intrusive/detail/generic_hook.hpp>
23
23
 
24
+ #if defined(BOOST_HAS_PRAGMA_ONCE)
25
+ # pragma once
26
+ #endif
27
+
24
28
  namespace boost {
25
29
  namespace intrusive {
26
30
 
27
- /// @cond
28
- template<class VoidPointer>
29
- struct get_bs_set_node_algo
30
- {
31
- typedef detail::tree_algorithms<tree_node_traits<VoidPointer> > type;
32
- };
33
- /// @endcond
34
-
35
31
  //! Helper metafunction to define a \c bs_set_base_hook that yields to the same
36
32
  //! type when the same options (either explicitly or implicitly) are used.
37
33
  #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
38
34
  template<class ...Options>
39
35
  #else
40
- template<class O1 = none, class O2 = none, class O3 = none>
36
+ template<class O1 = void, class O2 = void, class O3 = void>
41
37
  #endif
42
38
  struct make_bs_set_base_hook
43
39
  {
@@ -50,14 +46,11 @@ struct make_bs_set_base_hook
50
46
  #endif
51
47
  ::type packed_options;
52
48
 
53
- //Scapegoat trees can't be auto unlink trees
54
- BOOST_STATIC_ASSERT(((int)packed_options::link_mode != (int)auto_unlink));
55
-
56
- typedef detail::generic_hook
57
- < get_bs_set_node_algo<typename packed_options::void_pointer>
49
+ typedef generic_hook
50
+ < bstree_algorithms<tree_node_traits<typename packed_options::void_pointer> >
58
51
  , typename packed_options::tag
59
52
  , packed_options::link_mode
60
- , detail::BsSetBaseHook
53
+ , BsTreeBaseHookId
61
54
  > implementation_defined;
62
55
  /// @endcond
63
56
  typedef implementation_defined type;
@@ -76,7 +69,7 @@ struct make_bs_set_base_hook
76
69
  //! unique tag.
77
70
  //!
78
71
  //! \c void_pointer<> is the pointer type that will be used internally in the hook
79
- //! and the the container configured to use this hook.
72
+ //! and the container configured to use this hook.
80
73
  //!
81
74
  //! \c link_mode<> will specify the linking mode of the hook (\c normal_link,
82
75
  //! \c auto_unlink or \c safe_link).
@@ -168,7 +161,7 @@ class bs_set_base_hook
168
161
  #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
169
162
  template<class ...Options>
170
163
  #else
171
- template<class O1 = none, class O2 = none, class O3 = none>
164
+ template<class O1 = void, class O2 = void, class O3 = void>
172
165
  #endif
173
166
  struct make_bs_set_member_hook
174
167
  {
@@ -182,14 +175,11 @@ struct make_bs_set_member_hook
182
175
 
183
176
  ::type packed_options;
184
177
 
185
- //Scapegoat trees can't be auto unlink trees
186
- BOOST_STATIC_ASSERT(((int)packed_options::link_mode != (int)auto_unlink));
187
-
188
- typedef detail::generic_hook
189
- < get_bs_set_node_algo<typename packed_options::void_pointer>
178
+ typedef generic_hook
179
+ < bstree_algorithms<tree_node_traits<typename packed_options::void_pointer> >
190
180
  , member_tag
191
181
  , packed_options::link_mode
192
- , detail::NoBaseHook
182
+ , NoBaseHookId
193
183
  > implementation_defined;
194
184
  /// @endcond
195
185
  typedef implementation_defined type;
@@ -202,7 +192,7 @@ struct make_bs_set_member_hook
202
192
  //! The hook admits the following options: \c void_pointer<>, \c link_mode<>.
203
193
  //!
204
194
  //! \c void_pointer<> is the pointer type that will be used internally in the hook
205
- //! and the the container configured to use this hook.
195
+ //! and the container configured to use this hook.
206
196
  //!
207
197
  //! \c link_mode<> will specify the linking mode of the hook (\c normal_link,
208
198
  //! \c auto_unlink or \c safe_link).
@@ -0,0 +1,2101 @@
1
+ /////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // (C) Copyright Ion Gaztanaga 2013-2014
4
+ //
5
+ // Distributed under the Boost Software License, Version 1.0.
6
+ // (See accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt)
8
+ //
9
+ // See http://www.boost.org/libs/intrusive for documentation.
10
+ //
11
+ /////////////////////////////////////////////////////////////////////////////
12
+ #ifndef BOOST_INTRUSIVE_BSTREE_HPP
13
+ #define BOOST_INTRUSIVE_BSTREE_HPP
14
+
15
+ #include <boost/intrusive/detail/config_begin.hpp>
16
+ #include <boost/intrusive/intrusive_fwd.hpp>
17
+
18
+ #include <boost/intrusive/detail/assert.hpp>
19
+ #include <boost/static_assert.hpp>
20
+ #include <boost/intrusive/intrusive_fwd.hpp>
21
+ #include <boost/intrusive/bs_set_hook.hpp>
22
+ #include <boost/intrusive/detail/tree_node.hpp>
23
+ #include <boost/intrusive/detail/tree_iterator.hpp>
24
+ #include <boost/intrusive/detail/ebo_functor_holder.hpp>
25
+ #include <boost/intrusive/detail/mpl.hpp>
26
+ #include <boost/intrusive/pointer_traits.hpp>
27
+ #include <boost/intrusive/detail/is_stateful_value_traits.hpp>
28
+ #include <boost/intrusive/detail/empty_node_checker.hpp>
29
+ #include <boost/intrusive/detail/default_header_holder.hpp>
30
+ #include <boost/intrusive/detail/reverse_iterator.hpp>
31
+ #include <boost/intrusive/detail/exception_disposer.hpp>
32
+ #include <boost/intrusive/detail/node_cloner_disposer.hpp>
33
+ #include <boost/intrusive/detail/key_nodeptr_comp.hpp>
34
+ #include <boost/intrusive/detail/simple_disposers.hpp>
35
+ #include <boost/intrusive/detail/size_holder.hpp>
36
+ #include <boost/intrusive/detail/algo_type.hpp>
37
+ #include <boost/intrusive/detail/algorithm.hpp>
38
+ #include <boost/intrusive/detail/tree_value_compare.hpp>
39
+
40
+ #include <boost/intrusive/detail/get_value_traits.hpp>
41
+ #include <boost/intrusive/bstree_algorithms.hpp>
42
+ #include <boost/intrusive/link_mode.hpp>
43
+ #include <boost/intrusive/parent_from_member.hpp>
44
+ #include <boost/move/utility_core.hpp>
45
+ #include <boost/move/adl_move_swap.hpp>
46
+
47
+ #include <boost/intrusive/detail/minimal_pair_header.hpp>
48
+ #include <cstddef> //size_t...
49
+ #include <boost/intrusive/detail/minimal_less_equal_header.hpp>//less, equal_to
50
+
51
+ #if defined(BOOST_HAS_PRAGMA_ONCE)
52
+ # pragma once
53
+ #endif
54
+
55
+ namespace boost {
56
+ namespace intrusive {
57
+
58
+ /// @cond
59
+
60
+ struct default_bstree_hook_applier
61
+ { template <class T> struct apply{ typedef typename T::default_bstree_hook type; }; };
62
+
63
+ template<>
64
+ struct is_default_hook_tag<default_bstree_hook_applier>
65
+ { static const bool value = true; };
66
+
67
+ struct bstree_defaults
68
+ {
69
+ typedef default_bstree_hook_applier proto_value_traits;
70
+ static const bool constant_time_size = true;
71
+ typedef std::size_t size_type;
72
+ typedef void compare;
73
+ typedef void key_of_value;
74
+ static const bool floating_point = true; //For sgtree
75
+ typedef void priority; //For treap
76
+ typedef void header_holder_type;
77
+ };
78
+
79
+ template<class ValueTraits, algo_types AlgoType, typename HeaderHolder>
80
+ struct bstbase3
81
+ {
82
+ typedef ValueTraits value_traits;
83
+ typedef typename value_traits::node_traits node_traits;
84
+ typedef typename node_traits::node node_type;
85
+ typedef typename get_algo<AlgoType, node_traits>::type node_algorithms;
86
+ typedef typename node_traits::node_ptr node_ptr;
87
+ typedef typename node_traits::const_node_ptr const_node_ptr;
88
+ typedef tree_iterator<value_traits, false> iterator;
89
+ typedef tree_iterator<value_traits, true> const_iterator;
90
+ typedef boost::intrusive::reverse_iterator<iterator> reverse_iterator;
91
+ typedef boost::intrusive::reverse_iterator<const_iterator> const_reverse_iterator;
92
+ typedef BOOST_INTRUSIVE_IMPDEF(typename value_traits::pointer) pointer;
93
+ typedef BOOST_INTRUSIVE_IMPDEF(typename value_traits::const_pointer) const_pointer;
94
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<pointer>::element_type) value_type;
95
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<pointer>::reference) reference;
96
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<const_pointer>::reference) const_reference;
97
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<const_pointer>::difference_type) difference_type;
98
+ typedef typename detail::get_header_holder_type
99
+ < value_traits,HeaderHolder >::type header_holder_type;
100
+
101
+ static const bool safemode_or_autounlink = is_safe_autounlink<value_traits::link_mode>::value;
102
+ static const bool stateful_value_traits = detail::is_stateful_value_traits<value_traits>::value;
103
+ static const bool has_container_from_iterator =
104
+ detail::is_same< header_holder_type, detail::default_header_holder< node_traits > >::value;
105
+
106
+ struct holder_t : public ValueTraits
107
+ {
108
+ explicit holder_t(const ValueTraits &vtraits)
109
+ : ValueTraits(vtraits)
110
+ {}
111
+ header_holder_type root;
112
+ } holder;
113
+
114
+ static bstbase3 &get_tree_base_from_end_iterator(const const_iterator &end_iterator)
115
+ {
116
+ BOOST_STATIC_ASSERT(has_container_from_iterator);
117
+ node_ptr p = end_iterator.pointed_node();
118
+ header_holder_type* h = header_holder_type::get_holder(p);
119
+ holder_t *holder = get_parent_from_member<holder_t, header_holder_type>(h, &holder_t::root);
120
+ bstbase3 *base = get_parent_from_member<bstbase3, holder_t> (holder, &bstbase3::holder);
121
+ return *base;
122
+ }
123
+
124
+ bstbase3(const ValueTraits &vtraits)
125
+ : holder(vtraits)
126
+ {
127
+ node_algorithms::init_header(this->header_ptr());
128
+ }
129
+
130
+ node_ptr header_ptr()
131
+ { return holder.root.get_node(); }
132
+
133
+ const_node_ptr header_ptr() const
134
+ { return holder.root.get_node(); }
135
+
136
+ const value_traits &get_value_traits() const
137
+ { return this->holder; }
138
+
139
+ value_traits &get_value_traits()
140
+ { return this->holder; }
141
+
142
+ typedef typename boost::intrusive::value_traits_pointers
143
+ <ValueTraits>::const_value_traits_ptr const_value_traits_ptr;
144
+
145
+ const_value_traits_ptr priv_value_traits_ptr() const
146
+ { return pointer_traits<const_value_traits_ptr>::pointer_to(this->get_value_traits()); }
147
+
148
+ iterator begin()
149
+ { return iterator(node_algorithms::begin_node(this->header_ptr()), this->priv_value_traits_ptr()); }
150
+
151
+ const_iterator begin() const
152
+ { return cbegin(); }
153
+
154
+ const_iterator cbegin() const
155
+ { return const_iterator(node_algorithms::begin_node(this->header_ptr()), this->priv_value_traits_ptr()); }
156
+
157
+ iterator end()
158
+ { return iterator(node_algorithms::end_node(this->header_ptr()), this->priv_value_traits_ptr()); }
159
+
160
+ const_iterator end() const
161
+ { return cend(); }
162
+
163
+ const_iterator cend() const
164
+ { return const_iterator(node_algorithms::end_node(this->header_ptr()), this->priv_value_traits_ptr()); }
165
+
166
+ iterator root()
167
+ { return iterator(node_algorithms::root_node(this->header_ptr()), this->priv_value_traits_ptr()); }
168
+
169
+ const_iterator root() const
170
+ { return croot(); }
171
+
172
+ const_iterator croot() const
173
+ { return const_iterator(node_algorithms::root_node(this->header_ptr()), this->priv_value_traits_ptr()); }
174
+
175
+ reverse_iterator rbegin()
176
+ { return reverse_iterator(end()); }
177
+
178
+ const_reverse_iterator rbegin() const
179
+ { return const_reverse_iterator(end()); }
180
+
181
+ const_reverse_iterator crbegin() const
182
+ { return const_reverse_iterator(end()); }
183
+
184
+ reverse_iterator rend()
185
+ { return reverse_iterator(begin()); }
186
+
187
+ const_reverse_iterator rend() const
188
+ { return const_reverse_iterator(begin()); }
189
+
190
+ const_reverse_iterator crend() const
191
+ { return const_reverse_iterator(begin()); }
192
+
193
+ void replace_node(iterator replace_this, reference with_this)
194
+ {
195
+ node_algorithms::replace_node( get_value_traits().to_node_ptr(*replace_this)
196
+ , this->header_ptr()
197
+ , get_value_traits().to_node_ptr(with_this));
198
+ if(safemode_or_autounlink)
199
+ node_algorithms::init(replace_this.pointed_node());
200
+ }
201
+
202
+ void rebalance()
203
+ { node_algorithms::rebalance(this->header_ptr()); }
204
+
205
+ iterator rebalance_subtree(iterator root)
206
+ { return iterator(node_algorithms::rebalance_subtree(root.pointed_node()), this->priv_value_traits_ptr()); }
207
+
208
+ static iterator s_iterator_to(reference value)
209
+ {
210
+ BOOST_STATIC_ASSERT((!stateful_value_traits));
211
+ return iterator (value_traits::to_node_ptr(value), const_value_traits_ptr());
212
+ }
213
+
214
+ static const_iterator s_iterator_to(const_reference value)
215
+ {
216
+ BOOST_STATIC_ASSERT((!stateful_value_traits));
217
+ return const_iterator (value_traits::to_node_ptr(*pointer_traits<pointer>::const_cast_from(pointer_traits<const_pointer>::pointer_to(value))), const_value_traits_ptr());
218
+ }
219
+
220
+ iterator iterator_to(reference value)
221
+ { return iterator (this->get_value_traits().to_node_ptr(value), this->priv_value_traits_ptr()); }
222
+
223
+ const_iterator iterator_to(const_reference value) const
224
+ { return const_iterator (this->get_value_traits().to_node_ptr(*pointer_traits<pointer>::const_cast_from(pointer_traits<const_pointer>::pointer_to(value))), this->priv_value_traits_ptr()); }
225
+
226
+ static void init_node(reference value)
227
+ { node_algorithms::init(value_traits::to_node_ptr(value)); }
228
+
229
+ };
230
+
231
+ template<class Less, class T>
232
+ struct get_compare
233
+ {
234
+ typedef Less type;
235
+ };
236
+
237
+ template<class T>
238
+ struct get_compare<void, T>
239
+ {
240
+ typedef ::std::less<T> type;
241
+ };
242
+
243
+ template<class KeyOfValue, class T>
244
+ struct get_key_of_value
245
+ {
246
+ typedef KeyOfValue type;
247
+ };
248
+
249
+ template<class T>
250
+ struct get_key_of_value<void, T>
251
+ {
252
+ typedef ::boost::intrusive::detail::identity<T> type;
253
+ };
254
+
255
+ template<class T, class VoidOrKeyOfValue, class VoidOrKeyComp>
256
+ struct bst_key_types
257
+ {
258
+ typedef typename get_key_of_value
259
+ < VoidOrKeyOfValue, T>::type key_of_value;
260
+ typedef typename key_of_value::type key_type;
261
+ typedef typename get_compare< VoidOrKeyComp
262
+ , key_type
263
+ >::type key_compare;
264
+ typedef tree_value_compare
265
+ <key_type, T, key_compare, key_of_value> value_compare;
266
+ };
267
+
268
+ template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, algo_types AlgoType, typename HeaderHolder>
269
+ struct bstbase2
270
+ //Put the (possibly empty) functor in the first position to get EBO in MSVC
271
+ //Use public inheritance to avoid MSVC bugs with closures
272
+ : public detail::ebo_functor_holder
273
+ < typename bst_key_types
274
+ < typename ValueTraits::value_type
275
+ , VoidOrKeyOfValue
276
+ , VoidOrKeyComp
277
+ >::value_compare
278
+ >
279
+ , public bstbase3<ValueTraits, AlgoType, HeaderHolder>
280
+ {
281
+ typedef bstbase3<ValueTraits, AlgoType, HeaderHolder> treeheader_t;
282
+ typedef bst_key_types< typename ValueTraits::value_type
283
+ , VoidOrKeyOfValue
284
+ , VoidOrKeyComp> key_types;
285
+ typedef typename treeheader_t::value_traits value_traits;
286
+ typedef typename treeheader_t::node_algorithms node_algorithms;
287
+ typedef typename ValueTraits::value_type value_type;
288
+ typedef typename key_types::key_type key_type;
289
+ typedef typename key_types::key_of_value key_of_value;
290
+ typedef typename key_types::key_compare key_compare;
291
+ typedef typename key_types::value_compare value_compare;
292
+ typedef typename treeheader_t::iterator iterator;
293
+ typedef typename treeheader_t::const_iterator const_iterator;
294
+ typedef typename treeheader_t::node_ptr node_ptr;
295
+ typedef typename treeheader_t::const_node_ptr const_node_ptr;
296
+
297
+ bstbase2(const key_compare &comp, const ValueTraits &vtraits)
298
+ : detail::ebo_functor_holder<value_compare>(value_compare(comp)), treeheader_t(vtraits)
299
+ {}
300
+
301
+ const value_compare &comp() const
302
+ { return this->get(); }
303
+
304
+ value_compare &comp()
305
+ { return this->get(); }
306
+
307
+ typedef BOOST_INTRUSIVE_IMPDEF(typename value_traits::pointer) pointer;
308
+ typedef BOOST_INTRUSIVE_IMPDEF(typename value_traits::const_pointer) const_pointer;
309
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<pointer>::reference) reference;
310
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<const_pointer>::reference) const_reference;
311
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<const_pointer>::difference_type) difference_type;
312
+ typedef typename node_algorithms::insert_commit_data insert_commit_data;
313
+
314
+ value_compare value_comp() const
315
+ { return this->comp(); }
316
+
317
+ key_compare key_comp() const
318
+ { return this->comp().key_comp(); }
319
+
320
+ //lower_bound
321
+ iterator lower_bound(const key_type &key)
322
+ { return this->lower_bound(key, this->key_comp()); }
323
+
324
+ const_iterator lower_bound(const key_type &key) const
325
+ { return this->lower_bound(key, this->key_comp()); }
326
+
327
+ template<class KeyType, class KeyTypeKeyCompare>
328
+ iterator lower_bound(const KeyType &key, KeyTypeKeyCompare comp)
329
+ {
330
+ return iterator(node_algorithms::lower_bound
331
+ (this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
332
+ }
333
+
334
+ template<class KeyType, class KeyTypeKeyCompare>
335
+ const_iterator lower_bound(const KeyType &key, KeyTypeKeyCompare comp) const
336
+ {
337
+ return const_iterator(node_algorithms::lower_bound
338
+ (this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
339
+ }
340
+
341
+ //upper_bound
342
+ iterator upper_bound(const key_type &key)
343
+ { return this->upper_bound(key, this->key_comp()); }
344
+
345
+ template<class KeyType, class KeyTypeKeyCompare>
346
+ iterator upper_bound(const KeyType &key, KeyTypeKeyCompare comp)
347
+ {
348
+ return iterator(node_algorithms::upper_bound
349
+ (this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
350
+ }
351
+
352
+ const_iterator upper_bound(const key_type &key) const
353
+ { return this->upper_bound(key, this->key_comp()); }
354
+
355
+ template<class KeyType, class KeyTypeKeyCompare>
356
+ const_iterator upper_bound(const KeyType &key, KeyTypeKeyCompare comp) const
357
+ {
358
+ return const_iterator(node_algorithms::upper_bound
359
+ (this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
360
+ }
361
+
362
+ template<class KeyTypeKeyCompare>
363
+ struct key_node_comp_ret
364
+ { typedef detail::key_nodeptr_comp<KeyTypeKeyCompare, value_traits, key_of_value> type; };
365
+
366
+ template<class KeyTypeKeyCompare>
367
+ typename key_node_comp_ret<KeyTypeKeyCompare>::type key_node_comp(KeyTypeKeyCompare comp) const
368
+ {
369
+ return detail::key_nodeptr_comp<KeyTypeKeyCompare, value_traits, key_of_value>(comp, &this->get_value_traits());
370
+ }
371
+
372
+ //find
373
+ iterator find(const key_type &key)
374
+ { return this->find(key, this->key_comp()); }
375
+
376
+ template<class KeyType, class KeyTypeKeyCompare>
377
+ iterator find(const KeyType &key, KeyTypeKeyCompare comp)
378
+ {
379
+ return iterator
380
+ (node_algorithms::find(this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
381
+ }
382
+
383
+ const_iterator find(const key_type &key) const
384
+ { return this->find(key, this->key_comp()); }
385
+
386
+ template<class KeyType, class KeyTypeKeyCompare>
387
+ const_iterator find(const KeyType &key, KeyTypeKeyCompare comp) const
388
+ {
389
+ return const_iterator
390
+ (node_algorithms::find(this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
391
+ }
392
+
393
+ //equal_range
394
+ std::pair<iterator,iterator> equal_range(const key_type &key)
395
+ { return this->equal_range(key, this->key_comp()); }
396
+
397
+ template<class KeyType, class KeyTypeKeyCompare>
398
+ std::pair<iterator,iterator> equal_range(const KeyType &key, KeyTypeKeyCompare comp)
399
+ {
400
+ std::pair<node_ptr, node_ptr> ret
401
+ (node_algorithms::equal_range(this->header_ptr(), key, this->key_node_comp(comp)));
402
+ return std::pair<iterator, iterator>( iterator(ret.first, this->priv_value_traits_ptr())
403
+ , iterator(ret.second, this->priv_value_traits_ptr()));
404
+ }
405
+
406
+ std::pair<const_iterator, const_iterator>
407
+ equal_range(const key_type &key) const
408
+ { return this->equal_range(key, this->key_comp()); }
409
+
410
+ template<class KeyType, class KeyTypeKeyCompare>
411
+ std::pair<const_iterator, const_iterator>
412
+ equal_range(const KeyType &key, KeyTypeKeyCompare comp) const
413
+ {
414
+ std::pair<node_ptr, node_ptr> ret
415
+ (node_algorithms::equal_range(this->header_ptr(), key, this->key_node_comp(comp)));
416
+ return std::pair<const_iterator, const_iterator>( const_iterator(ret.first, this->priv_value_traits_ptr())
417
+ , const_iterator(ret.second, this->priv_value_traits_ptr()));
418
+ }
419
+
420
+ //lower_bound_range
421
+ std::pair<iterator,iterator> lower_bound_range(const key_type &key)
422
+ { return this->lower_bound_range(key, this->key_comp()); }
423
+
424
+ template<class KeyType, class KeyTypeKeyCompare>
425
+ std::pair<iterator,iterator> lower_bound_range(const KeyType &key, KeyTypeKeyCompare comp)
426
+ {
427
+ std::pair<node_ptr, node_ptr> ret
428
+ (node_algorithms::lower_bound_range(this->header_ptr(), key, this->key_node_comp(comp)));
429
+ return std::pair<iterator, iterator>( iterator(ret.first, this->priv_value_traits_ptr())
430
+ , iterator(ret.second, this->priv_value_traits_ptr()));
431
+ }
432
+
433
+ std::pair<const_iterator, const_iterator>
434
+ lower_bound_range(const key_type &key) const
435
+ { return this->lower_bound_range(key, this->key_comp()); }
436
+
437
+ template<class KeyType, class KeyTypeKeyCompare>
438
+ std::pair<const_iterator, const_iterator>
439
+ lower_bound_range(const KeyType &key, KeyTypeKeyCompare comp) const
440
+ {
441
+ std::pair<node_ptr, node_ptr> ret
442
+ (node_algorithms::lower_bound_range(this->header_ptr(), key, this->key_node_comp(comp)));
443
+ return std::pair<const_iterator, const_iterator>( const_iterator(ret.first, this->priv_value_traits_ptr())
444
+ , const_iterator(ret.second, this->priv_value_traits_ptr()));
445
+ }
446
+
447
+ //bounded_range
448
+ std::pair<iterator,iterator> bounded_range
449
+ (const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed)
450
+ { return this->bounded_range(lower_key, upper_key, this->key_comp(), left_closed, right_closed); }
451
+
452
+ template<class KeyType, class KeyTypeKeyCompare>
453
+ std::pair<iterator,iterator> bounded_range
454
+ (const KeyType &lower_key, const KeyType &upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed)
455
+ {
456
+ std::pair<node_ptr, node_ptr> ret
457
+ (node_algorithms::bounded_range
458
+ (this->header_ptr(), lower_key, upper_key, this->key_node_comp(comp), left_closed, right_closed));
459
+ return std::pair<iterator, iterator>( iterator(ret.first, this->priv_value_traits_ptr())
460
+ , iterator(ret.second, this->priv_value_traits_ptr()));
461
+ }
462
+
463
+ std::pair<const_iterator,const_iterator> bounded_range
464
+ (const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed) const
465
+ { return this->bounded_range(lower_key, upper_key, this->key_comp(), left_closed, right_closed); }
466
+
467
+ template<class KeyType, class KeyTypeKeyCompare>
468
+ std::pair<const_iterator,const_iterator> bounded_range
469
+ (const KeyType &lower_key, const KeyType &upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed) const
470
+ {
471
+ std::pair<node_ptr, node_ptr> ret
472
+ (node_algorithms::bounded_range
473
+ (this->header_ptr(), lower_key, upper_key, this->key_node_comp(comp), left_closed, right_closed));
474
+ return std::pair<const_iterator, const_iterator>( const_iterator(ret.first, this->priv_value_traits_ptr())
475
+ , const_iterator(ret.second, this->priv_value_traits_ptr()));
476
+ }
477
+
478
+ //insert_unique_check
479
+ template<class KeyType, class KeyTypeKeyCompare>
480
+ std::pair<iterator, bool> insert_unique_check
481
+ (const KeyType &key, KeyTypeKeyCompare comp, insert_commit_data &commit_data)
482
+ {
483
+ std::pair<node_ptr, bool> ret =
484
+ (node_algorithms::insert_unique_check
485
+ (this->header_ptr(), key, this->key_node_comp(comp), commit_data));
486
+ return std::pair<iterator, bool>(iterator(ret.first, this->priv_value_traits_ptr()), ret.second);
487
+ }
488
+
489
+ template<class KeyType, class KeyTypeKeyCompare>
490
+ std::pair<iterator, bool> insert_unique_check
491
+ (const_iterator hint, const KeyType &key
492
+ ,KeyTypeKeyCompare comp, insert_commit_data &commit_data)
493
+ {
494
+ std::pair<node_ptr, bool> ret =
495
+ (node_algorithms::insert_unique_check
496
+ (this->header_ptr(), hint.pointed_node(), key, this->key_node_comp(comp), commit_data));
497
+ return std::pair<iterator, bool>(iterator(ret.first, this->priv_value_traits_ptr()), ret.second);
498
+ }
499
+ };
500
+
501
+ //Due to MSVC's EBO implementation, to save space and maintain the ABI, we must put the non-empty size member
502
+ //in the first position, but if size is not going to be stored then we'll use an specialization
503
+ //that doesn't inherit from size_holder
504
+ template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, bool ConstantTimeSize, class SizeType, algo_types AlgoType, typename HeaderHolder>
505
+ struct bstbase_hack
506
+ : public detail::size_holder<ConstantTimeSize, SizeType>
507
+ , public bstbase2 < ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, AlgoType, HeaderHolder>
508
+ {
509
+ typedef bstbase2< ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, AlgoType, HeaderHolder> base_type;
510
+ typedef typename base_type::key_compare key_compare;
511
+ typedef typename base_type::value_compare value_compare;
512
+ typedef SizeType size_type;
513
+ typedef typename base_type::node_traits node_traits;
514
+ typedef typename get_algo
515
+ <AlgoType, node_traits>::type algo_type;
516
+
517
+ bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
518
+ : base_type(comp, vtraits)
519
+ {
520
+ this->sz_traits().set_size(size_type(0));
521
+ }
522
+
523
+ typedef detail::size_holder<ConstantTimeSize, SizeType> size_traits;
524
+
525
+ size_traits &sz_traits()
526
+ { return static_cast<size_traits &>(*this); }
527
+
528
+ const size_traits &sz_traits() const
529
+ { return static_cast<const size_traits &>(*this); }
530
+ };
531
+
532
+ //Specialization for ConstantTimeSize == false
533
+ template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, class SizeType, algo_types AlgoType, typename HeaderHolder>
534
+ struct bstbase_hack<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, false, SizeType, AlgoType, HeaderHolder>
535
+ : public bstbase2 < ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, AlgoType, HeaderHolder>
536
+ {
537
+ typedef bstbase2< ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, AlgoType, HeaderHolder> base_type;
538
+ typedef typename base_type::value_compare value_compare;
539
+ typedef typename base_type::key_compare key_compare;
540
+ bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
541
+ : base_type(comp, vtraits)
542
+ {}
543
+
544
+ typedef detail::size_holder<false, SizeType> size_traits;
545
+
546
+ size_traits &sz_traits()
547
+ { return s_size_traits; }
548
+
549
+ const size_traits &sz_traits() const
550
+ { return s_size_traits; }
551
+
552
+ static size_traits s_size_traits;
553
+ };
554
+
555
+ template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, class SizeType, algo_types AlgoType, typename HeaderHolder>
556
+ detail::size_holder<false, SizeType> bstbase_hack<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, false, SizeType, AlgoType, HeaderHolder>::s_size_traits;
557
+
558
+ //This class will
559
+ template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, bool ConstantTimeSize, class SizeType, algo_types AlgoType, typename HeaderHolder>
560
+ struct bstbase
561
+ : public bstbase_hack< ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, ConstantTimeSize, SizeType, AlgoType, HeaderHolder>
562
+ {
563
+ typedef bstbase_hack< ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, ConstantTimeSize, SizeType, AlgoType, HeaderHolder> base_type;
564
+ typedef ValueTraits value_traits;
565
+ typedef typename base_type::value_compare value_compare;
566
+ typedef typename base_type::key_compare key_compare;
567
+ typedef typename base_type::const_reference const_reference;
568
+ typedef typename base_type::reference reference;
569
+ typedef typename base_type::iterator iterator;
570
+ typedef typename base_type::const_iterator const_iterator;
571
+ typedef typename base_type::node_traits node_traits;
572
+ typedef typename get_algo
573
+ <AlgoType, node_traits>::type node_algorithms;
574
+ typedef SizeType size_type;
575
+
576
+ bstbase(const key_compare & comp, const ValueTraits &vtraits)
577
+ : base_type(comp, vtraits)
578
+ {}
579
+
580
+ //Detach all inserted nodes. This will add exception safety to bstree_impl
581
+ //constructors inserting elements.
582
+ ~bstbase()
583
+ {
584
+ if(is_safe_autounlink<value_traits::link_mode>::value){
585
+ node_algorithms::clear_and_dispose
586
+ ( this->header_ptr()
587
+ , detail::node_disposer<detail::null_disposer, value_traits, AlgoType>
588
+ (detail::null_disposer(), &this->get_value_traits()));
589
+ node_algorithms::init(this->header_ptr());
590
+ }
591
+ }
592
+ };
593
+
594
+
595
+ /// @endcond
596
+
597
+ //! The class template bstree is an unbalanced intrusive binary search tree
598
+ //! container. The no-throw guarantee holds only, if the key_compare object
599
+ //! doesn't throw.
600
+ //!
601
+ //! The complexity guarantees only hold if the tree is balanced, logarithmic
602
+ //! complexity would increase to linear if the tree is totally unbalanced.
603
+ //!
604
+ //! The template parameter \c T is the type to be managed by the container.
605
+ //! The user can specify additional options and if no options are provided
606
+ //! default options are used.
607
+ //!
608
+ //! The container supports the following options:
609
+ //! \c base_hook<>/member_hook<>/value_traits<>,
610
+ //! \c constant_time_size<>, \c size_type<> and
611
+ //! \c compare<>.
612
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
613
+ template<class T, class ...Options>
614
+ #else
615
+ template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, class SizeType, bool ConstantTimeSize, algo_types AlgoType, typename HeaderHolder>
616
+ #endif
617
+ class bstree_impl
618
+ : public bstbase<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, ConstantTimeSize, SizeType, AlgoType, HeaderHolder>
619
+ {
620
+ public:
621
+ /// @cond
622
+ typedef bstbase<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, ConstantTimeSize, SizeType, AlgoType, HeaderHolder> data_type;
623
+ typedef tree_iterator<ValueTraits, false> iterator_type;
624
+ typedef tree_iterator<ValueTraits, true> const_iterator_type;
625
+ /// @endcond
626
+
627
+ typedef BOOST_INTRUSIVE_IMPDEF(ValueTraits) value_traits;
628
+ typedef BOOST_INTRUSIVE_IMPDEF(typename value_traits::pointer) pointer;
629
+ typedef BOOST_INTRUSIVE_IMPDEF(typename value_traits::const_pointer) const_pointer;
630
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<pointer>::element_type) value_type;
631
+ typedef BOOST_INTRUSIVE_IMPDEF(typename data_type::key_type) key_type;
632
+ typedef BOOST_INTRUSIVE_IMPDEF(typename data_type::key_of_value) key_of_value;
633
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<pointer>::reference) reference;
634
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<const_pointer>::reference) const_reference;
635
+ typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<const_pointer>::difference_type) difference_type;
636
+ typedef BOOST_INTRUSIVE_IMPDEF(SizeType) size_type;
637
+ typedef BOOST_INTRUSIVE_IMPDEF(typename data_type::value_compare) value_compare;
638
+ typedef BOOST_INTRUSIVE_IMPDEF(typename data_type::key_compare) key_compare;
639
+ typedef BOOST_INTRUSIVE_IMPDEF(iterator_type) iterator;
640
+ typedef BOOST_INTRUSIVE_IMPDEF(const_iterator_type) const_iterator;
641
+ typedef BOOST_INTRUSIVE_IMPDEF(boost::intrusive::reverse_iterator<iterator>) reverse_iterator;
642
+ typedef BOOST_INTRUSIVE_IMPDEF(boost::intrusive::reverse_iterator<const_iterator>) const_reverse_iterator;
643
+ typedef BOOST_INTRUSIVE_IMPDEF(typename value_traits::node_traits) node_traits;
644
+ typedef BOOST_INTRUSIVE_IMPDEF(typename node_traits::node) node;
645
+ typedef BOOST_INTRUSIVE_IMPDEF(typename node_traits::node_ptr) node_ptr;
646
+ typedef BOOST_INTRUSIVE_IMPDEF(typename node_traits::const_node_ptr) const_node_ptr;
647
+ /// @cond
648
+ typedef typename get_algo<AlgoType, node_traits>::type algo_type;
649
+ /// @endcond
650
+ typedef BOOST_INTRUSIVE_IMPDEF(algo_type) node_algorithms;
651
+
652
+ static const bool constant_time_size = ConstantTimeSize;
653
+ static const bool stateful_value_traits = detail::is_stateful_value_traits<value_traits>::value;
654
+ /// @cond
655
+ private:
656
+
657
+ //noncopyable
658
+ BOOST_MOVABLE_BUT_NOT_COPYABLE(bstree_impl)
659
+
660
+ static const bool safemode_or_autounlink = is_safe_autounlink<value_traits::link_mode>::value;
661
+
662
+ //Constant-time size is incompatible with auto-unlink hooks!
663
+ BOOST_STATIC_ASSERT(!(constant_time_size && ((int)value_traits::link_mode == (int)auto_unlink)));
664
+
665
+
666
+ protected:
667
+
668
+
669
+ /// @endcond
670
+
671
+ public:
672
+
673
+ typedef typename node_algorithms::insert_commit_data insert_commit_data;
674
+
675
+ //! <b>Effects</b>: Constructs an empty container.
676
+ //!
677
+ //! <b>Complexity</b>: Constant.
678
+ //!
679
+ //! <b>Throws</b>: If value_traits::node_traits::node
680
+ //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
681
+ //! or the copy constructor of the key_compare object throws. Basic guarantee.
682
+ explicit bstree_impl( const key_compare &cmp = key_compare()
683
+ , const value_traits &v_traits = value_traits())
684
+ : data_type(cmp, v_traits)
685
+ {}
686
+
687
+ //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
688
+ //! cmp must be a comparison function that induces a strict weak ordering.
689
+ //!
690
+ //! <b>Effects</b>: Constructs an empty container and inserts elements from
691
+ //! [b, e).
692
+ //!
693
+ //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
694
+ //! comp and otherwise N * log N, where N is the distance between first and last.
695
+ //!
696
+ //! <b>Throws</b>: If value_traits::node_traits::node
697
+ //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
698
+ //! or the copy constructor/operator() of the key_compare object throws. Basic guarantee.
699
+ template<class Iterator>
700
+ bstree_impl( bool unique, Iterator b, Iterator e
701
+ , const key_compare &cmp = key_compare()
702
+ , const value_traits &v_traits = value_traits())
703
+ : data_type(cmp, v_traits)
704
+ {
705
+ //bstbase releases elements in case of exceptions
706
+ if(unique)
707
+ this->insert_unique(b, e);
708
+ else
709
+ this->insert_equal(b, e);
710
+ }
711
+
712
+ //! <b>Effects</b>: to-do
713
+ //!
714
+ bstree_impl(BOOST_RV_REF(bstree_impl) x)
715
+ : data_type(::boost::move(x.comp()), ::boost::move(x.get_value_traits()))
716
+ {
717
+ this->swap(x);
718
+ }
719
+
720
+ //! <b>Effects</b>: to-do
721
+ //!
722
+ bstree_impl& operator=(BOOST_RV_REF(bstree_impl) x)
723
+ { this->swap(x); return *this; }
724
+
725
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
726
+ //! <b>Effects</b>: Detaches all elements from this. The objects in the set
727
+ //! are not deleted (i.e. no destructors are called), but the nodes according to
728
+ //! the value_traits template parameter are reinitialized and thus can be reused.
729
+ //!
730
+ //! <b>Complexity</b>: Linear to elements contained in *this.
731
+ //!
732
+ //! <b>Throws</b>: Nothing.
733
+ ~bstree_impl()
734
+ {}
735
+
736
+ //! <b>Effects</b>: Returns an iterator pointing to the beginning of the container.
737
+ //!
738
+ //! <b>Complexity</b>: Constant.
739
+ //!
740
+ //! <b>Throws</b>: Nothing.
741
+ iterator begin();
742
+
743
+ //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the container.
744
+ //!
745
+ //! <b>Complexity</b>: Constant.
746
+ //!
747
+ //! <b>Throws</b>: Nothing.
748
+ const_iterator begin() const;
749
+
750
+ //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the container.
751
+ //!
752
+ //! <b>Complexity</b>: Constant.
753
+ //!
754
+ //! <b>Throws</b>: Nothing.
755
+ const_iterator cbegin() const;
756
+
757
+ //! <b>Effects</b>: Returns an iterator pointing to the end of the container.
758
+ //!
759
+ //! <b>Complexity</b>: Constant.
760
+ //!
761
+ //! <b>Throws</b>: Nothing.
762
+ iterator end();
763
+
764
+ //! <b>Effects</b>: Returns a const_iterator pointing to the end of the container.
765
+ //!
766
+ //! <b>Complexity</b>: Constant.
767
+ //!
768
+ //! <b>Throws</b>: Nothing.
769
+ const_iterator end() const;
770
+
771
+ //! <b>Effects</b>: Returns a const_iterator pointing to the end of the container.
772
+ //!
773
+ //! <b>Complexity</b>: Constant.
774
+ //!
775
+ //! <b>Throws</b>: Nothing.
776
+ const_iterator cend() const;
777
+
778
+ //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
779
+ //! reversed container.
780
+ //!
781
+ //! <b>Complexity</b>: Constant.
782
+ //!
783
+ //! <b>Throws</b>: Nothing.
784
+ reverse_iterator rbegin();
785
+
786
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
787
+ //! of the reversed container.
788
+ //!
789
+ //! <b>Complexity</b>: Constant.
790
+ //!
791
+ //! <b>Throws</b>: Nothing.
792
+ const_reverse_iterator rbegin() const;
793
+
794
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
795
+ //! of the reversed container.
796
+ //!
797
+ //! <b>Complexity</b>: Constant.
798
+ //!
799
+ //! <b>Throws</b>: Nothing.
800
+ const_reverse_iterator crbegin() const;
801
+
802
+ //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
803
+ //! of the reversed container.
804
+ //!
805
+ //! <b>Complexity</b>: Constant.
806
+ //!
807
+ //! <b>Throws</b>: Nothing.
808
+ reverse_iterator rend();
809
+
810
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
811
+ //! of the reversed container.
812
+ //!
813
+ //! <b>Complexity</b>: Constant.
814
+ //!
815
+ //! <b>Throws</b>: Nothing.
816
+ const_reverse_iterator rend() const;
817
+
818
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
819
+ //! of the reversed container.
820
+ //!
821
+ //! <b>Complexity</b>: Constant.
822
+ //!
823
+ //! <b>Throws</b>: Nothing.
824
+ const_reverse_iterator crend() const;
825
+
826
+ #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
827
+
828
+ //! <b>Precondition</b>: end_iterator must be a valid end iterator
829
+ //! of the container.
830
+ //!
831
+ //! <b>Effects</b>: Returns a const reference to the container associated to the end iterator
832
+ //!
833
+ //! <b>Throws</b>: Nothing.
834
+ //!
835
+ //! <b>Complexity</b>: Constant.
836
+ static bstree_impl &container_from_end_iterator(iterator end_iterator)
837
+ {
838
+ return static_cast<bstree_impl&>
839
+ (data_type::get_tree_base_from_end_iterator(end_iterator));
840
+ }
841
+
842
+ //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
843
+ //! of the container.
844
+ //!
845
+ //! <b>Effects</b>: Returns a const reference to the container associated to the iterator
846
+ //!
847
+ //! <b>Throws</b>: Nothing.
848
+ //!
849
+ //! <b>Complexity</b>: Constant.
850
+ static const bstree_impl &container_from_end_iterator(const_iterator end_iterator)
851
+ {
852
+ return static_cast<bstree_impl&>
853
+ (data_type::get_tree_base_from_end_iterator(end_iterator));
854
+ }
855
+
856
+ //! <b>Precondition</b>: it must be a valid iterator
857
+ //! of the container.
858
+ //!
859
+ //! <b>Effects</b>: Returns a const reference to the container associated to the iterator
860
+ //!
861
+ //! <b>Throws</b>: Nothing.
862
+ //!
863
+ //! <b>Complexity</b>: Logarithmic.
864
+ static bstree_impl &container_from_iterator(iterator it)
865
+ { return container_from_end_iterator(it.end_iterator_from_it()); }
866
+
867
+ //! <b>Precondition</b>: it must be a valid end const_iterator
868
+ //! of container.
869
+ //!
870
+ //! <b>Effects</b>: Returns a const reference to the container associated to the end iterator
871
+ //!
872
+ //! <b>Throws</b>: Nothing.
873
+ //!
874
+ //! <b>Complexity</b>: Logarithmic.
875
+ static const bstree_impl &container_from_iterator(const_iterator it)
876
+ { return container_from_end_iterator(it.end_iterator_from_it()); }
877
+
878
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
879
+
880
+ //! <b>Effects</b>: Returns the key_compare object used by the container.
881
+ //!
882
+ //! <b>Complexity</b>: Constant.
883
+ //!
884
+ //! <b>Throws</b>: If key_compare copy-constructor throws.
885
+ key_compare key_comp() const;
886
+
887
+ //! <b>Effects</b>: Returns the value_compare object used by the container.
888
+ //!
889
+ //! <b>Complexity</b>: Constant.
890
+ //!
891
+ //! <b>Throws</b>: If value_compare copy-constructor throws.
892
+ value_compare value_comp() const;
893
+
894
+ #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
895
+
896
+ //! <b>Effects</b>: Returns true if the container is empty.
897
+ //!
898
+ //! <b>Complexity</b>: Constant.
899
+ //!
900
+ //! <b>Throws</b>: Nothing.
901
+ bool empty() const
902
+ {
903
+ if(ConstantTimeSize){
904
+ return !this->data_type::sz_traits().get_size();
905
+ }
906
+ else{
907
+ return algo_type::unique(this->header_ptr());
908
+ }
909
+ }
910
+
911
+ //! <b>Effects</b>: Returns the number of elements stored in the container.
912
+ //!
913
+ //! <b>Complexity</b>: Linear to elements contained in *this
914
+ //! if constant-time size option is disabled. Constant time otherwise.
915
+ //!
916
+ //! <b>Throws</b>: Nothing.
917
+ size_type size() const
918
+ {
919
+ if(constant_time_size)
920
+ return this->sz_traits().get_size();
921
+ else{
922
+ return (size_type)node_algorithms::size(this->header_ptr());
923
+ }
924
+ }
925
+
926
+ //! <b>Effects</b>: Swaps the contents of two containers.
927
+ //!
928
+ //! <b>Complexity</b>: Constant.
929
+ //!
930
+ //! <b>Throws</b>: If the comparison functor's swap call throws.
931
+ void swap(bstree_impl& other)
932
+ {
933
+ //This can throw
934
+ ::boost::adl_move_swap(this->comp(), this->comp());
935
+ //These can't throw
936
+ node_algorithms::swap_tree(this->header_ptr(), node_ptr(other.header_ptr()));
937
+ if(constant_time_size){
938
+ size_type backup = this->sz_traits().get_size();
939
+ this->sz_traits().set_size(other.sz_traits().get_size());
940
+ other.sz_traits().set_size(backup);
941
+ }
942
+ }
943
+
944
+ //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
945
+ //! Cloner should yield to nodes equivalent to the original nodes.
946
+ //!
947
+ //! <b>Effects</b>: Erases all the elements from *this
948
+ //! calling Disposer::operator()(pointer), clones all the
949
+ //! elements from src calling Cloner::operator()(const_reference )
950
+ //! and inserts them on *this. Copies the predicate from the source container.
951
+ //!
952
+ //! If cloner throws, all cloned elements are unlinked and disposed
953
+ //! calling Disposer::operator()(pointer).
954
+ //!
955
+ //! <b>Complexity</b>: Linear to erased plus inserted elements.
956
+ //!
957
+ //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
958
+ template <class Cloner, class Disposer>
959
+ void clone_from(const bstree_impl &src, Cloner cloner, Disposer disposer)
960
+ {
961
+ this->clear_and_dispose(disposer);
962
+ if(!src.empty()){
963
+ detail::exception_disposer<bstree_impl, Disposer>
964
+ rollback(*this, disposer);
965
+ node_algorithms::clone
966
+ (src.header_ptr()
967
+ ,this->header_ptr()
968
+ ,detail::node_cloner <Cloner, value_traits, AlgoType>(cloner, &this->get_value_traits())
969
+ ,detail::node_disposer<Disposer, value_traits, AlgoType>(disposer, &this->get_value_traits()));
970
+ this->sz_traits().set_size(src.sz_traits().get_size());
971
+ this->comp() = src.comp();
972
+ rollback.release();
973
+ }
974
+ }
975
+
976
+ //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
977
+ //! Cloner should yield to nodes equivalent to the original nodes.
978
+ //!
979
+ //! <b>Effects</b>: Erases all the elements from *this
980
+ //! calling Disposer::operator()(pointer), clones all the
981
+ //! elements from src calling Cloner::operator()(reference)
982
+ //! and inserts them on *this. Copies the predicate from the source container.
983
+ //!
984
+ //! If cloner throws, all cloned elements are unlinked and disposed
985
+ //! calling Disposer::operator()(pointer).
986
+ //!
987
+ //! <b>Complexity</b>: Linear to erased plus inserted elements.
988
+ //!
989
+ //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
990
+ //!
991
+ //! <b>Note</b>: This version can modify the source container, useful to implement
992
+ //! move semantics.
993
+ template <class Cloner, class Disposer>
994
+ void clone_from(BOOST_RV_REF(bstree_impl) src, Cloner cloner, Disposer disposer)
995
+ {
996
+ this->clear_and_dispose(disposer);
997
+ if(!src.empty()){
998
+ detail::exception_disposer<bstree_impl, Disposer>
999
+ rollback(*this, disposer);
1000
+ node_algorithms::clone
1001
+ (src.header_ptr()
1002
+ ,this->header_ptr()
1003
+ ,detail::node_cloner <Cloner, value_traits, AlgoType, false>(cloner, &this->get_value_traits())
1004
+ ,detail::node_disposer<Disposer, value_traits, AlgoType>(disposer, &this->get_value_traits()));
1005
+ this->sz_traits().set_size(src.sz_traits().get_size());
1006
+ this->comp() = src.comp();
1007
+ rollback.release();
1008
+ }
1009
+ }
1010
+
1011
+ //! <b>Requires</b>: value must be an lvalue
1012
+ //!
1013
+ //! <b>Effects</b>: Inserts value into the container before the upper bound.
1014
+ //!
1015
+ //! <b>Complexity</b>: Average complexity for insert element is at
1016
+ //! most logarithmic.
1017
+ //!
1018
+ //! <b>Throws</b>: If the internal key_compare ordering function throws. Strong guarantee.
1019
+ //!
1020
+ //! <b>Note</b>: Does not affect the validity of iterators and references.
1021
+ //! No copy-constructors are called.
1022
+ iterator insert_equal(reference value)
1023
+ {
1024
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
1025
+ if(safemode_or_autounlink)
1026
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
1027
+ iterator ret(node_algorithms::insert_equal_upper_bound
1028
+ (this->header_ptr(), to_insert, this->key_node_comp(this->key_comp())), this->priv_value_traits_ptr());
1029
+ this->sz_traits().increment();
1030
+ return ret;
1031
+ }
1032
+
1033
+ //! <b>Requires</b>: value must be an lvalue, and "hint" must be
1034
+ //! a valid iterator.
1035
+ //!
1036
+ //! <b>Effects</b>: Inserts x into the container, using "hint" as a hint to
1037
+ //! where it will be inserted. If "hint" is the upper_bound
1038
+ //! the insertion takes constant time (two comparisons in the worst case)
1039
+ //!
1040
+ //! <b>Complexity</b>: Logarithmic in general, but it is amortized
1041
+ //! constant time if t is inserted immediately before hint.
1042
+ //!
1043
+ //! <b>Throws</b>: If the internal key_compare ordering function throws. Strong guarantee.
1044
+ //!
1045
+ //! <b>Note</b>: Does not affect the validity of iterators and references.
1046
+ //! No copy-constructors are called.
1047
+ iterator insert_equal(const_iterator hint, reference value)
1048
+ {
1049
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
1050
+ if(safemode_or_autounlink)
1051
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
1052
+ iterator ret(node_algorithms::insert_equal
1053
+ (this->header_ptr(), hint.pointed_node(), to_insert, this->key_node_comp(this->key_comp())), this->priv_value_traits_ptr());
1054
+ this->sz_traits().increment();
1055
+ return ret;
1056
+ }
1057
+
1058
+ //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
1059
+ //! of type value_type.
1060
+ //!
1061
+ //! <b>Effects</b>: Inserts a each element of a range into the container
1062
+ //! before the upper bound of the key of each element.
1063
+ //!
1064
+ //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
1065
+ //! size of the range. However, it is linear in N if the range is already sorted
1066
+ //! by value_comp().
1067
+ //!
1068
+ //! <b>Throws</b>: Nothing.
1069
+ //!
1070
+ //! <b>Note</b>: Does not affect the validity of iterators and references.
1071
+ //! No copy-constructors are called.
1072
+ template<class Iterator>
1073
+ void insert_equal(Iterator b, Iterator e)
1074
+ {
1075
+ iterator iend(this->end());
1076
+ for (; b != e; ++b)
1077
+ this->insert_equal(iend, *b);
1078
+ }
1079
+
1080
+ //! <b>Requires</b>: value must be an lvalue
1081
+ //!
1082
+ //! <b>Effects</b>: Inserts value into the container if the value
1083
+ //! is not already present.
1084
+ //!
1085
+ //! <b>Complexity</b>: Average complexity for insert element is at
1086
+ //! most logarithmic.
1087
+ //!
1088
+ //! <b>Throws</b>: Nothing.
1089
+ //!
1090
+ //! <b>Note</b>: Does not affect the validity of iterators and references.
1091
+ //! No copy-constructors are called.
1092
+ std::pair<iterator, bool> insert_unique(reference value)
1093
+ {
1094
+ insert_commit_data commit_data;
1095
+ std::pair<node_ptr, bool> ret =
1096
+ (node_algorithms::insert_unique_check
1097
+ (this->header_ptr(), key_of_value()(value), this->key_node_comp(this->key_comp()), commit_data));
1098
+ return std::pair<iterator, bool>
1099
+ ( ret.second ? this->insert_unique_commit(value, commit_data)
1100
+ : iterator(ret.first, this->priv_value_traits_ptr())
1101
+ , ret.second);
1102
+ }
1103
+
1104
+ //! <b>Requires</b>: value must be an lvalue, and "hint" must be
1105
+ //! a valid iterator
1106
+ //!
1107
+ //! <b>Effects</b>: Tries to insert x into the container, using "hint" as a hint
1108
+ //! to where it will be inserted.
1109
+ //!
1110
+ //! <b>Complexity</b>: Logarithmic in general, but it is amortized
1111
+ //! constant time (two comparisons in the worst case)
1112
+ //! if t is inserted immediately before hint.
1113
+ //!
1114
+ //! <b>Throws</b>: Nothing.
1115
+ //!
1116
+ //! <b>Note</b>: Does not affect the validity of iterators and references.
1117
+ //! No copy-constructors are called.
1118
+ iterator insert_unique(const_iterator hint, reference value)
1119
+ {
1120
+ insert_commit_data commit_data;
1121
+ std::pair<node_ptr, bool> ret =
1122
+ (node_algorithms::insert_unique_check
1123
+ (this->header_ptr(), hint.pointed_node(), key_of_value()(value), this->key_node_comp(this->key_comp()), commit_data));
1124
+ return ret.second ? this->insert_unique_commit(value, commit_data)
1125
+ : iterator(ret.first, this->priv_value_traits_ptr());
1126
+ }
1127
+
1128
+ //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
1129
+ //! of type value_type.
1130
+ //!
1131
+ //! <b>Effects</b>: Tries to insert each element of a range into the container.
1132
+ //!
1133
+ //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
1134
+ //! size of the range. However, it is linear in N if the range is already sorted
1135
+ //! by value_comp().
1136
+ //!
1137
+ //! <b>Throws</b>: Nothing.
1138
+ //!
1139
+ //! <b>Note</b>: Does not affect the validity of iterators and references.
1140
+ //! No copy-constructors are called.
1141
+ template<class Iterator>
1142
+ void insert_unique(Iterator b, Iterator e)
1143
+ {
1144
+ if(this->empty()){
1145
+ iterator iend(this->end());
1146
+ for (; b != e; ++b)
1147
+ this->insert_unique(iend, *b);
1148
+ }
1149
+ else{
1150
+ for (; b != e; ++b)
1151
+ this->insert_unique(*b);
1152
+ }
1153
+ }
1154
+
1155
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1156
+
1157
+ //! <b>Requires</b>: comp must be a comparison function that induces
1158
+ //! the same strict weak ordering as key_compare. The difference is that
1159
+ //! comp compares an arbitrary key with the contained values.
1160
+ //!
1161
+ //! <b>Effects</b>: Checks if a value can be inserted in the container, using
1162
+ //! a user provided key instead of the value itself.
1163
+ //!
1164
+ //! <b>Returns</b>: If there is an equivalent value
1165
+ //! returns a pair containing an iterator to the already present value
1166
+ //! and false. If the value can be inserted returns true in the returned
1167
+ //! pair boolean and fills "commit_data" that is meant to be used with
1168
+ //! the "insert_commit" function.
1169
+ //!
1170
+ //! <b>Complexity</b>: Average complexity is at most logarithmic.
1171
+ //!
1172
+ //! <b>Throws</b>: If the comp ordering function throws. Strong guarantee.
1173
+ //!
1174
+ //! <b>Notes</b>: This function is used to improve performance when constructing
1175
+ //! a value_type is expensive: if there is an equivalent value
1176
+ //! the constructed object must be discarded. Many times, the part of the
1177
+ //! node that is used to impose the order is much cheaper to construct
1178
+ //! than the value_type and this function offers the possibility to use that
1179
+ //! part to check if the insertion will be successful.
1180
+ //!
1181
+ //! If the check is successful, the user can construct the value_type and use
1182
+ //! "insert_commit" to insert the object in constant-time. This gives a total
1183
+ //! logarithmic complexity to the insertion: check(O(log(N)) + commit(O(1)).
1184
+ //!
1185
+ //! "commit_data" remains valid for a subsequent "insert_commit" only if no more
1186
+ //! objects are inserted or erased from the container.
1187
+ template<class KeyType, class KeyTypeKeyCompare>
1188
+ std::pair<iterator, bool> insert_unique_check
1189
+ (const KeyType &key, KeyTypeKeyCompare comp, insert_commit_data &commit_data);
1190
+
1191
+ //! <b>Requires</b>: comp must be a comparison function that induces
1192
+ //! the same strict weak ordering as key_compare. The difference is that
1193
+ //! comp compares an arbitrary key with the contained values.
1194
+ //!
1195
+ //! <b>Effects</b>: Checks if a value can be inserted in the container, using
1196
+ //! a user provided key instead of the value itself, using "hint"
1197
+ //! as a hint to where it will be inserted.
1198
+ //!
1199
+ //! <b>Returns</b>: If there is an equivalent value
1200
+ //! returns a pair containing an iterator to the already present value
1201
+ //! and false. If the value can be inserted returns true in the returned
1202
+ //! pair boolean and fills "commit_data" that is meant to be used with
1203
+ //! the "insert_commit" function.
1204
+ //!
1205
+ //! <b>Complexity</b>: Logarithmic in general, but it's amortized
1206
+ //! constant time if t is inserted immediately before hint.
1207
+ //!
1208
+ //! <b>Throws</b>: If the comp ordering function throws. Strong guarantee.
1209
+ //!
1210
+ //! <b>Notes</b>: This function is used to improve performance when constructing
1211
+ //! a value_type is expensive: if there is an equivalent value
1212
+ //! the constructed object must be discarded. Many times, the part of the
1213
+ //! constructing that is used to impose the order is much cheaper to construct
1214
+ //! than the value_type and this function offers the possibility to use that key
1215
+ //! to check if the insertion will be successful.
1216
+ //!
1217
+ //! If the check is successful, the user can construct the value_type and use
1218
+ //! "insert_commit" to insert the object in constant-time. This can give a total
1219
+ //! constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
1220
+ //!
1221
+ //! "commit_data" remains valid for a subsequent "insert_commit" only if no more
1222
+ //! objects are inserted or erased from the container.
1223
+ template<class KeyType, class KeyTypeKeyCompare>
1224
+ std::pair<iterator, bool> insert_unique_check
1225
+ (const_iterator hint, const KeyType &key
1226
+ ,KeyTypeKeyCompare comp, insert_commit_data &commit_data);
1227
+
1228
+ #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1229
+
1230
+ //! <b>Requires</b>: value must be an lvalue of type value_type. commit_data
1231
+ //! must have been obtained from a previous call to "insert_check".
1232
+ //! No objects should have been inserted or erased from the container between
1233
+ //! the "insert_check" that filled "commit_data" and the call to "insert_commit".
1234
+ //!
1235
+ //! <b>Effects</b>: Inserts the value in the container using the information obtained
1236
+ //! from the "commit_data" that a previous "insert_check" filled.
1237
+ //!
1238
+ //! <b>Returns</b>: An iterator to the newly inserted object.
1239
+ //!
1240
+ //! <b>Complexity</b>: Constant time.
1241
+ //!
1242
+ //! <b>Throws</b>: Nothing.
1243
+ //!
1244
+ //! <b>Notes</b>: This function has only sense if a "insert_check" has been
1245
+ //! previously executed to fill "commit_data". No value should be inserted or
1246
+ //! erased between the "insert_check" and "insert_commit" calls.
1247
+ iterator insert_unique_commit(reference value, const insert_commit_data &commit_data)
1248
+ {
1249
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
1250
+ if(safemode_or_autounlink)
1251
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
1252
+
1253
+ #if !(defined(BOOST_DISABLE_ASSERTS) || ( defined(BOOST_ENABLE_ASSERT_DEBUG_HANDLER) && defined(NDEBUG) ))
1254
+ //Test insertion position is correct
1255
+ iterator p(commit_data.node, this->priv_value_traits_ptr());
1256
+ if(!commit_data.link_left){
1257
+ ++p;
1258
+ }
1259
+ //Check if the insertion point is correct to detect wrong
1260
+ //uses insert_unique_check
1261
+ BOOST_ASSERT(( p == this->end() || !this->comp()(*p, value) ));
1262
+ BOOST_ASSERT(( p == this->begin() || !this->comp()(value, *--p) ));
1263
+ #endif
1264
+
1265
+ node_algorithms::insert_unique_commit
1266
+ (this->header_ptr(), to_insert, commit_data);
1267
+ this->sz_traits().increment();
1268
+ return iterator(to_insert, this->priv_value_traits_ptr());
1269
+ }
1270
+
1271
+ //! <b>Requires</b>: value must be an lvalue, "pos" must be
1272
+ //! a valid iterator (or end) and must be the succesor of value
1273
+ //! once inserted according to the predicate
1274
+ //!
1275
+ //! <b>Effects</b>: Inserts x into the container before "pos".
1276
+ //!
1277
+ //! <b>Complexity</b>: Constant time.
1278
+ //!
1279
+ //! <b>Throws</b>: Nothing.
1280
+ //!
1281
+ //! <b>Note</b>: This function does not check preconditions so if "pos" is not
1282
+ //! the successor of "value" container ordering invariant will be broken.
1283
+ //! This is a low-level function to be used only for performance reasons
1284
+ //! by advanced users.
1285
+ iterator insert_before(const_iterator pos, reference value)
1286
+ {
1287
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
1288
+ if(safemode_or_autounlink)
1289
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
1290
+ this->sz_traits().increment();
1291
+ return iterator(node_algorithms::insert_before
1292
+ (this->header_ptr(), pos.pointed_node(), to_insert), this->priv_value_traits_ptr());
1293
+ }
1294
+
1295
+ //! <b>Requires</b>: value must be an lvalue, and it must be no less
1296
+ //! than the greatest inserted key
1297
+ //!
1298
+ //! <b>Effects</b>: Inserts x into the container in the last position.
1299
+ //!
1300
+ //! <b>Complexity</b>: Constant time.
1301
+ //!
1302
+ //! <b>Throws</b>: Nothing.
1303
+ //!
1304
+ //! <b>Note</b>: This function does not check preconditions so if value is
1305
+ //! less than the greatest inserted key container ordering invariant will be broken.
1306
+ //! This function is slightly more efficient than using "insert_before".
1307
+ //! This is a low-level function to be used only for performance reasons
1308
+ //! by advanced users.
1309
+ void push_back(reference value)
1310
+ {
1311
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
1312
+ if(safemode_or_autounlink)
1313
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
1314
+ this->sz_traits().increment();
1315
+ node_algorithms::push_back(this->header_ptr(), to_insert);
1316
+ }
1317
+
1318
+ //! <b>Requires</b>: value must be an lvalue, and it must be no greater
1319
+ //! than the minimum inserted key
1320
+ //!
1321
+ //! <b>Effects</b>: Inserts x into the container in the first position.
1322
+ //!
1323
+ //! <b>Complexity</b>: Constant time.
1324
+ //!
1325
+ //! <b>Throws</b>: Nothing.
1326
+ //!
1327
+ //! <b>Note</b>: This function does not check preconditions so if value is
1328
+ //! greater than the minimum inserted key container ordering invariant will be broken.
1329
+ //! This function is slightly more efficient than using "insert_before".
1330
+ //! This is a low-level function to be used only for performance reasons
1331
+ //! by advanced users.
1332
+ void push_front(reference value)
1333
+ {
1334
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
1335
+ if(safemode_or_autounlink)
1336
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
1337
+ this->sz_traits().increment();
1338
+ node_algorithms::push_front(this->header_ptr(), to_insert);
1339
+ }
1340
+
1341
+ //! <b>Effects</b>: Erases the element pointed to by i.
1342
+ //!
1343
+ //! <b>Complexity</b>: Average complexity for erase element is constant time.
1344
+ //!
1345
+ //! <b>Throws</b>: Nothing.
1346
+ //!
1347
+ //! <b>Note</b>: Invalidates the iterators (but not the references)
1348
+ //! to the erased elements. No destructors are called.
1349
+ iterator erase(const_iterator i)
1350
+ {
1351
+ const_iterator ret(i);
1352
+ ++ret;
1353
+ node_ptr to_erase(i.pointed_node());
1354
+ if(safemode_or_autounlink)
1355
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!node_algorithms::unique(to_erase));
1356
+ node_algorithms::erase(this->header_ptr(), to_erase);
1357
+ this->sz_traits().decrement();
1358
+ if(safemode_or_autounlink)
1359
+ node_algorithms::init(to_erase);
1360
+ return ret.unconst();
1361
+ }
1362
+
1363
+ //! <b>Effects</b>: Erases the range pointed to by b end e.
1364
+ //!
1365
+ //! <b>Complexity</b>: Average complexity for erase range is at most
1366
+ //! O(log(size() + N)), where N is the number of elements in the range.
1367
+ //!
1368
+ //! <b>Throws</b>: Nothing.
1369
+ //!
1370
+ //! <b>Note</b>: Invalidates the iterators (but not the references)
1371
+ //! to the erased elements. No destructors are called.
1372
+ iterator erase(const_iterator b, const_iterator e)
1373
+ { size_type n; return this->private_erase(b, e, n); }
1374
+
1375
+ //! <b>Effects</b>: Erases all the elements with the given value.
1376
+ //!
1377
+ //! <b>Returns</b>: The number of erased elements.
1378
+ //!
1379
+ //! <b>Complexity</b>: O(log(size() + N).
1380
+ //!
1381
+ //! <b>Throws</b>: Nothing.
1382
+ //!
1383
+ //! <b>Note</b>: Invalidates the iterators (but not the references)
1384
+ //! to the erased elements. No destructors are called.
1385
+ size_type erase(const key_type &key)
1386
+ { return this->erase(key, this->key_comp()); }
1387
+
1388
+ //! <b>Requires</b>: key is a value such that `*this` is partitioned with respect to
1389
+ //! comp(nk, key) and !comp(key, nk), with comp(nk, key) implying !comp(key, nk),
1390
+ //! with nk the key_type of a value_type inserted into `*this`.
1391
+ //!
1392
+ //! <b>Effects</b>: Erases all the elements with the given key.
1393
+ //! according to the comparison functor "comp".
1394
+ //!
1395
+ //! <b>Returns</b>: The number of erased elements.
1396
+ //!
1397
+ //! <b>Complexity</b>: O(log(size() + N).
1398
+ //!
1399
+ //! <b>Throws</b>: Nothing.
1400
+ //!
1401
+ //! <b>Note</b>: Invalidates the iterators (but not the references)
1402
+ //! to the erased elements. No destructors are called.
1403
+ template<class KeyType, class KeyTypeKeyCompare>
1404
+ BOOST_INTRUSIVE_DOC1ST(size_type
1405
+ , typename detail::disable_if_convertible<KeyTypeKeyCompare BOOST_INTRUSIVE_I const_iterator BOOST_INTRUSIVE_I size_type>::type)
1406
+ erase(const KeyType& key, KeyTypeKeyCompare comp)
1407
+ {
1408
+ std::pair<iterator,iterator> p = this->equal_range(key, comp);
1409
+ size_type n;
1410
+ this->private_erase(p.first, p.second, n);
1411
+ return n;
1412
+ }
1413
+
1414
+ //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1415
+ //!
1416
+ //! <b>Effects</b>: Erases the element pointed to by i.
1417
+ //! Disposer::operator()(pointer) is called for the removed element.
1418
+ //!
1419
+ //! <b>Complexity</b>: Average complexity for erase element is constant time.
1420
+ //!
1421
+ //! <b>Throws</b>: Nothing.
1422
+ //!
1423
+ //! <b>Note</b>: Invalidates the iterators
1424
+ //! to the erased elements.
1425
+ template<class Disposer>
1426
+ iterator erase_and_dispose(const_iterator i, Disposer disposer)
1427
+ {
1428
+ node_ptr to_erase(i.pointed_node());
1429
+ iterator ret(this->erase(i));
1430
+ disposer(this->get_value_traits().to_value_ptr(to_erase));
1431
+ return ret;
1432
+ }
1433
+
1434
+ //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1435
+ //!
1436
+ //! <b>Effects</b>: Erases all the elements with the given value.
1437
+ //! Disposer::operator()(pointer) is called for the removed elements.
1438
+ //!
1439
+ //! <b>Returns</b>: The number of erased elements.
1440
+ //!
1441
+ //! <b>Complexity</b>: O(log(size() + N).
1442
+ //!
1443
+ //! <b>Throws</b>: Nothing.
1444
+ //!
1445
+ //! <b>Note</b>: Invalidates the iterators (but not the references)
1446
+ //! to the erased elements. No destructors are called.
1447
+ template<class Disposer>
1448
+ size_type erase_and_dispose(const key_type &key, Disposer disposer)
1449
+ {
1450
+ std::pair<iterator,iterator> p = this->equal_range(key);
1451
+ size_type n;
1452
+ this->private_erase(p.first, p.second, n, disposer);
1453
+ return n;
1454
+ }
1455
+
1456
+ //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1457
+ //!
1458
+ //! <b>Effects</b>: Erases the range pointed to by b end e.
1459
+ //! Disposer::operator()(pointer) is called for the removed elements.
1460
+ //!
1461
+ //! <b>Complexity</b>: Average complexity for erase range is at most
1462
+ //! O(log(size() + N)), where N is the number of elements in the range.
1463
+ //!
1464
+ //! <b>Throws</b>: Nothing.
1465
+ //!
1466
+ //! <b>Note</b>: Invalidates the iterators
1467
+ //! to the erased elements.
1468
+ template<class Disposer>
1469
+ iterator erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer)
1470
+ { size_type n; return this->private_erase(b, e, n, disposer); }
1471
+
1472
+ //! <b>Requires</b>: key is a value such that `*this` is partitioned with respect to
1473
+ //! comp(nk, key) and !comp(key, nk), with comp(nk, key) implying !comp(key, nk)
1474
+ //! and nk the key_type of a value_type inserted into `*this`.
1475
+ //!
1476
+ //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1477
+ //!
1478
+ //! <b>Effects</b>: Erases all the elements with the given key.
1479
+ //! according to the comparison functor "comp".
1480
+ //! Disposer::operator()(pointer) is called for the removed elements.
1481
+ //!
1482
+ //! <b>Returns</b>: The number of erased elements.
1483
+ //!
1484
+ //! <b>Complexity</b>: O(log(size() + N).
1485
+ //!
1486
+ //! <b>Throws</b>: Nothing.
1487
+ //!
1488
+ //! <b>Note</b>: Invalidates the iterators
1489
+ //! to the erased elements.
1490
+ template<class KeyType, class KeyTypeKeyCompare, class Disposer>
1491
+ BOOST_INTRUSIVE_DOC1ST(size_type
1492
+ , typename detail::disable_if_convertible<KeyTypeKeyCompare BOOST_INTRUSIVE_I const_iterator BOOST_INTRUSIVE_I size_type>::type)
1493
+ erase_and_dispose(const KeyType& key, KeyTypeKeyCompare comp, Disposer disposer)
1494
+ {
1495
+ std::pair<iterator,iterator> p = this->equal_range(key, comp);
1496
+ size_type n;
1497
+ this->private_erase(p.first, p.second, n, disposer);
1498
+ return n;
1499
+ }
1500
+
1501
+ //! <b>Effects</b>: Erases all of the elements.
1502
+ //!
1503
+ //! <b>Complexity</b>: Linear to the number of elements on the container.
1504
+ //! if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
1505
+ //!
1506
+ //! <b>Throws</b>: Nothing.
1507
+ //!
1508
+ //! <b>Note</b>: Invalidates the iterators (but not the references)
1509
+ //! to the erased elements. No destructors are called.
1510
+ void clear()
1511
+ {
1512
+ if(safemode_or_autounlink){
1513
+ this->clear_and_dispose(detail::null_disposer());
1514
+ }
1515
+ else{
1516
+ node_algorithms::init_header(this->header_ptr());
1517
+ this->sz_traits().set_size(0);
1518
+ }
1519
+ }
1520
+
1521
+ //! <b>Effects</b>: Erases all of the elements calling disposer(p) for
1522
+ //! each node to be erased.
1523
+ //! <b>Complexity</b>: Average complexity for is at most O(log(size() + N)),
1524
+ //! where N is the number of elements in the container.
1525
+ //!
1526
+ //! <b>Throws</b>: Nothing.
1527
+ //!
1528
+ //! <b>Note</b>: Invalidates the iterators (but not the references)
1529
+ //! to the erased elements. Calls N times to disposer functor.
1530
+ template<class Disposer>
1531
+ void clear_and_dispose(Disposer disposer)
1532
+ {
1533
+ node_algorithms::clear_and_dispose(this->header_ptr()
1534
+ , detail::node_disposer<Disposer, value_traits, AlgoType>(disposer, &this->get_value_traits()));
1535
+ node_algorithms::init_header(this->header_ptr());
1536
+ this->sz_traits().set_size(0);
1537
+ }
1538
+
1539
+ //! <b>Effects</b>: Returns the number of contained elements with the given value
1540
+ //!
1541
+ //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
1542
+ //! to number of objects with the given value.
1543
+ //!
1544
+ //! <b>Throws</b>: If `key_compare` throws.
1545
+ size_type count(const key_type &key) const
1546
+ { return size_type(this->count(key, this->key_comp())); }
1547
+
1548
+ //! <b>Requires</b>: key is a value such that `*this` is partitioned with respect to
1549
+ //! comp(nk, key) and !comp(key, nk), with comp(nk, key) implying !comp(key, nk),
1550
+ //! and nk the key_type of a value_type inserted into `*this`.
1551
+ //!
1552
+ //! <b>Effects</b>: Returns the number of contained elements with the given key
1553
+ //!
1554
+ //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
1555
+ //! to number of objects with the given key.
1556
+ //!
1557
+ //! <b>Throws</b>: If `comp` throws.
1558
+ template<class KeyType, class KeyTypeKeyCompare>
1559
+ size_type count(const KeyType &key, KeyTypeKeyCompare comp) const
1560
+ {
1561
+ std::pair<const_iterator, const_iterator> ret = this->equal_range(key, comp);
1562
+ size_type n = 0;
1563
+ for(; ret.first != ret.second; ++ret.first){ ++n; }
1564
+ return n;
1565
+ }
1566
+
1567
+ #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1568
+
1569
+ //Add non-const overloads to theoretically const members
1570
+ //as some algorithms have different behavior when non-const versions are used (like splay trees).
1571
+ size_type count(const key_type &key)
1572
+ { return size_type(this->count(key, this->key_comp())); }
1573
+
1574
+ template<class KeyType, class KeyTypeKeyCompare>
1575
+ size_type count(const KeyType &key, KeyTypeKeyCompare comp)
1576
+ {
1577
+ std::pair<const_iterator, const_iterator> ret = this->equal_range(key, comp);
1578
+ size_type n = 0;
1579
+ for(; ret.first != ret.second; ++ret.first){ ++n; }
1580
+ return n;
1581
+ }
1582
+
1583
+ #else //defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1584
+
1585
+ //! <b>Effects</b>: Returns an iterator to the first element whose
1586
+ //! key is not less than k or end() if that element does not exist.
1587
+ //!
1588
+ //! <b>Complexity</b>: Logarithmic.
1589
+ //!
1590
+ //! <b>Throws</b>: If `key_compare` throws.
1591
+ iterator lower_bound(const key_type &key);
1592
+
1593
+ //! <b>Effects</b>: Returns an iterator to the first element whose
1594
+ //! key is not less than k or end() if that element does not exist.
1595
+ //!
1596
+ //! <b>Complexity</b>: Logarithmic.
1597
+ //!
1598
+ //! <b>Throws</b>: If `key_compare` throws.
1599
+ const_iterator lower_bound(const key_type &key) const;
1600
+
1601
+ //! @copydoc ::boost::intrusive::bstree::lower_bound(const key_type &)
1602
+ template<class KeyType, class KeyTypeKeyCompare>
1603
+ iterator lower_bound(const KeyType &key, KeyTypeKeyCompare comp);
1604
+
1605
+ //! @copydoc ::boost::intrusive::bstree::lower_bound(const KeyType&,KeyTypeKeyCompare)
1606
+ template<class KeyType, class KeyTypeKeyCompare>
1607
+ const_iterator lower_bound(const KeyType &key, KeyTypeKeyCompare comp) const;
1608
+
1609
+ //! <b>Effects</b>: Returns an iterator to the first element whose
1610
+ //! key is greater than k or end() if that element does not exist.
1611
+ //!
1612
+ //! <b>Complexity</b>: Logarithmic.
1613
+ //!
1614
+ //! <b>Throws</b>: If `key_compare` throws.
1615
+ iterator upper_bound(const key_type &key);
1616
+
1617
+ //! <b>Requires</b>: key is a value such that `*this` is partitioned with respect to
1618
+ //! !comp(key, nk), with nk the key_type of a value_type inserted into `*this`.
1619
+ //!
1620
+ //! <b>Effects</b>: Returns an iterator to the first element whose
1621
+ //! key is greater than k according to comp or end() if that element
1622
+ //! does not exist.
1623
+ //!
1624
+ //! <b>Complexity</b>: Logarithmic.
1625
+ //!
1626
+ //! <b>Throws</b>: If `comp` throws.
1627
+ template<class KeyType, class KeyTypeKeyCompare>
1628
+ iterator upper_bound(const KeyType &key, KeyTypeKeyCompare comp);
1629
+
1630
+ //! @copydoc ::boost::intrusive::bstree::upper_bound(const key_type &)
1631
+ const_iterator upper_bound(const key_type &key) const;
1632
+
1633
+ //! @copydoc ::boost::intrusive::bstree::upper_bound(const KeyType&,KeyTypeKeyCompare)
1634
+ template<class KeyType, class KeyTypeKeyCompare>
1635
+ const_iterator upper_bound(const KeyType &key, KeyTypeKeyCompare comp) const;
1636
+
1637
+ //! <b>Effects</b>: Finds an iterator to the first element whose key is
1638
+ //! k or end() if that element does not exist.
1639
+ //!
1640
+ //! <b>Complexity</b>: Logarithmic.
1641
+ //!
1642
+ //! <b>Throws</b>: If `key_compare` throws.
1643
+ iterator find(const key_type &key);
1644
+
1645
+ //! <b>Requires</b>: key is a value such that `*this` is partitioned with respect to
1646
+ //! comp(nk, key) and !comp(key, nk), with comp(nk, key) implying !comp(key, nk),
1647
+ //! and nk the key_type of a value_type inserted into `*this`.
1648
+ //!
1649
+ //! <b>Effects</b>: Finds an iterator to the first element whose key is
1650
+ //! k or end() if that element does not exist.
1651
+ //!
1652
+ //! <b>Complexity</b>: Logarithmic.
1653
+ //!
1654
+ //! <b>Throws</b>: If `comp` throws.
1655
+ template<class KeyType, class KeyTypeKeyCompare>
1656
+ iterator find(const KeyType &key, KeyTypeKeyCompare comp);
1657
+
1658
+ //! @copydoc ::boost::intrusive::bstree::find(const key_type &)
1659
+ const_iterator find(const key_type &key) const;
1660
+
1661
+ //! @copydoc ::boost::intrusive::bstree::find(const KeyType&,KeyTypeKeyCompare)
1662
+ template<class KeyType, class KeyTypeKeyCompare>
1663
+ const_iterator find(const KeyType &key, KeyTypeKeyCompare comp) const;
1664
+
1665
+ //! <b>Effects</b>: Finds a range containing all elements whose key is k or
1666
+ //! an empty range that indicates the position where those elements would be
1667
+ //! if they there is no elements with key k.
1668
+ //!
1669
+ //! <b>Complexity</b>: Logarithmic.
1670
+ //!
1671
+ //! <b>Throws</b>: If `key_compare` throws.
1672
+ std::pair<iterator,iterator> equal_range(const key_type &key);
1673
+
1674
+ //! <b>Requires</b>: key is a value such that `*this` is partitioned with respect to
1675
+ //! comp(nk, key) and !comp(key, nk), with comp(nk, key) implying !comp(key, nk),
1676
+ //! with nk the key_type of a value_type inserted into `*this`.
1677
+ //!
1678
+ //! <b>Effects</b>: Finds a range containing all elements whose key is k or
1679
+ //! an empty range that indicates the position where those elements would be
1680
+ //! if they there is no elements with key k.
1681
+ //!
1682
+ //! <b>Complexity</b>: Logarithmic.
1683
+ //!
1684
+ //! <b>Throws</b>: If `comp` throws.
1685
+ template<class KeyType, class KeyTypeKeyCompare>
1686
+ std::pair<iterator,iterator> equal_range(const KeyType &key, KeyTypeKeyCompare comp);
1687
+
1688
+ //! @copydoc ::boost::intrusive::bstree::equal_range(const key_type &)
1689
+ std::pair<const_iterator, const_iterator> equal_range(const key_type &key) const;
1690
+
1691
+ //! @copydoc ::boost::intrusive::bstree::equal_range(const KeyType&,KeyTypeKeyCompare)
1692
+ template<class KeyType, class KeyTypeKeyCompare>
1693
+ std::pair<const_iterator, const_iterator>
1694
+ equal_range(const KeyType &key, KeyTypeKeyCompare comp) const;
1695
+
1696
+ //! <b>Requires</b>:
1697
+ //! `upper_key` shall not precede `lower_key` according to key_compare.
1698
+ //! [key_comp()(upper_key, lower_key) shall be false]
1699
+ //!
1700
+ //! If `lower_key` is equivalent to `upper_key`
1701
+ //! [!key_comp()(upper_key, lower_key) && !key_comp()(lower_key, upper_key)] then
1702
+ //! ('left_closed' || 'right_closed') must be false.
1703
+ //!
1704
+ //! <b>Effects</b>: Returns an a pair with the following criteria:
1705
+ //!
1706
+ //! first = lower_bound(lower_key) if left_closed, upper_bound(lower_key) otherwise
1707
+ //!
1708
+ //! second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) otherwise
1709
+ //!
1710
+ //! <b>Complexity</b>: Logarithmic.
1711
+ //!
1712
+ //! <b>Throws</b>: If `key_compare` throws.
1713
+ //!
1714
+ //! <b>Note</b>: This function can be more efficient than calling upper_bound
1715
+ //! and lower_bound for lower_value and upper_value.
1716
+ //!
1717
+ //! <b>Note</b>: Experimental function, the interface might change in future releases.
1718
+ std::pair<iterator,iterator> bounded_range
1719
+ (const key_type &lower_key, const key_type &upper_value, bool left_closed, bool right_closed);
1720
+
1721
+ //! <b>Requires</b>:
1722
+ //! `lower_key` is a value such that `*this` is partitioned with respect to
1723
+ //! comp(nk, lower_key) if left_closed is true, with respect to !comp(lower_key, nk) otherwise.
1724
+ //!
1725
+ //! `upper_key` is a value such that `*this` is partitioned with respect to
1726
+ //! !comp(upper_key, nk) if right_closed is true, with respect to comp(nk, upper_key) otherwise.
1727
+ //!
1728
+ //! `upper_key` shall not precede `lower_key` according to comp
1729
+ //! [comp(upper_key, lower_key) shall be false]
1730
+ //!
1731
+ //! If `lower_key` is equivalent to `upper_key`
1732
+ //! [!comp(upper_key, lower_key) && !comp(lower_key, upper_key)] then
1733
+ //! ('left_closed' || 'right_closed') must be false.
1734
+ //!
1735
+ //! <b>Effects</b>: Returns an a pair with the following criteria:
1736
+ //!
1737
+ //! first = lower_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) otherwise
1738
+ //!
1739
+ //! second = upper_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) otherwise
1740
+ //!
1741
+ //! <b>Complexity</b>: Logarithmic.
1742
+ //!
1743
+ //! <b>Throws</b>: If `comp` throws.
1744
+ //!
1745
+ //! <b>Note</b>: This function can be more efficient than calling upper_bound
1746
+ //! and lower_bound for lower_key and upper_key.
1747
+ //!
1748
+ //! <b>Note</b>: Experimental function, the interface might change in future releases.
1749
+ template<class KeyType, class KeyTypeKeyCompare>
1750
+ std::pair<iterator,iterator> bounded_range
1751
+ (const KeyType &lower_key, const KeyType &upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed);
1752
+
1753
+ //! @copydoc ::boost::intrusive::bstree::bounded_range(const key_type &,const key_type &,bool,bool)
1754
+ std::pair<const_iterator,const_iterator> bounded_range
1755
+ (const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed) const;
1756
+
1757
+ //! @copydoc ::boost::intrusive::bstree::bounded_range(const KeyType&,const KeyType&,KeyTypeKeyCompare,bool,bool)
1758
+ template<class KeyType, class KeyTypeKeyCompare>
1759
+ std::pair<const_iterator,const_iterator> bounded_range
1760
+ (const KeyType &lower_key, const KeyType &upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed) const;
1761
+
1762
+ //! <b>Requires</b>: value must be an lvalue and shall be in a set of
1763
+ //! appropriate type. Otherwise the behavior is undefined.
1764
+ //!
1765
+ //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
1766
+ //! that points to the value
1767
+ //!
1768
+ //! <b>Complexity</b>: Constant.
1769
+ //!
1770
+ //! <b>Throws</b>: Nothing.
1771
+ //!
1772
+ //! <b>Note</b>: This static function is available only if the <i>value traits</i>
1773
+ //! is stateless.
1774
+ static iterator s_iterator_to(reference value);
1775
+
1776
+ //! <b>Requires</b>: value must be an lvalue and shall be in a set of
1777
+ //! appropriate type. Otherwise the behavior is undefined.
1778
+ //!
1779
+ //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
1780
+ //! set that points to the value
1781
+ //!
1782
+ //! <b>Complexity</b>: Constant.
1783
+ //!
1784
+ //! <b>Throws</b>: Nothing.
1785
+ //!
1786
+ //! <b>Note</b>: This static function is available only if the <i>value traits</i>
1787
+ //! is stateless.
1788
+ static const_iterator s_iterator_to(const_reference value);
1789
+
1790
+ //! <b>Requires</b>: value must be an lvalue and shall be in a set of
1791
+ //! appropriate type. Otherwise the behavior is undefined.
1792
+ //!
1793
+ //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
1794
+ //! that points to the value
1795
+ //!
1796
+ //! <b>Complexity</b>: Constant.
1797
+ //!
1798
+ //! <b>Throws</b>: Nothing.
1799
+ iterator iterator_to(reference value);
1800
+
1801
+ //! <b>Requires</b>: value must be an lvalue and shall be in a set of
1802
+ //! appropriate type. Otherwise the behavior is undefined.
1803
+ //!
1804
+ //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
1805
+ //! set that points to the value
1806
+ //!
1807
+ //! <b>Complexity</b>: Constant.
1808
+ //!
1809
+ //! <b>Throws</b>: Nothing.
1810
+ const_iterator iterator_to(const_reference value) const;
1811
+
1812
+ //! <b>Requires</b>: value shall not be in a container.
1813
+ //!
1814
+ //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
1815
+ //! state.
1816
+ //!
1817
+ //! <b>Throws</b>: Nothing.
1818
+ //!
1819
+ //! <b>Complexity</b>: Constant time.
1820
+ //!
1821
+ //! <b>Note</b>: This function puts the hook in the well-known default state
1822
+ //! used by auto_unlink and safe hooks.
1823
+ static void init_node(reference value);
1824
+
1825
+ #endif //#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1826
+
1827
+ //! <b>Effects</b>: Unlinks the leftmost node from the container.
1828
+ //!
1829
+ //! <b>Complexity</b>: Average complexity is constant time.
1830
+ //!
1831
+ //! <b>Throws</b>: Nothing.
1832
+ //!
1833
+ //! <b>Notes</b>: This function breaks the container and the container can
1834
+ //! only be used for more unlink_leftmost_without_rebalance calls.
1835
+ //! This function is normally used to achieve a step by step
1836
+ //! controlled destruction of the container.
1837
+ pointer unlink_leftmost_without_rebalance()
1838
+ {
1839
+ node_ptr to_be_disposed(node_algorithms::unlink_leftmost_without_rebalance
1840
+ (this->header_ptr()));
1841
+ if(!to_be_disposed)
1842
+ return 0;
1843
+ this->sz_traits().decrement();
1844
+ if(safemode_or_autounlink)//If this is commented does not work with normal_link
1845
+ node_algorithms::init(to_be_disposed);
1846
+ return this->get_value_traits().to_value_ptr(to_be_disposed);
1847
+ }
1848
+
1849
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1850
+
1851
+ //! <b>Requires</b>: replace_this must be a valid iterator of *this
1852
+ //! and with_this must not be inserted in any container.
1853
+ //!
1854
+ //! <b>Effects</b>: Replaces replace_this in its position in the
1855
+ //! container with with_this. The container does not need to be rebalanced.
1856
+ //!
1857
+ //! <b>Complexity</b>: Constant.
1858
+ //!
1859
+ //! <b>Throws</b>: Nothing.
1860
+ //!
1861
+ //! <b>Note</b>: This function will break container ordering invariants if
1862
+ //! with_this is not equivalent to *replace_this according to the
1863
+ //! ordering rules. This function is faster than erasing and inserting
1864
+ //! the node, since no rebalancing or comparison is needed.
1865
+ void replace_node(iterator replace_this, reference with_this);
1866
+
1867
+ //! <b>Effects</b>: Rebalances the tree.
1868
+ //!
1869
+ //! <b>Throws</b>: Nothing.
1870
+ //!
1871
+ //! <b>Complexity</b>: Linear.
1872
+ void rebalance();
1873
+
1874
+ //! <b>Requires</b>: old_root is a node of a tree.
1875
+ //!
1876
+ //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
1877
+ //!
1878
+ //! <b>Returns</b>: The new root of the subtree.
1879
+ //!
1880
+ //! <b>Throws</b>: Nothing.
1881
+ //!
1882
+ //! <b>Complexity</b>: Linear to the elements in the subtree.
1883
+ iterator rebalance_subtree(iterator root);
1884
+
1885
+ #endif //#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1886
+
1887
+ //! <b>Effects</b>: removes "value" from the container.
1888
+ //!
1889
+ //! <b>Throws</b>: Nothing.
1890
+ //!
1891
+ //! <b>Complexity</b>: Logarithmic time.
1892
+ //!
1893
+ //! <b>Note</b>: This static function is only usable with non-constant
1894
+ //! time size containers that have stateless comparison functors.
1895
+ //!
1896
+ //! If the user calls
1897
+ //! this function with a constant time size container or stateful comparison
1898
+ //! functor a compilation error will be issued.
1899
+ static void remove_node(reference value)
1900
+ {
1901
+ BOOST_STATIC_ASSERT((!constant_time_size));
1902
+ node_ptr to_remove(value_traits::to_node_ptr(value));
1903
+ node_algorithms::unlink(to_remove);
1904
+ if(safemode_or_autounlink)
1905
+ node_algorithms::init(to_remove);
1906
+ }
1907
+
1908
+ //! <b>Effects</b>: Asserts the integrity of the container with additional checks provided by the user.
1909
+ //!
1910
+ //! <b>Complexity</b>: Linear time.
1911
+ //!
1912
+ //! <b>Note</b>: The method might not have effect when asserts are turned off (e.g., with NDEBUG).
1913
+ //! Experimental function, interface might change in future versions.
1914
+ template <class ExtraChecker>
1915
+ void check(ExtraChecker extra_checker) const
1916
+ {
1917
+ typedef detail::key_nodeptr_comp<key_compare, value_traits, key_of_value> nodeptr_comp_t;
1918
+ nodeptr_comp_t nodeptr_comp(this->key_comp(), &this->get_value_traits());
1919
+ typedef typename get_node_checker<AlgoType, ValueTraits, nodeptr_comp_t, ExtraChecker>::type node_checker_t;
1920
+ typename node_checker_t::return_type checker_return;
1921
+ node_algorithms::check(this->header_ptr(), node_checker_t(nodeptr_comp, extra_checker), checker_return);
1922
+ if (constant_time_size)
1923
+ BOOST_INTRUSIVE_INVARIANT_ASSERT(this->sz_traits().get_size() == checker_return.node_count);
1924
+ }
1925
+
1926
+ //! <b>Effects</b>: Asserts the integrity of the container.
1927
+ //!
1928
+ //! <b>Complexity</b>: Linear time.
1929
+ //!
1930
+ //! <b>Note</b>: The method has no effect when asserts are turned off (e.g., with NDEBUG).
1931
+ //! Experimental function, interface might change in future versions.
1932
+ void check() const
1933
+ {
1934
+ check(detail::empty_node_checker<ValueTraits>());
1935
+ }
1936
+
1937
+ friend bool operator==(const bstree_impl &x, const bstree_impl &y)
1938
+ {
1939
+ if(constant_time_size && x.size() != y.size()){
1940
+ return false;
1941
+ }
1942
+ return boost::intrusive::algo_equal(x.cbegin(), x.cend(), y.cbegin(), y.cend());
1943
+ }
1944
+
1945
+ friend bool operator!=(const bstree_impl &x, const bstree_impl &y)
1946
+ { return !(x == y); }
1947
+
1948
+ friend bool operator<(const bstree_impl &x, const bstree_impl &y)
1949
+ { return ::boost::intrusive::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
1950
+
1951
+ friend bool operator>(const bstree_impl &x, const bstree_impl &y)
1952
+ { return y < x; }
1953
+
1954
+ friend bool operator<=(const bstree_impl &x, const bstree_impl &y)
1955
+ { return !(x > y); }
1956
+
1957
+ friend bool operator>=(const bstree_impl &x, const bstree_impl &y)
1958
+ { return !(x < y); }
1959
+
1960
+ friend void swap(bstree_impl &x, bstree_impl &y)
1961
+ { x.swap(y); }
1962
+
1963
+ /// @cond
1964
+ private:
1965
+ template<class Disposer>
1966
+ iterator private_erase(const_iterator b, const_iterator e, size_type &n, Disposer disposer)
1967
+ {
1968
+ for(n = 0; b != e; ++n)
1969
+ this->erase_and_dispose(b++, disposer);
1970
+ return b.unconst();
1971
+ }
1972
+
1973
+ iterator private_erase(const_iterator b, const_iterator e, size_type &n)
1974
+ {
1975
+ for(n = 0; b != e; ++n)
1976
+ this->erase(b++);
1977
+ return b.unconst();
1978
+ }
1979
+ /// @endcond
1980
+ };
1981
+
1982
+ //! Helper metafunction to define a \c bstree that yields to the same type when the
1983
+ //! same options (either explicitly or implicitly) are used.
1984
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1985
+ template<class T, class ...Options>
1986
+ #else
1987
+ template<class T, class O1 = void, class O2 = void
1988
+ , class O3 = void, class O4 = void
1989
+ , class O5 = void, class O6 = void>
1990
+ #endif
1991
+ struct make_bstree
1992
+ {
1993
+ /// @cond
1994
+ typedef typename pack_options
1995
+ < bstree_defaults,
1996
+ #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1997
+ O1, O2, O3, O4, O5, O6
1998
+ #else
1999
+ Options...
2000
+ #endif
2001
+ >::type packed_options;
2002
+
2003
+ typedef typename detail::get_value_traits
2004
+ <T, typename packed_options::proto_value_traits>::type value_traits;
2005
+
2006
+ typedef bstree_impl
2007
+ < value_traits
2008
+ , typename packed_options::key_of_value
2009
+ , typename packed_options::compare
2010
+ , typename packed_options::size_type
2011
+ , packed_options::constant_time_size
2012
+ , BsTreeAlgorithms
2013
+ , typename packed_options::header_holder_type
2014
+ > implementation_defined;
2015
+ /// @endcond
2016
+ typedef implementation_defined type;
2017
+ };
2018
+
2019
+
2020
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
2021
+
2022
+ #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
2023
+ template<class T, class O1, class O2, class O3, class O4, class O5, class O6>
2024
+ #else
2025
+ template<class T, class ...Options>
2026
+ #endif
2027
+ class bstree
2028
+ : public make_bstree<T,
2029
+ #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
2030
+ O1, O2, O3, O4, O5, O6
2031
+ #else
2032
+ Options...
2033
+ #endif
2034
+ >::type
2035
+ {
2036
+ typedef typename make_bstree
2037
+ <T,
2038
+ #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
2039
+ O1, O2, O3, O4, O5, O6
2040
+ #else
2041
+ Options...
2042
+ #endif
2043
+ >::type Base;
2044
+ BOOST_MOVABLE_BUT_NOT_COPYABLE(bstree)
2045
+
2046
+ public:
2047
+ typedef typename Base::key_compare key_compare;
2048
+ typedef typename Base::value_traits value_traits;
2049
+ typedef typename Base::iterator iterator;
2050
+ typedef typename Base::const_iterator const_iterator;
2051
+
2052
+ //Assert if passed value traits are compatible with the type
2053
+ BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
2054
+
2055
+ bstree( const key_compare &cmp = key_compare()
2056
+ , const value_traits &v_traits = value_traits())
2057
+ : Base(cmp, v_traits)
2058
+ {}
2059
+
2060
+ template<class Iterator>
2061
+ bstree( bool unique, Iterator b, Iterator e
2062
+ , const key_compare &cmp = key_compare()
2063
+ , const value_traits &v_traits = value_traits())
2064
+ : Base(unique, b, e, cmp, v_traits)
2065
+ {}
2066
+
2067
+ bstree(BOOST_RV_REF(bstree) x)
2068
+ : Base(BOOST_MOVE_BASE(Base, x))
2069
+ {}
2070
+
2071
+ bstree& operator=(BOOST_RV_REF(bstree) x)
2072
+ { return static_cast<bstree &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
2073
+
2074
+ template <class Cloner, class Disposer>
2075
+ void clone_from(const bstree &src, Cloner cloner, Disposer disposer)
2076
+ { Base::clone_from(src, cloner, disposer); }
2077
+
2078
+ template <class Cloner, class Disposer>
2079
+ void clone_from(BOOST_RV_REF(bstree) src, Cloner cloner, Disposer disposer)
2080
+ { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
2081
+
2082
+ static bstree &container_from_end_iterator(iterator end_iterator)
2083
+ { return static_cast<bstree &>(Base::container_from_end_iterator(end_iterator)); }
2084
+
2085
+ static const bstree &container_from_end_iterator(const_iterator end_iterator)
2086
+ { return static_cast<const bstree &>(Base::container_from_end_iterator(end_iterator)); }
2087
+
2088
+ static bstree &container_from_iterator(iterator it)
2089
+ { return static_cast<bstree &>(Base::container_from_iterator(it)); }
2090
+
2091
+ static const bstree &container_from_iterator(const_iterator it)
2092
+ { return static_cast<const bstree &>(Base::container_from_iterator(it)); }
2093
+ };
2094
+
2095
+ #endif
2096
+ } //namespace intrusive
2097
+ } //namespace boost
2098
+
2099
+ #include <boost/intrusive/detail/config_end.hpp>
2100
+
2101
+ #endif //BOOST_INTRUSIVE_BSTREE_HPP