passenger 6.0.14 → 6.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1978) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +380 -85
  3. data/CONTRIBUTING.md +2 -2
  4. data/CONTRIBUTORS +8 -0
  5. data/LICENSE +1 -1
  6. data/README.md +3 -3
  7. data/Rakefile +15 -4
  8. data/bin/passenger +2 -2
  9. data/bin/passenger-config +2 -2
  10. data/bin/passenger-install-apache2-module +7 -2
  11. data/bin/passenger-install-nginx-module +24 -8
  12. data/bin/passenger-memory-stats +2 -2
  13. data/bin/passenger-status +2 -2
  14. data/build/agent.rb +2 -4
  15. data/build/apache2.rb +3 -3
  16. data/build/basics.rb +14 -6
  17. data/build/common_library.rb +3 -8
  18. data/build/cxx_tests.rb +20 -9
  19. data/build/integration_tests.rb +10 -9
  20. data/build/misc.rb +2 -4
  21. data/build/nginx.rb +2 -2
  22. data/build/node_tests.rb +2 -2
  23. data/build/oxt_tests.rb +2 -2
  24. data/build/packaging.rb +2 -2
  25. data/build/ruby_extension.rb +2 -2
  26. data/build/ruby_tests.rb +3 -3
  27. data/build/schema_printer.rb +2 -4
  28. data/build/support/cplusplus.rb +2 -2
  29. data/build/support/cxx_dependency_map.rb +249 -311
  30. data/build/support/general.rb +2 -2
  31. data/build/support/vendor/cxx_hinted_parser/LICENSE.md +1 -1
  32. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +2 -2
  33. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb +2 -2
  34. data/build/support/vendor/cxxcodebuilder/LICENSE.md +1 -1
  35. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +2 -2
  36. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +2 -2
  37. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder.rb +2 -2
  38. data/build/test_basics.rb +27 -13
  39. data/dev/copy_boost_headers +96 -77
  40. data/dev/index_cxx_dependencies.rb +1 -1
  41. data/dev/nginx_version_sha256 +72 -0
  42. data/doc/AiInstructions.md +112 -0
  43. data/doc/CxxMockingStrategy.md +42 -0
  44. data/doc/CxxTestingGuide.md +110 -0
  45. data/doc/DesignAspects/LimitedGemDependencies.md +47 -0
  46. data/doc/DesignAspects/NoGemActivationDuringRubyLoaderInitialization.md +27 -0
  47. data/doc/TempFileHandling.md +15 -0
  48. data/package.json +15 -15
  49. data/passenger.gemspec +8 -2
  50. data/resources/templates/apache2/deployment_example.txt.erb +1 -1
  51. data/resources/templates/nginx/deployment_example.txt.erb +1 -1
  52. data/resources/templates/standalone/http.erb +1 -0
  53. data/resources/templates/standalone/server.erb +2 -0
  54. data/src/agent/AgentMain.cpp +4 -10
  55. data/src/agent/Core/ApiServer.h +3 -4
  56. data/src/agent/Core/ApplicationPool/AbstractSession.h +12 -3
  57. data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +2 -2
  58. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +2 -2
  59. data/src/agent/Core/ApplicationPool/Common.h +2 -2
  60. data/src/agent/Core/ApplicationPool/Context.h +7 -4
  61. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +10 -2
  62. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +12 -4
  63. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +10 -2
  64. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +11 -2
  65. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +11 -2
  66. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +85 -5
  67. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +66 -21
  68. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +10 -2
  69. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +11 -3
  70. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +10 -2
  71. data/src/agent/Core/ApplicationPool/Group.h +18 -8
  72. data/src/agent/Core/ApplicationPool/Implementation.cpp +2 -5
  73. data/src/agent/Core/ApplicationPool/Options.h +3 -4
  74. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +7 -2
  75. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +7 -2
  76. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +7 -2
  77. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +7 -2
  78. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +7 -2
  79. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +7 -2
  80. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +7 -2
  81. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +17 -3
  82. data/src/agent/Core/ApplicationPool/Pool.h +2 -4
  83. data/src/agent/Core/ApplicationPool/Process.cpp +2 -2
  84. data/src/agent/Core/ApplicationPool/Process.h +24 -8
  85. data/src/agent/Core/ApplicationPool/Session.h +22 -22
  86. data/src/agent/Core/ApplicationPool/Socket.h +17 -7
  87. data/src/agent/Core/ApplicationPool/TestSession.h +76 -17
  88. data/src/agent/Core/Config.h +17 -40
  89. data/src/agent/Core/ConfigChange.cpp +3 -43
  90. data/src/agent/Core/ConfigChange.h +2 -2
  91. data/src/agent/Core/Controller/AppResponse.h +2 -3
  92. data/src/agent/Core/Controller/BufferBody.cpp +2 -2
  93. data/src/agent/Core/Controller/CheckoutSession.cpp +125 -16
  94. data/src/agent/Core/Controller/Client.h +2 -3
  95. data/src/agent/Core/Controller/Config.cpp +2 -2
  96. data/src/agent/Core/Controller/Config.h +14 -5
  97. data/src/agent/Core/Controller/ForwardResponse.cpp +2 -2
  98. data/src/agent/Core/Controller/Hooks.cpp +15 -2
  99. data/src/agent/Core/Controller/Implementation.cpp +2 -2
  100. data/src/agent/Core/Controller/InitRequest.cpp +4 -3
  101. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +2 -2
  102. data/src/agent/Core/Controller/InternalUtils.cpp +14 -2
  103. data/src/agent/Core/Controller/Miscellaneous.cpp +2 -2
  104. data/src/agent/Core/Controller/Request.h +5 -4
  105. data/src/agent/Core/Controller/SendRequest.cpp +4 -4
  106. data/src/agent/Core/Controller/StateInspection.cpp +2 -2
  107. data/src/agent/Core/Controller/TurboCaching.h +2 -2
  108. data/src/agent/Core/Controller.h +15 -15
  109. data/src/agent/Core/CoreMain.cpp +14 -75
  110. data/src/agent/Core/OptionParser.h +11 -9
  111. data/src/agent/Core/ResponseCache.h +5 -4
  112. data/src/agent/Core/SecurityUpdateChecker.h +7 -8
  113. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +2 -2
  114. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  115. data/src/agent/Core/SpawningKit/Config.h +2 -2
  116. data/src/agent/Core/SpawningKit/Context.h +2 -2
  117. data/src/agent/Core/SpawningKit/DirectSpawner.h +2 -2
  118. data/src/agent/Core/SpawningKit/DummySpawner.h +2 -2
  119. data/src/agent/Core/SpawningKit/ErrorRenderer.h +7 -2
  120. data/src/agent/Core/SpawningKit/Exceptions.h +2 -2
  121. data/src/agent/Core/SpawningKit/Factory.h +2 -2
  122. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
  123. data/src/agent/Core/SpawningKit/Handshake/Perform.h +6 -6
  124. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +3 -55
  125. data/src/agent/Core/SpawningKit/Handshake/Session.h +5 -2
  126. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +7 -4
  127. data/src/agent/Core/SpawningKit/Journey.h +2 -2
  128. data/src/agent/Core/SpawningKit/PipeWatcher.h +20 -5
  129. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +2 -2
  130. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  131. data/src/agent/Core/SpawningKit/Result.h +2 -2
  132. data/src/agent/Core/SpawningKit/SmartSpawner.h +8 -4
  133. data/src/agent/Core/SpawningKit/Spawner.h +6 -2
  134. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +4 -4
  135. data/src/agent/Core/TelemetryCollector.h +2 -2
  136. data/src/agent/ExecHelper/ExecHelperMain.cpp +12 -14
  137. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +9 -12
  138. data/src/{cxx_supportlib/FileTools/LargeFiles.h → agent/MainFunctions.h} +12 -17
  139. data/src/agent/Shared/ApiAccountUtils.h +2 -2
  140. data/src/agent/Shared/ApiServerUtils.h +5 -4
  141. data/src/agent/Shared/ApplicationPoolApiKey.h +2 -2
  142. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +90 -11
  143. data/src/agent/Shared/Fundamentals/AbortHandler.h +4 -2
  144. data/src/agent/Shared/Fundamentals/Initialization.cpp +12 -6
  145. data/src/agent/Shared/Fundamentals/Initialization.h +5 -5
  146. data/src/agent/Shared/Fundamentals/Utils.cpp +2 -2
  147. data/src/agent/Shared/Fundamentals/Utils.h +2 -2
  148. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +33 -13
  149. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +3 -2
  150. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +8 -6
  151. data/src/agent/Watchdog/AgentWatcher.cpp +2 -2
  152. data/src/agent/Watchdog/ApiServer.h +3 -3
  153. data/src/agent/Watchdog/Config.h +6 -23
  154. data/src/agent/Watchdog/CoreWatcher.cpp +2 -2
  155. data/src/agent/Watchdog/InstanceDirToucher.cpp +2 -2
  156. data/src/agent/Watchdog/WatchdogMain.cpp +15 -23
  157. data/src/apache2_module/Bucket.cpp +2 -2
  158. data/src/apache2_module/Bucket.h +2 -2
  159. data/src/apache2_module/CBindings.cpp +2 -2
  160. data/src/apache2_module/Config.cpp +2 -2
  161. data/src/apache2_module/Config.h +2 -2
  162. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +12 -22
  163. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
  164. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +7 -2
  165. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +2 -2
  166. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +32 -62
  167. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +2 -2
  168. data/src/apache2_module/ConfigGeneral/Common.h +2 -2
  169. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +7 -5
  170. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +2 -2
  171. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +7 -2
  172. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +2 -2
  173. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +5 -2
  174. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +2 -2
  175. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +15 -2
  176. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  177. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +9 -2
  178. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +2 -2
  179. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +18 -2
  180. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +5 -2
  181. data/src/apache2_module/DirectoryMapper.h +2 -2
  182. data/src/apache2_module/Hooks.cpp +29 -7
  183. data/src/apache2_module/Hooks.h +2 -2
  184. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +11 -46
  185. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  186. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +15 -55
  187. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +4 -3
  188. data/src/apache2_module/Utils.h +2 -2
  189. data/src/apache2_module/mod_passenger.c +2 -2
  190. data/src/cxx_supportlib/Algorithms/Hasher.cpp +3 -3
  191. data/src/cxx_supportlib/Algorithms/Hasher.h +6 -9
  192. data/src/cxx_supportlib/Algorithms/MovingAverage.h +3 -168
  193. data/src/cxx_supportlib/AppLocalConfigFileUtils.h +2 -2
  194. data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +2 -2
  195. data/src/cxx_supportlib/AppTypeDetector/CBindings.h +2 -2
  196. data/src/cxx_supportlib/AppTypeDetector/Detector.h +2 -2
  197. data/src/cxx_supportlib/BackgroundEventLoop.cpp +6 -2
  198. data/src/cxx_supportlib/BackgroundEventLoop.h +2 -2
  199. data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +2 -2
  200. data/src/cxx_supportlib/ConfigKit/Common.h +3 -3
  201. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +2 -2
  202. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +2 -2
  203. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +2 -2
  204. data/src/cxx_supportlib/ConfigKit/Schema.h +2 -2
  205. data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +2 -2
  206. data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
  207. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -2
  208. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +2 -2
  209. data/src/cxx_supportlib/ConfigKit/Translator.h +2 -2
  210. data/src/cxx_supportlib/ConfigKit/Utils.h +2 -2
  211. data/src/cxx_supportlib/Constants.h +4 -3
  212. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +2 -2
  213. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +2 -2
  214. data/src/cxx_supportlib/DataStructures/LString.cpp +2 -2
  215. data/src/cxx_supportlib/DataStructures/LString.h +6 -2
  216. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +3 -3
  217. data/src/cxx_supportlib/DataStructures/StringMap.h +4 -6
  218. data/src/cxx_supportlib/Exceptions.cpp +2 -2
  219. data/src/cxx_supportlib/Exceptions.h +2 -2
  220. data/src/cxx_supportlib/FileDescriptor.h +2 -2
  221. data/src/cxx_supportlib/FileTools/FileManip.cpp +2 -2
  222. data/src/cxx_supportlib/FileTools/FileManip.h +4 -2
  223. data/src/cxx_supportlib/FileTools/PathManip.cpp +13 -4
  224. data/src/cxx_supportlib/FileTools/PathManip.h +2 -2
  225. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +2 -2
  226. data/src/cxx_supportlib/FileTools/PathManipCBindings.h +2 -2
  227. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +2 -2
  228. data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +2 -2
  229. data/src/cxx_supportlib/Hooks.h +2 -3
  230. data/src/cxx_supportlib/IOTools/BufferedIO.h +2 -2
  231. data/src/cxx_supportlib/IOTools/IOUtils.cpp +53 -68
  232. data/src/cxx_supportlib/IOTools/IOUtils.h +67 -75
  233. data/src/cxx_supportlib/IOTools/MessageIO.h +2 -2
  234. data/src/cxx_supportlib/IOTools/MessageSerialization.h +2 -2
  235. data/src/cxx_supportlib/InstanceDirectory.h +2 -2
  236. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +5 -5
  237. data/src/cxx_supportlib/JsonTools/Autocast.h +2 -2
  238. data/src/cxx_supportlib/JsonTools/CBindings.cpp +2 -4
  239. data/src/cxx_supportlib/JsonTools/CBindings.h +2 -2
  240. data/src/cxx_supportlib/JsonTools/JsonUtils.h +6 -6
  241. data/src/cxx_supportlib/LoggingKit/Assert.h +2 -2
  242. data/src/cxx_supportlib/LoggingKit/Config.h +2 -2
  243. data/src/cxx_supportlib/LoggingKit/Context.h +18 -23
  244. data/src/cxx_supportlib/LoggingKit/Forward.h +2 -4
  245. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +38 -74
  246. data/src/cxx_supportlib/LoggingKit/Logging.h +2 -2
  247. data/src/cxx_supportlib/LoggingKit/LoggingKit.h +2 -2
  248. data/src/cxx_supportlib/LveLoggingDecorator.h +2 -2
  249. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +14 -6
  250. data/src/cxx_supportlib/MemoryKit/mbuf.h +3 -3
  251. data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
  252. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
  253. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +2 -2
  254. data/src/cxx_supportlib/ProcessManagement/Ruby.h +2 -2
  255. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +2 -2
  256. data/src/cxx_supportlib/ProcessManagement/Spawn.h +2 -2
  257. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +3 -3
  258. data/src/cxx_supportlib/ProcessManagement/Utils.h +2 -2
  259. data/src/cxx_supportlib/RandomGenerator.h +2 -2
  260. data/src/cxx_supportlib/ResourceLocator.h +3 -3
  261. data/src/cxx_supportlib/SafeLibev.h +5 -5
  262. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +5 -96
  263. data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -10
  264. data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +2 -2
  265. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +4 -2
  266. data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
  267. data/src/cxx_supportlib/ServerKit/Client.h +2 -2
  268. data/src/cxx_supportlib/ServerKit/ClientRef.h +2 -2
  269. data/src/cxx_supportlib/ServerKit/Config.h +2 -2
  270. data/src/cxx_supportlib/ServerKit/Context.h +8 -2
  271. data/src/cxx_supportlib/ServerKit/CookieUtils.h +2 -2
  272. data/src/cxx_supportlib/ServerKit/Errors.h +5 -4
  273. data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +2 -2
  274. data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +2 -2
  275. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +2 -2
  276. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
  277. data/src/cxx_supportlib/ServerKit/HeaderTable.h +2 -2
  278. data/src/cxx_supportlib/ServerKit/Hooks.h +4 -4
  279. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +2 -2
  280. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +2 -2
  281. data/src/cxx_supportlib/ServerKit/HttpClient.h +2 -2
  282. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +105 -71
  283. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +6 -3
  284. data/src/cxx_supportlib/ServerKit/HttpRequest.h +4 -4
  285. data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +2 -2
  286. data/src/cxx_supportlib/ServerKit/HttpServer.h +20 -14
  287. data/src/cxx_supportlib/ServerKit/Implementation.cpp +2 -2
  288. data/src/cxx_supportlib/ServerKit/Server.h +2 -8
  289. data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
  290. data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
  291. data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
  292. data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
  293. data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
  294. data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
  295. data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
  296. data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
  297. data/src/cxx_supportlib/StaticString.h +5 -3
  298. data/src/cxx_supportlib/StrIntTools/DateParsing.h +3 -3
  299. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +14 -5
  300. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +9 -4
  301. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +2 -2
  302. data/src/cxx_supportlib/StrIntTools/StringScanning.h +2 -2
  303. data/src/cxx_supportlib/StrIntTools/Template.h +2 -2
  304. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +2 -2
  305. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +2 -2
  306. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +4 -6
  307. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +2 -2
  308. data/src/cxx_supportlib/SystemTools/SystemTime.h +2 -2
  309. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +16 -16
  310. data/src/cxx_supportlib/SystemTools/UserDatabase.h +8 -12
  311. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +13 -11
  312. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +4 -2
  313. data/src/cxx_supportlib/Utils/BlockingQueue.h +2 -2
  314. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +2 -2
  315. data/src/cxx_supportlib/Utils/CachedFileStat.h +2 -2
  316. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +2 -2
  317. data/src/cxx_supportlib/Utils/ClassUtils.h +2 -2
  318. data/src/cxx_supportlib/Utils/Curl.h +2 -2
  319. data/src/cxx_supportlib/Utils/FastStringStream.h +9 -9
  320. data/src/cxx_supportlib/Utils/FileChangeChecker.h +2 -2
  321. data/src/cxx_supportlib/Utils/HttpConstants.h +2 -2
  322. data/src/cxx_supportlib/Utils/IniFile.h +26 -27
  323. data/src/cxx_supportlib/Utils/MessagePassing.h +2 -2
  324. data/src/cxx_supportlib/Utils/OptionParsing.h +2 -2
  325. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +2 -2
  326. data/src/cxx_supportlib/Utils/ScopeGuard.h +2 -2
  327. data/src/cxx_supportlib/Utils/SpeedMeter.h +2 -5
  328. data/src/cxx_supportlib/Utils/Timer.h +2 -2
  329. data/src/cxx_supportlib/Utils/VariantMap.h +2 -2
  330. data/src/cxx_supportlib/Utils.cpp +3 -3
  331. data/src/cxx_supportlib/Utils.h +2 -32
  332. data/src/cxx_supportlib/WatchdogLauncher.cpp +2 -2
  333. data/src/cxx_supportlib/WatchdogLauncher.h +3 -5
  334. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +2 -2
  335. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +2 -2
  336. data/src/cxx_supportlib/WrapperRegistry/Entry.h +2 -2
  337. data/src/cxx_supportlib/WrapperRegistry/Registry.h +2 -2
  338. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  339. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  340. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  341. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  342. data/src/cxx_supportlib/oxt/detail/spin_lock_darwin.hpp +1 -1
  343. data/src/cxx_supportlib/oxt/detail/spin_lock_gcc_x86.hpp +1 -1
  344. data/src/cxx_supportlib/oxt/detail/spin_lock_portable.hpp +1 -1
  345. data/src/cxx_supportlib/oxt/detail/spin_lock_pthreads.hpp +1 -1
  346. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +5 -1
  347. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +2 -1
  348. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
  349. data/src/cxx_supportlib/oxt/implementation.cpp +53 -4
  350. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  351. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  352. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  353. data/src/cxx_supportlib/oxt/system_calls.cpp +13 -5
  354. data/src/cxx_supportlib/oxt/system_calls.hpp +4 -5
  355. data/src/cxx_supportlib/oxt/thread.hpp +2 -2
  356. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  357. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +2 -2
  358. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +11 -3
  359. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_iterator.hpp +27 -1
  360. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
  361. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +34 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +124 -26
  363. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +10 -18
  364. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +4 -5
  365. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +5 -1
  366. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +183 -64
  367. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +170 -68
  368. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +83 -12
  369. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +40 -11
  370. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +8 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +8 -1
  372. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_arm.hpp +8 -1
  373. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +19 -10
  374. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +19 -54
  375. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +105 -100
  376. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +107 -40
  377. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +32 -5
  378. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +12 -13
  379. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +7 -8
  380. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +1 -1
  381. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +26 -27
  382. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +73 -72
  383. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
  384. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +2 -3
  385. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +50 -12
  386. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +4 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_ppc_asm_common.hpp +33 -0
  388. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +7 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +15 -6
  390. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +3 -3
  391. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +143 -0
  392. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +42 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +46 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +42 -0
  395. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_darwin_ulock.hpp +58 -0
  396. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +64 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +158 -0
  398. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +3 -4
  399. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +10 -5
  400. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +4 -5
  401. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +2 -60
  402. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +257 -1789
  403. data/src/cxx_supportlib/vendor-modified/boost/bind/{bind_cc.hpp → detail/bind_cc.hpp} +20 -20
  404. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
  405. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
  406. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
  407. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +13 -2
  408. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
  409. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +140 -290
  410. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +3 -16
  411. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +0 -279
  412. data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +0 -6
  413. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +2 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
  415. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
  416. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +23 -0
  417. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
  418. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +10 -6
  419. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +4 -4
  421. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
  422. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +3 -2
  424. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +3 -3
  425. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +2 -1
  426. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
  427. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +3 -3
  428. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +1 -0
  429. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
  430. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
  431. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  432. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +4 -4
  433. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +7 -1
  435. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +4 -1
  436. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
  437. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -0
  439. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +20 -3
  440. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +89 -0
  441. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +5 -0
  442. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -1
  443. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +1 -0
  444. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +16 -5
  446. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +4 -2
  447. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +5 -0
  448. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +1 -0
  449. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -0
  450. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -0
  451. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +6 -0
  452. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +4 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +10 -0
  454. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -0
  455. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +23 -3
  456. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +13 -0
  457. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  458. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +19 -3
  459. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +139 -34
  460. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
  461. data/src/cxx_supportlib/vendor-modified/boost/config/platform/wasm.hpp +6 -0
  462. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +45 -18
  463. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +11 -45
  464. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +42 -3
  465. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +11 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +26 -21
  467. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +30 -26
  468. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +178 -39
  469. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +12 -12
  470. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +827 -303
  471. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +57 -57
  473. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -10
  474. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +155 -179
  475. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  476. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
  477. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +14 -15
  478. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
  479. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
  480. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +24 -21
  481. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +12 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
  483. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +52 -16
  484. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +1 -2
  485. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +23 -13
  486. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +891 -182
  487. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +121 -66
  488. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +42 -42
  489. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +310 -231
  490. data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
  491. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
  492. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +16 -12
  493. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +91 -0
  494. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +8 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +213 -195
  496. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +10 -11
  497. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
  498. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +98 -12
  499. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +48 -12
  500. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +8 -10
  501. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +268 -120
  502. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
  503. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +12 -12
  504. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +49 -122
  505. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +1 -7
  506. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
  507. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
  508. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +7 -11
  509. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
  510. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +265 -354
  511. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +1 -0
  512. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
  513. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
  514. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +93 -11
  515. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1364 -1296
  516. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +367 -260
  517. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +112 -93
  518. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +80 -125
  519. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +136 -119
  520. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +19 -14
  521. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +27 -21
  522. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +35 -22
  523. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +158 -45
  524. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +8 -3
  525. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -4
  526. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +7 -7
  528. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -3
  529. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +3 -3
  530. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +81 -83
  531. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +93 -90
  532. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +82 -127
  533. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +229 -245
  534. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +198 -175
  535. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +131 -87
  536. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +373 -374
  537. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +6 -7
  538. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
  539. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +618 -631
  540. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +408 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +62 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +79 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +395 -581
  546. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +25 -24
  547. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +98 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +37 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +41 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +36 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +38 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/core/alignof.hpp +57 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +7 -81
  554. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +448 -215
  555. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_traits.hpp +112 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +418 -45
  557. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +29 -3
  558. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +100 -1
  559. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +46 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +19 -9
  561. data/src/cxx_supportlib/vendor-modified/boost/core/detail/is_same.hpp +39 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/core/detail/lwt_unattended.hpp +66 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
  564. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +71 -0
  565. data/src/cxx_supportlib/vendor-modified/boost/{smart_ptr → core}/detail/sp_thread_sleep.hpp +39 -21
  566. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_yield.hpp +100 -0
  567. data/src/cxx_supportlib/vendor-modified/boost/core/detail/splitmix64.hpp +3 -3
  568. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +1272 -0
  569. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +78 -21
  570. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +53 -0
  571. data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
  572. data/src/cxx_supportlib/vendor-modified/boost/core/identity.hpp +61 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
  574. data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +10 -15
  575. data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +69 -0
  576. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +41 -37
  577. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +8 -54
  578. data/src/cxx_supportlib/vendor-modified/boost/core/make_span.hpp +59 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/core/max_align.hpp +82 -0
  580. data/src/cxx_supportlib/vendor-modified/boost/core/memory_resource.hpp +108 -0
  581. data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +3 -0
  582. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +1 -1
  583. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
  584. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
  585. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +111 -60
  586. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +1 -1
  587. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +23 -16
  588. data/src/cxx_supportlib/vendor-modified/boost/core/serialization.hpp +131 -0
  589. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +31 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/core/snprintf.hpp +173 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +401 -0
  592. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +10 -40
  593. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +1186 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/core/verbose_terminate_handler.hpp +88 -0
  595. data/src/cxx_supportlib/vendor-modified/boost/core/yield_primitives.hpp +12 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
  597. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
  598. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
  599. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
  600. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
  601. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +3 -3
  602. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
  603. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
  604. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +1 -1
  605. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +1 -1
  606. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
  607. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
  608. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
  609. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
  610. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
  611. data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
  612. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
  613. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
  614. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +161 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
  617. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -7
  618. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +24 -126
  619. data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +3 -3
  620. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +1 -1
  621. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +1 -1
  622. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +1 -1
  623. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +58 -30
  624. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +1 -1
  625. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +1 -1
  626. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +24 -0
  627. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +1 -1
  628. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +4 -4
  629. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +85 -3
  630. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +1 -1
  631. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +2 -2
  632. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +2 -2
  633. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +1 -1
  634. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
  635. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
  636. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
  637. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
  638. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
  639. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
  640. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
  641. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
  642. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
  643. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
  644. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
  645. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +71 -223
  646. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
  647. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +428 -452
  648. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
  649. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -61
  650. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +6 -10
  651. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +2 -2
  652. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +85 -80
  653. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +32 -25
  654. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +16 -13
  655. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +45 -45
  656. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +32 -25
  657. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +104 -97
  658. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +87 -90
  659. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +29 -20
  660. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +77 -8
  661. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +2 -2
  662. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
  663. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +30 -30
  664. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +8 -7
  665. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +14 -14
  666. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +38 -39
  667. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +84 -15
  668. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
  669. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +24 -24
  670. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/empty_node_checker.hpp +1 -1
  671. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
  672. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -32
  673. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/function_detector.hpp +1 -1
  674. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
  675. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
  676. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +11 -49
  677. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +195 -115
  680. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +22 -26
  681. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
  682. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +121 -75
  683. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
  684. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +20 -20
  685. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +4 -4
  686. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +3 -3
  687. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +7 -1
  688. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +3 -3
  689. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
  690. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +7 -17
  691. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +18 -18
  692. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +3 -140
  693. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  694. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
  695. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +26 -19
  696. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +2 -2
  697. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
  698. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +21 -21
  699. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +6 -6
  700. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +28 -28
  701. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/value_functors.hpp +10 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +70 -3
  703. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +1722 -995
  704. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +2 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +84 -11
  706. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +68 -63
  707. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +2 -2
  708. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +17 -3
  709. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +15 -11
  710. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +12 -4
  711. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +11 -4
  712. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +16 -13
  713. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +38 -38
  714. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +32 -25
  715. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +32 -25
  716. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +18 -15
  717. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +22 -22
  718. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +80 -79
  719. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +32 -25
  720. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +16 -13
  721. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +38 -36
  722. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +22 -19
  723. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +25 -21
  724. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +44 -37
  725. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +2 -2
  726. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +64 -54
  727. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +11 -11
  728. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +2 -2
  729. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +11 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +6 -6
  731. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -1
  732. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +5 -5
  733. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +10 -11
  734. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +148 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +2 -2
  736. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
  737. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +8 -4
  738. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +7 -13
  739. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +113 -131
  741. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +618 -646
  742. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +83 -74
  743. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +26 -33
  744. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +22 -29
  745. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  747. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +23 -18
  748. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +7 -9
  749. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +22 -161
  750. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +9 -12
  751. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
  752. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
  753. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
  754. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
  755. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +10 -18
  756. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +13 -14
  757. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +24 -14
  758. data/src/cxx_supportlib/vendor-modified/boost/limits.hpp +12 -12
  759. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +7 -5
  760. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +48 -33
  761. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +92 -75
  762. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +216 -185
  763. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +11 -10
  764. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +22 -11
  765. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +9 -0
  766. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +125 -165
  767. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +24 -15
  768. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +16 -5
  769. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/search.hpp +79 -0
  770. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +8 -2
  771. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +8 -5
  772. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +11 -11
  773. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +0 -1
  774. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +22 -1
  775. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +5 -6
  776. data/src/cxx_supportlib/vendor-modified/boost/move/detail/addressof.hpp +61 -0
  777. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
  778. data/src/cxx_supportlib/vendor-modified/boost/move/detail/force_ptr.hpp +36 -0
  779. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  780. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +108 -9
  781. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +9 -52
  783. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +15 -0
  784. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  785. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +70 -26
  786. data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +2 -0
  787. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +40 -33
  788. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +7 -3
  789. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +5 -0
  790. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
  791. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +90 -30
  792. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +90 -3
  793. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +22 -22
  794. data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +10 -0
  795. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +65 -66
  796. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +2 -2
  797. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +38 -33
  798. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +1386 -0
  799. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +120 -0
  800. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +149 -0
  801. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +321 -0
  802. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +48 -0
  803. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_count.hpp +147 -0
  804. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_defer.hpp +119 -0
  805. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +166 -0
  806. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +50 -0
  807. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_list.hpp +39 -0
  808. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_value_list.hpp +41 -0
  809. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list.hpp +24 -0
  810. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list_v.hpp +27 -0
  811. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +87 -0
  812. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_min_element.hpp +51 -0
  813. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +84 -0
  814. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +48 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +54 -0
  816. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_value.hpp +25 -0
  817. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_void.hpp +32 -0
  818. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_with_index.hpp +385 -0
  819. data/src/cxx_supportlib/vendor-modified/boost/mp11/function.hpp +222 -0
  820. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +121 -0
  821. data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +51 -0
  822. data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +481 -0
  823. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +188 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +169 -0
  825. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +16 -0
  826. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +1 -1
  827. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +6 -6
  828. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
  829. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +1 -1
  830. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity.hpp +1 -1
  831. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/yes_no.hpp +2 -1
  832. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +1 -1
  833. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +1 -1
  834. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +1 -1
  835. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +3 -44
  836. data/src/cxx_supportlib/vendor-modified/boost/nondet_random.hpp +22 -0
  837. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
  838. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +15 -1
  839. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
  840. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
  841. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
  842. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +4 -49
  843. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +3 -4
  844. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +16 -7
  845. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +49 -0
  846. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +49 -48
  847. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +11 -11
  848. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +9 -9
  849. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +31 -260
  850. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +41 -0
  851. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +169 -599
  852. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +4 -7
  853. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +2 -2
  854. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +1 -1
  855. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +1 -1
  856. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +4 -4
  857. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +1 -1
  858. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +1 -1
  859. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +3 -3
  860. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +1 -1
  861. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +1 -1
  862. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +3 -3
  863. data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +12 -24
  864. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +22 -9
  865. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +13 -0
  866. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/loongarch.h +41 -0
  867. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +2 -2
  868. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  869. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +1 -1
  870. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +2 -2
  871. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
  872. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
  873. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +1 -1
  875. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -0
  876. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  877. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +8 -2
  878. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +5 -5
  879. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +15 -15
  880. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +1 -1
  881. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
  882. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +14 -14
  883. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +2 -2
  884. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +1 -0
  885. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -82
  886. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
  887. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
  888. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
  890. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
  891. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
  892. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
  893. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +8 -1
  894. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +1 -1
  895. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +3 -2
  896. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +1 -0
  897. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -7
  898. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +4 -3
  899. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +23 -13
  900. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +10 -10
  901. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +2 -0
  902. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +3 -2
  903. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +6 -0
  904. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +3 -1
  905. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +7 -7
  906. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +235 -104
  907. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +37 -43
  908. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +1 -23
  909. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -0
  910. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +52 -0
  911. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +14 -18
  912. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +7 -15
  913. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +40 -91
  914. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +0 -16
  915. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -0
  916. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +4 -2
  917. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +1 -1
  918. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +13 -14
  919. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +16 -17
  920. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +17 -56
  921. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
  922. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +5 -14
  923. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_type_traits.hpp +55 -0
  924. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +1 -0
  925. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
  926. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +5 -6
  927. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +4 -6
  928. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +7 -9
  929. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +32 -119
  930. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -18
  931. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +2 -5
  932. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +10 -8
  933. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +28 -564
  934. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +64 -0
  935. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +17 -20
  936. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +20 -21
  937. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +34 -66
  938. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +79 -370
  939. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +31 -88
  940. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +2 -1
  941. data/src/cxx_supportlib/vendor-modified/boost/system/detail/append_int.hpp +32 -0
  942. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +26 -8
  943. data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +3 -12
  944. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +38 -50
  945. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +76 -49
  946. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +261 -159
  947. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +145 -58
  948. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +7 -7
  949. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +17 -5
  950. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +7 -7
  951. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +3 -13
  952. data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +128 -0
  953. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +1 -43
  954. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +20 -77
  955. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +97 -0
  956. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +7 -7
  957. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +8 -20
  958. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +71 -0
  959. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +9 -2
  960. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +30 -59
  961. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
  962. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
  963. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
  964. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
  965. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
  966. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
  967. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
  968. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
  969. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
  970. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
  971. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
  972. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -26
  973. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
  974. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
  975. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +11 -4
  976. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
  977. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
  978. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +5 -5
  979. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +0 -1
  980. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +3 -2
  981. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +1 -1
  982. data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +9 -0
  983. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
  984. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +5 -0
  985. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +104 -6
  986. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -2
  987. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +25 -24
  988. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -1
  989. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +4 -1
  990. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
  991. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
  992. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_swappable_cxx_11.hpp +70 -0
  993. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
  994. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +2 -1
  995. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
  996. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +1 -1
  997. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +1 -1
  999. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +4 -24
  1000. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_swappable.hpp +92 -0
  1001. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
  1002. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
  1003. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -6
  1004. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
  1005. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
  1006. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
  1007. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
  1008. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +4 -51
  1009. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
  1010. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
  1011. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
  1012. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
  1013. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
  1014. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
  1015. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +4 -9
  1016. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
  1017. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
  1018. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
  1019. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
  1020. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
  1021. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
  1022. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
  1023. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
  1024. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
  1025. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
  1026. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -202
  1027. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +1055 -0
  1028. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +66 -0
  1029. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +917 -0
  1030. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +67 -0
  1031. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +1202 -0
  1032. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map_fwd.hpp +67 -0
  1033. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +1065 -0
  1034. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set_fwd.hpp +67 -0
  1035. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
  1036. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
  1037. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +127 -0
  1039. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +900 -0
  1040. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +1993 -0
  1041. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2404 -0
  1042. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
  1043. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +64 -0
  1044. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +94 -0
  1045. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +50 -0
  1046. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/ignore_wshadow.hpp +35 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +319 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_handle.hpp +56 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +150 -0
  1050. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_handle.hpp +48 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +101 -0
  1052. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
  1053. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/restore_wshadow.hpp +11 -0
  1054. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/rw_spinlock.hpp +179 -0
  1055. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +661 -0
  1056. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +53 -0
  1057. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/types_constructibility.hpp +172 -0
  1058. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +1463 -3502
  1059. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +10 -31
  1060. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/mulx.hpp +129 -0
  1061. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +44 -0
  1062. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
  1063. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +214 -0
  1064. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
  1065. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
  1066. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
  1067. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
  1068. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +8 -30
  1069. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
  1070. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +237 -0
  1072. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
  1073. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +70 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +821 -0
  1075. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +59 -0
  1076. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +631 -0
  1077. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +58 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +760 -994
  1079. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +35 -13
  1080. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +895 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +59 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +707 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +58 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_printers.hpp +414 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +539 -664
  1086. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +35 -15
  1087. data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +2 -1
  1088. data/src/cxx_supportlib/vendor-modified/boost/utility/binary.hpp +3 -2
  1089. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
  1090. data/src/cxx_supportlib/vendor-modified/boost/utility/in_place_factory.hpp +6 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +13 -2
  1092. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +6 -2
  1093. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +24 -3
  1094. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
  1095. data/src/cxx_supportlib/vendor-modified/boost/utility/typed_in_place_factory.hpp +6 -1
  1096. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +12 -8
  1097. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1098. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
  1099. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +3 -3
  1100. data/src/helper-scripts/backtrace-sanitizer.rb +2 -2
  1101. data/src/helper-scripts/crash-watch.rb +1 -1
  1102. data/src/helper-scripts/download_binaries/extconf.rb +2 -2
  1103. data/src/helper-scripts/meteor-loader.rb +9 -4
  1104. data/src/helper-scripts/node-loader.js +2 -2
  1105. data/src/helper-scripts/prespawn +2 -2
  1106. data/src/helper-scripts/rack-loader.rb +2 -2
  1107. data/src/helper-scripts/rack-preloader.rb +2 -2
  1108. data/src/helper-scripts/wsgi-loader.py +36 -19
  1109. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +26 -34
  1110. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +2 -2
  1111. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +14 -2
  1112. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +2 -2
  1113. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +38 -50
  1114. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +2 -2
  1115. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
  1116. data/src/nginx_module/Configuration.c +8 -3
  1117. data/src/nginx_module/Configuration.h +1 -1
  1118. data/src/nginx_module/ContentHandler.c +1 -1
  1119. data/src/nginx_module/ContentHandler.h +1 -1
  1120. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +13 -2
  1121. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  1122. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +38 -2
  1123. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +2 -2
  1124. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +29 -2
  1125. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  1126. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +8 -2
  1127. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +2 -2
  1128. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +10 -2
  1129. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  1130. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +7 -26
  1131. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  1132. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +13 -50
  1133. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  1134. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +6 -18
  1135. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  1136. data/src/nginx_module/StaticContentHandler.c +1 -1
  1137. data/src/nginx_module/StaticContentHandler.h +1 -1
  1138. data/src/nginx_module/ngx_http_passenger_module.c +2 -6
  1139. data/src/nginx_module/ngx_http_passenger_module.h +1 -1
  1140. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +2 -2
  1141. data/src/ruby_native_extension/extconf.rb +3 -3
  1142. data/src/ruby_native_extension/passenger_native_support.c +22 -5
  1143. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +2 -2
  1144. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -2
  1145. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +2 -2
  1146. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -2
  1147. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +2 -2
  1148. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +22 -26
  1149. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +2 -2
  1150. data/src/ruby_supportlib/phusion_passenger/common_library.rb +18 -10
  1151. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +2 -2
  1152. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +2 -2
  1153. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +2 -2
  1154. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +2 -2
  1155. data/src/ruby_supportlib/phusion_passenger/config/command.rb +2 -2
  1156. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +2 -2
  1157. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +8 -4
  1158. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +2 -2
  1159. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +2 -2
  1160. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +2 -2
  1161. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +2 -2
  1162. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +12 -2
  1163. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +2 -2
  1164. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -2
  1165. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -2
  1166. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +15 -7
  1167. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +2 -2
  1168. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +2 -2
  1169. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +2 -2
  1170. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +2 -2
  1171. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +2 -2
  1172. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +2 -2
  1173. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +2 -2
  1174. data/src/ruby_supportlib/phusion_passenger/constants.rb +3 -2
  1175. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -2
  1176. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +15 -5
  1177. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +2 -2
  1178. data/src/ruby_supportlib/phusion_passenger/message_client.rb +2 -2
  1179. data/src/ruby_supportlib/phusion_passenger/native_support.rb +12 -7
  1180. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +21 -30
  1181. data/src/ruby_supportlib/phusion_passenger/packaging.rb +3 -2
  1182. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +11 -12
  1183. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +2 -2
  1184. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +3 -3
  1185. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +56 -14
  1186. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +2 -2
  1187. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +2 -2
  1188. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +9 -31
  1189. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -0
  1190. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +6 -6
  1191. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +2 -2
  1192. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +2 -2
  1193. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +2 -2
  1194. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +7 -37
  1195. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +13 -14
  1196. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +4 -4
  1197. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -2
  1198. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +2 -2
  1199. data/src/ruby_supportlib/phusion_passenger/plugin.rb +2 -2
  1200. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +14 -8
  1201. data/src/ruby_supportlib/phusion_passenger/public_api.rb +5 -2
  1202. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +73 -0
  1203. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
  1204. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +14 -3
  1205. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +32 -58
  1206. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
  1207. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +2 -2
  1208. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +7 -2
  1209. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +2 -2
  1210. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +2 -2
  1211. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +2 -2
  1212. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +2 -2
  1213. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +27 -23
  1214. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -2
  1215. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +2 -2
  1216. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +2 -2
  1217. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +6 -3
  1218. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +3 -3
  1219. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +2 -6
  1220. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +3 -4
  1221. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +9 -3
  1222. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +2 -2
  1223. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +2 -2
  1224. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +2 -2
  1225. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +2 -2
  1226. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
  1227. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -198
  1228. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +2 -2
  1229. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +2 -2
  1230. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +2 -2
  1231. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +67 -0
  1232. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +2 -2
  1233. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +2 -2
  1234. data/src/ruby_supportlib/phusion_passenger/utils.rb +8 -17
  1235. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +2 -2
  1236. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
  1237. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +5 -1
  1238. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +6 -2
  1239. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
  1240. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
  1241. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +1 -1
  1242. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +1 -1
  1243. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +1 -1
  1244. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
  1245. data/src/ruby_supportlib/phusion_passenger.rb +11 -11
  1246. data/src/schema_printer/SchemaPrinterMain.cpp +2 -6
  1247. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +2 -2
  1248. metadata +211 -741
  1249. data/dev/webpacketpp.patch +0 -39
  1250. data/src/agent/Core/AdminPanelConnector.h +0 -681
  1251. data/src/cxx_supportlib/DataStructures/HashMap.h +0 -60
  1252. data/src/cxx_supportlib/FileTools/LargeFiles.cpp +0 -41
  1253. data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2265
  1254. data/src/cxx_supportlib/ServerKit/http_parser.h +0 -330
  1255. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +0 -975
  1256. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
  1257. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
  1258. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
  1259. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
  1260. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
  1261. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
  1262. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
  1263. data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
  1264. data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
  1265. data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
  1266. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -456
  1267. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +0 -302
  1268. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +0 -179
  1269. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +0 -179
  1270. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +0 -224
  1271. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +0 -37
  1272. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +0 -1267
  1273. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +0 -135
  1274. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +0 -1305
  1275. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +0 -705
  1276. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +0 -292
  1277. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +0 -1296
  1278. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +0 -800
  1279. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +0 -909
  1280. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +0 -578
  1281. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +0 -1917
  1282. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +0 -2600
  1283. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +0 -409
  1284. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +0 -689
  1285. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +0 -1122
  1286. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +0 -454
  1287. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +0 -38
  1288. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +0 -823
  1289. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +0 -723
  1290. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +0 -756
  1291. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +0 -2500
  1292. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +0 -255
  1293. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +0 -27
  1294. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +0 -281
  1295. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +0 -27
  1296. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +0 -247
  1297. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +0 -27
  1298. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +0 -523
  1299. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +0 -361
  1300. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +0 -237
  1301. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +0 -176
  1302. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +0 -501
  1303. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +0 -220
  1304. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +0 -138
  1305. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +0 -1138
  1306. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +0 -330
  1307. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +0 -40
  1308. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +0 -132
  1309. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +0 -114
  1310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +0 -40
  1311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +0 -34
  1312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +0 -32
  1313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +0 -66
  1314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +0 -165
  1315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +0 -71
  1316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +0 -1073
  1317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +0 -109
  1318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +0 -68
  1319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +0 -652
  1320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +0 -128
  1321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +0 -90
  1322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +0 -127
  1323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +0 -68
  1324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +0 -192
  1325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +0 -90
  1326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +0 -94
  1327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +0 -122
  1328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +0 -151
  1329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +0 -1938
  1330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +0 -416
  1331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +0 -33
  1332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +0 -62
  1333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +0 -34
  1334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +0 -337
  1335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +0 -38
  1336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +0 -141
  1337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +0 -150
  1338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +0 -150
  1339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +0 -224
  1340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +0 -278
  1341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +0 -50
  1342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +0 -85
  1343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +0 -206
  1344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +0 -86
  1345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +0 -41
  1346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +0 -82
  1347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +0 -46
  1348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +0 -33
  1349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
  1350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
  1351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
  1352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
  1353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +0 -54
  1354. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +0 -290
  1355. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +0 -45
  1356. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -80
  1357. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +0 -268
  1358. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +0 -561
  1359. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +0 -527
  1360. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +0 -333
  1361. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +0 -120
  1362. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +0 -610
  1363. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +0 -101
  1364. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +0 -462
  1365. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +0 -111
  1366. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +0 -819
  1367. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +0 -173
  1368. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +0 -398
  1369. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +0 -115
  1370. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +0 -601
  1371. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +0 -76
  1372. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +0 -131
  1373. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +0 -65
  1374. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +0 -48
  1375. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +0 -86
  1376. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +0 -48
  1377. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +0 -225
  1378. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +0 -151
  1379. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +0 -302
  1380. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +0 -160
  1381. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +0 -661
  1382. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +0 -126
  1383. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +0 -359
  1384. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +0 -96
  1385. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +0 -199
  1386. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +0 -670
  1387. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +0 -3966
  1388. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +0 -187
  1389. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +0 -356
  1390. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +0 -160
  1391. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +0 -89
  1392. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +0 -204
  1393. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +0 -37
  1394. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +0 -47
  1395. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +0 -99
  1396. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +0 -103
  1397. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +0 -86
  1398. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +0 -174
  1399. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +0 -314
  1400. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +0 -128
  1401. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +0 -72
  1402. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +0 -254
  1403. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +0 -26
  1404. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +0 -61
  1405. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
  1406. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -135
  1407. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +0 -50
  1408. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +0 -56
  1409. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +0 -45
  1410. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +0 -108
  1411. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +0 -49
  1412. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +0 -61
  1413. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +0 -66
  1414. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +0 -70
  1415. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +0 -71
  1416. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +0 -521
  1417. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +0 -62
  1418. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +0 -69
  1419. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +0 -70
  1420. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +0 -173
  1421. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
  1422. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +0 -164
  1423. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +0 -40
  1424. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +0 -91
  1425. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +0 -149
  1426. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +0 -177
  1427. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +0 -120
  1428. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +0 -82
  1429. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +0 -78
  1430. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +0 -87
  1431. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +0 -66
  1432. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +0 -111
  1433. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +0 -81
  1434. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +0 -218
  1435. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +0 -511
  1436. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +0 -100
  1437. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +0 -239
  1438. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +0 -244
  1439. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +0 -125
  1440. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +0 -161
  1441. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +0 -166
  1442. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +0 -147
  1443. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -164
  1444. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +0 -158
  1445. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +0 -607
  1446. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +0 -654
  1447. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +0 -100
  1448. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +0 -32
  1449. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +0 -42
  1450. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +0 -73
  1451. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +0 -214
  1452. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +0 -107
  1453. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +0 -44
  1454. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +0 -142
  1455. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +0 -47
  1456. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +0 -152
  1457. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +0 -147
  1458. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +0 -160
  1459. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +0 -231
  1460. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +0 -80
  1461. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +0 -42
  1462. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +0 -103
  1463. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +0 -89
  1464. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +0 -48
  1465. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +0 -250
  1466. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +0 -166
  1467. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +0 -46
  1468. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +0 -92
  1469. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +0 -49
  1470. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +0 -51
  1471. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +0 -231
  1472. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +0 -100
  1473. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +0 -385
  1474. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +0 -318
  1475. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +0 -93
  1476. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +0 -419
  1477. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
  1478. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +0 -47
  1479. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +0 -54
  1480. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +0 -190
  1481. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +0 -64
  1482. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +0 -72
  1483. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +0 -75
  1484. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +0 -83
  1485. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +0 -73
  1486. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +0 -175
  1487. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +0 -146
  1488. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +0 -49
  1489. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +0 -62
  1490. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +0 -53
  1491. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +0 -101
  1492. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +0 -258
  1493. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +0 -55
  1494. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +0 -53
  1495. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +0 -391
  1496. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +0 -70
  1497. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +0 -105
  1498. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +0 -68
  1499. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +0 -35
  1500. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +0 -42
  1501. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +0 -71
  1502. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +0 -158
  1503. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -294
  1504. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +0 -92
  1505. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +0 -51
  1506. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +0 -130
  1507. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +0 -153
  1508. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +0 -329
  1509. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +0 -123
  1510. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +0 -361
  1511. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +0 -339
  1512. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +0 -2348
  1513. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +0 -49
  1514. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +0 -1553
  1515. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +0 -1214
  1516. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +0 -401
  1517. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +0 -1217
  1518. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +0 -493
  1519. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +0 -235
  1520. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +0 -223
  1521. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +0 -154
  1522. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +0 -107
  1523. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +0 -130
  1524. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +0 -263
  1525. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +0 -235
  1526. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +0 -92
  1527. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +0 -289
  1528. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +0 -254
  1529. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +0 -42
  1530. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +0 -38
  1531. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +0 -73
  1532. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +0 -1118
  1533. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +0 -228
  1534. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +0 -96
  1535. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +0 -869
  1536. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +0 -333
  1537. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +0 -282
  1538. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +0 -50
  1539. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +0 -867
  1540. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +0 -291
  1541. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +0 -88
  1542. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +0 -313
  1543. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +0 -254
  1544. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +0 -254
  1545. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +0 -487
  1546. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +0 -251
  1547. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +0 -454
  1548. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +0 -48
  1549. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +0 -414
  1550. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +0 -349
  1551. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +0 -304
  1552. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +0 -73
  1553. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +0 -137
  1554. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +0 -133
  1555. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +0 -538
  1556. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +0 -157
  1557. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +0 -1057
  1558. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +0 -607
  1559. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -160
  1560. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +0 -120
  1561. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_traits.hpp +0 -185
  1562. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +0 -181
  1563. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/append.hpp +0 -219
  1564. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +0 -231
  1565. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_tuple.hpp +0 -248
  1566. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/deferred.hpp +0 -106
  1567. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +0 -434
  1568. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/prepend.hpp +0 -219
  1569. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +0 -100
  1570. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +0 -217
  1571. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +0 -73
  1572. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +0 -608
  1573. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +0 -284
  1574. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +0 -195
  1575. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +0 -125
  1576. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +0 -135
  1577. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +0 -112
  1578. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +0 -123
  1579. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +0 -124
  1580. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +0 -129
  1581. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -106
  1582. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +0 -56
  1583. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -113
  1584. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +0 -46
  1585. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +0 -762
  1586. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +0 -500
  1587. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +0 -480
  1588. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +0 -348
  1589. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -689
  1590. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +0 -906
  1591. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +0 -258
  1592. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +0 -132
  1593. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +0 -253
  1594. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +0 -130
  1595. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +0 -111
  1596. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +0 -84
  1597. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +0 -302
  1598. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +0 -45
  1599. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -64
  1600. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +0 -446
  1601. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +0 -177
  1602. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +0 -51
  1603. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +0 -258
  1604. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +0 -1201
  1605. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +0 -735
  1606. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +0 -3317
  1607. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +0 -611
  1608. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +0 -61
  1609. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +0 -556
  1610. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +0 -519
  1611. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +0 -85
  1612. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +0 -36
  1613. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +0 -94
  1614. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +0 -187
  1615. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +0 -356
  1616. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +0 -143
  1617. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +0 -293
  1618. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1030
  1619. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +0 -1102
  1620. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +0 -646
  1621. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -1552
  1622. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +0 -378
  1623. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +0 -35
  1624. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +0 -20
  1625. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +0 -292
  1626. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +0 -357
  1627. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +0 -164
  1628. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +0 -136
  1629. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +0 -384
  1630. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +0 -185
  1631. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +0 -131
  1632. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +0 -55
  1633. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +0 -293
  1634. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +0 -1078
  1635. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +0 -115
  1636. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +0 -194
  1637. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +0 -246
  1638. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +0 -313
  1639. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +0 -143
  1640. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +0 -201
  1641. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +0 -568
  1642. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +0 -44
  1643. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +0 -117
  1644. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +0 -69
  1645. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +0 -241
  1646. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +0 -69
  1647. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +0 -212
  1648. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +0 -69
  1649. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +0 -352
  1650. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +0 -45
  1651. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +0 -56
  1652. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +0 -56
  1653. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +0 -218
  1654. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +0 -55
  1655. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +0 -187
  1656. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +0 -193
  1657. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +0 -263
  1658. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +0 -237
  1659. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +0 -131
  1660. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +0 -45
  1661. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +0 -157
  1662. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +0 -113
  1663. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +0 -72
  1664. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +0 -71
  1665. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +0 -63
  1666. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +0 -48
  1667. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +0 -61
  1668. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +0 -61
  1669. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +0 -249
  1670. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +0 -103
  1671. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +0 -82
  1672. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +0 -141
  1673. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +0 -133
  1674. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +0 -92
  1675. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +0 -60
  1676. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +0 -128
  1677. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +0 -153
  1678. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +0 -710
  1679. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +0 -503
  1680. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +0 -39
  1681. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +0 -92
  1682. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +0 -39
  1683. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +0 -128
  1684. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +0 -738
  1685. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +0 -328
  1686. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +0 -1390
  1687. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +0 -740
  1688. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +0 -3033
  1689. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +0 -68
  1690. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +0 -575
  1691. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +0 -356
  1692. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +0 -38
  1693. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +0 -169
  1694. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +0 -30
  1695. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +0 -561
  1696. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -346
  1697. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +0 -763
  1698. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +0 -211
  1699. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +0 -121
  1700. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +0 -172
  1701. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +0 -69
  1702. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +0 -365
  1703. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +0 -167
  1704. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +0 -427
  1705. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +0 -103
  1706. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +0 -34
  1707. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +0 -68
  1708. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +0 -74
  1709. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +0 -71
  1710. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +0 -208
  1711. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +0 -64
  1712. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +0 -78
  1713. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +0 -129
  1714. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +0 -92
  1715. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +0 -69
  1716. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +0 -1247
  1717. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +0 -104
  1718. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +0 -75
  1719. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +0 -166
  1720. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +0 -29
  1721. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +0 -100
  1722. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +0 -974
  1723. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +0 -54
  1724. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +0 -69
  1725. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +0 -65
  1726. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +0 -28
  1727. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +0 -33
  1728. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +0 -44
  1729. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +0 -571
  1730. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +0 -35
  1731. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +0 -92
  1732. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -686
  1733. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +0 -44
  1734. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +0 -282
  1735. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +0 -1133
  1736. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +0 -88
  1737. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +0 -116
  1738. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +0 -116
  1739. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +0 -114
  1740. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +0 -114
  1741. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +0 -106
  1742. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +0 -110
  1743. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +0 -110
  1744. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +0 -110
  1745. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +0 -110
  1746. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +0 -110
  1747. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +0 -110
  1748. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +0 -110
  1749. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +0 -110
  1750. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +0 -110
  1751. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +0 -110
  1752. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +0 -110
  1753. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +0 -110
  1754. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +0 -110
  1755. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +0 -110
  1756. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +0 -110
  1757. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +0 -114
  1758. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +0 -114
  1759. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +0 -236
  1760. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +0 -236
  1761. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +0 -110
  1762. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +0 -110
  1763. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +0 -110
  1764. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +0 -125
  1765. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +0 -126
  1766. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +0 -114
  1767. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +0 -114
  1768. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +0 -24
  1769. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +0 -35
  1770. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +0 -40
  1771. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +0 -20
  1772. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +0 -26
  1773. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +0 -256
  1774. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +0 -27
  1775. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +0 -26
  1776. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +0 -21
  1777. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +0 -168
  1778. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +0 -162
  1779. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +0 -73
  1780. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +0 -23
  1781. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +0 -58
  1782. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -437
  1783. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +0 -363
  1784. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -512
  1785. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -496
  1786. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -40
  1787. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -41
  1788. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -147
  1789. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -39
  1790. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -39
  1791. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +0 -1348
  1792. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +0 -748
  1793. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +0 -23
  1794. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +0 -187
  1795. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +0 -201
  1796. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +0 -67
  1797. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +0 -55
  1798. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +0 -150
  1799. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
  1800. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
  1801. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
  1802. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
  1803. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
  1804. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
  1805. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -475
  1806. data/src/cxx_supportlib/vendor-modified/boost/checked_delete.hpp +0 -17
  1807. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -71
  1808. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
  1809. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
  1810. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
  1811. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
  1812. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1813. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
  1814. data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
  1815. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
  1816. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
  1817. data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -26
  1818. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
  1819. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
  1820. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +0 -1058
  1821. data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +0 -55
  1822. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
  1823. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
  1824. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
  1825. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
  1826. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
  1827. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
  1828. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
  1829. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
  1830. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
  1831. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
  1832. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
  1833. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
  1834. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
  1835. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
  1836. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
  1837. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
  1838. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
  1839. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
  1840. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
  1841. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
  1842. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
  1843. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
  1844. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
  1845. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
  1846. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
  1847. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
  1848. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/indexed_bit_flag.hpp +0 -54
  1849. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +0 -64
  1850. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_forward.hpp +0 -52
  1851. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_nullptr_t.hpp +0 -45
  1852. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_obsolete.hpp +0 -32
  1853. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +0 -51
  1854. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
  1855. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +0 -278
  1856. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +0 -297
  1857. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +0 -265
  1858. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
  1859. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -58
  1860. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
  1861. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
  1862. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
  1863. data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
  1864. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
  1865. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
  1866. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
  1867. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
  1868. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
  1869. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
  1870. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
  1871. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
  1872. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
  1873. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
  1874. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
  1875. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -187
  1876. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
  1877. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
  1878. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
  1879. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
  1880. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
  1881. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
  1882. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -63
  1883. data/src/cxx_supportlib/vendor-modified/websocketpp/COPYING +0 -145
  1884. data/src/cxx_supportlib/vendor-modified/websocketpp/changelog.md +0 -444
  1885. data/src/cxx_supportlib/vendor-modified/websocketpp/readme.md +0 -49
  1886. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/base64/base64.hpp +0 -178
  1887. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/client.hpp +0 -33
  1888. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/close.hpp +0 -353
  1889. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio.hpp +0 -141
  1890. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio_ssl.hpp +0 -39
  1891. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/chrono.hpp +0 -68
  1892. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/connection_hdl.hpp +0 -52
  1893. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/cpp11.hpp +0 -162
  1894. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/functional.hpp +0 -100
  1895. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +0 -448
  1896. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/memory.hpp +0 -88
  1897. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/network.hpp +0 -106
  1898. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/platforms.hpp +0 -46
  1899. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/random.hpp +0 -82
  1900. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/regex.hpp +0 -59
  1901. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/stdint.hpp +0 -73
  1902. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/system_error.hpp +0 -84
  1903. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/thread.hpp +0 -88
  1904. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/time.hpp +0 -56
  1905. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/type_traits.hpp +0 -65
  1906. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/concurrency/basic.hpp +0 -46
  1907. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/concurrency/none.hpp +0 -80
  1908. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio.hpp +0 -77
  1909. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_client.hpp +0 -77
  1910. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_no_tls.hpp +0 -73
  1911. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_no_tls_client.hpp +0 -73
  1912. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/boost_config.hpp +0 -72
  1913. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core.hpp +0 -297
  1914. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core_client.hpp +0 -294
  1915. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug.hpp +0 -286
  1916. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug_asio.hpp +0 -77
  1917. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +0 -73
  1918. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/minimal_client.hpp +0 -72
  1919. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/minimal_server.hpp +0 -312
  1920. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection.hpp +0 -1642
  1921. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection_base.hpp +0 -38
  1922. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint.hpp +0 -700
  1923. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint_base.hpp +0 -38
  1924. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/error.hpp +0 -277
  1925. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/extension.hpp +0 -102
  1926. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +0 -129
  1927. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +0 -817
  1928. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +0 -864
  1929. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/constants.hpp +0 -308
  1930. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/parser.hpp +0 -200
  1931. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/request.hpp +0 -191
  1932. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/response.hpp +0 -266
  1933. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/parser.hpp +0 -629
  1934. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/request.hpp +0 -124
  1935. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/response.hpp +0 -188
  1936. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/connection_impl.hpp +0 -2375
  1937. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/endpoint_impl.hpp +0 -269
  1938. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/utilities_impl.hpp +0 -87
  1939. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/basic.hpp +0 -199
  1940. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/levels.hpp +0 -203
  1941. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/stub.hpp +0 -119
  1942. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/syslog.hpp +0 -146
  1943. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/alloc.hpp +0 -105
  1944. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/message.hpp +0 -340
  1945. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/pool.hpp +0 -229
  1946. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/base.hpp +0 -299
  1947. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi00.hpp +0 -462
  1948. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi07.hpp +0 -78
  1949. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi08.hpp +0 -83
  1950. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +0 -1078
  1951. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/processor.hpp +0 -407
  1952. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/random/none.hpp +0 -60
  1953. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/random/random_device.hpp +0 -80
  1954. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/client_endpoint.hpp +0 -173
  1955. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/server_endpoint.hpp +0 -195
  1956. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/server.hpp +0 -33
  1957. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/sha1/sha1.hpp +0 -189
  1958. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/base.hpp +0 -232
  1959. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/connection.hpp +0 -1197
  1960. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/endpoint.hpp +0 -1182
  1961. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/base.hpp +0 -159
  1962. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/none.hpp +0 -372
  1963. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/tls.hpp +0 -474
  1964. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/connection.hpp +0 -238
  1965. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/endpoint.hpp +0 -77
  1966. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/base.hpp +0 -104
  1967. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/connection.hpp +0 -412
  1968. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/endpoint.hpp +0 -140
  1969. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/base.hpp +0 -133
  1970. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/connection.hpp +0 -714
  1971. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/endpoint.hpp +0 -222
  1972. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/base.hpp +0 -95
  1973. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/connection.hpp +0 -286
  1974. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/endpoint.hpp +0 -140
  1975. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/uri.hpp +0 -356
  1976. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utf8_validator.hpp +0 -154
  1977. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utilities.hpp +0 -180
  1978. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/version.hpp +0 -61
@@ -0,0 +1,2404 @@
1
+ /* Common base for Boost.Unordered open-addressing tables.
2
+ *
3
+ * Copyright 2022-2024 Joaquin M Lopez Munoz.
4
+ * Copyright 2023 Christian Mazakas.
5
+ * Copyright 2024 Braden Ganetsky.
6
+ * Distributed under the Boost Software License, Version 1.0.
7
+ * (See accompanying file LICENSE_1_0.txt or copy at
8
+ * http://www.boost.org/LICENSE_1_0.txt)
9
+ *
10
+ * See https://www.boost.org/libs/unordered for library home page.
11
+ */
12
+
13
+ #ifndef BOOST_UNORDERED_DETAIL_FOA_CORE_HPP
14
+ #define BOOST_UNORDERED_DETAIL_FOA_CORE_HPP
15
+
16
+ #include <boost/assert.hpp>
17
+ #include <boost/config.hpp>
18
+ #include <boost/config/workaround.hpp>
19
+ #include <boost/core/allocator_traits.hpp>
20
+ #include <boost/core/bit.hpp>
21
+ #include <boost/core/empty_value.hpp>
22
+ #include <boost/core/no_exceptions_support.hpp>
23
+ #include <boost/core/pointer_traits.hpp>
24
+ #include <boost/cstdint.hpp>
25
+ #include <boost/predef.h>
26
+ #include <boost/unordered/detail/allocator_constructed.hpp>
27
+ #include <boost/unordered/detail/narrow_cast.hpp>
28
+ #include <boost/unordered/detail/mulx.hpp>
29
+ #include <boost/unordered/detail/static_assert.hpp>
30
+ #include <boost/unordered/detail/type_traits.hpp>
31
+ #include <boost/unordered/hash_traits.hpp>
32
+ #include <boost/unordered/unordered_printers.hpp>
33
+ #include <climits>
34
+ #include <cmath>
35
+ #include <cstddef>
36
+ #include <cstring>
37
+ #include <limits>
38
+ #include <memory>
39
+ #include <new>
40
+ #include <tuple>
41
+ #include <type_traits>
42
+ #include <utility>
43
+
44
+ #if defined(BOOST_UNORDERED_ENABLE_STATS)
45
+ #include <boost/unordered/detail/foa/cumulative_stats.hpp>
46
+ #endif
47
+
48
+ #if !defined(BOOST_UNORDERED_DISABLE_SSE2)
49
+ #if defined(BOOST_UNORDERED_ENABLE_SSE2)|| \
50
+ defined(__SSE2__)|| \
51
+ defined(_M_X64)||(defined(_M_IX86_FP)&&_M_IX86_FP>=2)
52
+ #define BOOST_UNORDERED_SSE2
53
+ #endif
54
+ #endif
55
+
56
+ #if !defined(BOOST_UNORDERED_DISABLE_NEON)
57
+ #if defined(BOOST_UNORDERED_ENABLE_NEON)||\
58
+ (defined(__ARM_NEON)&&!defined(__ARM_BIG_ENDIAN))
59
+ #define BOOST_UNORDERED_LITTLE_ENDIAN_NEON
60
+ #endif
61
+ #endif
62
+
63
+ #if defined(BOOST_UNORDERED_SSE2)
64
+ #include <emmintrin.h>
65
+ #elif defined(BOOST_UNORDERED_LITTLE_ENDIAN_NEON)
66
+ #include <arm_neon.h>
67
+ #endif
68
+
69
+ #ifdef __has_builtin
70
+ #define BOOST_UNORDERED_HAS_BUILTIN(x) __has_builtin(x)
71
+ #else
72
+ #define BOOST_UNORDERED_HAS_BUILTIN(x) 0
73
+ #endif
74
+
75
+ #if !defined(NDEBUG)
76
+ #define BOOST_UNORDERED_ASSUME(cond) BOOST_ASSERT(cond)
77
+ #elif BOOST_UNORDERED_HAS_BUILTIN(__builtin_assume)
78
+ #define BOOST_UNORDERED_ASSUME(cond) __builtin_assume(cond)
79
+ #elif defined(__GNUC__) || BOOST_UNORDERED_HAS_BUILTIN(__builtin_unreachable)
80
+ #define BOOST_UNORDERED_ASSUME(cond) \
81
+ do{ \
82
+ if(!(cond))__builtin_unreachable(); \
83
+ }while(0)
84
+ #elif defined(_MSC_VER)
85
+ #define BOOST_UNORDERED_ASSUME(cond) __assume(cond)
86
+ #else
87
+ #define BOOST_UNORDERED_ASSUME(cond) \
88
+ do{ \
89
+ static_cast<void>(false&&(cond)); \
90
+ }while(0)
91
+ #endif
92
+
93
+ /* We use BOOST_UNORDERED_PREFETCH[_ELEMENTS] macros rather than proper
94
+ * functions because of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109985
95
+ */
96
+
97
+ #if defined(BOOST_GCC)||defined(BOOST_CLANG)
98
+ #define BOOST_UNORDERED_PREFETCH(p) __builtin_prefetch((const char*)(p))
99
+ #elif defined(BOOST_UNORDERED_SSE2)
100
+ #define BOOST_UNORDERED_PREFETCH(p) _mm_prefetch((const char*)(p),_MM_HINT_T0)
101
+ #else
102
+ #define BOOST_UNORDERED_PREFETCH(p) ((void)(p))
103
+ #endif
104
+
105
+ /* We have experimentally confirmed that ARM architectures get a higher
106
+ * speedup when around the first half of the element slots in a group are
107
+ * prefetched, whereas for Intel just the first cache line is best.
108
+ * Please report back if you find better tunings for some particular
109
+ * architectures.
110
+ */
111
+
112
+ #if BOOST_ARCH_ARM
113
+ /* Cache line size can't be known at compile time, so we settle on
114
+ * the very frequent value of 64B.
115
+ */
116
+
117
+ #define BOOST_UNORDERED_PREFETCH_ELEMENTS(p,N) \
118
+ do{ \
119
+ auto BOOST_UNORDERED_P=(p); \
120
+ constexpr int cache_line=64; \
121
+ const char *p0=reinterpret_cast<const char*>(BOOST_UNORDERED_P), \
122
+ *p1=p0+sizeof(*BOOST_UNORDERED_P)*(N)/2; \
123
+ for(;p0<p1;p0+=cache_line)BOOST_UNORDERED_PREFETCH(p0); \
124
+ }while(0)
125
+ #else
126
+ #define BOOST_UNORDERED_PREFETCH_ELEMENTS(p,N) BOOST_UNORDERED_PREFETCH(p)
127
+ #endif
128
+
129
+ #ifdef __has_feature
130
+ #define BOOST_UNORDERED_HAS_FEATURE(x) __has_feature(x)
131
+ #else
132
+ #define BOOST_UNORDERED_HAS_FEATURE(x) 0
133
+ #endif
134
+
135
+ #if BOOST_UNORDERED_HAS_FEATURE(thread_sanitizer)|| \
136
+ defined(__SANITIZE_THREAD__)
137
+ #define BOOST_UNORDERED_THREAD_SANITIZER
138
+ #endif
139
+
140
+ #define BOOST_UNORDERED_STATIC_ASSERT_HASH_PRED(Hash, Pred) \
141
+ static_assert(boost::unordered::detail::is_nothrow_swappable<Hash>::value, \
142
+ "Template parameter Hash is required to be nothrow Swappable."); \
143
+ static_assert(boost::unordered::detail::is_nothrow_swappable<Pred>::value, \
144
+ "Template parameter Pred is required to be nothrow Swappable");
145
+
146
+ namespace boost{
147
+ namespace unordered{
148
+ namespace detail{
149
+ namespace foa{
150
+
151
+ static constexpr std::size_t default_bucket_count=0;
152
+
153
+ /* foa::table_core is the common base of foa::table and foa::concurrent_table,
154
+ * which in their turn serve as the foundational core of
155
+ * boost::unordered_(flat|node)_(map|set) and boost::concurrent_flat_(map|set),
156
+ * respectively. Its main internal design aspects are:
157
+ *
158
+ * - Element slots are logically split into groups of size N=15. The number
159
+ * of groups is always a power of two, so the number of allocated slots
160
+ is of the form (N*2^n)-1 (final slot reserved for a sentinel mark).
161
+ * - Positioning is done at the group level rather than the slot level, that
162
+ * is, for any given element its hash value is used to locate a group and
163
+ * insertion is performed on the first available element of that group;
164
+ * if the group is full (overflow), further groups are tried using
165
+ * quadratic probing.
166
+ * - Each group has an associated 16B metadata word holding reduced hash
167
+ * values and overflow information. Reduced hash values are used to
168
+ * accelerate lookup within the group by using 128-bit SIMD or 64-bit word
169
+ * operations.
170
+ */
171
+
172
+ /* group15 controls metadata information of a group of N=15 element slots.
173
+ * The 16B metadata word is organized as follows (LSB depicted rightmost):
174
+ *
175
+ * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
176
+ * |ofw|h14|h13|h13|h11|h10|h09|h08|h07|h06|h05|h04|h03|h02|h01|h00|
177
+ * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
178
+ *
179
+ * hi is 0 if the i-th element slot is avalaible, 1 to mark a sentinel and,
180
+ * when the slot is occupied, a value in the range [2,255] obtained from the
181
+ * element's original hash value.
182
+ * ofw is the so-called overflow byte. If insertion of an element with hash
183
+ * value h is tried on a full group, then the (h%8)-th bit of the overflow
184
+ * byte is set to 1 and a further group is probed. Having an overflow byte
185
+ * brings two advantages:
186
+ *
187
+ * - There's no need to reserve a special value of hi to mark tombstone
188
+ * slots; each reduced hash value keeps then log2(254)=7.99 bits of the
189
+ * original hash (alternative approaches reserve one full bit to mark
190
+ * if the slot is available/deleted, so their reduced hash values are 7 bit
191
+ * strong only).
192
+ * - When doing an unsuccessful lookup (i.e. the element is not present in
193
+ * the table), probing stops at the first non-overflowed group. Having 8
194
+ * bits for signalling overflow makes it very likely that we stop at the
195
+ * current group (this happens when no element with the same (h%8) value
196
+ * has overflowed in the group), saving us an additional group check even
197
+ * under high-load/high-erase conditions. It is critical that hash
198
+ * reduction is invariant under modulo 8 (see maybe_caused_overflow).
199
+ *
200
+ * When looking for an element with hash value h, match(h) returns a bitmask
201
+ * signalling which slots have the same reduced hash value. If available,
202
+ * match uses SSE2 or (little endian) Neon 128-bit SIMD operations. On non-SIMD
203
+ * scenarios, the logical layout described above is physically mapped to two
204
+ * 64-bit words with *bit interleaving*, i.e. the least significant 16 bits of
205
+ * the first 64-bit word contain the least significant bits of each byte in the
206
+ * "logical" 128-bit word, and so forth. With this layout, match can be
207
+ * implemented with 4 ANDs, 3 shifts, 2 XORs, 1 OR and 1 NOT.
208
+ *
209
+ * IntegralWrapper<Integral> is used to implement group15's underlying
210
+ * metadata: it behaves as a plain integral for foa::table or introduces
211
+ * atomic ops for foa::concurrent_table. If IntegralWrapper<...> is trivially
212
+ * constructible, so is group15, in which case it can be initialized via memset
213
+ * etc. Where needed, group15::initialize resets the metadata to the all
214
+ * zeros (default state).
215
+ */
216
+
217
+ #if defined(BOOST_UNORDERED_SSE2)
218
+
219
+ template<template<typename> class IntegralWrapper>
220
+ struct group15
221
+ {
222
+ static constexpr std::size_t N=15;
223
+ static constexpr bool regular_layout=true;
224
+
225
+ struct dummy_group_type
226
+ {
227
+ alignas(16) unsigned char storage[N+1]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0};
228
+ };
229
+
230
+ inline void initialize()
231
+ {
232
+ _mm_store_si128(
233
+ reinterpret_cast<__m128i*>(m),_mm_setzero_si128());
234
+ }
235
+
236
+ inline void set(std::size_t pos,std::size_t hash)
237
+ {
238
+ BOOST_ASSERT(pos<N);
239
+ at(pos)=reduced_hash(hash);
240
+ }
241
+
242
+ inline void set_sentinel()
243
+ {
244
+ at(N-1)=sentinel_;
245
+ }
246
+
247
+ inline bool is_sentinel(std::size_t pos)const
248
+ {
249
+ BOOST_ASSERT(pos<N);
250
+ return at(pos)==sentinel_;
251
+ }
252
+
253
+ static inline bool is_sentinel(unsigned char* pc)noexcept
254
+ {
255
+ return *pc==sentinel_;
256
+ }
257
+
258
+ inline void reset(std::size_t pos)
259
+ {
260
+ BOOST_ASSERT(pos<N);
261
+ at(pos)=available_;
262
+ }
263
+
264
+ static inline void reset(unsigned char* pc)
265
+ {
266
+ *reinterpret_cast<slot_type*>(pc)=available_;
267
+ }
268
+
269
+ inline int match(std::size_t hash)const
270
+ {
271
+ return _mm_movemask_epi8(
272
+ _mm_cmpeq_epi8(load_metadata(),_mm_set1_epi32(match_word(hash))))&0x7FFF;
273
+ }
274
+
275
+ inline bool is_not_overflowed(std::size_t hash)const
276
+ {
277
+ static constexpr unsigned char shift[]={1,2,4,8,16,32,64,128};
278
+
279
+ return !(overflow()&shift[hash%8]);
280
+ }
281
+
282
+ inline void mark_overflow(std::size_t hash)
283
+ {
284
+ overflow()|=static_cast<unsigned char>(1<<(hash%8));
285
+ }
286
+
287
+ static inline bool maybe_caused_overflow(unsigned char* pc)
288
+ {
289
+ std::size_t pos=reinterpret_cast<uintptr_t>(pc)%sizeof(group15);
290
+ group15 *pg=reinterpret_cast<group15*>(pc-pos);
291
+ return !pg->is_not_overflowed(*pc);
292
+ }
293
+
294
+ inline int match_available()const
295
+ {
296
+ return _mm_movemask_epi8(
297
+ _mm_cmpeq_epi8(load_metadata(),_mm_setzero_si128()))&0x7FFF;
298
+ }
299
+
300
+ inline bool is_occupied(std::size_t pos)const
301
+ {
302
+ BOOST_ASSERT(pos<N);
303
+ return at(pos)!=available_;
304
+ }
305
+
306
+ static inline bool is_occupied(unsigned char* pc)noexcept
307
+ {
308
+ return *reinterpret_cast<slot_type*>(pc)!=available_;
309
+ }
310
+
311
+ inline int match_occupied()const
312
+ {
313
+ return (~match_available())&0x7FFF;
314
+ }
315
+
316
+ private:
317
+ using slot_type=IntegralWrapper<unsigned char>;
318
+ BOOST_UNORDERED_STATIC_ASSERT(sizeof(slot_type)==1);
319
+
320
+ static constexpr unsigned char available_=0,
321
+ sentinel_=1;
322
+
323
+ inline __m128i load_metadata()const
324
+ {
325
+ #if defined(BOOST_UNORDERED_THREAD_SANITIZER)
326
+ /* ThreadSanitizer complains on 1-byte atomic writes combined with
327
+ * 16-byte atomic reads.
328
+ */
329
+
330
+ return _mm_set_epi8(
331
+ (char)m[15],(char)m[14],(char)m[13],(char)m[12],
332
+ (char)m[11],(char)m[10],(char)m[ 9],(char)m[ 8],
333
+ (char)m[ 7],(char)m[ 6],(char)m[ 5],(char)m[ 4],
334
+ (char)m[ 3],(char)m[ 2],(char)m[ 1],(char)m[ 0]);
335
+ #else
336
+ return _mm_load_si128(reinterpret_cast<const __m128i*>(m));
337
+ #endif
338
+ }
339
+
340
+ inline static int match_word(std::size_t hash)
341
+ {
342
+ static constexpr boost::uint32_t word[]=
343
+ {
344
+ 0x08080808u,0x09090909u,0x02020202u,0x03030303u,0x04040404u,0x05050505u,
345
+ 0x06060606u,0x07070707u,0x08080808u,0x09090909u,0x0A0A0A0Au,0x0B0B0B0Bu,
346
+ 0x0C0C0C0Cu,0x0D0D0D0Du,0x0E0E0E0Eu,0x0F0F0F0Fu,0x10101010u,0x11111111u,
347
+ 0x12121212u,0x13131313u,0x14141414u,0x15151515u,0x16161616u,0x17171717u,
348
+ 0x18181818u,0x19191919u,0x1A1A1A1Au,0x1B1B1B1Bu,0x1C1C1C1Cu,0x1D1D1D1Du,
349
+ 0x1E1E1E1Eu,0x1F1F1F1Fu,0x20202020u,0x21212121u,0x22222222u,0x23232323u,
350
+ 0x24242424u,0x25252525u,0x26262626u,0x27272727u,0x28282828u,0x29292929u,
351
+ 0x2A2A2A2Au,0x2B2B2B2Bu,0x2C2C2C2Cu,0x2D2D2D2Du,0x2E2E2E2Eu,0x2F2F2F2Fu,
352
+ 0x30303030u,0x31313131u,0x32323232u,0x33333333u,0x34343434u,0x35353535u,
353
+ 0x36363636u,0x37373737u,0x38383838u,0x39393939u,0x3A3A3A3Au,0x3B3B3B3Bu,
354
+ 0x3C3C3C3Cu,0x3D3D3D3Du,0x3E3E3E3Eu,0x3F3F3F3Fu,0x40404040u,0x41414141u,
355
+ 0x42424242u,0x43434343u,0x44444444u,0x45454545u,0x46464646u,0x47474747u,
356
+ 0x48484848u,0x49494949u,0x4A4A4A4Au,0x4B4B4B4Bu,0x4C4C4C4Cu,0x4D4D4D4Du,
357
+ 0x4E4E4E4Eu,0x4F4F4F4Fu,0x50505050u,0x51515151u,0x52525252u,0x53535353u,
358
+ 0x54545454u,0x55555555u,0x56565656u,0x57575757u,0x58585858u,0x59595959u,
359
+ 0x5A5A5A5Au,0x5B5B5B5Bu,0x5C5C5C5Cu,0x5D5D5D5Du,0x5E5E5E5Eu,0x5F5F5F5Fu,
360
+ 0x60606060u,0x61616161u,0x62626262u,0x63636363u,0x64646464u,0x65656565u,
361
+ 0x66666666u,0x67676767u,0x68686868u,0x69696969u,0x6A6A6A6Au,0x6B6B6B6Bu,
362
+ 0x6C6C6C6Cu,0x6D6D6D6Du,0x6E6E6E6Eu,0x6F6F6F6Fu,0x70707070u,0x71717171u,
363
+ 0x72727272u,0x73737373u,0x74747474u,0x75757575u,0x76767676u,0x77777777u,
364
+ 0x78787878u,0x79797979u,0x7A7A7A7Au,0x7B7B7B7Bu,0x7C7C7C7Cu,0x7D7D7D7Du,
365
+ 0x7E7E7E7Eu,0x7F7F7F7Fu,0x80808080u,0x81818181u,0x82828282u,0x83838383u,
366
+ 0x84848484u,0x85858585u,0x86868686u,0x87878787u,0x88888888u,0x89898989u,
367
+ 0x8A8A8A8Au,0x8B8B8B8Bu,0x8C8C8C8Cu,0x8D8D8D8Du,0x8E8E8E8Eu,0x8F8F8F8Fu,
368
+ 0x90909090u,0x91919191u,0x92929292u,0x93939393u,0x94949494u,0x95959595u,
369
+ 0x96969696u,0x97979797u,0x98989898u,0x99999999u,0x9A9A9A9Au,0x9B9B9B9Bu,
370
+ 0x9C9C9C9Cu,0x9D9D9D9Du,0x9E9E9E9Eu,0x9F9F9F9Fu,0xA0A0A0A0u,0xA1A1A1A1u,
371
+ 0xA2A2A2A2u,0xA3A3A3A3u,0xA4A4A4A4u,0xA5A5A5A5u,0xA6A6A6A6u,0xA7A7A7A7u,
372
+ 0xA8A8A8A8u,0xA9A9A9A9u,0xAAAAAAAAu,0xABABABABu,0xACACACACu,0xADADADADu,
373
+ 0xAEAEAEAEu,0xAFAFAFAFu,0xB0B0B0B0u,0xB1B1B1B1u,0xB2B2B2B2u,0xB3B3B3B3u,
374
+ 0xB4B4B4B4u,0xB5B5B5B5u,0xB6B6B6B6u,0xB7B7B7B7u,0xB8B8B8B8u,0xB9B9B9B9u,
375
+ 0xBABABABAu,0xBBBBBBBBu,0xBCBCBCBCu,0xBDBDBDBDu,0xBEBEBEBEu,0xBFBFBFBFu,
376
+ 0xC0C0C0C0u,0xC1C1C1C1u,0xC2C2C2C2u,0xC3C3C3C3u,0xC4C4C4C4u,0xC5C5C5C5u,
377
+ 0xC6C6C6C6u,0xC7C7C7C7u,0xC8C8C8C8u,0xC9C9C9C9u,0xCACACACAu,0xCBCBCBCBu,
378
+ 0xCCCCCCCCu,0xCDCDCDCDu,0xCECECECEu,0xCFCFCFCFu,0xD0D0D0D0u,0xD1D1D1D1u,
379
+ 0xD2D2D2D2u,0xD3D3D3D3u,0xD4D4D4D4u,0xD5D5D5D5u,0xD6D6D6D6u,0xD7D7D7D7u,
380
+ 0xD8D8D8D8u,0xD9D9D9D9u,0xDADADADAu,0xDBDBDBDBu,0xDCDCDCDCu,0xDDDDDDDDu,
381
+ 0xDEDEDEDEu,0xDFDFDFDFu,0xE0E0E0E0u,0xE1E1E1E1u,0xE2E2E2E2u,0xE3E3E3E3u,
382
+ 0xE4E4E4E4u,0xE5E5E5E5u,0xE6E6E6E6u,0xE7E7E7E7u,0xE8E8E8E8u,0xE9E9E9E9u,
383
+ 0xEAEAEAEAu,0xEBEBEBEBu,0xECECECECu,0xEDEDEDEDu,0xEEEEEEEEu,0xEFEFEFEFu,
384
+ 0xF0F0F0F0u,0xF1F1F1F1u,0xF2F2F2F2u,0xF3F3F3F3u,0xF4F4F4F4u,0xF5F5F5F5u,
385
+ 0xF6F6F6F6u,0xF7F7F7F7u,0xF8F8F8F8u,0xF9F9F9F9u,0xFAFAFAFAu,0xFBFBFBFBu,
386
+ 0xFCFCFCFCu,0xFDFDFDFDu,0xFEFEFEFEu,0xFFFFFFFFu,
387
+ };
388
+
389
+ return (int)word[narrow_cast<unsigned char>(hash)];
390
+ }
391
+
392
+ inline static unsigned char reduced_hash(std::size_t hash)
393
+ {
394
+ return narrow_cast<unsigned char>(match_word(hash));
395
+ }
396
+
397
+ inline slot_type& at(std::size_t pos)
398
+ {
399
+ return m[pos];
400
+ }
401
+
402
+ inline const slot_type& at(std::size_t pos)const
403
+ {
404
+ return m[pos];
405
+ }
406
+
407
+ inline slot_type& overflow()
408
+ {
409
+ return at(N);
410
+ }
411
+
412
+ inline const slot_type& overflow()const
413
+ {
414
+ return at(N);
415
+ }
416
+
417
+ alignas(16) slot_type m[16];
418
+ };
419
+
420
+ #elif defined(BOOST_UNORDERED_LITTLE_ENDIAN_NEON)
421
+
422
+ template<template<typename> class IntegralWrapper>
423
+ struct group15
424
+ {
425
+ static constexpr std::size_t N=15;
426
+ static constexpr bool regular_layout=true;
427
+
428
+ struct dummy_group_type
429
+ {
430
+ alignas(16) unsigned char storage[N+1]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0};
431
+ };
432
+
433
+ inline void initialize()
434
+ {
435
+ vst1q_u8(reinterpret_cast<uint8_t*>(m),vdupq_n_u8(0));
436
+ }
437
+
438
+ inline void set(std::size_t pos,std::size_t hash)
439
+ {
440
+ BOOST_ASSERT(pos<N);
441
+ at(pos)=reduced_hash(hash);
442
+ }
443
+
444
+ inline void set_sentinel()
445
+ {
446
+ at(N-1)=sentinel_;
447
+ }
448
+
449
+ inline bool is_sentinel(std::size_t pos)const
450
+ {
451
+ BOOST_ASSERT(pos<N);
452
+ return pos==N-1&&at(N-1)==sentinel_;
453
+ }
454
+
455
+ static inline bool is_sentinel(unsigned char* pc)noexcept
456
+ {
457
+ return *reinterpret_cast<slot_type*>(pc)==sentinel_;
458
+ }
459
+
460
+ inline void reset(std::size_t pos)
461
+ {
462
+ BOOST_ASSERT(pos<N);
463
+ at(pos)=available_;
464
+ }
465
+
466
+ static inline void reset(unsigned char* pc)
467
+ {
468
+ *reinterpret_cast<slot_type*>(pc)=available_;
469
+ }
470
+
471
+ inline int match(std::size_t hash)const
472
+ {
473
+ return simde_mm_movemask_epi8(vceqq_u8(
474
+ load_metadata(),vdupq_n_u8(reduced_hash(hash))))&0x7FFF;
475
+ }
476
+
477
+ inline bool is_not_overflowed(std::size_t hash)const
478
+ {
479
+ static constexpr unsigned char shift[]={1,2,4,8,16,32,64,128};
480
+
481
+ return !(overflow()&shift[hash%8]);
482
+ }
483
+
484
+ inline void mark_overflow(std::size_t hash)
485
+ {
486
+ overflow()|=static_cast<unsigned char>(1<<(hash%8));
487
+ }
488
+
489
+ static inline bool maybe_caused_overflow(unsigned char* pc)
490
+ {
491
+ std::size_t pos=reinterpret_cast<uintptr_t>(pc)%sizeof(group15);
492
+ group15 *pg=reinterpret_cast<group15*>(pc-pos);
493
+ return !pg->is_not_overflowed(*pc);
494
+ };
495
+
496
+ inline int match_available()const
497
+ {
498
+ return simde_mm_movemask_epi8(vceqq_u8(
499
+ load_metadata(),vdupq_n_u8(0)))&0x7FFF;
500
+ }
501
+
502
+ inline bool is_occupied(std::size_t pos)const
503
+ {
504
+ BOOST_ASSERT(pos<N);
505
+ return at(pos)!=available_;
506
+ }
507
+
508
+ static inline bool is_occupied(unsigned char* pc)noexcept
509
+ {
510
+ return *reinterpret_cast<slot_type*>(pc)!=available_;
511
+ }
512
+
513
+ inline int match_occupied()const
514
+ {
515
+ return simde_mm_movemask_epi8(vcgtq_u8(
516
+ load_metadata(),vdupq_n_u8(0)))&0x7FFF;
517
+ }
518
+
519
+ private:
520
+ using slot_type=IntegralWrapper<unsigned char>;
521
+ BOOST_UNORDERED_STATIC_ASSERT(sizeof(slot_type)==1);
522
+
523
+ static constexpr unsigned char available_=0,
524
+ sentinel_=1;
525
+
526
+ inline uint8x16_t load_metadata()const
527
+ {
528
+ #if defined(BOOST_UNORDERED_THREAD_SANITIZER)
529
+ /* ThreadSanitizer complains on 1-byte atomic writes combined with
530
+ * 16-byte atomic reads.
531
+ */
532
+
533
+ alignas(16) uint8_t data[16]={
534
+ m[ 0],m[ 1],m[ 2],m[ 3],m[ 4],m[ 5],m[ 6],m[ 7],
535
+ m[ 8],m[ 9],m[10],m[11],m[12],m[13],m[14],m[15]};
536
+ return vld1q_u8(data);
537
+ #else
538
+ return vld1q_u8(reinterpret_cast<const uint8_t*>(m));
539
+ #endif
540
+ }
541
+
542
+ inline static unsigned char reduced_hash(std::size_t hash)
543
+ {
544
+ static constexpr unsigned char table[]={
545
+ 8,9,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
546
+ 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
547
+ 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,
548
+ 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,
549
+ 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,
550
+ 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,
551
+ 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,
552
+ 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
553
+ 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
554
+ 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
555
+ 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
556
+ 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
557
+ 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
558
+ 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
559
+ 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
560
+ 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,
561
+ };
562
+
563
+ return table[(unsigned char)hash];
564
+ }
565
+
566
+ /* Copied from
567
+ * https://github.com/simd-everywhere/simde/blob/master/simde/x86/
568
+ * sse2.h#L3763
569
+ */
570
+
571
+ static inline int simde_mm_movemask_epi8(uint8x16_t a)
572
+ {
573
+ static constexpr uint8_t md[16]={
574
+ 1 << 0, 1 << 1, 1 << 2, 1 << 3,
575
+ 1 << 4, 1 << 5, 1 << 6, 1 << 7,
576
+ 1 << 0, 1 << 1, 1 << 2, 1 << 3,
577
+ 1 << 4, 1 << 5, 1 << 6, 1 << 7,
578
+ };
579
+
580
+ uint8x16_t masked=vandq_u8(vld1q_u8(md),a);
581
+ uint8x8x2_t tmp=vzip_u8(vget_low_u8(masked),vget_high_u8(masked));
582
+ uint16x8_t x=vreinterpretq_u16_u8(vcombine_u8(tmp.val[0],tmp.val[1]));
583
+
584
+ #if defined(__ARM_ARCH_ISA_A64)
585
+ return vaddvq_u16(x);
586
+ #else
587
+ uint64x2_t t64=vpaddlq_u32(vpaddlq_u16(x));
588
+ return int(vgetq_lane_u64(t64,0))+int(vgetq_lane_u64(t64,1));
589
+ #endif
590
+ }
591
+
592
+ inline slot_type& at(std::size_t pos)
593
+ {
594
+ return m[pos];
595
+ }
596
+
597
+ inline const slot_type& at(std::size_t pos)const
598
+ {
599
+ return m[pos];
600
+ }
601
+
602
+ inline slot_type& overflow()
603
+ {
604
+ return at(N);
605
+ }
606
+
607
+ inline const slot_type& overflow()const
608
+ {
609
+ return at(N);
610
+ }
611
+
612
+ alignas(16) slot_type m[16];
613
+ };
614
+
615
+ #else /* non-SIMD */
616
+
617
+ template<template<typename> class IntegralWrapper>
618
+ struct group15
619
+ {
620
+ static constexpr std::size_t N=15;
621
+ static constexpr bool regular_layout=false;
622
+
623
+ struct dummy_group_type
624
+ {
625
+ alignas(16) boost::uint64_t m[2]=
626
+ {0x0000000000004000ull,0x0000000000000000ull};
627
+ };
628
+
629
+ inline void initialize(){m[0]=0;m[1]=0;}
630
+
631
+ inline void set(std::size_t pos,std::size_t hash)
632
+ {
633
+ BOOST_ASSERT(pos<N);
634
+ set_impl(pos,reduced_hash(hash));
635
+ }
636
+
637
+ inline void set_sentinel()
638
+ {
639
+ set_impl(N-1,sentinel_);
640
+ }
641
+
642
+ inline bool is_sentinel(std::size_t pos)const
643
+ {
644
+ BOOST_ASSERT(pos<N);
645
+ return
646
+ pos==N-1&&
647
+ (m[0] & boost::uint64_t(0x4000400040004000ull))==
648
+ boost::uint64_t(0x4000ull)&&
649
+ (m[1] & boost::uint64_t(0x4000400040004000ull))==0;
650
+ }
651
+
652
+ inline void reset(std::size_t pos)
653
+ {
654
+ BOOST_ASSERT(pos<N);
655
+ set_impl(pos,available_);
656
+ }
657
+
658
+ static inline void reset(unsigned char* pc)
659
+ {
660
+ std::size_t pos=reinterpret_cast<uintptr_t>(pc)%sizeof(group15);
661
+ pc-=pos;
662
+ reinterpret_cast<group15*>(pc)->reset(pos);
663
+ }
664
+
665
+ inline int match(std::size_t hash)const
666
+ {
667
+ return match_impl(reduced_hash(hash));
668
+ }
669
+
670
+ inline bool is_not_overflowed(std::size_t hash)const
671
+ {
672
+ return !(reinterpret_cast<const boost::uint16_t*>(m)[hash%8] & 0x8000u);
673
+ }
674
+
675
+ inline void mark_overflow(std::size_t hash)
676
+ {
677
+ reinterpret_cast<boost::uint16_t*>(m)[hash%8]|=0x8000u;
678
+ }
679
+
680
+ static inline bool maybe_caused_overflow(unsigned char* pc)
681
+ {
682
+ std::size_t pos=reinterpret_cast<uintptr_t>(pc)%sizeof(group15);
683
+ group15 *pg=reinterpret_cast<group15*>(pc-pos);
684
+ boost::uint64_t x=((pg->m[0])>>pos)&0x000100010001ull;
685
+ boost::uint32_t y=narrow_cast<boost::uint32_t>(x|(x>>15)|(x>>30));
686
+ return !pg->is_not_overflowed(y);
687
+ };
688
+
689
+ inline int match_available()const
690
+ {
691
+ boost::uint64_t x=~(m[0]|m[1]);
692
+ boost::uint32_t y=static_cast<boost::uint32_t>(x&(x>>32));
693
+ y&=y>>16;
694
+ return y&0x7FFF;
695
+ }
696
+
697
+ inline bool is_occupied(std::size_t pos)const
698
+ {
699
+ BOOST_ASSERT(pos<N);
700
+ boost::uint64_t x=m[0]|m[1];
701
+ return (x&(0x0001000100010001ull<<pos))!=0;
702
+ }
703
+
704
+ inline int match_occupied()const
705
+ {
706
+ boost::uint64_t x=m[0]|m[1];
707
+ boost::uint32_t y=narrow_cast<boost::uint32_t>(x|(x>>32));
708
+ y|=y>>16;
709
+ return y&0x7FFF;
710
+ }
711
+
712
+ private:
713
+ using word_type=IntegralWrapper<uint64_t>;
714
+ BOOST_UNORDERED_STATIC_ASSERT(sizeof(word_type)==8);
715
+
716
+ static constexpr unsigned char available_=0,
717
+ sentinel_=1;
718
+
719
+ inline static unsigned char reduced_hash(std::size_t hash)
720
+ {
721
+ static constexpr unsigned char table[]={
722
+ 8,9,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
723
+ 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
724
+ 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,
725
+ 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,
726
+ 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,
727
+ 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,
728
+ 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,
729
+ 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
730
+ 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
731
+ 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
732
+ 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
733
+ 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
734
+ 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
735
+ 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
736
+ 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
737
+ 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,
738
+ };
739
+
740
+ return table[narrow_cast<unsigned char>(hash)];
741
+ }
742
+
743
+ inline void set_impl(std::size_t pos,std::size_t n)
744
+ {
745
+ BOOST_ASSERT(n<256);
746
+ set_impl(m[0],pos,n&0xFu);
747
+ set_impl(m[1],pos,n>>4);
748
+ }
749
+
750
+ static inline void set_impl(word_type& x,std::size_t pos,std::size_t n)
751
+ {
752
+ static constexpr boost::uint64_t mask[]=
753
+ {
754
+ 0x0000000000000000ull,0x0000000000000001ull,0x0000000000010000ull,
755
+ 0x0000000000010001ull,0x0000000100000000ull,0x0000000100000001ull,
756
+ 0x0000000100010000ull,0x0000000100010001ull,0x0001000000000000ull,
757
+ 0x0001000000000001ull,0x0001000000010000ull,0x0001000000010001ull,
758
+ 0x0001000100000000ull,0x0001000100000001ull,0x0001000100010000ull,
759
+ 0x0001000100010001ull,
760
+ };
761
+ static constexpr boost::uint64_t imask[]=
762
+ {
763
+ 0x0001000100010001ull,0x0001000100010000ull,0x0001000100000001ull,
764
+ 0x0001000100000000ull,0x0001000000010001ull,0x0001000000010000ull,
765
+ 0x0001000000000001ull,0x0001000000000000ull,0x0000000100010001ull,
766
+ 0x0000000100010000ull,0x0000000100000001ull,0x0000000100000000ull,
767
+ 0x0000000000010001ull,0x0000000000010000ull,0x0000000000000001ull,
768
+ 0x0000000000000000ull,
769
+ };
770
+
771
+ BOOST_ASSERT(pos<16&&n<16);
772
+ x|= mask[n]<<pos;
773
+ x&=~(imask[n]<<pos);
774
+ }
775
+
776
+ inline int match_impl(std::size_t n)const
777
+ {
778
+ static constexpr boost::uint64_t mask[]=
779
+ {
780
+ 0x0000000000000000ull,0x000000000000ffffull,0x00000000ffff0000ull,
781
+ 0x00000000ffffffffull,0x0000ffff00000000ull,0x0000ffff0000ffffull,
782
+ 0x0000ffffffff0000ull,0x0000ffffffffffffull,0xffff000000000000ull,
783
+ 0xffff00000000ffffull,0xffff0000ffff0000ull,0xffff0000ffffffffull,
784
+ 0xffffffff00000000ull,0xffffffff0000ffffull,0xffffffffffff0000ull,
785
+ 0xffffffffffffffffull,
786
+ };
787
+
788
+ BOOST_ASSERT(n<256);
789
+ boost::uint64_t x=m[0]^mask[n&0xFu];
790
+ x=~((m[1]^mask[n>>4])|x);
791
+ boost::uint32_t y=static_cast<boost::uint32_t>(x&(x>>32));
792
+ y&=y>>16;
793
+ return y&0x7FFF;
794
+ }
795
+
796
+ alignas(16) word_type m[2];
797
+ };
798
+
799
+ #endif
800
+
801
+ /* foa::table_core uses a size policy to obtain the permissible sizes of the
802
+ * group array (and, by implication, the element array) and to do the
803
+ * hash->group mapping.
804
+ *
805
+ * - size_index(n) returns an unspecified "index" number used in other policy
806
+ * operations.
807
+ * - size(size_index_) returns the number of groups for the given index. It
808
+ * is guaranteed that size(size_index(n)) >= n.
809
+ * - min_size() is the minimum number of groups permissible, i.e.
810
+ * size(size_index(0)).
811
+ * - position(hash,size_index_) maps hash to a position in the range
812
+ * [0,size(size_index_)).
813
+ *
814
+ * The reason we're introducing the intermediate index value for calculating
815
+ * sizes and positions is that it allows us to optimize the implementation of
816
+ * position, which is in the hot path of lookup and insertion operations:
817
+ * pow2_size_policy, the actual size policy used by foa::table, returns 2^n
818
+ * (n>0) as permissible sizes and returns the n most significant bits
819
+ * of the hash value as the position in the group array; using a size index
820
+ * defined as i = (bits in std::size_t) - n, we have an unbeatable
821
+ * implementation of position(hash) as hash>>i.
822
+ * There's a twofold reason for choosing the high bits of hash for positioning:
823
+ * - Multiplication-based mixing tends to yield better entropy in the high
824
+ * part of its result.
825
+ * - group15 reduced-hash values take the *low* bits of hash, and we want
826
+ * these values and positioning to be as uncorrelated as possible.
827
+ */
828
+
829
+ struct pow2_size_policy
830
+ {
831
+ static inline std::size_t size_index(std::size_t n)
832
+ {
833
+ // TODO: min size is 2, see if we can bring it down to 1 without loss
834
+ // of performance
835
+
836
+ return sizeof(std::size_t)*CHAR_BIT-
837
+ (n<=2?1:((std::size_t)(boost::core::bit_width(n-1))));
838
+ }
839
+
840
+ static inline std::size_t size(std::size_t size_index_)
841
+ {
842
+ return std::size_t(1)<<(sizeof(std::size_t)*CHAR_BIT-size_index_);
843
+ }
844
+
845
+ static constexpr std::size_t min_size(){return 2;}
846
+
847
+ static inline std::size_t position(std::size_t hash,std::size_t size_index_)
848
+ {
849
+ return hash>>size_index_;
850
+ }
851
+ };
852
+
853
+ /* size index of a group array for a given *element* capacity */
854
+
855
+ template<typename Group,typename SizePolicy>
856
+ static inline std::size_t size_index_for(std::size_t n)
857
+ {
858
+ /* n/N+1 == ceil((n+1)/N) (extra +1 for the sentinel) */
859
+ return SizePolicy::size_index(n/Group::N+1);
860
+ }
861
+
862
+ /* Quadratic prober over a power-of-two range using triangular numbers.
863
+ * mask in next(mask) must be the range size minus one (and since size is 2^n,
864
+ * mask has exactly its n first bits set to 1).
865
+ */
866
+
867
+ struct pow2_quadratic_prober
868
+ {
869
+ pow2_quadratic_prober(std::size_t pos_):pos{pos_}{}
870
+
871
+ inline std::size_t get()const{return pos;}
872
+ inline std::size_t length()const{return step+1;}
873
+
874
+ /* next returns false when the whole array has been traversed, which ends
875
+ * probing (in practice, full-table probing will only happen with very small
876
+ * arrays).
877
+ */
878
+
879
+ inline bool next(std::size_t mask)
880
+ {
881
+ step+=1;
882
+ pos=(pos+step)&mask;
883
+ return step<=mask;
884
+ }
885
+
886
+ private:
887
+ std::size_t pos,step=0;
888
+ };
889
+
890
+ /* Mixing policies: no_mix is the identity function, and mulx_mix
891
+ * uses the mulx function from <boost/unordered/detail/mulx.hpp>.
892
+ *
893
+ * foa::table_core mixes hash results with mulx_mix unless the hash is marked
894
+ * as avalanching, i.e. of good quality
895
+ * (see <boost/unordered/hash_traits.hpp>).
896
+ */
897
+
898
+ struct no_mix
899
+ {
900
+ template<typename Hash,typename T>
901
+ static inline std::size_t mix(const Hash& h,const T& x)
902
+ {
903
+ return h(x);
904
+ }
905
+ };
906
+
907
+ struct mulx_mix
908
+ {
909
+ template<typename Hash,typename T>
910
+ static inline std::size_t mix(const Hash& h,const T& x)
911
+ {
912
+ return mulx(h(x));
913
+ }
914
+ };
915
+
916
+ /* boost::core::countr_zero has a potentially costly check for
917
+ * the case x==0.
918
+ */
919
+
920
+ inline unsigned int unchecked_countr_zero(int x)
921
+ {
922
+ #if defined(BOOST_MSVC)
923
+ unsigned long r;
924
+ _BitScanForward(&r,(unsigned long)x);
925
+ return (unsigned int)r;
926
+ #else
927
+ BOOST_UNORDERED_ASSUME(x!=0);
928
+ return (unsigned int)boost::core::countr_zero((unsigned int)x);
929
+ #endif
930
+ }
931
+
932
+ /* table_arrays controls allocation, initialization and deallocation of
933
+ * paired arrays of groups and element slots. Only one chunk of memory is
934
+ * allocated to place both arrays: this is not done for efficiency reasons,
935
+ * but in order to be able to properly align the group array without storing
936
+ * additional offset information --the alignment required (16B) is usually
937
+ * greater than alignof(std::max_align_t) and thus not guaranteed by
938
+ * allocators.
939
+ */
940
+
941
+ template<typename Group,std::size_t Size>
942
+ Group* dummy_groups()
943
+ {
944
+ /* Dummy storage initialized as if in an empty container (actually, each
945
+ * of its groups is initialized like a separate empty container).
946
+ * We make table_arrays::groups point to this when capacity()==0, so that
947
+ * we are not allocating any dynamic memory and yet lookup can be implemented
948
+ * without checking for groups==nullptr. This space won't ever be used for
949
+ * insertion as the container's capacity is precisely zero.
950
+ */
951
+
952
+ static constexpr typename Group::dummy_group_type
953
+ storage[Size]={typename Group::dummy_group_type(),};
954
+
955
+ return reinterpret_cast<Group*>(
956
+ const_cast<typename Group::dummy_group_type*>(storage));
957
+ }
958
+
959
+ template<
960
+ typename Ptr,typename Ptr2,
961
+ typename std::enable_if<!std::is_same<Ptr,Ptr2>::value>::type* = nullptr
962
+ >
963
+ Ptr to_pointer(Ptr2 p)
964
+ {
965
+ if(!p){return nullptr;}
966
+ return boost::pointer_traits<Ptr>::pointer_to(*p);
967
+ }
968
+
969
+ template<typename Ptr>
970
+ Ptr to_pointer(Ptr p)
971
+ {
972
+ return p;
973
+ }
974
+
975
+ template<typename Arrays,typename Allocator>
976
+ struct arrays_holder
977
+ {
978
+ arrays_holder(const Arrays& arrays,const Allocator& al):
979
+ arrays_{arrays},al_{al}
980
+ {}
981
+
982
+ /* not defined but VS in pre-C++17 mode needs to see it for RVO */
983
+ arrays_holder(arrays_holder const&);
984
+ arrays_holder& operator=(arrays_holder const&)=delete;
985
+
986
+ ~arrays_holder()
987
+ {
988
+ if(!released_){
989
+ arrays_.delete_(typename Arrays::allocator_type(al_),arrays_);
990
+ }
991
+ }
992
+
993
+ const Arrays& release()
994
+ {
995
+ released_=true;
996
+ return arrays_;
997
+ }
998
+
999
+ private:
1000
+ Arrays arrays_;
1001
+ Allocator al_;
1002
+ bool released_=false;
1003
+ };
1004
+
1005
+ template<typename Value,typename Group,typename SizePolicy,typename Allocator>
1006
+ struct table_arrays
1007
+ {
1008
+ using allocator_type=typename boost::allocator_rebind<Allocator,Value>::type;
1009
+
1010
+ using value_type=Value;
1011
+ using group_type=Group;
1012
+ static constexpr auto N=group_type::N;
1013
+ using size_policy=SizePolicy;
1014
+ using value_type_pointer=
1015
+ typename boost::allocator_pointer<allocator_type>::type;
1016
+ using group_type_pointer=
1017
+ typename boost::pointer_traits<value_type_pointer>::template
1018
+ rebind<group_type>;
1019
+ using group_type_pointer_traits=boost::pointer_traits<group_type_pointer>;
1020
+
1021
+ // For natvis purposes
1022
+ using char_pointer=
1023
+ typename boost::pointer_traits<value_type_pointer>::template
1024
+ rebind<unsigned char>;
1025
+
1026
+ table_arrays(
1027
+ std::size_t gsi,std::size_t gsm,
1028
+ group_type_pointer pg,value_type_pointer pe):
1029
+ groups_size_index{gsi},groups_size_mask{gsm},groups_{pg},elements_{pe}{}
1030
+
1031
+ value_type* elements()const noexcept{return boost::to_address(elements_);}
1032
+ group_type* groups()const noexcept{return boost::to_address(groups_);}
1033
+
1034
+ static void set_arrays(table_arrays& arrays,allocator_type al,std::size_t n)
1035
+ {
1036
+ return set_arrays(
1037
+ arrays,al,n,std::is_same<group_type*,group_type_pointer>{});
1038
+ }
1039
+
1040
+ static void set_arrays(
1041
+ table_arrays& arrays,allocator_type al,std::size_t,
1042
+ std::false_type /* always allocate */)
1043
+ {
1044
+ using storage_traits=boost::allocator_traits<allocator_type>;
1045
+ auto groups_size_index=arrays.groups_size_index;
1046
+ auto groups_size=size_policy::size(groups_size_index);
1047
+
1048
+ auto sal=allocator_type(al);
1049
+ arrays.elements_=storage_traits::allocate(sal,buffer_size(groups_size));
1050
+
1051
+ /* Align arrays.groups to sizeof(group_type). table_iterator critically
1052
+ * depends on such alignment for its increment operation.
1053
+ */
1054
+
1055
+ auto p=reinterpret_cast<unsigned char*>(arrays.elements()+groups_size*N-1);
1056
+ p+=(uintptr_t(sizeof(group_type))-
1057
+ reinterpret_cast<uintptr_t>(p))%sizeof(group_type);
1058
+ arrays.groups_=
1059
+ group_type_pointer_traits::pointer_to(*reinterpret_cast<group_type*>(p));
1060
+
1061
+ initialize_groups(
1062
+ arrays.groups(),groups_size,
1063
+ is_trivially_default_constructible<group_type>{});
1064
+ arrays.groups()[groups_size-1].set_sentinel();
1065
+ }
1066
+
1067
+ static void set_arrays(
1068
+ table_arrays& arrays,allocator_type al,std::size_t n,
1069
+ std::true_type /* optimize for n==0*/)
1070
+ {
1071
+ if(!n){
1072
+ arrays.groups_=dummy_groups<group_type,size_policy::min_size()>();
1073
+ }
1074
+ else{
1075
+ set_arrays(arrays,al,n,std::false_type{});
1076
+ }
1077
+ }
1078
+
1079
+ static table_arrays new_(allocator_type al,std::size_t n)
1080
+ {
1081
+ auto groups_size_index=size_index_for<group_type,size_policy>(n);
1082
+ auto groups_size=size_policy::size(groups_size_index);
1083
+ table_arrays arrays{groups_size_index,groups_size-1,nullptr,nullptr};
1084
+
1085
+ set_arrays(arrays,al,n);
1086
+ return arrays;
1087
+ }
1088
+
1089
+ static void delete_(allocator_type al,table_arrays& arrays)noexcept
1090
+ {
1091
+ using storage_traits=boost::allocator_traits<allocator_type>;
1092
+
1093
+ auto sal=allocator_type(al);
1094
+ if(arrays.elements()){
1095
+ storage_traits::deallocate(
1096
+ sal,arrays.elements_,buffer_size(arrays.groups_size_mask+1));
1097
+ }
1098
+ }
1099
+
1100
+ /* combined space for elements and groups measured in sizeof(value_type)s */
1101
+
1102
+ static std::size_t buffer_size(std::size_t groups_size)
1103
+ {
1104
+ auto buffer_bytes=
1105
+ /* space for elements (we subtract 1 because of the sentinel) */
1106
+ sizeof(value_type)*(groups_size*N-1)+
1107
+ /* space for groups + padding for group alignment */
1108
+ sizeof(group_type)*(groups_size+1)-1;
1109
+
1110
+ /* ceil(buffer_bytes/sizeof(value_type)) */
1111
+ return (buffer_bytes+sizeof(value_type)-1)/sizeof(value_type);
1112
+ }
1113
+
1114
+ static void initialize_groups(
1115
+ group_type* pg,std::size_t size,std::true_type /* memset */)
1116
+ {
1117
+ /* memset faster/not slower than manual, assumes all zeros is group_type's
1118
+ * default layout.
1119
+ * reinterpret_cast: GCC may complain about group_type not being trivially
1120
+ * copy-assignable when we're relying on trivial copy constructibility.
1121
+ */
1122
+
1123
+ std::memset(
1124
+ reinterpret_cast<unsigned char*>(pg),0,sizeof(group_type)*size);
1125
+ }
1126
+
1127
+ static void initialize_groups(
1128
+ group_type* pg,std::size_t size,std::false_type /* manual */)
1129
+ {
1130
+ while(size--!=0)::new (pg++) group_type();
1131
+ }
1132
+
1133
+ std::size_t groups_size_index;
1134
+ std::size_t groups_size_mask;
1135
+ group_type_pointer groups_;
1136
+ value_type_pointer elements_;
1137
+ };
1138
+
1139
+ #if defined(BOOST_UNORDERED_ENABLE_STATS)
1140
+ /* stats support */
1141
+
1142
+ struct table_core_cumulative_stats
1143
+ {
1144
+ concurrent_cumulative_stats<1> insertion;
1145
+ concurrent_cumulative_stats<2> successful_lookup,
1146
+ unsuccessful_lookup;
1147
+ };
1148
+
1149
+ struct table_core_insertion_stats
1150
+ {
1151
+ std::size_t count;
1152
+ sequence_stats_summary probe_length;
1153
+ };
1154
+
1155
+ struct table_core_lookup_stats
1156
+ {
1157
+ std::size_t count;
1158
+ sequence_stats_summary probe_length;
1159
+ sequence_stats_summary num_comparisons;
1160
+ };
1161
+
1162
+ struct table_core_stats
1163
+ {
1164
+ table_core_insertion_stats insertion;
1165
+ table_core_lookup_stats successful_lookup,
1166
+ unsuccessful_lookup;
1167
+ };
1168
+
1169
+ #define BOOST_UNORDERED_ADD_STATS(stats,args) stats.add args
1170
+ #define BOOST_UNORDERED_SWAP_STATS(stats1,stats2) std::swap(stats1,stats2)
1171
+ #define BOOST_UNORDERED_COPY_STATS(stats1,stats2) stats1=stats2
1172
+ #define BOOST_UNORDERED_RESET_STATS_OF(x) x.reset_stats()
1173
+ #define BOOST_UNORDERED_STATS_COUNTER(name) std::size_t name=0
1174
+ #define BOOST_UNORDERED_INCREMENT_STATS_COUNTER(name) ++name
1175
+
1176
+ #else
1177
+
1178
+ #define BOOST_UNORDERED_ADD_STATS(stats,args) ((void)0)
1179
+ #define BOOST_UNORDERED_SWAP_STATS(stats1,stats2) ((void)0)
1180
+ #define BOOST_UNORDERED_COPY_STATS(stats1,stats2) ((void)0)
1181
+ #define BOOST_UNORDERED_RESET_STATS_OF(x) ((void)0)
1182
+ #define BOOST_UNORDERED_STATS_COUNTER(name) ((void)0)
1183
+ #define BOOST_UNORDERED_INCREMENT_STATS_COUNTER(name) ((void)0)
1184
+
1185
+ #endif
1186
+
1187
+ struct if_constexpr_void_else{void operator()()const{}};
1188
+
1189
+ template<bool B,typename F,typename G=if_constexpr_void_else>
1190
+ void if_constexpr(F f,G g={})
1191
+ {
1192
+ std::get<B?0:1>(std::forward_as_tuple(f,g))();
1193
+ }
1194
+
1195
+ template<bool B,typename T,typename std::enable_if<B>::type* =nullptr>
1196
+ void copy_assign_if(T& x,const T& y){x=y;}
1197
+
1198
+ template<bool B,typename T,typename std::enable_if<!B>::type* =nullptr>
1199
+ void copy_assign_if(T&,const T&){}
1200
+
1201
+ template<bool B,typename T,typename std::enable_if<B>::type* =nullptr>
1202
+ void move_assign_if(T& x,T& y){x=std::move(y);}
1203
+
1204
+ template<bool B,typename T,typename std::enable_if<!B>::type* =nullptr>
1205
+ void move_assign_if(T&,T&){}
1206
+
1207
+ template<bool B,typename T,typename std::enable_if<B>::type* =nullptr>
1208
+ void swap_if(T& x,T& y){using std::swap; swap(x,y);}
1209
+
1210
+ template<bool B,typename T,typename std::enable_if<!B>::type* =nullptr>
1211
+ void swap_if(T&,T&){}
1212
+
1213
+ template<typename Allocator>
1214
+ struct is_std_allocator:std::false_type{};
1215
+
1216
+ template<typename T>
1217
+ struct is_std_allocator<std::allocator<T>>:std::true_type{};
1218
+
1219
+ /* std::allocator::construct marked as deprecated */
1220
+ #if defined(_LIBCPP_SUPPRESS_DEPRECATED_PUSH)
1221
+ _LIBCPP_SUPPRESS_DEPRECATED_PUSH
1222
+ #elif defined(_STL_DISABLE_DEPRECATED_WARNING)
1223
+ _STL_DISABLE_DEPRECATED_WARNING
1224
+ #elif defined(_MSC_VER)
1225
+ #pragma warning(push)
1226
+ #pragma warning(disable:4996)
1227
+ #endif
1228
+
1229
+ template<typename Allocator,typename Ptr,typename... Args>
1230
+ struct alloc_has_construct
1231
+ {
1232
+ private:
1233
+ template<typename Allocator2>
1234
+ static decltype(
1235
+ std::declval<Allocator2&>().construct(
1236
+ std::declval<Ptr>(),std::declval<Args&&>()...),
1237
+ std::true_type{}
1238
+ ) check(int);
1239
+
1240
+ template<typename> static std::false_type check(...);
1241
+
1242
+ public:
1243
+ static constexpr bool value=decltype(check<Allocator>(0))::value;
1244
+ };
1245
+
1246
+ #if defined(_LIBCPP_SUPPRESS_DEPRECATED_POP)
1247
+ _LIBCPP_SUPPRESS_DEPRECATED_POP
1248
+ #elif defined(_STL_RESTORE_DEPRECATED_WARNING)
1249
+ _STL_RESTORE_DEPRECATED_WARNING
1250
+ #elif defined(_MSC_VER)
1251
+ #pragma warning(pop)
1252
+ #endif
1253
+
1254
+ /* We expose the hard-coded max load factor so that tests can use it without
1255
+ * needing to pull it from an instantiated class template such as the table
1256
+ * class.
1257
+ */
1258
+ static constexpr float mlf=0.875f;
1259
+
1260
+ template<typename Group,typename Element>
1261
+ struct table_locator
1262
+ {
1263
+ table_locator()=default;
1264
+ table_locator(Group* pg_,unsigned int n_,Element* p_):pg{pg_},n{n_},p{p_}{}
1265
+
1266
+ explicit operator bool()const noexcept{return p!=nullptr;}
1267
+
1268
+ Group *pg=nullptr;
1269
+ unsigned int n=0;
1270
+ Element *p=nullptr;
1271
+ };
1272
+
1273
+ struct try_emplace_args_t{};
1274
+
1275
+ template<typename TypePolicy,typename Allocator,typename... Args>
1276
+ class alloc_cted_insert_type
1277
+ {
1278
+ using emplace_type=typename std::conditional<
1279
+ std::is_constructible<typename TypePolicy::init_type,Args...>::value,
1280
+ typename TypePolicy::init_type,
1281
+ typename TypePolicy::value_type
1282
+ >::type;
1283
+
1284
+ using insert_type=typename std::conditional<
1285
+ std::is_constructible<typename TypePolicy::value_type,emplace_type>::value,
1286
+ emplace_type,typename TypePolicy::element_type
1287
+ >::type;
1288
+
1289
+ using alloc_cted = allocator_constructed<Allocator, insert_type, TypePolicy>;
1290
+ alloc_cted val;
1291
+
1292
+ public:
1293
+ alloc_cted_insert_type(const Allocator& al_,Args&&... args):val{al_,std::forward<Args>(args)...}
1294
+ {
1295
+ }
1296
+
1297
+ insert_type& value(){return val.value();}
1298
+ };
1299
+
1300
+ template<typename TypePolicy,typename Allocator,typename... Args>
1301
+ alloc_cted_insert_type<TypePolicy,Allocator,Args...>
1302
+ alloc_make_insert_type(const Allocator& al,Args&&... args)
1303
+ {
1304
+ return {al,std::forward<Args>(args)...};
1305
+ }
1306
+
1307
+ template <typename TypePolicy, typename Allocator, typename KFwdRef,
1308
+ typename = void>
1309
+ class alloc_cted_or_fwded_key_type
1310
+ {
1311
+ using key_type = typename TypePolicy::key_type;
1312
+ allocator_constructed<Allocator, key_type, TypePolicy> val;
1313
+
1314
+ public:
1315
+ alloc_cted_or_fwded_key_type(const Allocator& al_, KFwdRef k)
1316
+ : val(al_, std::forward<KFwdRef>(k))
1317
+ {
1318
+ }
1319
+
1320
+ key_type&& move_or_fwd() { return std::move(val.value()); }
1321
+ };
1322
+
1323
+ template <typename TypePolicy, typename Allocator, typename KFwdRef>
1324
+ class alloc_cted_or_fwded_key_type<TypePolicy, Allocator, KFwdRef,
1325
+ typename std::enable_if<
1326
+ is_similar<KFwdRef, typename TypePolicy::key_type>::value>::type>
1327
+ {
1328
+ // This specialization acts as a forwarding-reference wrapper
1329
+ BOOST_UNORDERED_STATIC_ASSERT(std::is_reference<KFwdRef>::value);
1330
+ KFwdRef ref;
1331
+
1332
+ public:
1333
+ alloc_cted_or_fwded_key_type(const Allocator&, KFwdRef k)
1334
+ : ref(std::forward<KFwdRef>(k))
1335
+ {
1336
+ }
1337
+
1338
+ KFwdRef move_or_fwd() { return std::forward<KFwdRef>(ref); }
1339
+ };
1340
+
1341
+ template <typename Container>
1342
+ using is_map =
1343
+ std::integral_constant<bool, !std::is_same<typename Container::key_type,
1344
+ typename Container::value_type>::value>;
1345
+
1346
+ template <typename Container, typename K>
1347
+ using is_emplace_kv_able = std::integral_constant<bool,
1348
+ is_map<Container>::value &&
1349
+ (is_similar<K, typename Container::key_type>::value ||
1350
+ is_complete_and_move_constructible<typename Container::key_type>::value)>;
1351
+
1352
+ /* table_core. The TypePolicy template parameter is used to generate
1353
+ * instantiations suitable for either maps or sets, and introduces non-standard
1354
+ * init_type and element_type:
1355
+ *
1356
+ * - TypePolicy::key_type and TypePolicy::value_type have the obvious
1357
+ * meaning. TypePolicy::mapped_type is expected to be provided as well
1358
+ * when key_type and value_type are not the same.
1359
+ *
1360
+ * - TypePolicy::init_type is the type implicitly converted to when
1361
+ * writing x.insert({...}). For maps, this is std::pair<Key,T> rather
1362
+ * than std::pair<const Key,T> so that, for instance, x.insert({"hello",0})
1363
+ * produces a cheaply moveable std::string&& ("hello") rather than
1364
+ * a copyable const std::string&&. foa::table::insert is extended to accept
1365
+ * both init_type and value_type references.
1366
+ *
1367
+ * - TypePolicy::construct and TypePolicy::destroy are used for the
1368
+ * construction and destruction of the internal types: value_type,
1369
+ * init_type, element_type, and key_type.
1370
+ *
1371
+ * - TypePolicy::move is used to provide move semantics for the internal
1372
+ * types used by the container during rehashing and emplace. These types
1373
+ * are init_type, value_type and emplace_type. During insertion, a
1374
+ * stack-local type will be created based on the constructibility of the
1375
+ * value_type and the supplied arguments. TypePolicy::move is used here
1376
+ * for transfer of ownership. Similarly, TypePolicy::move is also used
1377
+ * during rehashing when elements are moved to the new table.
1378
+ *
1379
+ * - TypePolicy::extract returns a const reference to the key part of
1380
+ * a value of type value_type, init_type, element_type or
1381
+ * decltype(TypePolicy::move(...)).
1382
+ *
1383
+ * - TypePolicy::element_type is the type that table_arrays uses when
1384
+ * allocating buckets, which allows us to have flat and node container.
1385
+ * For flat containers, element_type is value_type. For node
1386
+ * containers, it is a strong typedef to value_type*.
1387
+ *
1388
+ * - TypePolicy::value_from returns a mutable reference to value_type from
1389
+ * a given element_type. This is used when elements of the table themselves
1390
+ * need to be moved, such as during move construction/assignment when
1391
+ * allocators are unequal and there is no propagation. For all other cases,
1392
+ * the element_type itself is moved.
1393
+ */
1394
+
1395
+ #include <boost/unordered/detail/foa/ignore_wshadow.hpp>
1396
+
1397
+ #if defined(BOOST_MSVC)
1398
+ #pragma warning(push)
1399
+ #pragma warning(disable:4714) /* marked as __forceinline not inlined */
1400
+ #endif
1401
+
1402
+ #if BOOST_WORKAROUND(BOOST_MSVC,<=1900)
1403
+ /* VS2015 marks as unreachable generic catch clauses around non-throwing
1404
+ * code.
1405
+ */
1406
+ #pragma warning(push)
1407
+ #pragma warning(disable:4702)
1408
+ #endif
1409
+
1410
+ template<
1411
+ typename TypePolicy,typename Group,template<typename...> class Arrays,
1412
+ typename SizeControl,typename Hash,typename Pred,typename Allocator
1413
+ >
1414
+ class
1415
+
1416
+ #if defined(_MSC_VER)&&_MSC_FULL_VER>=190023918
1417
+ __declspec(empty_bases) /* activate EBO with multiple inheritance */
1418
+ #endif
1419
+
1420
+ table_core:empty_value<Hash,0>,empty_value<Pred,1>,empty_value<Allocator,2>
1421
+ {
1422
+ public:
1423
+ using type_policy=TypePolicy;
1424
+ using group_type=Group;
1425
+ static constexpr auto N=group_type::N;
1426
+ using size_policy=pow2_size_policy;
1427
+ using prober=pow2_quadratic_prober;
1428
+ using mix_policy=typename std::conditional<
1429
+ hash_is_avalanching<Hash>::value,
1430
+ no_mix,
1431
+ mulx_mix
1432
+ >::type;
1433
+ using alloc_traits=boost::allocator_traits<Allocator>;
1434
+ using element_type=typename type_policy::element_type;
1435
+ using arrays_type=Arrays<element_type,group_type,size_policy,Allocator>;
1436
+ using size_ctrl_type=SizeControl;
1437
+ static constexpr auto uses_fancy_pointers=!std::is_same<
1438
+ typename alloc_traits::pointer,
1439
+ typename alloc_traits::value_type*
1440
+ >::value;
1441
+
1442
+ using key_type=typename type_policy::key_type;
1443
+ using init_type=typename type_policy::init_type;
1444
+ using value_type=typename type_policy::value_type;
1445
+ using hasher=Hash;
1446
+ using key_equal=Pred;
1447
+ using allocator_type=Allocator;
1448
+ using pointer=value_type*;
1449
+ using const_pointer=const value_type*;
1450
+ using reference=value_type&;
1451
+ using const_reference=const value_type&;
1452
+ using size_type=std::size_t;
1453
+ using difference_type=std::ptrdiff_t;
1454
+ using locator=table_locator<group_type,element_type>;
1455
+ using arrays_holder_type=arrays_holder<arrays_type,Allocator>;
1456
+
1457
+ #if defined(BOOST_UNORDERED_ENABLE_STATS)
1458
+ using cumulative_stats=table_core_cumulative_stats;
1459
+ using stats=table_core_stats;
1460
+ #endif
1461
+
1462
+ #if defined(BOOST_GCC)
1463
+ #pragma GCC diagnostic push
1464
+ #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
1465
+ #endif
1466
+
1467
+ table_core(
1468
+ std::size_t n=default_bucket_count,const Hash& h_=Hash(),
1469
+ const Pred& pred_=Pred(),const Allocator& al_=Allocator()):
1470
+ hash_base{empty_init,h_},pred_base{empty_init,pred_},
1471
+ allocator_base{empty_init,al_},arrays(new_arrays(n)),
1472
+ size_ctrl{initial_max_load(),0}
1473
+ {}
1474
+
1475
+ #if defined(BOOST_GCC)
1476
+ #pragma GCC diagnostic pop
1477
+ #endif
1478
+
1479
+ /* genericize on an ArraysFn so that we can do things like delay an
1480
+ * allocation for the group_access data required by cfoa after the move
1481
+ * constructors of Hash, Pred have been invoked
1482
+ */
1483
+ template<typename ArraysFn>
1484
+ table_core(
1485
+ Hash&& h_,Pred&& pred_,Allocator&& al_,
1486
+ ArraysFn arrays_fn,const size_ctrl_type& size_ctrl_):
1487
+ hash_base{empty_init,std::move(h_)},
1488
+ pred_base{empty_init,std::move(pred_)},
1489
+ allocator_base{empty_init,std::move(al_)},
1490
+ arrays(arrays_fn()),size_ctrl(size_ctrl_)
1491
+ {}
1492
+
1493
+ table_core(const table_core& x):
1494
+ table_core{x,alloc_traits::select_on_container_copy_construction(x.al())}{}
1495
+
1496
+ template<typename ArraysFn>
1497
+ table_core(table_core&& x,arrays_holder_type&& ah,ArraysFn arrays_fn):
1498
+ table_core(
1499
+ std::move(x.h()),std::move(x.pred()),std::move(x.al()),
1500
+ arrays_fn,x.size_ctrl)
1501
+ {
1502
+ x.arrays=ah.release();
1503
+ x.size_ctrl.ml=x.initial_max_load();
1504
+ x.size_ctrl.size=0;
1505
+ BOOST_UNORDERED_SWAP_STATS(cstats,x.cstats);
1506
+ }
1507
+
1508
+ table_core(table_core&& x)
1509
+ noexcept(
1510
+ std::is_nothrow_move_constructible<Hash>::value&&
1511
+ std::is_nothrow_move_constructible<Pred>::value&&
1512
+ std::is_nothrow_move_constructible<Allocator>::value&&
1513
+ !uses_fancy_pointers):
1514
+ table_core{
1515
+ std::move(x),x.make_empty_arrays(),[&x]{return x.arrays;}}
1516
+ {}
1517
+
1518
+ table_core(const table_core& x,const Allocator& al_):
1519
+ table_core{std::size_t(std::ceil(float(x.size())/mlf)),x.h(),x.pred(),al_}
1520
+ {
1521
+ copy_elements_from(x);
1522
+ }
1523
+
1524
+ table_core(table_core&& x,const Allocator& al_):
1525
+ table_core{std::move(x.h()),std::move(x.pred()),al_}
1526
+ {
1527
+ if(al()==x.al()){
1528
+ using std::swap;
1529
+ swap(arrays,x.arrays);
1530
+ swap(size_ctrl,x.size_ctrl);
1531
+ BOOST_UNORDERED_SWAP_STATS(cstats,x.cstats);
1532
+ }
1533
+ else{
1534
+ reserve(x.size());
1535
+ clear_on_exit c{x};
1536
+ (void)c; /* unused var warning */
1537
+ BOOST_UNORDERED_RESET_STATS_OF(x);
1538
+
1539
+ /* This works because subsequent x.clear() does not depend on the
1540
+ * elements' values.
1541
+ */
1542
+ x.for_all_elements([this](element_type* p){
1543
+ unchecked_insert(type_policy::move(type_policy::value_from(*p)));
1544
+ });
1545
+ }
1546
+ }
1547
+
1548
+ ~table_core()noexcept
1549
+ {
1550
+ for_all_elements([this](element_type* p){
1551
+ destroy_element(p);
1552
+ });
1553
+ delete_arrays(arrays);
1554
+ }
1555
+
1556
+ std::size_t initial_max_load()const
1557
+ {
1558
+ static constexpr std::size_t small_capacity=2*N-1;
1559
+
1560
+ auto capacity_=capacity();
1561
+ if(capacity_<=small_capacity){
1562
+ return capacity_; /* we allow 100% usage */
1563
+ }
1564
+ else{
1565
+ return (std::size_t)(mlf*(float)(capacity_));
1566
+ }
1567
+ }
1568
+
1569
+ arrays_holder_type make_empty_arrays()const
1570
+ {
1571
+ return make_arrays(0);
1572
+ }
1573
+
1574
+ table_core& operator=(const table_core& x)
1575
+ {
1576
+ BOOST_UNORDERED_STATIC_ASSERT_HASH_PRED(Hash, Pred)
1577
+
1578
+ static constexpr auto pocca=
1579
+ alloc_traits::propagate_on_container_copy_assignment::value;
1580
+
1581
+ if(this!=std::addressof(x)){
1582
+ /* If copy construction here winds up throwing, the container is still
1583
+ * left intact so we perform these operations first.
1584
+ */
1585
+ hasher tmp_h=x.h();
1586
+ key_equal tmp_p=x.pred();
1587
+
1588
+ clear();
1589
+
1590
+ /* Because we've asserted at compile-time that Hash and Pred are nothrow
1591
+ * swappable, we can safely mutate our source container and maintain
1592
+ * consistency between the Hash, Pred compatibility.
1593
+ */
1594
+ using std::swap;
1595
+ swap(h(),tmp_h);
1596
+ swap(pred(),tmp_p);
1597
+
1598
+ if_constexpr<pocca>([&,this]{
1599
+ if(al()!=x.al()){
1600
+ auto ah=x.make_arrays(std::size_t(std::ceil(float(x.size())/mlf)));
1601
+ delete_arrays(arrays);
1602
+ arrays=ah.release();
1603
+ size_ctrl.ml=initial_max_load();
1604
+ }
1605
+ copy_assign_if<pocca>(al(),x.al());
1606
+ });
1607
+ /* noshrink: favor memory reuse over tightness */
1608
+ noshrink_reserve(x.size());
1609
+ copy_elements_from(x);
1610
+ }
1611
+ return *this;
1612
+ }
1613
+
1614
+ #if defined(BOOST_MSVC)
1615
+ #pragma warning(push)
1616
+ #pragma warning(disable:4127) /* conditional expression is constant */
1617
+ #endif
1618
+
1619
+ table_core& operator=(table_core&& x)
1620
+ noexcept(
1621
+ (alloc_traits::propagate_on_container_move_assignment::value||
1622
+ alloc_traits::is_always_equal::value)&&!uses_fancy_pointers)
1623
+ {
1624
+ BOOST_UNORDERED_STATIC_ASSERT_HASH_PRED(Hash, Pred)
1625
+
1626
+ static constexpr auto pocma=
1627
+ alloc_traits::propagate_on_container_move_assignment::value;
1628
+
1629
+ if(this!=std::addressof(x)){
1630
+ /* Given ambiguity in implementation strategies briefly discussed here:
1631
+ * https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#2227
1632
+ *
1633
+ * we opt into requiring nothrow swappability and eschew the move
1634
+ * operations associated with Hash, Pred.
1635
+ *
1636
+ * To this end, we ensure that the user never has to consider the
1637
+ * moved-from state of their Hash, Pred objects
1638
+ */
1639
+
1640
+ using std::swap;
1641
+
1642
+ clear();
1643
+
1644
+ if(pocma||al()==x.al()){
1645
+ auto ah=x.make_empty_arrays();
1646
+ swap(h(),x.h());
1647
+ swap(pred(),x.pred());
1648
+ delete_arrays(arrays);
1649
+ move_assign_if<pocma>(al(),x.al());
1650
+ arrays=x.arrays;
1651
+ size_ctrl.ml=std::size_t(x.size_ctrl.ml);
1652
+ size_ctrl.size=std::size_t(x.size_ctrl.size);
1653
+ BOOST_UNORDERED_COPY_STATS(cstats,x.cstats);
1654
+ x.arrays=ah.release();
1655
+ x.size_ctrl.ml=x.initial_max_load();
1656
+ x.size_ctrl.size=0;
1657
+ BOOST_UNORDERED_RESET_STATS_OF(x);
1658
+ }
1659
+ else{
1660
+ swap(h(),x.h());
1661
+ swap(pred(),x.pred());
1662
+
1663
+ /* noshrink: favor memory reuse over tightness */
1664
+ noshrink_reserve(x.size());
1665
+ clear_on_exit c{x};
1666
+ (void)c; /* unused var warning */
1667
+ BOOST_UNORDERED_RESET_STATS_OF(x);
1668
+
1669
+ /* This works because subsequent x.clear() does not depend on the
1670
+ * elements' values.
1671
+ */
1672
+ x.for_all_elements([this](element_type* p){
1673
+ unchecked_insert(type_policy::move(type_policy::value_from(*p)));
1674
+ });
1675
+ }
1676
+ }
1677
+ return *this;
1678
+ }
1679
+
1680
+ #if defined(BOOST_MSVC)
1681
+ #pragma warning(pop) /* C4127 */
1682
+ #endif
1683
+
1684
+ allocator_type get_allocator()const noexcept{return al();}
1685
+
1686
+ bool empty()const noexcept{return size()==0;}
1687
+ std::size_t size()const noexcept{return size_ctrl.size;}
1688
+ std::size_t max_size()const noexcept{return SIZE_MAX;}
1689
+
1690
+ BOOST_FORCEINLINE
1691
+ void erase(group_type* pg,unsigned int pos,element_type* p)noexcept
1692
+ {
1693
+ destroy_element(p);
1694
+ recover_slot(pg,pos);
1695
+ }
1696
+
1697
+ BOOST_FORCEINLINE
1698
+ void erase(unsigned char* pc,element_type* p)noexcept
1699
+ {
1700
+ destroy_element(p);
1701
+ recover_slot(pc);
1702
+ }
1703
+
1704
+ template<typename Key>
1705
+ BOOST_FORCEINLINE locator find(const Key& x)const
1706
+ {
1707
+ auto hash=hash_for(x);
1708
+ return find(x,position_for(hash),hash);
1709
+ }
1710
+
1711
+ #if defined(BOOST_MSVC)
1712
+ /* warning: forcing value to bool 'true' or 'false' in bool(pred()...) */
1713
+ #pragma warning(push)
1714
+ #pragma warning(disable:4800)
1715
+ #endif
1716
+
1717
+ template<typename Key>
1718
+ BOOST_FORCEINLINE locator find(
1719
+ const Key& x,std::size_t pos0,std::size_t hash)const
1720
+ {
1721
+ BOOST_UNORDERED_STATS_COUNTER(num_cmps);
1722
+ prober pb(pos0);
1723
+ do{
1724
+ auto pos=pb.get();
1725
+ auto pg=arrays.groups()+pos;
1726
+ auto mask=pg->match(hash);
1727
+ if(mask){
1728
+ auto elements=arrays.elements();
1729
+ BOOST_UNORDERED_ASSUME(elements!=nullptr);
1730
+ auto p=elements+pos*N;
1731
+ BOOST_UNORDERED_PREFETCH_ELEMENTS(p,N);
1732
+ do{
1733
+ BOOST_UNORDERED_INCREMENT_STATS_COUNTER(num_cmps);
1734
+ auto n=unchecked_countr_zero(mask);
1735
+ if(BOOST_LIKELY(bool(pred()(x,key_from(p[n]))))){
1736
+ BOOST_UNORDERED_ADD_STATS(
1737
+ cstats.successful_lookup,(pb.length(),num_cmps));
1738
+ return {pg,n,p+n};
1739
+ }
1740
+ mask&=mask-1;
1741
+ }while(mask);
1742
+ }
1743
+ if(BOOST_LIKELY(pg->is_not_overflowed(hash))){
1744
+ BOOST_UNORDERED_ADD_STATS(
1745
+ cstats.unsuccessful_lookup,(pb.length(),num_cmps));
1746
+ return {};
1747
+ }
1748
+ }
1749
+ while(BOOST_LIKELY(pb.next(arrays.groups_size_mask)));
1750
+ BOOST_UNORDERED_ADD_STATS(
1751
+ cstats.unsuccessful_lookup,(pb.length(),num_cmps));
1752
+ return {};
1753
+ }
1754
+
1755
+ #if defined(BOOST_MSVC)
1756
+ #pragma warning(pop) /* C4800 */
1757
+ #endif
1758
+
1759
+ void swap(table_core& x)
1760
+ noexcept(
1761
+ alloc_traits::propagate_on_container_swap::value||
1762
+ alloc_traits::is_always_equal::value)
1763
+ {
1764
+ BOOST_UNORDERED_STATIC_ASSERT_HASH_PRED(Hash, Pred)
1765
+
1766
+ static constexpr auto pocs=
1767
+ alloc_traits::propagate_on_container_swap::value;
1768
+
1769
+ using std::swap;
1770
+ if_constexpr<pocs>([&,this]{
1771
+ swap_if<pocs>(al(),x.al());
1772
+ },
1773
+ [&,this]{ /* else */
1774
+ BOOST_ASSERT(al()==x.al());
1775
+ (void)this; /* makes sure captured this is used */
1776
+ });
1777
+
1778
+ swap(h(),x.h());
1779
+ swap(pred(),x.pred());
1780
+ swap(arrays,x.arrays);
1781
+ swap(size_ctrl,x.size_ctrl);
1782
+ }
1783
+
1784
+ void clear()noexcept
1785
+ {
1786
+ auto p=arrays.elements();
1787
+ if(p){
1788
+ for(auto pg=arrays.groups(),last=pg+arrays.groups_size_mask+1;
1789
+ pg!=last;++pg,p+=N){
1790
+ auto mask=match_really_occupied(pg,last);
1791
+ while(mask){
1792
+ destroy_element(p+unchecked_countr_zero(mask));
1793
+ mask&=mask-1;
1794
+ }
1795
+ /* we wipe the entire metadata to reset the overflow byte as well */
1796
+ pg->initialize();
1797
+ }
1798
+ arrays.groups()[arrays.groups_size_mask].set_sentinel();
1799
+ size_ctrl.ml=initial_max_load();
1800
+ size_ctrl.size=0;
1801
+ }
1802
+ }
1803
+
1804
+ hasher hash_function()const{return h();}
1805
+ key_equal key_eq()const{return pred();}
1806
+
1807
+ std::size_t capacity()const noexcept
1808
+ {
1809
+ return arrays.elements()?(arrays.groups_size_mask+1)*N-1:0;
1810
+ }
1811
+
1812
+ float load_factor()const noexcept
1813
+ {
1814
+ if(capacity()==0)return 0;
1815
+ else return float(size())/float(capacity());
1816
+ }
1817
+
1818
+ float max_load_factor()const noexcept{return mlf;}
1819
+
1820
+ std::size_t max_load()const noexcept{return size_ctrl.ml;}
1821
+
1822
+ void rehash(std::size_t n)
1823
+ {
1824
+ auto m=size_t(std::ceil(float(size())/mlf));
1825
+ if(m>n)n=m;
1826
+ if(n)n=capacity_for(n); /* exact resulting capacity */
1827
+
1828
+ if(n!=capacity())unchecked_rehash(n);
1829
+ }
1830
+
1831
+ void reserve(std::size_t n)
1832
+ {
1833
+ rehash(std::size_t(std::ceil(float(n)/mlf)));
1834
+ }
1835
+
1836
+ #if defined(BOOST_UNORDERED_ENABLE_STATS)
1837
+ stats get_stats()const
1838
+ {
1839
+ auto insertion=cstats.insertion.get_summary();
1840
+ auto successful_lookup=cstats.successful_lookup.get_summary();
1841
+ auto unsuccessful_lookup=cstats.unsuccessful_lookup.get_summary();
1842
+ return{
1843
+ {
1844
+ insertion.count,
1845
+ insertion.sequence_summary[0]
1846
+ },
1847
+ {
1848
+ successful_lookup.count,
1849
+ successful_lookup.sequence_summary[0],
1850
+ successful_lookup.sequence_summary[1]
1851
+ },
1852
+ {
1853
+ unsuccessful_lookup.count,
1854
+ unsuccessful_lookup.sequence_summary[0],
1855
+ unsuccessful_lookup.sequence_summary[1]
1856
+ },
1857
+ };
1858
+ }
1859
+
1860
+ void reset_stats()noexcept
1861
+ {
1862
+ cstats.insertion.reset();
1863
+ cstats.successful_lookup.reset();
1864
+ cstats.unsuccessful_lookup.reset();
1865
+ }
1866
+ #endif
1867
+
1868
+ friend bool operator==(const table_core& x,const table_core& y)
1869
+ {
1870
+ return
1871
+ x.size()==y.size()&&
1872
+ x.for_all_elements_while([&](element_type* p){
1873
+ auto loc=y.find(key_from(*p));
1874
+ return loc&&
1875
+ const_cast<const value_type&>(type_policy::value_from(*p))==
1876
+ const_cast<const value_type&>(type_policy::value_from(*loc.p));
1877
+ });
1878
+ }
1879
+
1880
+ friend bool operator!=(const table_core& x,const table_core& y)
1881
+ {
1882
+ return !(x==y);
1883
+ }
1884
+
1885
+ struct clear_on_exit
1886
+ {
1887
+ ~clear_on_exit(){x.clear();}
1888
+ table_core& x;
1889
+ };
1890
+
1891
+ Hash& h(){return hash_base::get();}
1892
+ const Hash& h()const{return hash_base::get();}
1893
+ Pred& pred(){return pred_base::get();}
1894
+ const Pred& pred()const{return pred_base::get();}
1895
+ Allocator& al(){return allocator_base::get();}
1896
+ const Allocator& al()const{return allocator_base::get();}
1897
+
1898
+ template<typename... Args>
1899
+ void construct_element(element_type* p,Args&&... args)
1900
+ {
1901
+ type_policy::construct(al(),p,std::forward<Args>(args)...);
1902
+ }
1903
+
1904
+ template<typename... Args>
1905
+ void construct_element(element_type* p,try_emplace_args_t,Args&&... args)
1906
+ {
1907
+ construct_element_from_try_emplace_args(
1908
+ p,
1909
+ std::integral_constant<bool,std::is_same<key_type,value_type>::value>{},
1910
+ std::forward<Args>(args)...);
1911
+ }
1912
+
1913
+ void destroy_element(element_type* p)noexcept
1914
+ {
1915
+ type_policy::destroy(al(),p);
1916
+ }
1917
+
1918
+ struct destroy_element_on_exit
1919
+ {
1920
+ ~destroy_element_on_exit(){this_->destroy_element(p);}
1921
+ table_core *this_;
1922
+ element_type *p;
1923
+ };
1924
+
1925
+ template<typename T>
1926
+ static inline auto key_from(const T& x)
1927
+ ->decltype(type_policy::extract(x))
1928
+ {
1929
+ return type_policy::extract(x);
1930
+ }
1931
+
1932
+ template<typename Key,typename... Args>
1933
+ static inline const Key& key_from(
1934
+ try_emplace_args_t,const Key& x,const Args&...)
1935
+ {
1936
+ return x;
1937
+ }
1938
+
1939
+ template<typename Key>
1940
+ inline std::size_t hash_for(const Key& x)const
1941
+ {
1942
+ return mix_policy::mix(h(),x);
1943
+ }
1944
+
1945
+ inline std::size_t position_for(std::size_t hash)const
1946
+ {
1947
+ return position_for(hash,arrays);
1948
+ }
1949
+
1950
+ static inline std::size_t position_for(
1951
+ std::size_t hash,const arrays_type& arrays_)
1952
+ {
1953
+ return size_policy::position(hash,arrays_.groups_size_index);
1954
+ }
1955
+
1956
+ static inline int match_really_occupied(group_type* pg,group_type* last)
1957
+ {
1958
+ /* excluding the sentinel */
1959
+ return pg->match_occupied()&~(int(pg==last-1)<<(N-1));
1960
+ }
1961
+
1962
+ template<typename... Args>
1963
+ locator unchecked_emplace_at(
1964
+ std::size_t pos0,std::size_t hash,Args&&... args)
1965
+ {
1966
+ auto res=nosize_unchecked_emplace_at(
1967
+ arrays,pos0,hash,std::forward<Args>(args)...);
1968
+ ++size_ctrl.size;
1969
+ return res;
1970
+ }
1971
+
1972
+ BOOST_NOINLINE void unchecked_rehash_for_growth()
1973
+ {
1974
+ auto new_arrays_=new_arrays_for_growth();
1975
+ unchecked_rehash(new_arrays_);
1976
+ }
1977
+
1978
+ template<typename... Args>
1979
+ BOOST_NOINLINE locator
1980
+ unchecked_emplace_with_rehash(std::size_t hash,Args&&... args)
1981
+ {
1982
+ auto new_arrays_=new_arrays_for_growth();
1983
+ locator it;
1984
+ BOOST_TRY{
1985
+ /* strong exception guarantee -> try insertion before rehash */
1986
+ it=nosize_unchecked_emplace_at(
1987
+ new_arrays_,position_for(hash,new_arrays_),
1988
+ hash,std::forward<Args>(args)...);
1989
+ }
1990
+ BOOST_CATCH(...){
1991
+ delete_arrays(new_arrays_);
1992
+ BOOST_RETHROW
1993
+ }
1994
+ BOOST_CATCH_END
1995
+
1996
+ /* new_arrays_ lifetime taken care of by unchecked_rehash */
1997
+ unchecked_rehash(new_arrays_);
1998
+ ++size_ctrl.size;
1999
+ return it;
2000
+ }
2001
+
2002
+ void noshrink_reserve(std::size_t n)
2003
+ {
2004
+ /* used only on assignment after element clearance */
2005
+ BOOST_ASSERT(empty());
2006
+
2007
+ if(n){
2008
+ n=std::size_t(std::ceil(float(n)/mlf)); /* elements -> slots */
2009
+ n=capacity_for(n); /* exact resulting capacity */
2010
+
2011
+ if(n>capacity()){
2012
+ auto new_arrays_=new_arrays(n);
2013
+ delete_arrays(arrays);
2014
+ arrays=new_arrays_;
2015
+ size_ctrl.ml=initial_max_load();
2016
+ }
2017
+ }
2018
+ }
2019
+
2020
+ template<typename F>
2021
+ void for_all_elements(F f)const
2022
+ {
2023
+ for_all_elements(arrays,f);
2024
+ }
2025
+
2026
+ template<typename F>
2027
+ static auto for_all_elements(const arrays_type& arrays_,F f)
2028
+ ->decltype(f(nullptr),void())
2029
+ {
2030
+ for_all_elements_while(arrays_,[&](element_type* p){f(p);return true;});
2031
+ }
2032
+
2033
+ template<typename F>
2034
+ static auto for_all_elements(const arrays_type& arrays_,F f)
2035
+ ->decltype(f(nullptr,0,nullptr),void())
2036
+ {
2037
+ for_all_elements_while(
2038
+ arrays_,[&](group_type* pg,unsigned int n,element_type* p)
2039
+ {f(pg,n,p);return true;});
2040
+ }
2041
+
2042
+ template<typename F>
2043
+ bool for_all_elements_while(F f)const
2044
+ {
2045
+ return for_all_elements_while(arrays,f);
2046
+ }
2047
+
2048
+ template<typename F>
2049
+ static auto for_all_elements_while(const arrays_type& arrays_,F f)
2050
+ ->decltype(f(nullptr),bool())
2051
+ {
2052
+ return for_all_elements_while(
2053
+ arrays_,[&](group_type*,unsigned int,element_type* p){return f(p);});
2054
+ }
2055
+
2056
+ template<typename F>
2057
+ static auto for_all_elements_while(const arrays_type& arrays_,F f)
2058
+ ->decltype(f(nullptr,0,nullptr),bool())
2059
+ {
2060
+ auto p=arrays_.elements();
2061
+ if(p){
2062
+ for(auto pg=arrays_.groups(),last=pg+arrays_.groups_size_mask+1;
2063
+ pg!=last;++pg,p+=N){
2064
+ auto mask=match_really_occupied(pg,last);
2065
+ while(mask){
2066
+ auto n=unchecked_countr_zero(mask);
2067
+ if(!f(pg,n,p+n))return false;
2068
+ mask&=mask-1;
2069
+ }
2070
+ }
2071
+ }
2072
+ return true;
2073
+ }
2074
+
2075
+ arrays_type arrays;
2076
+ size_ctrl_type size_ctrl;
2077
+
2078
+ #if defined(BOOST_UNORDERED_ENABLE_STATS)
2079
+ mutable cumulative_stats cstats;
2080
+ #endif
2081
+
2082
+ private:
2083
+ template<
2084
+ typename,typename,template<typename...> class,
2085
+ typename,typename,typename,typename
2086
+ >
2087
+ friend class table_core;
2088
+
2089
+ using hash_base=empty_value<Hash,0>;
2090
+ using pred_base=empty_value<Pred,1>;
2091
+ using allocator_base=empty_value<Allocator,2>;
2092
+
2093
+ #if defined(BOOST_GCC)
2094
+ #pragma GCC diagnostic push
2095
+ #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
2096
+ #endif
2097
+
2098
+ /* used by allocator-extended move ctor */
2099
+
2100
+ table_core(Hash&& h_,Pred&& pred_,const Allocator& al_):
2101
+ hash_base{empty_init,std::move(h_)},
2102
+ pred_base{empty_init,std::move(pred_)},
2103
+ allocator_base{empty_init,al_},arrays(new_arrays(0)),
2104
+ size_ctrl{initial_max_load(),0}
2105
+ {
2106
+ }
2107
+
2108
+ #if defined(BOOST_GCC)
2109
+ #pragma GCC diagnostic pop
2110
+ #endif
2111
+
2112
+ arrays_type new_arrays(std::size_t n)const
2113
+ {
2114
+ return arrays_type::new_(typename arrays_type::allocator_type(al()),n);
2115
+ }
2116
+
2117
+ arrays_type new_arrays_for_growth()const
2118
+ {
2119
+ /* Due to the anti-drift mechanism (see recover_slot), the new arrays may
2120
+ * be of the same size as the old arrays; in the limit, erasing one
2121
+ * element at full load and then inserting could bring us back to the same
2122
+ * capacity after a costly rehash. To avoid this, we jump to the next
2123
+ * capacity level when the number of erased elements is <= 10% of total
2124
+ * elements at full load, which is implemented by requesting additional
2125
+ * F*size elements, with F = P * 10% / (1 - P * 10%), where P is the
2126
+ * probability of an element having caused overflow; P has been measured as
2127
+ * ~0.162 under ideal conditions, yielding F ~ 0.0165 ~ 1/61.
2128
+ */
2129
+ return new_arrays(std::size_t(
2130
+ std::ceil(static_cast<float>(size()+size()/61+1)/mlf)));
2131
+ }
2132
+
2133
+ void delete_arrays(arrays_type& arrays_)noexcept
2134
+ {
2135
+ arrays_type::delete_(typename arrays_type::allocator_type(al()),arrays_);
2136
+ }
2137
+
2138
+ arrays_holder_type make_arrays(std::size_t n)const
2139
+ {
2140
+ return {new_arrays(n),al()};
2141
+ }
2142
+
2143
+ template<typename Key,typename... Args>
2144
+ void construct_element_from_try_emplace_args(
2145
+ element_type* p,std::false_type,Key&& x,Args&&... args)
2146
+ {
2147
+ type_policy::construct(
2148
+ this->al(),p,
2149
+ std::piecewise_construct,
2150
+ std::forward_as_tuple(std::forward<Key>(x)),
2151
+ std::forward_as_tuple(std::forward<Args>(args)...));
2152
+ }
2153
+
2154
+ /* This overload allows boost::unordered_flat_set to internally use
2155
+ * try_emplace to implement heterogeneous insert (P2363).
2156
+ */
2157
+
2158
+ template<typename Key>
2159
+ void construct_element_from_try_emplace_args(
2160
+ element_type* p,std::true_type,Key&& x)
2161
+ {
2162
+ type_policy::construct(this->al(),p,std::forward<Key>(x));
2163
+ }
2164
+
2165
+ void copy_elements_from(const table_core& x)
2166
+ {
2167
+ BOOST_ASSERT(empty());
2168
+ BOOST_ASSERT(this!=std::addressof(x));
2169
+ if(arrays.groups_size_mask==x.arrays.groups_size_mask){
2170
+ fast_copy_elements_from(x);
2171
+ }
2172
+ else{
2173
+ x.for_all_elements([this](const element_type* p){
2174
+ unchecked_insert(*p);
2175
+ });
2176
+ }
2177
+ }
2178
+
2179
+ void fast_copy_elements_from(const table_core& x)
2180
+ {
2181
+ if(arrays.elements()&&x.arrays.elements()){
2182
+ copy_elements_array_from(x);
2183
+ copy_groups_array_from(x);
2184
+ size_ctrl.ml=std::size_t(x.size_ctrl.ml);
2185
+ size_ctrl.size=std::size_t(x.size_ctrl.size);
2186
+ }
2187
+ }
2188
+
2189
+ void copy_elements_array_from(const table_core& x)
2190
+ {
2191
+ copy_elements_array_from(
2192
+ x,
2193
+ std::integral_constant<
2194
+ bool,
2195
+ is_trivially_copy_constructible<element_type>::value&&(
2196
+ is_std_allocator<Allocator>::value||
2197
+ !alloc_has_construct<Allocator,value_type*,const value_type&>::value)
2198
+ >{}
2199
+ );
2200
+ }
2201
+
2202
+ void copy_elements_array_from(
2203
+ const table_core& x,std::true_type /* -> memcpy */)
2204
+ {
2205
+ /* reinterpret_cast: GCC may complain about value_type not being trivially
2206
+ * copy-assignable when we're relying on trivial copy constructibility.
2207
+ */
2208
+ std::memcpy(
2209
+ reinterpret_cast<unsigned char*>(arrays.elements()),
2210
+ reinterpret_cast<unsigned char*>(x.arrays.elements()),
2211
+ x.capacity()*sizeof(value_type));
2212
+ }
2213
+
2214
+ void copy_elements_array_from(
2215
+ const table_core& x,std::false_type /* -> manual */)
2216
+ {
2217
+ std::size_t num_constructed=0;
2218
+ BOOST_TRY{
2219
+ x.for_all_elements([&,this](const element_type* p){
2220
+ construct_element(arrays.elements()+(p-x.arrays.elements()),*p);
2221
+ ++num_constructed;
2222
+ });
2223
+ }
2224
+ BOOST_CATCH(...){
2225
+ if(num_constructed){
2226
+ x.for_all_elements_while([&,this](const element_type* p){
2227
+ destroy_element(arrays.elements()+(p-x.arrays.elements()));
2228
+ return --num_constructed!=0;
2229
+ });
2230
+ }
2231
+ BOOST_RETHROW
2232
+ }
2233
+ BOOST_CATCH_END
2234
+ }
2235
+
2236
+ void copy_groups_array_from(const table_core& x) {
2237
+ copy_groups_array_from(x,is_trivially_copy_assignable<group_type>{});
2238
+ }
2239
+
2240
+ void copy_groups_array_from(
2241
+ const table_core& x, std::true_type /* -> memcpy */)
2242
+ {
2243
+ std::memcpy(
2244
+ arrays.groups(),x.arrays.groups(),
2245
+ (arrays.groups_size_mask+1)*sizeof(group_type));
2246
+ }
2247
+
2248
+ void copy_groups_array_from(
2249
+ const table_core& x, std::false_type /* -> manual */)
2250
+ {
2251
+ auto pg=arrays.groups();
2252
+ auto xpg=x.arrays.groups();
2253
+ for(std::size_t i=0;i<arrays.groups_size_mask+1;++i){
2254
+ pg[i]=xpg[i];
2255
+ }
2256
+ }
2257
+
2258
+ void recover_slot(unsigned char* pc)
2259
+ {
2260
+ /* If this slot potentially caused overflow, we decrease the maximum load
2261
+ * so that average probe length won't increase unboundedly in repeated
2262
+ * insert/erase cycles (drift).
2263
+ */
2264
+ size_ctrl.ml-=group_type::maybe_caused_overflow(pc);
2265
+ group_type::reset(pc);
2266
+ --size_ctrl.size;
2267
+ }
2268
+
2269
+ void recover_slot(group_type* pg,std::size_t pos)
2270
+ {
2271
+ recover_slot(reinterpret_cast<unsigned char*>(pg)+pos);
2272
+ }
2273
+
2274
+ static std::size_t capacity_for(std::size_t n)
2275
+ {
2276
+ return size_policy::size(size_index_for<group_type,size_policy>(n))*N-1;
2277
+ }
2278
+
2279
+ BOOST_NOINLINE void unchecked_rehash(std::size_t n)
2280
+ {
2281
+ auto new_arrays_=new_arrays(n);
2282
+ unchecked_rehash(new_arrays_);
2283
+ }
2284
+
2285
+ BOOST_NOINLINE void unchecked_rehash(arrays_type& new_arrays_)
2286
+ {
2287
+ std::size_t num_destroyed=0;
2288
+ BOOST_TRY{
2289
+ for_all_elements([&,this](element_type* p){
2290
+ nosize_transfer_element(p,new_arrays_,num_destroyed);
2291
+ });
2292
+ }
2293
+ BOOST_CATCH(...){
2294
+ if(num_destroyed){
2295
+ for_all_elements_while(
2296
+ [&,this](group_type* pg,unsigned int n,element_type*){
2297
+ recover_slot(pg,n);
2298
+ return --num_destroyed!=0;
2299
+ }
2300
+ );
2301
+ }
2302
+ for_all_elements(new_arrays_,[this](element_type* p){
2303
+ destroy_element(p);
2304
+ });
2305
+ delete_arrays(new_arrays_);
2306
+ BOOST_RETHROW
2307
+ }
2308
+ BOOST_CATCH_END
2309
+
2310
+ /* either all moved and destroyed or all copied */
2311
+ BOOST_ASSERT(num_destroyed==size()||num_destroyed==0);
2312
+ if(num_destroyed!=size()){
2313
+ for_all_elements([this](element_type* p){
2314
+ destroy_element(p);
2315
+ });
2316
+ }
2317
+ delete_arrays(arrays);
2318
+ arrays=new_arrays_;
2319
+ size_ctrl.ml=initial_max_load();
2320
+ }
2321
+
2322
+ template<typename Value>
2323
+ void unchecked_insert(Value&& x)
2324
+ {
2325
+ auto hash=hash_for(key_from(x));
2326
+ unchecked_emplace_at(position_for(hash),hash,std::forward<Value>(x));
2327
+ }
2328
+
2329
+ void nosize_transfer_element(
2330
+ element_type* p,const arrays_type& arrays_,std::size_t& num_destroyed)
2331
+ {
2332
+ nosize_transfer_element(
2333
+ p,hash_for(key_from(*p)),arrays_,num_destroyed,
2334
+ std::integral_constant< /* std::move_if_noexcept semantics */
2335
+ bool,
2336
+ std::is_nothrow_move_constructible<init_type>::value||
2337
+ !std::is_same<element_type,value_type>::value||
2338
+ !std::is_copy_constructible<element_type>::value>{});
2339
+ }
2340
+
2341
+ void nosize_transfer_element(
2342
+ element_type* p,std::size_t hash,const arrays_type& arrays_,
2343
+ std::size_t& num_destroyed,std::true_type /* ->move */)
2344
+ {
2345
+ /* Destroy p even if an an exception is thrown in the middle of move
2346
+ * construction, which could leave the source half-moved.
2347
+ */
2348
+ ++num_destroyed;
2349
+ destroy_element_on_exit d{this,p};
2350
+ (void)d; /* unused var warning */
2351
+ nosize_unchecked_emplace_at(
2352
+ arrays_,position_for(hash,arrays_),hash,type_policy::move(*p));
2353
+ }
2354
+
2355
+ void nosize_transfer_element(
2356
+ element_type* p,std::size_t hash,const arrays_type& arrays_,
2357
+ std::size_t& /*num_destroyed*/,std::false_type /* ->copy */)
2358
+ {
2359
+ nosize_unchecked_emplace_at(
2360
+ arrays_,position_for(hash,arrays_),hash,
2361
+ const_cast<const element_type&>(*p));
2362
+ }
2363
+
2364
+ template<typename... Args>
2365
+ locator nosize_unchecked_emplace_at(
2366
+ const arrays_type& arrays_,std::size_t pos0,std::size_t hash,
2367
+ Args&&... args)
2368
+ {
2369
+ for(prober pb(pos0);;pb.next(arrays_.groups_size_mask)){
2370
+ auto pos=pb.get();
2371
+ auto pg=arrays_.groups()+pos;
2372
+ auto mask=pg->match_available();
2373
+ if(BOOST_LIKELY(mask!=0)){
2374
+ auto n=unchecked_countr_zero(mask);
2375
+ auto p=arrays_.elements()+pos*N+n;
2376
+ construct_element(p,std::forward<Args>(args)...);
2377
+ pg->set(n,hash);
2378
+ BOOST_UNORDERED_ADD_STATS(cstats.insertion,(pb.length()));
2379
+ return {pg,n,p};
2380
+ }
2381
+ else pg->mark_overflow(hash);
2382
+ }
2383
+ }
2384
+ };
2385
+
2386
+ #if BOOST_WORKAROUND(BOOST_MSVC,<=1900)
2387
+ #pragma warning(pop) /* C4702 */
2388
+ #endif
2389
+
2390
+ #if defined(BOOST_MSVC)
2391
+ #pragma warning(pop) /* C4714 */
2392
+ #endif
2393
+
2394
+ #include <boost/unordered/detail/foa/restore_wshadow.hpp>
2395
+
2396
+ } /* namespace foa */
2397
+ } /* namespace detail */
2398
+ } /* namespace unordered */
2399
+ } /* namespace boost */
2400
+
2401
+ #undef BOOST_UNORDERED_STATIC_ASSERT_HASH_PRED
2402
+ #undef BOOST_UNORDERED_HAS_FEATURE
2403
+ #undef BOOST_UNORDERED_HAS_BUILTIN
2404
+ #endif