passenger 5.3.7 → 6.0.26
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.
- checksums.yaml +5 -5
- data/CHANGELOG +651 -19
- data/CONTRIBUTING.md +1 -1
- data/CONTRIBUTORS +26 -0
- data/LICENSE +1 -1
- data/README.md +5 -12
- data/Rakefile +15 -4
- data/bin/passenger +2 -2
- data/bin/passenger-config +2 -2
- data/bin/passenger-install-apache2-module +7 -2
- data/bin/passenger-install-nginx-module +25 -8
- data/bin/passenger-memory-stats +67 -14
- data/bin/passenger-status +46 -6
- data/build/agent.rb +5 -3
- data/build/apache2.rb +3 -3
- data/build/basics.rb +12 -6
- data/build/common_library.rb +8 -7
- data/build/cxx_tests.rb +20 -9
- data/build/integration_tests.rb +10 -9
- data/build/misc.rb +5 -3
- data/build/nginx.rb +2 -2
- data/build/node_tests.rb +2 -2
- data/build/oxt_tests.rb +2 -2
- data/build/packaging.rb +6 -4
- data/build/ruby_extension.rb +2 -2
- data/build/ruby_tests.rb +3 -3
- data/build/schema_printer.rb +2 -2
- data/build/support/cplusplus.rb +2 -2
- data/build/support/cxx_dependency_map.rb +329 -59
- data/build/support/general.rb +2 -2
- data/build/support/vendor/cxx_hinted_parser/LICENSE.md +1 -1
- data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +2 -2
- data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb +2 -2
- data/build/support/vendor/cxxcodebuilder/LICENSE.md +1 -1
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +57 -4
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +2 -2
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder.rb +2 -2
- data/build/test_basics.rb +29 -15
- data/dev/copy_boost_headers +142 -79
- data/dev/index_cxx_dependencies.rb +1 -1
- data/dev/nginx_version_sha256 +72 -0
- data/dev/websocketpp.patch +39 -0
- data/doc/DesignAspects/LimitedGemDependencies.md +39 -0
- data/doc/DesignAspects/NoGemActivationDuringRubyLoaderInitialization.md +27 -0
- data/doc/templates/markdown.html.erb +2 -6
- data/package.json +20 -18
- data/passenger.gemspec +17 -3
- data/resources/mime.types +1 -0
- data/resources/release.txt +1 -0
- data/resources/templates/apache2/deployment_example.txt.erb +1 -1
- data/resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb +1 -0
- data/resources/templates/error_renderer/with_details/dist/bundle.js +2 -33
- data/resources/templates/error_renderer/with_details/dist/styles.css +2 -2
- data/resources/templates/error_renderer/with_details/src/GetHelpView.jsx +1 -1
- data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.css +0 -0
- data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.js +0 -0
- data/resources/templates/error_renderer/with_details/src/bootstrap/config.json +0 -0
- data/resources/templates/error_renderer/with_details/src/index.html.template +0 -2
- data/resources/templates/error_renderer/with_details/webpack.config.js +13 -16
- data/resources/templates/error_renderer/without_details/dist/bundle.js +0 -1
- data/resources/templates/error_renderer/without_details/dist/styles.css +1 -1
- data/resources/templates/error_renderer/without_details/webpack.config.js +13 -16
- data/resources/templates/nginx/deployment_example.txt.erb +1 -1
- data/resources/templates/standalone/global.erb +4 -0
- data/resources/templates/standalone/http.erb +3 -0
- data/resources/templates/standalone/rails_asset_pipeline.erb +1 -1
- data/resources/templates/standalone/server.erb +4 -0
- data/src/agent/AgentMain.cpp +7 -9
- data/src/agent/Core/AdminPanelConnector.h +5 -6
- data/src/agent/Core/ApiServer.h +38 -3
- data/src/agent/Core/ApplicationPool/AbstractSession.h +2 -2
- data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +2 -2
- data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +2 -2
- data/src/agent/Core/ApplicationPool/Common.h +2 -2
- data/src/agent/Core/ApplicationPool/Context.h +7 -4
- data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +14 -6
- data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +11 -2
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +12 -3
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +86 -6
- data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +42 -12
- data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +15 -4
- data/src/agent/Core/ApplicationPool/Group/Verification.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group.h +19 -8
- data/src/agent/Core/ApplicationPool/Implementation.cpp +2 -3
- data/src/agent/Core/ApplicationPool/Options.h +36 -13
- data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +7 -2
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +8 -3
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +7 -2
- data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +7 -2
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +7 -2
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +7 -2
- data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +8 -3
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +18 -4
- data/src/agent/Core/ApplicationPool/Pool.h +12 -6
- data/src/agent/Core/ApplicationPool/Process.cpp +2 -2
- data/src/agent/Core/ApplicationPool/Process.h +27 -8
- data/src/agent/Core/ApplicationPool/Session.h +8 -3
- data/src/agent/Core/ApplicationPool/Socket.h +2 -2
- data/src/agent/Core/ApplicationPool/TestSession.h +2 -2
- data/src/agent/Core/Config.h +39 -8
- data/src/agent/Core/ConfigChange.cpp +2 -2
- data/src/agent/Core/ConfigChange.h +2 -2
- data/src/agent/Core/Controller/AppResponse.h +2 -3
- data/src/agent/Core/Controller/BufferBody.cpp +2 -2
- data/src/agent/Core/Controller/CheckoutSession.cpp +50 -16
- data/src/agent/Core/Controller/Client.h +2 -2
- data/src/agent/Core/Controller/Config.cpp +2 -2
- data/src/agent/Core/Controller/Config.h +55 -13
- data/src/agent/Core/Controller/ForwardResponse.cpp +15 -2
- data/src/agent/Core/Controller/Hooks.cpp +2 -2
- data/src/agent/Core/Controller/Implementation.cpp +2 -2
- data/src/agent/Core/Controller/InitRequest.cpp +21 -10
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +5 -2
- data/src/agent/Core/Controller/InternalUtils.cpp +34 -8
- data/src/agent/Core/Controller/Miscellaneous.cpp +2 -2
- data/src/agent/Core/Controller/Request.h +2 -2
- data/src/agent/Core/Controller/SendRequest.cpp +4 -4
- data/src/agent/Core/Controller/StateInspection.cpp +2 -2
- data/src/agent/Core/Controller/TurboCaching.h +2 -2
- data/src/agent/Core/Controller.h +8 -3
- data/src/agent/Core/CoreMain.cpp +78 -54
- data/src/agent/Core/OptionParser.h +23 -2
- data/src/agent/Core/ResponseCache.h +5 -4
- data/src/agent/Core/SecurityUpdateChecker.h +7 -7
- data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +22 -2
- data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +2 -2
- data/src/agent/Core/SpawningKit/Config.h +26 -2
- data/src/agent/Core/SpawningKit/Context.h +3 -2
- data/src/agent/Core/SpawningKit/DirectSpawner.h +2 -2
- data/src/agent/Core/SpawningKit/DummySpawner.h +2 -2
- data/src/agent/Core/SpawningKit/ErrorRenderer.h +7 -2
- data/src/agent/Core/SpawningKit/Exceptions.h +2 -2
- data/src/agent/Core/SpawningKit/Factory.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +3 -3
- data/src/agent/Core/SpawningKit/Handshake/Perform.h +8 -7
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +8 -56
- data/src/agent/Core/SpawningKit/Handshake/Session.h +5 -2
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +12 -6
- data/src/agent/Core/SpawningKit/Journey.h +2 -2
- data/src/agent/Core/SpawningKit/PipeWatcher.h +21 -6
- data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +2 -2
- data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +2 -2
- data/src/agent/Core/SpawningKit/Result.h +2 -2
- data/src/agent/Core/SpawningKit/SmartSpawner.h +9 -5
- data/src/agent/Core/SpawningKit/Spawner.h +29 -7
- data/src/agent/Core/SpawningKit/UserSwitchingRules.h +17 -10
- data/src/agent/Core/TelemetryCollector.h +4 -3
- data/src/agent/ExecHelper/ExecHelperMain.cpp +12 -14
- data/src/agent/FileReadHelper/FileReadHelperMain.cpp +195 -0
- data/src/agent/MainFunctions.h +38 -0
- data/src/agent/Shared/ApiAccountUtils.h +2 -2
- data/src/agent/Shared/ApiServerUtils.h +6 -5
- data/src/agent/Shared/ApplicationPoolApiKey.h +4 -2
- data/src/agent/Shared/Fundamentals/AbortHandler.cpp +90 -11
- data/src/agent/Shared/Fundamentals/AbortHandler.h +4 -2
- data/src/agent/Shared/Fundamentals/Initialization.cpp +12 -6
- data/src/agent/Shared/Fundamentals/Initialization.h +5 -5
- data/src/agent/Shared/Fundamentals/Utils.cpp +2 -2
- data/src/agent/Shared/Fundamentals/Utils.h +2 -2
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +36 -12
- data/src/agent/SystemMetrics/SystemMetricsMain.cpp +3 -2
- data/src/agent/TempDirToucher/TempDirToucherMain.cpp +10 -6
- data/src/agent/Watchdog/AgentWatcher.cpp +2 -2
- data/src/agent/Watchdog/ApiServer.h +3 -3
- data/src/agent/Watchdog/Config.h +22 -3
- data/src/agent/Watchdog/CoreWatcher.cpp +2 -2
- data/src/agent/Watchdog/InstanceDirToucher.cpp +3 -3
- data/src/agent/Watchdog/WatchdogMain.cpp +23 -22
- data/src/apache2_module/Bucket.cpp +2 -2
- data/src/apache2_module/Bucket.h +2 -2
- data/src/apache2_module/CBindings.cpp +2 -2
- data/src/apache2_module/Config.cpp +3 -3
- data/src/apache2_module/Config.h +2 -2
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +68 -28
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +32 -2
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +2 -2
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +121 -3
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +2 -2
- data/src/apache2_module/ConfigGeneral/Common.h +2 -2
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +7 -5
- data/src/apache2_module/ConfigGeneral/SetterFuncs.h +2 -2
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +25 -2
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +2 -2
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +14 -2
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +2 -2
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +65 -2
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +37 -2
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +2 -2
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +84 -4
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +5 -2
- data/src/apache2_module/DirectoryMapper.h +16 -5
- data/src/apache2_module/Hooks.cpp +51 -7
- data/src/apache2_module/Hooks.h +2 -2
- data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +31 -2
- data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +57 -21
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +4 -3
- data/src/apache2_module/Utils.h +2 -2
- data/src/apache2_module/mod_passenger.c +2 -2
- data/src/cxx_supportlib/Algorithms/Hasher.cpp +2 -2
- data/src/cxx_supportlib/Algorithms/Hasher.h +2 -2
- data/src/cxx_supportlib/Algorithms/MovingAverage.h +2 -8
- data/src/cxx_supportlib/AppLocalConfigFileUtils.h +148 -0
- data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +14 -3
- data/src/cxx_supportlib/AppTypeDetector/CBindings.h +4 -2
- data/src/cxx_supportlib/AppTypeDetector/Detector.h +40 -6
- data/src/cxx_supportlib/BackgroundEventLoop.cpp +7 -3
- data/src/cxx_supportlib/BackgroundEventLoop.h +2 -2
- data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +2 -2
- data/src/cxx_supportlib/ConfigKit/Common.h +3 -3
- data/src/cxx_supportlib/ConfigKit/ConfigKit.h +2 -2
- data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +2 -2
- data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +2 -2
- data/src/cxx_supportlib/ConfigKit/Schema.h +3 -3
- data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +2 -2
- data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
- data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -2
- data/src/cxx_supportlib/ConfigKit/TableTranslator.h +2 -2
- data/src/cxx_supportlib/ConfigKit/Translator.h +3 -3
- data/src/cxx_supportlib/ConfigKit/Utils.h +2 -2
- data/src/cxx_supportlib/Constants.h +7 -5
- data/src/cxx_supportlib/Constants.h.cxxcodebuilder +2 -2
- data/src/cxx_supportlib/DataStructures/HashMap.h +2 -2
- data/src/cxx_supportlib/DataStructures/HashedStaticString.h +4 -2
- data/src/cxx_supportlib/DataStructures/LString.cpp +2 -2
- data/src/cxx_supportlib/DataStructures/LString.h +6 -2
- data/src/cxx_supportlib/DataStructures/StringKeyTable.h +3 -3
- data/src/cxx_supportlib/DataStructures/StringMap.h +2 -3
- data/src/cxx_supportlib/Exceptions.cpp +2 -2
- data/src/cxx_supportlib/Exceptions.h +2 -2
- data/src/cxx_supportlib/FileDescriptor.h +10 -2
- data/src/cxx_supportlib/FileTools/FileManip.cpp +12 -3
- data/src/cxx_supportlib/FileTools/FileManip.h +18 -2
- data/src/cxx_supportlib/FileTools/LargeFiles.h +2 -2
- data/src/cxx_supportlib/FileTools/PathManip.cpp +13 -4
- data/src/cxx_supportlib/FileTools/PathManip.h +2 -2
- data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +2 -2
- data/src/cxx_supportlib/FileTools/PathManipCBindings.h +2 -2
- data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +2 -2
- data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +2 -2
- data/src/cxx_supportlib/Hooks.h +3 -2
- data/src/cxx_supportlib/IOTools/BufferedIO.h +3 -3
- data/src/cxx_supportlib/IOTools/IOUtils.cpp +8 -12
- data/src/cxx_supportlib/IOTools/IOUtils.h +2 -2
- data/src/cxx_supportlib/IOTools/MessageIO.h +3 -3
- data/src/cxx_supportlib/IOTools/MessageSerialization.h +2 -2
- data/src/cxx_supportlib/InstanceDirectory.h +2 -2
- data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +5 -5
- data/src/cxx_supportlib/JsonTools/Autocast.h +2 -2
- data/src/cxx_supportlib/JsonTools/CBindings.cpp +2 -4
- data/src/cxx_supportlib/JsonTools/CBindings.h +2 -2
- data/src/cxx_supportlib/JsonTools/JsonUtils.h +6 -6
- data/src/cxx_supportlib/LoggingKit/Assert.h +2 -2
- data/src/cxx_supportlib/LoggingKit/Config.h +4 -2
- data/src/cxx_supportlib/LoggingKit/Context.h +18 -23
- data/src/cxx_supportlib/LoggingKit/Forward.h +2 -4
- data/src/cxx_supportlib/LoggingKit/Implementation.cpp +53 -83
- data/src/cxx_supportlib/LoggingKit/Logging.h +2 -2
- data/src/cxx_supportlib/LoggingKit/LoggingKit.h +2 -2
- data/src/cxx_supportlib/LveLoggingDecorator.h +2 -2
- data/src/cxx_supportlib/MemoryKit/mbuf.cpp +14 -6
- data/src/cxx_supportlib/MemoryKit/mbuf.h +3 -3
- data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
- data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
- data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +2 -2
- data/src/cxx_supportlib/ProcessManagement/Ruby.h +2 -2
- data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +2 -2
- data/src/cxx_supportlib/ProcessManagement/Spawn.h +2 -2
- data/src/cxx_supportlib/ProcessManagement/Utils.cpp +3 -3
- data/src/cxx_supportlib/ProcessManagement/Utils.h +2 -2
- data/src/cxx_supportlib/RandomGenerator.h +2 -2
- data/src/cxx_supportlib/ResourceLocator.h +3 -3
- data/src/cxx_supportlib/SafeLibev.h +6 -6
- data/src/cxx_supportlib/SecurityKit/Crypto.cpp +5 -96
- data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -10
- data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +2 -2
- data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +3 -3
- data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
- data/src/cxx_supportlib/ServerKit/Client.h +2 -2
- data/src/cxx_supportlib/ServerKit/ClientRef.h +2 -2
- data/src/cxx_supportlib/ServerKit/Config.h +2 -2
- data/src/cxx_supportlib/ServerKit/Context.h +8 -2
- data/src/cxx_supportlib/ServerKit/CookieUtils.h +2 -2
- data/src/cxx_supportlib/ServerKit/Errors.h +5 -4
- data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +2 -2
- data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +2 -2
- data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +2 -2
- data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
- data/src/cxx_supportlib/ServerKit/HeaderTable.h +2 -2
- data/src/cxx_supportlib/ServerKit/Hooks.h +4 -4
- data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +3 -3
- data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpClient.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +103 -71
- data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +6 -3
- data/src/cxx_supportlib/ServerKit/HttpRequest.h +4 -4
- data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpServer.h +20 -14
- data/src/cxx_supportlib/ServerKit/Implementation.cpp +2 -2
- data/src/cxx_supportlib/ServerKit/Server.h +2 -8
- data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
- data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
- data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
- data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
- data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
- data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
- data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
- data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
- data/src/cxx_supportlib/StaticString.h +7 -3
- data/src/cxx_supportlib/StrIntTools/DateParsing.h +3 -3
- data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +14 -5
- data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +7 -2
- data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +2 -2
- data/src/cxx_supportlib/StrIntTools/StringScanning.h +2 -2
- data/src/cxx_supportlib/StrIntTools/Template.h +2 -2
- data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +59 -4
- data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +3 -3
- data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +4 -4
- data/src/cxx_supportlib/SystemTools/SystemTime.cpp +2 -2
- data/src/cxx_supportlib/SystemTools/SystemTime.h +2 -2
- data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +16 -16
- data/src/cxx_supportlib/SystemTools/UserDatabase.h +8 -12
- data/src/cxx_supportlib/Utils/AnsiColorConstants.h +13 -11
- data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +4 -2
- data/src/cxx_supportlib/Utils/BlockingQueue.h +2 -2
- data/src/cxx_supportlib/Utils/CachedFileStat.cpp +2 -2
- data/src/cxx_supportlib/Utils/CachedFileStat.h +2 -2
- data/src/cxx_supportlib/Utils/CachedFileStat.hpp +2 -2
- data/src/cxx_supportlib/Utils/ClassUtils.h +2 -2
- data/src/cxx_supportlib/Utils/Curl.h +2 -2
- data/src/cxx_supportlib/Utils/FastStringStream.h +2 -2
- data/src/cxx_supportlib/Utils/FileChangeChecker.h +2 -2
- data/src/cxx_supportlib/Utils/HttpConstants.h +3 -3
- data/src/cxx_supportlib/Utils/IniFile.h +2 -2
- data/src/cxx_supportlib/Utils/MessagePassing.h +2 -2
- data/src/cxx_supportlib/Utils/OptionParsing.h +2 -2
- data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +2 -2
- data/src/cxx_supportlib/Utils/ScopeGuard.h +2 -2
- data/src/cxx_supportlib/Utils/SpeedMeter.h +2 -5
- data/src/cxx_supportlib/Utils/Timer.h +2 -2
- data/src/cxx_supportlib/Utils/VariantMap.h +2 -2
- data/src/cxx_supportlib/Utils.cpp +3 -3
- data/src/cxx_supportlib/Utils.h +2 -2
- data/src/cxx_supportlib/WatchdogLauncher.cpp +2 -2
- data/src/cxx_supportlib/WatchdogLauncher.h +3 -5
- data/src/cxx_supportlib/WebSocketCommandReverseServer.h +22 -21
- data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +2 -2
- data/src/cxx_supportlib/WrapperRegistry/CBindings.h +2 -2
- data/src/cxx_supportlib/WrapperRegistry/Entry.h +2 -2
- data/src/cxx_supportlib/WrapperRegistry/Registry.h +2 -2
- data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/spin_lock_darwin.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/spin_lock_gcc_x86.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/spin_lock_portable.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/spin_lock_pthreads.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -1
- data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +6 -2
- data/src/cxx_supportlib/oxt/implementation.cpp +13 -3
- data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
- data/src/cxx_supportlib/oxt/macros.hpp +1 -1
- data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
- data/src/cxx_supportlib/oxt/system_calls.cpp +22 -15
- data/src/cxx_supportlib/oxt/system_calls.hpp +1 -1
- data/src/cxx_supportlib/oxt/thread.hpp +3 -3
- data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/compare.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format_all.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_iterator.hpp +27 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +338 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +824 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +353 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/append.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +154 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +115 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +223 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +119 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +283 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +834 -107
- data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +651 -329
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +206 -124
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +826 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +691 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +657 -331
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +628 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +376 -171
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +413 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +325 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +427 -248
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +1239 -517
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +22 -121
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +16 -81
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +746 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +494 -252
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +13 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +251 -132
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +624 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +598 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +615 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +235 -182
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +618 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +961 -370
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +320 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +55 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +61 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +55 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +247 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +237 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +159 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/co_composed.hpp +1323 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +525 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +50 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +468 -181
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect_pipe.hpp +85 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +77 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +154 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +721 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +2 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +24 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +265 -370
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +300 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +2 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_message.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_payload.hpp +222 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_payload_handler.hpp +81 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +254 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +700 -722
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +40 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +3 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +74 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +65 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +76 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +75 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +36 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +36 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/exception.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +154 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +3 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +5 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +31 -145
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +27 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +24 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +452 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +605 -85
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +21 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +28 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +21 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +47 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +20 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +47 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_descriptor_service.ipp +207 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_file_service.ipp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.ipp +916 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_socket_service_base.ipp +251 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +21 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +49 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_serial_port_service.ipp +170 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +23 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +32 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +39 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +110 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +25 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +74 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +185 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +828 -355
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +19 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +209 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +25 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +8 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +34 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +10 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +17 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_defer.hpp +209 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_dispatch.hpp +195 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiate_post.hpp +209 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +197 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_op.hpp +192 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_service.hpp +689 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +191 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_op.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_file_service.hpp +263 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_null_buffers_op.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_operation.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_service.hpp +321 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_accept_op.hpp +282 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_connect_op.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recv_op.hpp +207 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +208 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +194 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_send_op.hpp +193 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_sendto_op.hpp +196 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service.hpp +631 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service_base.hpp +665 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_wait_op.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +89 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +37 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +83 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +63 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +30 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +15 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_serial_port_service.hpp +251 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +60 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +237 -55
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +49 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +139 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +59 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +81 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +81 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +65 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +86 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +81 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +198 -91
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +319 -75
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +49 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +29 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +8 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +45 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +26 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +35 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +35 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +24 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +37 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +36 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_task.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +59 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +90 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +71 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +36 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +164 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +18 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +33 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +132 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +85 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +13 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +85 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +33 -129
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +136 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +30 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +280 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +1935 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1362 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1082 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +193 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +192 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +118 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1004 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +186 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +755 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +330 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +753 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +3 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +66 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +239 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +134 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +538 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +516 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +516 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +154 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_error.hpp +88 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +303 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +138 -177
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/concurrent_channel.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +295 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro_traits.hpp +230 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +202 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +149 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +681 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/has_signature.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +625 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +199 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +183 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/channel_error.ipp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1224 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +790 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +257 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +216 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +457 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +226 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +191 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +113 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/file_base.hpp +168 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +278 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +1198 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +160 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +154 -181
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancellation_signal.ipp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +459 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +281 -438
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.ipp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +146 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +149 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +7 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +72 -141
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +220 -132
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +172 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +529 -342
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +202 -280
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +1840 -672
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +289 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1183 -318
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +15 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +26 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +115 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +198 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +74 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +303 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +186 -417
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +446 -340
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +171 -263
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +699 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +87 -75
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +52 -31
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +124 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +13 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +16 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +114 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +13 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +15 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +46 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +337 -243
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +12 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +21 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +11 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +28 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +17 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +14 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_contiguous_iterator.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +10 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +14 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +10 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/seq_packet_protocol.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +4 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +35 -105
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +273 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +283 -86
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +5 -612
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +3 -326
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +149 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +581 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/prepend.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +315 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/random_access_file.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +777 -177
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +231 -74
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1849 -471
- data/src/cxx_supportlib/vendor-modified/boost/asio/readable_pipe.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/recycling_allocator.hpp +140 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +346 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +437 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +347 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +3 -736
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +3 -422
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_base.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +640 -105
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +38 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +65 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +75 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +89 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +21 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +242 -79
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +29 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +423 -142
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +311 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_file.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +18 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +570 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +269 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +773 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +103 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +104 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +118 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +82 -43
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +163 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +3 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/writable_pipe.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +772 -173
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +237 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +72 -28
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +197 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +170 -11
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +97 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +2 -191
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/aligned_variable.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +1265 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +1228 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +102 -12
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +43 -11
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/capabilities.hpp +217 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_alpha.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_arm.hpp +103 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_ppc.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_sparc.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_x86.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_msvc_arm.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_msvc_x86.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +100 -75
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +0 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +57 -64
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations_fwd.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +1121 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +1909 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +867 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +1417 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +1218 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +215 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +1110 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +828 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +903 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +194 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated_fwd.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_fwd.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +306 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +263 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +22 -12
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +13 -10
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +59 -40
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +1060 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +1330 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +363 -355
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +167 -163
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +232 -102
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +9 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +119 -92
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/footer.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +13 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +185 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_ppc_asm_common.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/header.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +25 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +108 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -11
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch32_common.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch64_common.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +8 -79
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +30 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +80 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +143 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_capabilities.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_darwin_ulock.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_freebsd_umtx.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_futex.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations_fwd.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +158 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +96 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +119 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +143 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +7 -18
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +97 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +4 -49
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +263 -1815
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_cc.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +165 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +143 -279
- data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +13 -14
- data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +24 -259
- data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +4 -320
- data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +34 -34
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +34 -14
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +10 -6
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +178 -167
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +39 -47
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +32 -38
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +12 -9
- data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +24 -3
- data/src/cxx_supportlib/vendor-modified/boost/concept/detail/has_constraints.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +20 -20
- data/src/cxx_supportlib/vendor-modified/boost/config/abi_prefix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/abi_suffix.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +211 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +212 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx98.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +78 -19
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +38 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +89 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +164 -10
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +40 -11
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +374 -52
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +41 -11
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +14 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +54 -10
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +218 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_platform_config.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_stdlib_config.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +303 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +5 -8
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +63 -74
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/wasm.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/requires_threads.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +76 -10
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +51 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +144 -11
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +291 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +43 -35
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +205 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +132 -38
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +981 -361
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +25 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +838 -463
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +199 -133
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +73 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +52 -16
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +21 -116
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +991 -148
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +181 -57
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +68 -68
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +443 -239
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/guards_dended.hpp +198 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +18 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +36 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +228 -194
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +55 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +60 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +135 -40
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +48 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +28 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +352 -152
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +152 -105
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +1 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +7 -11
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +181 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +464 -351
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +9 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +6 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +138 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +3041 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +874 -314
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +391 -126
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +150 -120
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +634 -254
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +33 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +30 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +35 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +433 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +37 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +92 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +79 -81
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +445 -180
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +142 -113
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +325 -263
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +386 -228
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +243 -161
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +601 -455
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +155 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +977 -1017
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +408 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +62 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +395 -580
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/alignof.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +95 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +834 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/allocator_traits.hpp +112 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +954 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +35 -7
- data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +298 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +158 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/is_same.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/lwt_unattended.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_yield.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/splitmix64.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +1272 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +203 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/exchange.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/first_scalar.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/identity.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ignore_unused.hpp +32 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +10 -15
- data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +269 -145
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +43 -8
- data/src/cxx_supportlib/vendor-modified/boost/core/make_span.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/max_align.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/memory_resource.hpp +108 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +16 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/nvp.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +112 -60
- data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +61 -17
- data/src/cxx_supportlib/vendor-modified/boost/core/serialization.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/snprintf.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +401 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +12 -32
- data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +1186 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +26 -10
- data/src/cxx_supportlib/vendor-modified/boost/core/uncaught_exceptions.hpp +155 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/use_default.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/verbose_terminate_handler.hpp +88 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/yield_primitives.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +9 -41
- data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +19 -11
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +17 -22
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +44 -49
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +24 -19
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_iterator.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +51 -25
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +56 -56
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/find_match.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +98 -98
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +34 -27
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +44 -32
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +51 -23
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +29 -27
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +43 -9
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +34 -15
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +15 -17
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +30 -25
- data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +57 -37
- data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +44 -47
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +34 -31
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +27 -28
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +13 -26
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +22 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +28 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +24 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +56 -44
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +9 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_iterator.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +5 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +65 -50
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +43 -30
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +7 -5
- data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +161 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +7 -11
- data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +38 -47
- data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +6 -97
- data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +135 -34
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +18 -9
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +118 -70
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +12 -10
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +10 -5
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception_ptr.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +16 -9
- data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +77 -237
- data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +456 -464
- data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
- data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -61
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +35 -33
- data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +86 -81
- data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/integer/mod_inverse.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer/static_log2.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +99 -100
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +51 -52
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +83 -83
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +101 -102
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +155 -164
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +164 -158
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +36 -28
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +88 -19
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +44 -44
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +10 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +23 -23
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +85 -16
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/empty_node_checker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -32
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +204 -115
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +26 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +126 -80
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +30 -18
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +11 -64
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +6 -17
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +3 -140
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +36 -17
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +38 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +45 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/twin.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/value_functors.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +66 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +1763 -1039
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +98 -18
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +113 -111
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +26 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +21 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +7 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +31 -23
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +51 -52
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +74 -74
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +101 -102
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +109 -110
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +68 -77
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +81 -81
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +178 -186
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +107 -108
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +54 -55
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +99 -97
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +141 -115
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +88 -83
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +158 -152
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +128 -114
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +361 -315
- data/src/cxx_supportlib/vendor-modified/boost/io_fwd.hpp +45 -49
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +107 -26
- data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +24 -25
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +154 -172
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +619 -647
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +89 -77
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +35 -45
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +23 -29
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +33 -28
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +23 -157
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +10 -13
- data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +20 -25
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +13 -122
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +8 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +24 -22
- data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +16 -5
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +50 -29
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/tss_null.cpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/limits.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +6 -12
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +107 -62
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +119 -86
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +322 -489
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +22 -11
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +463 -120
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +87 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +16 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/search.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +24 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +32 -11
- data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +32 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/addressof.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/force_ptr.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +109 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +10 -32
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +268 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +40 -33
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +341 -70
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -27
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +90 -3
- data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +65 -66
- data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +38 -33
- data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +1386 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +120 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +149 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +321 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_count.hpp +147 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_defer.hpp +119 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_list.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_value_list.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list_v.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_min_element.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_value.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_void.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_with_index.hpp +385 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/function.hpp +222 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +481 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +188 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +31 -11
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/enum.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/params.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/yes_no.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/string.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +3 -44
- data/src/cxx_supportlib/vendor-modified/boost/nondet_random.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/none.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/converter_policies.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/converter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/meta.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +33 -24
- data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +30 -4
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +41 -30
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +304 -128
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/parameter/are_tagged_arguments.hpp +125 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/always_true_predicate.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1253 -359
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/as_lvalue.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/augment_predicate.hpp +198 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +7 -136
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/default.hpp +101 -59
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/has_nested_template_fn.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_maybe.hpp +42 -16
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_placeholder.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_tagged_argument.hpp +95 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/lambda_tag.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/maybe.hpp +128 -97
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/name.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/as_parameter_requirements.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduce_tag.hpp +217 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduced_item.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/insert_tagged.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/is_named_argument.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/item.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_arg_list.hpp +438 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_deduced_items.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_items.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_parameter_spec_items.hpp +244 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/parameter_requirements.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/predicate.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/satisfies.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_deduced.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_template_keyword_arg.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_type.hpp +89 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parameter_requirements.hpp +7 -20
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +8 -31
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/argument_pack.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/match.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp +97 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp +1638 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp +1796 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/flatten.hpp +7 -110
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each.hpp +7 -98
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each_pred.hpp +1029 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/arity_range.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/flatten.hpp +143 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/for_each.hpp +152 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp +509 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_cast.hpp +730 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp +474 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_name.hpp +152 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp +331 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/specification.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/split_args.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp +78 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_binary.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_nullary.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp +165 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/nullptr.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/qualifier.hpp +88 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_enum.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_merge.hpp +1807 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/result_of0.hpp +46 -29
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +94 -42
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +156 -34
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +874 -159
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument_fwd.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/template_keyword.hpp +76 -34
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +161 -78
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default_tag.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +26 -17
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/yesno.hpp +30 -14
- data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +158 -74
- data/src/cxx_supportlib/vendor-modified/boost/parameter/compose.hpp +210 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/config.hpp +75 -6
- data/src/cxx_supportlib/vendor-modified/boost/parameter/deduced.hpp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/is_argument_pack.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +724 -102
- data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword_fwd.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/macros.hpp +205 -72
- data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +37 -44
- data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +100 -126
- data/src/cxx_supportlib/vendor-modified/boost/parameter/nested_keyword.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/optional.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/parameters.hpp +556 -887
- data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +156 -1016
- data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor_no_spec.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/python.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/parameter/required.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +156 -74
- data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +119 -25
- data/src/cxx_supportlib/vendor-modified/boost/pool/object_pool.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +22 -9
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool_alloc.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +19 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +97 -28
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +16 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +19 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/e2k.h +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +19 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/loongarch.h +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +33 -27
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +31 -20
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +24 -18
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +82 -30
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +13 -7
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/riscv.h +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +23 -12
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +26 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +29 -15
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +15 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +15 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +31 -25
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +19 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +13 -12
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +15 -14
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +18 -17
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +13 -12
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +16 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +21 -19
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +27 -21
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +21 -19
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +73 -67
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +39 -37
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +24 -19
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +25 -23
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +95 -46
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +41 -34
- data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +13 -12
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +107 -33
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +10 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +10 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +17 -15
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +60 -58
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +22 -23
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +15 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +14 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +24 -22
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +11 -10
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +19 -21
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/wordsize.h +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +22 -14
- data/src/cxx_supportlib/vendor-modified/boost/predef/other.h +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/android.h +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +14 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +16 -14
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/add.hpp +54 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/dec.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/is_1_number.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/is_maximum_number.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/is_minimum_number.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/detail/maximum_number.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/div.hpp +37 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/inc.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/dec_1024.hpp +531 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/dec_256.hpp +276 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/dec_512.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/inc_1024.hpp +536 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/inc_256.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/limits/inc_512.hpp +280 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/mod.hpp +37 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/mul.hpp +60 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/sub.hpp +51 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/enum.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/insert.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/remove.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/replace.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/limits/not_equal_1024.hpp +1044 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/limits/not_equal_256.hpp +793 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/limits/not_equal_512.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/comparison/not_equal.hpp +44 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +26 -34
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/limits.hpp +136 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/deduce_d.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/dmc/while.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/limits/while_1024.hpp +1044 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/limits/while_256.hpp +533 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/limits/while_512.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/edg/while.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/limits/while_1024.hpp +1044 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/limits/while_256.hpp +533 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/limits/while_512.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/detail/while.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/limits/while_1024.hpp +531 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/limits/while_256.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/limits/while_512.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/control/while.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/auto_rec.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/dmc/auto_rec.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/limits/auto_rec_1024.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/limits/auto_rec_256.hpp +280 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/detail/limits/auto_rec_512.hpp +276 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/check_empty.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/intercept.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +28 -5
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/limits/intercept_1024.hpp +530 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/limits/intercept_256.hpp +273 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/limits/intercept_512.hpp +274 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/overload.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/va_opt.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward1.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward2.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward3.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward4.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/forward5.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward1_1024.hpp +2573 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward1_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward1_512.hpp +1293 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward2_1024.hpp +2573 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward2_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward2_512.hpp +1293 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward3_1024.hpp +2573 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward3_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward3_512.hpp +1293 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward4_1024.hpp +2573 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward4_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward4_512.hpp +1293 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward5_1024.hpp +2573 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward5_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/forward5_512.hpp +1293 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse1_1024.hpp +2571 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse1_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse1_512.hpp +1291 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse2_1024.hpp +2571 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse2_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse2_512.hpp +1293 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse3_1024.hpp +2571 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse3_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse3_512.hpp +1293 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse4_1024.hpp +2571 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse4_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse4_512.hpp +1293 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse5_1024.hpp +2571 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse5_256.hpp +1296 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/limits/reverse5_512.hpp +1293 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse1.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse2.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse3.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse4.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/iter/reverse5.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/local_1024.hpp +1549 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/local_256.hpp +782 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/local_512.hpp +781 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/rlocal_1024.hpp +1549 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/rlocal_256.hpp +782 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/limits/rlocal_512.hpp +781 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/local.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/iteration/detail/rlocal.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/dmc/fold_left.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/fold_left.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/fold_right.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_left_1024.hpp +1044 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp +533 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_left_512.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_right_1024.hpp +1557 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp +791 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/edg/limits/fold_right_512.hpp +789 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/fold_left.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/fold_right.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_left_1024.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_left_256.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_left_512.hpp +276 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_right_1024.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_right_256.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/detail/limits/fold_right_512.hpp +276 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/enum.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/fold_left.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/fold_right.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/for_each_product.hpp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/limits/fold_left_1024.hpp +531 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/limits/fold_left_256.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/limits/fold_left_512.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/reverse.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/size.hpp +56 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +21 -88
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/bool.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/limits/bool_1024.hpp +531 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/limits/bool_256.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/logical/limits/bool_512.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/is_begin_parens.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/remove_parens.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/deduce_r.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/dmc/for.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/for.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/limits/for_1024.hpp +1044 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/limits/for_256.hpp +533 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/edg/limits/for_512.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/for.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/limits/for_1024.hpp +1044 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/limits/for_256.hpp +533 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/limits/for_512.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/detail/msvc/for.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +121 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/for_1024.hpp +531 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/for_256.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/for_512.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/repeat_1024.hpp +1557 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/repeat_256.hpp +791 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/limits/repeat_512.hpp +789 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/repeat.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/repeat_from_to.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +6 -11
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/limits/split_1024.hpp +530 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/limits/split_256.hpp +272 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/limits/split_512.hpp +274 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/split.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/elem.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/enum.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/fold_left.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/fold_right.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +28 -28
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/elem_1024.hpp +530 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/elem_256.hpp +272 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/elem_512.hpp +274 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/enum_1024.hpp +530 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/enum_256.hpp +272 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/enum_512.hpp +274 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_left_1024.hpp +1556 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_left_256.hpp +1053 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_left_512.hpp +788 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_right_1024.hpp +530 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_right_256.hpp +273 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/fold_right_512.hpp +274 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/size_1024.hpp +1043 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/size_256.hpp +532 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/limits/size_512.hpp +531 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +16 -10
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/size.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/variadic_seq_to_seq.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/eat.hpp +4 -18
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +11 -157
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +2 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/reverse_128.hpp +403 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/reverse_256.hpp +1171 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/reverse_64.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_list_128.hpp +595 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_list_256.hpp +1747 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_list_64.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_128.hpp +403 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +1171 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_64.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +16 -21
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +16 -21
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +1 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +21 -43
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +16 -21
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +2 -7
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +38 -25
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/size.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_array.hpp +15 -12
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +37 -25
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +38 -24
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/has_opt.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/elem.hpp +93 -71
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/elem_128.hpp +275 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/elem_256.hpp +723 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/elem_64.hpp +81 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/size_128.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/size_256.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/limits/size_64.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/size.hpp +39 -4
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_array.hpp +15 -9
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_list.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_seq.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/to_tuple.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/additive_combine.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +190 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/int_float_pair.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/mixmax_skip_N17.ipp +287 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +514 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/operators.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +291 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed.hpp +9 -11
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed_impl.hpp +13 -14
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +4107 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discard_block.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/faure.hpp +367 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/generate_canonical.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/random/lagged_fibonacci.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/random/linear_feedback_shift.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +313 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +360 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/random_device.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_order.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +238 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/random/traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_smallint.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/random/xor_combine.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/random.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +43 -6
- data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +17 -15
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +18 -16
- data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +0 -32
- data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -78
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
- data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
- data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
- data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +95 -51
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +82 -76
- data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +104 -101
- data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +4 -72
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +4 -140
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +8 -761
- data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +32 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +50 -25
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +64 -30
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +342 -42
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +111 -28
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -117
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +1516 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +18 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +21 -12
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +39 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +42 -18
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +24 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +57 -54
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -36
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +10 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +38 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +9 -15
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +653 -36
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +1 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +3 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +871 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +526 -40
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +734 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +1576 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +3130 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +474 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +1040 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +195 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +1402 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +156 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +667 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +160 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +576 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +921 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +1874 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/primary_transform.hpp +120 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +158 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +1124 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +213 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +77 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +103 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +152 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +255 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +996 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +159 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +299 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +382 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +312 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +862 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +1311 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +94 -444
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +88 -48
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +12 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +27 -17
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +18 -9
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +16 -5
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +27 -18
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +48 -31
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_typeinfo_.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +13 -5
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +13 -141
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +49 -12
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +120 -40
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +80 -8
- data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +4 -24
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/append_int.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/cerrno.hpp +329 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/errc.hpp +126 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +183 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +659 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +326 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +123 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +120 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +97 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/throws.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/error_category.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +12 -760
- data/src/cxx_supportlib/vendor-modified/boost/system/error_condition.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/generic_category.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/is_error_code_enum.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/is_error_condition_enum.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/system_category.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +30 -59
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +9 -21
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +9 -21
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +80 -14
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +1 -24
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +18 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +27 -21
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +33 -12
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_safety.hpp +160 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/tss_hooks.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +27 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/interruption.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/lock_guard.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_traits.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable.hpp +16 -12
- data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable_adapter.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +20 -26
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +8 -15
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +17 -88
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +29 -28
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +163 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +25 -25
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +21 -13
- data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +23 -41
- data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/xtime.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +232 -56
- data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +35 -30
- data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +52 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/conjunction.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv_ref.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_reference.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +36 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +108 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +676 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_msvc10_fix.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +415 -255
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +1345 -1542
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +697 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_swappable_cxx_11.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/disjunction.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/enable_if.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +344 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +6 -16
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +39 -15
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_bounded_array.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +4 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +4 -79
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +3 -97
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_noncopyable.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +4 -24
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scoped_enum.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_swappable.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_trivially_copyable.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unbounded_array.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unscoped_enum.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +105 -64
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/negation.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/constant.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
- data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +9 -10
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +4 -51
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +4 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -202
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +872 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +728 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +900 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +1792 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2380 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/ignore_wshadow.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +204 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +139 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/restore_wshadow.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/rw_spinlock.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +661 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +1462 -3502
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +10 -14
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/mulx.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +214 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +8 -13
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +226 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +812 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +622 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +768 -1002
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +35 -13
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +907 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +711 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +547 -672
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +35 -15
- data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/utility/binary.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +4 -43
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_variadic.hpp +190 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/in_place_factory.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +33 -11
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +11 -44
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +56 -52
- data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/utility/typed_in_place_factory.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +41 -75
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
- data/src/cxx_supportlib/vendor-modified/modp_b64_data.h +0 -4
- data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +7 -3
- data/src/cxx_supportlib/vendor-modified/websocketpp/changelog.md +444 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/readme.md +49 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/close.hpp +353 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio.hpp +141 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/functional.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +448 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/memory.hpp +88 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/thread.hpp +88 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core.hpp +297 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection.hpp +1642 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint.hpp +700 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +817 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +853 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/parser.hpp +200 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/parser.hpp +629 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/connection_impl.hpp +2375 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/endpoint_impl.hpp +269 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/base.hpp +299 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +1072 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/client_endpoint.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/server_endpoint.hpp +195 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/sha1/sha1.hpp +189 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/connection.hpp +1197 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/endpoint.hpp +1182 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/none.hpp +372 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/tls.hpp +474 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/endpoint.hpp +77 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/connection.hpp +412 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/endpoint.hpp +140 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/connection.hpp +714 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/endpoint.hpp +222 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/connection.hpp +286 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/uri.hpp +356 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utilities.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/version.hpp +61 -0
- data/src/helper-scripts/backtrace-sanitizer.rb +2 -2
- data/src/helper-scripts/crash-watch.rb +1 -1
- data/src/helper-scripts/download_binaries/extconf.rb +2 -2
- data/src/helper-scripts/meteor-loader.rb +9 -4
- data/src/helper-scripts/node-loader.js +3 -3
- data/src/helper-scripts/prespawn +3 -2
- data/src/helper-scripts/rack-loader.rb +2 -2
- data/src/helper-scripts/rack-preloader.rb +2 -2
- data/src/helper-scripts/wsgi-loader.py +36 -19
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +98 -2
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +2 -2
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +59 -2
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +2 -2
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +122 -2
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +2 -2
- data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
- data/src/nginx_module/Configuration.c +40 -11
- data/src/nginx_module/Configuration.h +1 -1
- data/src/nginx_module/ContentHandler.c +306 -24
- data/src/nginx_module/ContentHandler.h +6 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +49 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +86 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +2 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +111 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +23 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +2 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +36 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
- data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +18 -2
- data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
- data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +36 -2
- data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
- data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +14 -2
- data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
- data/src/nginx_module/StaticContentHandler.c +1 -1
- data/src/nginx_module/StaticContentHandler.h +1 -1
- data/src/nginx_module/config +2 -0
- data/src/nginx_module/ngx_http_passenger_module.c +7 -4
- data/src/nginx_module/ngx_http_passenger_module.h +6 -1
- data/src/nodejs_supportlib/phusion_passenger/line_reader.js +2 -2
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/common.js +50 -29
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/cli-config.js +20 -20
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/npm-config.js +11 -11
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/syslog-config.js +3 -3
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config.js +8 -2
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/container.js +2 -1
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +174 -146
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/console.js +4 -2
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/file.js +15 -5
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/http.js +14 -4
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports.js +26 -24
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston.js +5 -5
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/async/package.json +4 -13
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/package.json +19 -33
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/cycle/package.json +11 -29
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/eyes/package.json +12 -40
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/isstream/package.json +3 -12
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/stack-trace/lib/stack-trace.js +49 -24
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/stack-trace/package.json +4 -16
- data/src/nodejs_supportlib/vendor-copy/winston/package.json +11 -55
- data/src/ruby_native_extension/extconf.rb +9 -2
- data/src/ruby_native_extension/passenger_native_support.c +3 -2
- data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +15 -3
- data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +3 -3
- data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +3 -3
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +55 -2
- data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +19 -6
- data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +8 -4
- data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -3
- data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -3
- data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +12 -2
- data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +16 -7
- data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +18 -14
- data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/utils.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +9 -4
- data/src/ruby_supportlib/phusion_passenger/constants.rb +6 -4
- data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +39 -12
- data/src/ruby_supportlib/phusion_passenger/message_channel.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/message_client.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/native_support.rb +12 -7
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +84 -2
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +5 -3
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +12 -15
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +25 -21
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +49 -8
- data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +5 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +10 -4
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +10 -6
- data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +4 -3
- data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +7 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +49 -30
- data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +64 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +4 -4
- data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/plugin.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +14 -8
- data/src/ruby_supportlib/phusion_passenger/public_api.rb +5 -2
- data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +73 -0
- data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +24 -3
- data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +32 -58
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +25 -20
- data/src/ruby_supportlib/phusion_passenger/request_handler.rb +13 -9
- data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +7 -2
- data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +3 -2
- data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +53 -3
- data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +13 -5
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +32 -21
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +3 -7
- data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +3 -4
- data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +9 -3
- data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/download.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -198
- data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +67 -0
- data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +17 -13
- data/src/ruby_supportlib/phusion_passenger/utils.rb +8 -17
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +5 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +6 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +12 -11
- data/src/schema_printer/SchemaPrinterMain.cpp +2 -2
- data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +2 -2
- metadata +935 -308
- data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2265
- data/src/cxx_supportlib/ServerKit/http_parser.h +0 -330
- data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +0 -342
- data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +0 -49
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +0 -342
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +0 -131
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/functional.hpp +0 -105
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/md5.hpp +0 -448
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +0 -89
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +0 -84
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +0 -285
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +0 -1651
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +0 -700
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +0 -128
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +0 -752
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +0 -861
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +0 -196
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +0 -619
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +0 -2372
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +0 -269
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +0 -299
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +0 -1056
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +0 -173
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +0 -190
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +0 -189
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +0 -1204
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +0 -1147
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +0 -370
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +0 -484
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +0 -77
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +0 -412
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +0 -140
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +0 -714
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +0 -222
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +0 -286
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +0 -355
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +0 -182
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -457
- data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +0 -468
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +0 -175
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -57
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +0 -154
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +0 -238
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -119
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +0 -878
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/redirect_error.hpp +0 -296
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/redirect_error.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +0 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -87
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +0 -52
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +0 -79
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -54
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +0 -79
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +0 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +0 -202
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +0 -281
- data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +0 -468
- data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +0 -418
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +0 -251
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +0 -144
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +0 -374
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +0 -414
- data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +0 -212
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +0 -275
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -184
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -378
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -361
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -383
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +0 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -333
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -380
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +0 -216
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -364
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +0 -212
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +0 -71
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +0 -1248
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_alpha.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sparc.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_arm.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +0 -55
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_arm.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_ppc.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_x86.hpp +0 -58
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_extend.hpp +0 -105
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +0 -51
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +0 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +0 -107
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +0 -162
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +0 -876
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +0 -1397
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +0 -392
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +0 -1232
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +0 -240
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +0 -240
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +0 -563
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +0 -555
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +0 -180
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +0 -824
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +0 -908
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +0 -207
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_cc.hpp +0 -117
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
- data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -475
- data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +0 -41
- data/src/cxx_supportlib/vendor-modified/boost/call_traits.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/checked_delete.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -414
- data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
- data/src/cxx_supportlib/vendor-modified/boost/detail/call_traits.hpp +0 -172
- data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
- data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +0 -36
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -26
- data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +0 -206
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cpp_regex_traits.cpp +0 -117
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +0 -660
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/instances.cpp +0 -32
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_raw_buffer.cpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +0 -692
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +0 -314
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/winstances.cpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +0 -1040
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +0 -581
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/round_fwd.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +0 -640
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +0 -1651
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +0 -194
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +0 -469
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +0 -182
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/real_cast.hpp +0 -31
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +0 -105
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/overloads.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +0 -55
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +0 -26
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -455
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +0 -225
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_solaris.hpp +0 -59
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +0 -150
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +0 -160
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +0 -115
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +0 -496
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +0 -276
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +0 -297
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +0 -265
- data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
- data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
- data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
- data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
- data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
- data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -63
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/daily-rotate-file.js +0 -601
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/webhook.js +0 -146
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/LICENSE +0 -19
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/lib/pkginfo.js +0 -136
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/package.json +0 -56
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/COPYING +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/base64/base64.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/client.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/asio_ssl.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/chrono.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/connection_hdl.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/cpp11.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/network.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/platforms.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/random.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/regex.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/stdint.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/system_error.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/time.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/common/type_traits.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/concurrency/basic.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/concurrency/none.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/asio.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/asio_client.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/asio_no_tls.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/asio_no_tls_client.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/boost_config.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/core_client.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/debug.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/debug_asio.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/minimal_client.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/config/minimal_server.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/connection_base.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/endpoint_base.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/error.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/extensions/extension.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/constants.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/impl/request.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/impl/response.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/request.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/http/response.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/impl/utilities_impl.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/logger/basic.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/logger/levels.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/logger/stub.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/logger/syslog.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/message_buffer/alloc.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/message_buffer/message.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/message_buffer/pool.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/processors/hybi00.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/processors/hybi07.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/processors/hybi08.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/processors/processor.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/random/none.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/random/random_device.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/server.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/asio/base.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/asio/security/base.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/base/connection.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/debug/base.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/iostream/base.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/stub/base.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/transport/stub/endpoint.hpp +0 -0
- /data/src/cxx_supportlib/{vendor-copy → vendor-modified}/websocketpp/websocketpp/utf8_validator.hpp +0 -0
@@ -1,6 +1,8 @@
|
|
1
1
|
/////////////////////////////////////////////////////////////////////////////
|
2
2
|
//
|
3
|
-
// (C) Copyright Ion Gaztanaga 2006-
|
3
|
+
// (C) Copyright Ion Gaztanaga 2006-2022
|
4
|
+
// (C) Copyright 2022 Joaquin M Lopez Munoz.
|
5
|
+
// (C) Copyright 2022 Christian Mazakas
|
4
6
|
//
|
5
7
|
// Distributed under the Boost Software License, Version 1.0.
|
6
8
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
@@ -9,12 +11,29 @@
|
|
9
11
|
// See http://www.boost.org/libs/intrusive for documentation.
|
10
12
|
//
|
11
13
|
/////////////////////////////////////////////////////////////////////////////
|
14
|
+
|
15
|
+
// fastmod_buckets option is implemented reusing parts of Joaquin M. Lopez
|
16
|
+
// Munoz's "fxa_unordered" library (proof of concept of closed- and
|
17
|
+
// open-addressing unordered associative containers), released under
|
18
|
+
// Boost Software License:
|
19
|
+
//
|
20
|
+
// https://github.com/joaquintides/fxa_unordered/
|
21
|
+
//
|
22
|
+
// On cases and systems that can't take advantage of Daniel Lemire's
|
23
|
+
// "fastmod" (https://github.com/lemire/fastmod) approach,
|
24
|
+
// precomputed divisions are used.
|
25
|
+
//
|
26
|
+
// As always, thanks Joaquin for your great work!
|
27
|
+
|
28
|
+
|
12
29
|
#ifndef BOOST_INTRUSIVE_HASHTABLE_HPP
|
13
30
|
#define BOOST_INTRUSIVE_HASHTABLE_HPP
|
14
31
|
|
15
32
|
#include <boost/intrusive/detail/config_begin.hpp>
|
16
33
|
#include <boost/intrusive/intrusive_fwd.hpp>
|
17
34
|
|
35
|
+
#include <boost/move/detail/meta_utils_core.hpp>
|
36
|
+
|
18
37
|
//General intrusive utilities
|
19
38
|
#include <boost/intrusive/detail/hashtable_node.hpp>
|
20
39
|
#include <boost/intrusive/detail/transform_iterator.hpp>
|
@@ -27,41 +46,339 @@
|
|
27
46
|
#include <boost/intrusive/detail/simple_disposers.hpp>
|
28
47
|
#include <boost/intrusive/detail/size_holder.hpp>
|
29
48
|
#include <boost/intrusive/detail/iterator.hpp>
|
49
|
+
#include <boost/intrusive/detail/get_value_traits.hpp>
|
50
|
+
#include <boost/intrusive/detail/algorithm.hpp>
|
51
|
+
#include <boost/intrusive/detail/value_functors.hpp>
|
30
52
|
|
31
53
|
//Implementation utilities
|
32
54
|
#include <boost/intrusive/unordered_set_hook.hpp>
|
33
|
-
#include <boost/intrusive/
|
55
|
+
#include <boost/intrusive/detail/slist_iterator.hpp>
|
34
56
|
#include <boost/intrusive/pointer_traits.hpp>
|
35
57
|
#include <boost/intrusive/detail/mpl.hpp>
|
58
|
+
#include <boost/intrusive/circular_slist_algorithms.hpp>
|
59
|
+
#include <boost/intrusive/linear_slist_algorithms.hpp>
|
36
60
|
|
37
61
|
//boost
|
38
|
-
#include <boost/functional/hash.hpp>
|
39
62
|
#include <boost/intrusive/detail/assert.hpp>
|
40
|
-
#include <boost/static_assert.hpp>
|
41
63
|
#include <boost/move/utility_core.hpp>
|
42
64
|
#include <boost/move/adl_move_swap.hpp>
|
65
|
+
#include <boost/move/algo/detail/search.hpp>
|
43
66
|
|
44
67
|
//std C++
|
45
|
-
#include <boost/intrusive/detail/minimal_less_equal_header.hpp> //std::equal_to
|
46
68
|
#include <boost/intrusive/detail/minimal_pair_header.hpp> //std::pair
|
47
|
-
#include <algorithm> //std::lower_bound, std::upper_bound
|
48
69
|
#include <cstddef> //std::size_t
|
70
|
+
#include <boost/cstdint.hpp> //std::uint64_t
|
71
|
+
|
72
|
+
|
73
|
+
#include "detail/hash.hpp"
|
49
74
|
|
50
75
|
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
51
76
|
# pragma once
|
52
77
|
#endif
|
53
78
|
|
79
|
+
#ifdef _MSC_VER
|
80
|
+
#include <intrin.h>
|
81
|
+
#endif
|
82
|
+
|
83
|
+
|
54
84
|
namespace boost {
|
85
|
+
|
55
86
|
namespace intrusive {
|
56
87
|
|
88
|
+
|
89
|
+
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
90
|
+
|
57
91
|
/// @cond
|
58
92
|
|
93
|
+
//We only support LLP64(Win64) or LP64(most Unix) data models
|
94
|
+
#ifdef _WIN64 //In 64 bit windows sizeof(size_t) == sizeof(unsigned long long)
|
95
|
+
# define BOOST_INTRUSIVE_SIZE_C(NUMBER) NUMBER##ULL
|
96
|
+
# define BOOST_INTRUSIVE_64_BIT_SIZE_T 1
|
97
|
+
#else //In 32 bit windows and 32/64 bit unixes sizeof(size_t) == sizeof(unsigned long)
|
98
|
+
# define BOOST_INTRUSIVE_SIZE_C(NUMBER) NUMBER##UL
|
99
|
+
# define BOOST_INTRUSIVE_64_BIT_SIZE_T (((((ULONG_MAX>>16)>>16)>>16)>>15) != 0)
|
100
|
+
#endif
|
101
|
+
|
102
|
+
template<int Dummy = 0>
|
103
|
+
struct prime_list_holder
|
104
|
+
{
|
105
|
+
private:
|
106
|
+
|
107
|
+
template <class SizeType> // sizeof(SizeType) < sizeof(std::size_t)
|
108
|
+
static inline SizeType truncate_size_type(std::size_t n, detail::true_)
|
109
|
+
{ return n < std::size_t(SizeType(-1)) ? static_cast<SizeType>(n) : SizeType(-1); }
|
110
|
+
|
111
|
+
template <class SizeType> // sizeof(SizeType) == sizeof(std::size_t)
|
112
|
+
static inline SizeType truncate_size_type(std::size_t n, detail::false_)
|
113
|
+
{ return static_cast<SizeType>(n); }
|
114
|
+
|
115
|
+
static const std::size_t prime_list[];
|
116
|
+
static const std::size_t prime_list_size;
|
117
|
+
|
118
|
+
static const std::size_t *suggested_lower_bucket_count_ptr(std::size_t n)
|
119
|
+
{
|
120
|
+
const std::size_t *primes = &prime_list[0];
|
121
|
+
const std::size_t *primes_end = primes + prime_list_size;
|
122
|
+
std::size_t const* bound =
|
123
|
+
boost::movelib::lower_bound(primes, primes_end, n, value_less<std::size_t>());
|
124
|
+
bound -= std::size_t(bound == primes_end);
|
125
|
+
return bound;
|
126
|
+
}
|
127
|
+
|
128
|
+
static const std::size_t *suggested_upper_bucket_count_ptr(std::size_t n)
|
129
|
+
{
|
130
|
+
const std::size_t *primes = &prime_list[0];
|
131
|
+
const std::size_t *primes_end = primes + prime_list_size;
|
132
|
+
std::size_t const* bound =
|
133
|
+
boost::movelib::upper_bound(primes, primes_end, n, value_less<std::size_t>());
|
134
|
+
bound -= std::size_t(bound == primes_end);
|
135
|
+
return bound;
|
136
|
+
}
|
137
|
+
|
138
|
+
static std::size_t suggested_lower_bucket_count_impl(std::size_t n)
|
139
|
+
{ return *suggested_lower_bucket_count_ptr(n); }
|
140
|
+
|
141
|
+
static std::size_t suggested_upper_bucket_count_impl(std::size_t n)
|
142
|
+
{ return *suggested_upper_bucket_count_ptr(n); }
|
143
|
+
|
144
|
+
public:
|
145
|
+
|
146
|
+
template <class SizeType>
|
147
|
+
static inline SizeType suggested_upper_bucket_count(SizeType n)
|
148
|
+
{
|
149
|
+
std::size_t const c = suggested_upper_bucket_count_impl(static_cast<std::size_t>(n));
|
150
|
+
return truncate_size_type<SizeType>(c, detail::bool_<(sizeof(SizeType) < sizeof(std::size_t))>());
|
151
|
+
}
|
152
|
+
|
153
|
+
template <class SizeType>
|
154
|
+
static inline SizeType suggested_lower_bucket_count(SizeType n)
|
155
|
+
{
|
156
|
+
std::size_t const c = suggested_lower_bucket_count_impl(static_cast<std::size_t>(n));
|
157
|
+
return truncate_size_type<SizeType>(c, detail::bool_<(sizeof(SizeType) < sizeof(std::size_t))>());
|
158
|
+
}
|
159
|
+
|
160
|
+
static inline std::size_t suggested_lower_bucket_count_idx(std::size_t n)
|
161
|
+
{ return static_cast<std::size_t>(suggested_lower_bucket_count_ptr(n) - &prime_list[0]); }
|
162
|
+
|
163
|
+
static inline std::size_t suggested_upper_bucket_count_idx(std::size_t n)
|
164
|
+
{ return static_cast<std::size_t>(suggested_upper_bucket_count_ptr(n) - &prime_list[0]); }
|
165
|
+
|
166
|
+
static inline std::size_t size_from_index(std::size_t n)
|
167
|
+
{ return prime_list[std::ptrdiff_t(n)]; }
|
168
|
+
|
169
|
+
template<std::size_t SizeIndex>
|
170
|
+
inline static std::size_t modfunc(std::size_t hash) { return hash % SizeIndex; }
|
171
|
+
|
172
|
+
static std::size_t(*const positions[])(std::size_t);
|
173
|
+
|
174
|
+
#if BOOST_INTRUSIVE_64_BIT_SIZE_T
|
175
|
+
static const uint64_t inv_sizes32[];
|
176
|
+
static const std::size_t inv_sizes32_size;
|
177
|
+
#endif
|
178
|
+
|
179
|
+
inline static std::size_t lower_size_index(std::size_t n)
|
180
|
+
{ return prime_list_holder<>::suggested_lower_bucket_count_idx(n); }
|
181
|
+
|
182
|
+
inline static std::size_t upper_size_index(std::size_t n)
|
183
|
+
{ return prime_list_holder<>::suggested_upper_bucket_count_idx(n); }
|
184
|
+
|
185
|
+
inline static std::size_t size(std::size_t size_index)
|
186
|
+
{ return prime_list_holder<>::size_from_index(size_index); }
|
187
|
+
|
188
|
+
#if BOOST_INTRUSIVE_64_BIT_SIZE_T
|
189
|
+
// https://github.com/lemire/fastmod
|
190
|
+
|
191
|
+
inline static uint64_t mul128_u32(uint64_t lowbits, uint32_t d)
|
192
|
+
{
|
193
|
+
#if defined(_MSC_VER)
|
194
|
+
return __umulh(lowbits, d);
|
195
|
+
#elif defined(BOOST_HAS_INT128)
|
196
|
+
return static_cast<uint64_t>((uint128_type(lowbits) * d) >> 64);
|
197
|
+
#else
|
198
|
+
uint64_t r1 = (lowbits & UINT32_MAX) * d;
|
199
|
+
uint64_t r2 = (lowbits >> 32) * d;
|
200
|
+
r2 += r1 >> 32;
|
201
|
+
return r2 >> 32;
|
202
|
+
#endif
|
203
|
+
}
|
204
|
+
|
205
|
+
inline static uint32_t fastmod_u32(uint32_t a, uint64_t M, uint32_t d)
|
206
|
+
{
|
207
|
+
uint64_t lowbits = M * a;
|
208
|
+
return (uint32_t)(mul128_u32(lowbits, d));
|
209
|
+
}
|
210
|
+
#endif // BOOST_INTRUSIVE_64_BIT_SIZE_T
|
211
|
+
|
212
|
+
inline static std::size_t position(std::size_t hash,std::size_t size_index)
|
213
|
+
{
|
214
|
+
#if BOOST_INTRUSIVE_64_BIT_SIZE_T
|
215
|
+
BOOST_CONSTEXPR_OR_CONST std::size_t sizes_under_32bit = sizeof(inv_sizes32)/sizeof(inv_sizes32[0]);
|
216
|
+
if(BOOST_LIKELY(size_index < sizes_under_32bit)){
|
217
|
+
return fastmod_u32( uint32_t(hash)+uint32_t(hash>>32)
|
218
|
+
, inv_sizes32[size_index]
|
219
|
+
, uint32_t(prime_list[size_index]) );
|
220
|
+
}
|
221
|
+
else{
|
222
|
+
return positions[size_index](hash);
|
223
|
+
}
|
224
|
+
#else
|
225
|
+
return positions[size_index](hash);
|
226
|
+
#endif // BOOST_INTRUSIVE_64_BIT_SIZE_T
|
227
|
+
}
|
228
|
+
};
|
229
|
+
|
230
|
+
template<int Dummy>
|
231
|
+
std::size_t(* const prime_list_holder<Dummy>::positions[])(std::size_t) =
|
232
|
+
{
|
233
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(3)>, modfunc<BOOST_INTRUSIVE_SIZE_C(7)>,
|
234
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(11)>, modfunc<BOOST_INTRUSIVE_SIZE_C(17)>,
|
235
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(29)>, modfunc<BOOST_INTRUSIVE_SIZE_C(53)>,
|
236
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(97)>, modfunc<BOOST_INTRUSIVE_SIZE_C(193)>,
|
237
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(389)>, modfunc<BOOST_INTRUSIVE_SIZE_C(769)>,
|
238
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(1543)>, modfunc<BOOST_INTRUSIVE_SIZE_C(3079)>,
|
239
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(6151)>, modfunc<BOOST_INTRUSIVE_SIZE_C(12289)>,
|
240
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(24593)>, modfunc<BOOST_INTRUSIVE_SIZE_C(49157)>,
|
241
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(98317)>, modfunc<BOOST_INTRUSIVE_SIZE_C(196613)>,
|
242
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(393241)>, modfunc<BOOST_INTRUSIVE_SIZE_C(786433)>,
|
243
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(1572869)>, modfunc<BOOST_INTRUSIVE_SIZE_C(3145739)>,
|
244
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(6291469)>, modfunc<BOOST_INTRUSIVE_SIZE_C(12582917)>,
|
245
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(25165843)>, modfunc<BOOST_INTRUSIVE_SIZE_C(50331653)>,
|
246
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(100663319)>, modfunc<BOOST_INTRUSIVE_SIZE_C(201326611)>,
|
247
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(402653189)>, modfunc<BOOST_INTRUSIVE_SIZE_C(805306457)>,
|
248
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(1610612741)>, //0-30 indexes
|
249
|
+
#if BOOST_INTRUSIVE_64_BIT_SIZE_T
|
250
|
+
//Taken from Boost.MultiIndex code, thanks to Joaquin M. Lopez Munoz.
|
251
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(3221225473)>, //<- 32 bit values stop here (index 31)
|
252
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(6442450939)>, modfunc<BOOST_INTRUSIVE_SIZE_C(12884901893)>,
|
253
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(25769803751)>, modfunc<BOOST_INTRUSIVE_SIZE_C(51539607551)>,
|
254
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(103079215111)>, modfunc<BOOST_INTRUSIVE_SIZE_C(206158430209)>,
|
255
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(412316860441)>, modfunc<BOOST_INTRUSIVE_SIZE_C(824633720831)>,
|
256
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(1649267441651)>, modfunc<BOOST_INTRUSIVE_SIZE_C(3298534883309)>,
|
257
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(6597069766657)>, modfunc<BOOST_INTRUSIVE_SIZE_C(13194139533299)>,
|
258
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(26388279066623)>, modfunc<BOOST_INTRUSIVE_SIZE_C(52776558133303)>,
|
259
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(105553116266489)>, modfunc<BOOST_INTRUSIVE_SIZE_C(211106232532969)>,
|
260
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(422212465066001)>, modfunc<BOOST_INTRUSIVE_SIZE_C(844424930131963)>,
|
261
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(1688849860263953)>, modfunc<BOOST_INTRUSIVE_SIZE_C(3377699720527861)>,
|
262
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(6755399441055731)>, modfunc<BOOST_INTRUSIVE_SIZE_C(13510798882111483)>,
|
263
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(27021597764222939)>, modfunc<BOOST_INTRUSIVE_SIZE_C(54043195528445957)>,
|
264
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(108086391056891903)>, modfunc<BOOST_INTRUSIVE_SIZE_C(216172782113783843)>,
|
265
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(432345564227567621)>, modfunc<BOOST_INTRUSIVE_SIZE_C(864691128455135207)>,
|
266
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(1729382256910270481)>, modfunc<BOOST_INTRUSIVE_SIZE_C(3458764513820540933)>,
|
267
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(6917529027641081903)>, modfunc<BOOST_INTRUSIVE_SIZE_C(9223372036854775783)> //(index 63)
|
268
|
+
#else
|
269
|
+
modfunc<BOOST_INTRUSIVE_SIZE_C(2147483647)> //<- 32 bit stops here (index 31) as ptrdiff_t is signed
|
270
|
+
#endif
|
271
|
+
};
|
272
|
+
|
273
|
+
template<int Dummy>
|
274
|
+
const std::size_t prime_list_holder<Dummy>::prime_list[] = {
|
275
|
+
BOOST_INTRUSIVE_SIZE_C(3), BOOST_INTRUSIVE_SIZE_C(7),
|
276
|
+
BOOST_INTRUSIVE_SIZE_C(11), BOOST_INTRUSIVE_SIZE_C(17),
|
277
|
+
BOOST_INTRUSIVE_SIZE_C(29), BOOST_INTRUSIVE_SIZE_C(53),
|
278
|
+
BOOST_INTRUSIVE_SIZE_C(97), BOOST_INTRUSIVE_SIZE_C(193),
|
279
|
+
BOOST_INTRUSIVE_SIZE_C(389), BOOST_INTRUSIVE_SIZE_C(769),
|
280
|
+
BOOST_INTRUSIVE_SIZE_C(1543), BOOST_INTRUSIVE_SIZE_C(3079),
|
281
|
+
BOOST_INTRUSIVE_SIZE_C(6151), BOOST_INTRUSIVE_SIZE_C(12289),
|
282
|
+
BOOST_INTRUSIVE_SIZE_C(24593), BOOST_INTRUSIVE_SIZE_C(49157),
|
283
|
+
BOOST_INTRUSIVE_SIZE_C(98317), BOOST_INTRUSIVE_SIZE_C(196613),
|
284
|
+
BOOST_INTRUSIVE_SIZE_C(393241), BOOST_INTRUSIVE_SIZE_C(786433),
|
285
|
+
BOOST_INTRUSIVE_SIZE_C(1572869), BOOST_INTRUSIVE_SIZE_C(3145739),
|
286
|
+
BOOST_INTRUSIVE_SIZE_C(6291469), BOOST_INTRUSIVE_SIZE_C(12582917),
|
287
|
+
BOOST_INTRUSIVE_SIZE_C(25165843), BOOST_INTRUSIVE_SIZE_C(50331653),
|
288
|
+
BOOST_INTRUSIVE_SIZE_C(100663319), BOOST_INTRUSIVE_SIZE_C(201326611),
|
289
|
+
BOOST_INTRUSIVE_SIZE_C(402653189), BOOST_INTRUSIVE_SIZE_C(805306457),
|
290
|
+
BOOST_INTRUSIVE_SIZE_C(1610612741), //0-30 indexes
|
291
|
+
#if BOOST_INTRUSIVE_64_BIT_SIZE_T
|
292
|
+
//Taken from Boost.MultiIndex code, thanks to Joaquin M. Lopez Munoz.
|
293
|
+
BOOST_INTRUSIVE_SIZE_C(3221225473), //<- 32 bit values stop here (index 31)
|
294
|
+
BOOST_INTRUSIVE_SIZE_C(6442450939), BOOST_INTRUSIVE_SIZE_C(12884901893),
|
295
|
+
BOOST_INTRUSIVE_SIZE_C(25769803751), BOOST_INTRUSIVE_SIZE_C(51539607551),
|
296
|
+
BOOST_INTRUSIVE_SIZE_C(103079215111), BOOST_INTRUSIVE_SIZE_C(206158430209),
|
297
|
+
BOOST_INTRUSIVE_SIZE_C(412316860441), BOOST_INTRUSIVE_SIZE_C(824633720831),
|
298
|
+
BOOST_INTRUSIVE_SIZE_C(1649267441651), BOOST_INTRUSIVE_SIZE_C(3298534883309),
|
299
|
+
BOOST_INTRUSIVE_SIZE_C(6597069766657), BOOST_INTRUSIVE_SIZE_C(13194139533299),
|
300
|
+
BOOST_INTRUSIVE_SIZE_C(26388279066623), BOOST_INTRUSIVE_SIZE_C(52776558133303),
|
301
|
+
BOOST_INTRUSIVE_SIZE_C(105553116266489), BOOST_INTRUSIVE_SIZE_C(211106232532969),
|
302
|
+
BOOST_INTRUSIVE_SIZE_C(422212465066001), BOOST_INTRUSIVE_SIZE_C(844424930131963),
|
303
|
+
BOOST_INTRUSIVE_SIZE_C(1688849860263953), BOOST_INTRUSIVE_SIZE_C(3377699720527861),
|
304
|
+
BOOST_INTRUSIVE_SIZE_C(6755399441055731), BOOST_INTRUSIVE_SIZE_C(13510798882111483),
|
305
|
+
BOOST_INTRUSIVE_SIZE_C(27021597764222939), BOOST_INTRUSIVE_SIZE_C(54043195528445957),
|
306
|
+
BOOST_INTRUSIVE_SIZE_C(108086391056891903), BOOST_INTRUSIVE_SIZE_C(216172782113783843),
|
307
|
+
BOOST_INTRUSIVE_SIZE_C(432345564227567621), BOOST_INTRUSIVE_SIZE_C(864691128455135207),
|
308
|
+
BOOST_INTRUSIVE_SIZE_C(1729382256910270481), BOOST_INTRUSIVE_SIZE_C(3458764513820540933),
|
309
|
+
BOOST_INTRUSIVE_SIZE_C(6917529027641081903), BOOST_INTRUSIVE_SIZE_C(9223372036854775783) //(index 63)
|
310
|
+
#else
|
311
|
+
BOOST_INTRUSIVE_SIZE_C(2147483647) //<- 32 bit stops here (index 31) as ptrdiff_t is signed
|
312
|
+
#endif
|
313
|
+
};
|
314
|
+
|
315
|
+
template<int Dummy>
|
316
|
+
const std::size_t prime_list_holder<Dummy>::prime_list_size
|
317
|
+
= sizeof(prime_list) / sizeof(std::size_t);
|
318
|
+
|
319
|
+
|
320
|
+
#if BOOST_INTRUSIVE_64_BIT_SIZE_T
|
321
|
+
|
322
|
+
template<int Dummy>
|
323
|
+
const uint64_t prime_list_holder<Dummy>::inv_sizes32[] = {
|
324
|
+
BOOST_INTRUSIVE_SIZE_C(6148914691236517206), //3
|
325
|
+
BOOST_INTRUSIVE_SIZE_C(2635249153387078803), //7
|
326
|
+
BOOST_INTRUSIVE_SIZE_C(1676976733973595602), //11
|
327
|
+
BOOST_INTRUSIVE_SIZE_C(1085102592571150096), //17
|
328
|
+
BOOST_INTRUSIVE_SIZE_C(636094623231363849), //29
|
329
|
+
BOOST_INTRUSIVE_SIZE_C(348051774975651918), //53
|
330
|
+
BOOST_INTRUSIVE_SIZE_C(190172619316593316), //97
|
331
|
+
BOOST_INTRUSIVE_SIZE_C(95578984837873325), //193
|
332
|
+
BOOST_INTRUSIVE_SIZE_C(47420935922132524), //389
|
333
|
+
BOOST_INTRUSIVE_SIZE_C(23987963684927896), //769
|
334
|
+
BOOST_INTRUSIVE_SIZE_C(11955116055547344), //1543
|
335
|
+
BOOST_INTRUSIVE_SIZE_C(5991147799191151), //3079
|
336
|
+
BOOST_INTRUSIVE_SIZE_C(2998982941588287), //6151
|
337
|
+
BOOST_INTRUSIVE_SIZE_C(1501077717772769), //12289
|
338
|
+
BOOST_INTRUSIVE_SIZE_C(750081082979285), //24593
|
339
|
+
BOOST_INTRUSIVE_SIZE_C(375261795343686), //49157
|
340
|
+
BOOST_INTRUSIVE_SIZE_C(187625172388393), //98317
|
341
|
+
BOOST_INTRUSIVE_SIZE_C(93822606204624), //196613
|
342
|
+
BOOST_INTRUSIVE_SIZE_C(46909513691883), //393241
|
343
|
+
BOOST_INTRUSIVE_SIZE_C(23456218233098), //786433
|
344
|
+
BOOST_INTRUSIVE_SIZE_C(11728086747027), //1572869
|
345
|
+
BOOST_INTRUSIVE_SIZE_C(5864041509391), //3145739
|
346
|
+
BOOST_INTRUSIVE_SIZE_C(2932024948977), //6291469
|
347
|
+
BOOST_INTRUSIVE_SIZE_C(1466014921160), //12582917
|
348
|
+
BOOST_INTRUSIVE_SIZE_C(733007198436), //25165843
|
349
|
+
BOOST_INTRUSIVE_SIZE_C(366503839517), //50331653
|
350
|
+
BOOST_INTRUSIVE_SIZE_C(183251896093), //100663319
|
351
|
+
BOOST_INTRUSIVE_SIZE_C(91625960335), //201326611
|
352
|
+
BOOST_INTRUSIVE_SIZE_C(45812983922), //402653189
|
353
|
+
BOOST_INTRUSIVE_SIZE_C(22906489714), //805306457
|
354
|
+
BOOST_INTRUSIVE_SIZE_C(11453246088), //1610612741
|
355
|
+
BOOST_INTRUSIVE_SIZE_C(5726623060) //3221225473
|
356
|
+
};
|
357
|
+
|
358
|
+
template<int Dummy>
|
359
|
+
const std::size_t prime_list_holder<Dummy>::inv_sizes32_size
|
360
|
+
= sizeof(inv_sizes32) / sizeof(uint64_t);
|
361
|
+
|
362
|
+
#endif // BOOST_INTRUSIVE_64_BIT_SIZE_T
|
363
|
+
|
364
|
+
struct prime_fmod_size : prime_list_holder<>
|
365
|
+
{
|
366
|
+
};
|
367
|
+
|
368
|
+
|
369
|
+
#undef BOOST_INTRUSIVE_SIZE_C
|
370
|
+
#undef BOOST_INTRUSIVE_64_BIT_SIZE_T
|
371
|
+
|
372
|
+
#endif //#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
373
|
+
|
374
|
+
|
375
|
+
|
59
376
|
template<class InputIt, class T>
|
60
377
|
InputIt priv_algo_find(InputIt first, InputIt last, const T& value)
|
61
378
|
{
|
62
379
|
for (; first != last; ++first) {
|
63
380
|
if (*first == value) {
|
64
|
-
|
381
|
+
return first;
|
65
382
|
}
|
66
383
|
}
|
67
384
|
return last;
|
@@ -105,242 +422,169 @@ bool priv_algo_is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, F
|
|
105
422
|
continue; //We've seen this one before.
|
106
423
|
}
|
107
424
|
distance_type matches = (priv_algo_count)(first2, last2, *scan);
|
108
|
-
if (0 == matches || (priv_algo_count)(scan, last1, *scan
|
425
|
+
if (0 == matches || (priv_algo_count)(scan, last1, *scan) != matches){
|
109
426
|
return false;
|
110
427
|
}
|
111
428
|
}
|
112
429
|
return true;
|
113
430
|
}
|
114
431
|
|
115
|
-
|
116
|
-
struct prime_list_holder
|
432
|
+
struct hash_bool_flags
|
117
433
|
{
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
static
|
122
|
-
|
123
|
-
|
124
|
-
|
434
|
+
static const std::size_t unique_keys_pos = 1u;
|
435
|
+
static const std::size_t constant_time_size_pos = 2u;
|
436
|
+
static const std::size_t power_2_buckets_pos = 4u;
|
437
|
+
static const std::size_t cache_begin_pos = 8u;
|
438
|
+
static const std::size_t compare_hash_pos = 16u;
|
439
|
+
static const std::size_t incremental_pos = 32u;
|
440
|
+
static const std::size_t linear_buckets_pos = 64u;
|
441
|
+
static const std::size_t fastmod_buckets_pos = 128u;
|
442
|
+
};
|
125
443
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
444
|
+
template<class Bucket, class Algo, class Disposer, class SizeType>
|
445
|
+
class exception_bucket_disposer
|
446
|
+
{
|
447
|
+
Bucket *cont_;
|
448
|
+
Disposer &disp_;
|
449
|
+
const SizeType &constructed_;
|
131
450
|
|
132
|
-
|
133
|
-
|
134
|
-
{
|
135
|
-
std::size_t const c = n > std::size_t(-1)
|
136
|
-
? std::size_t(-1)
|
137
|
-
: suggested_upper_bucket_count_impl(static_cast<std::size_t>(n));
|
138
|
-
return static_cast<SizeType>(c);
|
139
|
-
}
|
451
|
+
exception_bucket_disposer(const exception_bucket_disposer&);
|
452
|
+
exception_bucket_disposer &operator=(const exception_bucket_disposer&);
|
140
453
|
|
141
|
-
|
142
|
-
static BOOST_INTRUSIVE_FORCEINLINE SizeType suggested_lower_bucket_count_dispatch(SizeType n, detail::true_)
|
143
|
-
{
|
144
|
-
std::size_t const c = n > std::size_t(-1)
|
145
|
-
? std::size_t(-1)
|
146
|
-
: suggested_lower_bucket_count_impl(static_cast<std::size_t>(n));
|
147
|
-
return static_cast<SizeType>(c);
|
148
|
-
}
|
454
|
+
public:
|
149
455
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
return truncate_size_type<SizeType>(c, detail::bool_<(sizeof(SizeType) < sizeof(std::size_t))>());
|
456
|
+
exception_bucket_disposer
|
457
|
+
(Bucket &cont, Disposer &disp, const SizeType &constructed)
|
458
|
+
: cont_(&cont), disp_(disp), constructed_(constructed)
|
459
|
+
{}
|
155
460
|
|
156
|
-
|
461
|
+
inline void release()
|
462
|
+
{ cont_ = 0; }
|
157
463
|
|
158
|
-
|
159
|
-
static BOOST_INTRUSIVE_FORCEINLINE SizeType suggested_lower_bucket_count_dispatch(SizeType n, detail::false_)
|
464
|
+
~exception_bucket_disposer()
|
160
465
|
{
|
161
|
-
|
162
|
-
|
466
|
+
SizeType n = constructed_;
|
467
|
+
if(cont_){
|
468
|
+
while(n--){
|
469
|
+
Algo::detach_and_dispose(cont_[n].get_node_ptr(), disp_);
|
470
|
+
}
|
471
|
+
}
|
163
472
|
}
|
473
|
+
};
|
164
474
|
|
165
|
-
|
166
|
-
|
475
|
+
template<class SupposedValueTraits>
|
476
|
+
struct unordered_bucket_impl
|
477
|
+
{
|
478
|
+
typedef typename detail::get_node_traits
|
479
|
+
<SupposedValueTraits>::type node_traits;
|
480
|
+
typedef typename reduced_slist_node_traits
|
481
|
+
<node_traits>::type reduced_node_traits;
|
482
|
+
typedef bucket_impl<reduced_node_traits> type;
|
167
483
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
std::size_t const* bound = std::lower_bound(primes, primes_end, n);
|
173
|
-
//Tables have upper SIZE_MAX, so we must always found an entry
|
174
|
-
BOOST_INTRUSIVE_INVARIANT_ASSERT(bound != primes_end);
|
175
|
-
bound -= std::size_t(bound != primes);
|
176
|
-
return *bound;
|
177
|
-
}
|
484
|
+
typedef typename pointer_traits
|
485
|
+
<typename reduced_node_traits::node_ptr>
|
486
|
+
::template rebind_pointer<type>::type pointer;
|
487
|
+
};
|
178
488
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
bound -= std::size_t(bound == primes_end);
|
185
|
-
return *bound;
|
186
|
-
}
|
489
|
+
template<class SupposedValueTraits>
|
490
|
+
struct unordered_bucket_ptr_impl
|
491
|
+
{
|
492
|
+
typedef typename unordered_bucket_impl<SupposedValueTraits>::pointer type;
|
493
|
+
};
|
187
494
|
|
188
|
-
public:
|
189
495
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
496
|
+
template <class BucketPtr, class SizeType>
|
497
|
+
struct bucket_traits_impl
|
498
|
+
{
|
499
|
+
private:
|
500
|
+
BOOST_COPYABLE_AND_MOVABLE(bucket_traits_impl)
|
195
501
|
|
196
|
-
|
197
|
-
|
198
|
-
{
|
199
|
-
return (suggested_lower_bucket_count_dispatch)(n, detail::bool_<(sizeof(SizeType) > sizeof(std::size_t))>());
|
200
|
-
}
|
201
|
-
};
|
502
|
+
public:
|
503
|
+
/// @cond
|
202
504
|
|
203
|
-
|
505
|
+
typedef BucketPtr bucket_ptr;
|
506
|
+
typedef SizeType size_type;
|
204
507
|
|
205
|
-
|
206
|
-
#ifdef _WIN64 //In 64 bit windows sizeof(size_t) == sizeof(unsigned long long)
|
207
|
-
#define BOOST_INTRUSIVE_PRIME_C(NUMBER) NUMBER##ULL
|
208
|
-
#define BOOST_INTRUSIVE_64_BIT_SIZE_T 1
|
209
|
-
#else //In 32 bit windows and 32/64 bit unixes sizeof(size_t) == sizeof(unsigned long)
|
210
|
-
#define BOOST_INTRUSIVE_PRIME_C(NUMBER) NUMBER##UL
|
211
|
-
#define BOOST_INTRUSIVE_64_BIT_SIZE_T (((((ULONG_MAX>>16)>>16)>>16)>>15) != 0)
|
212
|
-
#endif
|
508
|
+
/// @endcond
|
213
509
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
BOOST_INTRUSIVE_PRIME_C(11), BOOST_INTRUSIVE_PRIME_C(17),
|
218
|
-
BOOST_INTRUSIVE_PRIME_C(29), BOOST_INTRUSIVE_PRIME_C(53),
|
219
|
-
BOOST_INTRUSIVE_PRIME_C(97), BOOST_INTRUSIVE_PRIME_C(193),
|
220
|
-
BOOST_INTRUSIVE_PRIME_C(389), BOOST_INTRUSIVE_PRIME_C(769),
|
221
|
-
BOOST_INTRUSIVE_PRIME_C(1543), BOOST_INTRUSIVE_PRIME_C(3079),
|
222
|
-
BOOST_INTRUSIVE_PRIME_C(6151), BOOST_INTRUSIVE_PRIME_C(12289),
|
223
|
-
BOOST_INTRUSIVE_PRIME_C(24593), BOOST_INTRUSIVE_PRIME_C(49157),
|
224
|
-
BOOST_INTRUSIVE_PRIME_C(98317), BOOST_INTRUSIVE_PRIME_C(196613),
|
225
|
-
BOOST_INTRUSIVE_PRIME_C(393241), BOOST_INTRUSIVE_PRIME_C(786433),
|
226
|
-
BOOST_INTRUSIVE_PRIME_C(1572869), BOOST_INTRUSIVE_PRIME_C(3145739),
|
227
|
-
BOOST_INTRUSIVE_PRIME_C(6291469), BOOST_INTRUSIVE_PRIME_C(12582917),
|
228
|
-
BOOST_INTRUSIVE_PRIME_C(25165843), BOOST_INTRUSIVE_PRIME_C(50331653),
|
229
|
-
BOOST_INTRUSIVE_PRIME_C(100663319), BOOST_INTRUSIVE_PRIME_C(201326611),
|
230
|
-
BOOST_INTRUSIVE_PRIME_C(402653189), BOOST_INTRUSIVE_PRIME_C(805306457),
|
231
|
-
BOOST_INTRUSIVE_PRIME_C(1610612741), BOOST_INTRUSIVE_PRIME_C(3221225473),
|
232
|
-
#if BOOST_INTRUSIVE_64_BIT_SIZE_T
|
233
|
-
//Taken from Boost.MultiIndex code, thanks to Joaquin M Lopez Munoz.
|
234
|
-
BOOST_INTRUSIVE_PRIME_C(6442450939), BOOST_INTRUSIVE_PRIME_C(12884901893),
|
235
|
-
BOOST_INTRUSIVE_PRIME_C(25769803751), BOOST_INTRUSIVE_PRIME_C(51539607551),
|
236
|
-
BOOST_INTRUSIVE_PRIME_C(103079215111), BOOST_INTRUSIVE_PRIME_C(206158430209),
|
237
|
-
BOOST_INTRUSIVE_PRIME_C(412316860441), BOOST_INTRUSIVE_PRIME_C(824633720831),
|
238
|
-
BOOST_INTRUSIVE_PRIME_C(1649267441651), BOOST_INTRUSIVE_PRIME_C(3298534883309),
|
239
|
-
BOOST_INTRUSIVE_PRIME_C(6597069766657), BOOST_INTRUSIVE_PRIME_C(13194139533299),
|
240
|
-
BOOST_INTRUSIVE_PRIME_C(26388279066623), BOOST_INTRUSIVE_PRIME_C(52776558133303),
|
241
|
-
BOOST_INTRUSIVE_PRIME_C(105553116266489), BOOST_INTRUSIVE_PRIME_C(211106232532969),
|
242
|
-
BOOST_INTRUSIVE_PRIME_C(422212465066001), BOOST_INTRUSIVE_PRIME_C(844424930131963),
|
243
|
-
BOOST_INTRUSIVE_PRIME_C(1688849860263953), BOOST_INTRUSIVE_PRIME_C(3377699720527861),
|
244
|
-
BOOST_INTRUSIVE_PRIME_C(6755399441055731), BOOST_INTRUSIVE_PRIME_C(13510798882111483),
|
245
|
-
BOOST_INTRUSIVE_PRIME_C(27021597764222939), BOOST_INTRUSIVE_PRIME_C(54043195528445957),
|
246
|
-
BOOST_INTRUSIVE_PRIME_C(108086391056891903), BOOST_INTRUSIVE_PRIME_C(216172782113783843),
|
247
|
-
BOOST_INTRUSIVE_PRIME_C(432345564227567621), BOOST_INTRUSIVE_PRIME_C(864691128455135207),
|
248
|
-
BOOST_INTRUSIVE_PRIME_C(1729382256910270481), BOOST_INTRUSIVE_PRIME_C(3458764513820540933),
|
249
|
-
BOOST_INTRUSIVE_PRIME_C(6917529027641081903), BOOST_INTRUSIVE_PRIME_C(13835058055282163729),
|
250
|
-
BOOST_INTRUSIVE_PRIME_C(18446744073709551557), BOOST_INTRUSIVE_PRIME_C(18446744073709551615) //Upper limit, just in case
|
251
|
-
#else
|
252
|
-
BOOST_INTRUSIVE_PRIME_C(4294967291), BOOST_INTRUSIVE_PRIME_C(4294967295) //Upper limit, just in case
|
253
|
-
#endif
|
254
|
-
};
|
510
|
+
inline bucket_traits_impl(bucket_ptr buckets, size_type len)
|
511
|
+
: buckets_(buckets), buckets_len_(len)
|
512
|
+
{}
|
255
513
|
|
256
|
-
|
257
|
-
|
514
|
+
inline bucket_traits_impl(const bucket_traits_impl& x)
|
515
|
+
: buckets_(x.buckets_), buckets_len_(x.buckets_len_)
|
516
|
+
{}
|
258
517
|
|
259
|
-
|
518
|
+
inline bucket_traits_impl(BOOST_RV_REF(bucket_traits_impl) x)
|
519
|
+
: buckets_(x.buckets_), buckets_len_(x.buckets_len_)
|
520
|
+
{
|
521
|
+
x.buckets_ = bucket_ptr(); x.buckets_len_ = 0u;
|
522
|
+
}
|
260
523
|
|
261
|
-
|
262
|
-
|
263
|
-
|
524
|
+
inline bucket_traits_impl& operator=(BOOST_RV_REF(bucket_traits_impl) x)
|
525
|
+
{
|
526
|
+
buckets_ = x.buckets_; buckets_len_ = x.buckets_len_;
|
527
|
+
x.buckets_ = bucket_ptr(); x.buckets_len_ = 0u; return *this;
|
528
|
+
}
|
264
529
|
|
265
|
-
|
266
|
-
{
|
267
|
-
|
268
|
-
|
269
|
-
static const std::size_t power_2_buckets_pos = 4u;
|
270
|
-
static const std::size_t cache_begin_pos = 8u;
|
271
|
-
static const std::size_t compare_hash_pos = 16u;
|
272
|
-
static const std::size_t incremental_pos = 32u;
|
273
|
-
};
|
530
|
+
inline bucket_traits_impl& operator=(BOOST_COPY_ASSIGN_REF(bucket_traits_impl) x)
|
531
|
+
{
|
532
|
+
buckets_ = x.buckets_; buckets_len_ = x.buckets_len_; return *this;
|
533
|
+
}
|
274
534
|
|
275
|
-
|
535
|
+
inline bucket_ptr bucket_begin() const
|
536
|
+
{
|
537
|
+
return buckets_;
|
538
|
+
}
|
276
539
|
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
typedef typename detail::get_node_traits
|
282
|
-
<value_traits>::type node_traits;
|
283
|
-
typedef typename get_slist_impl
|
284
|
-
<typename reduced_slist_node_traits
|
285
|
-
<node_traits>::type
|
286
|
-
>::type type;
|
287
|
-
};
|
540
|
+
inline size_type bucket_count() const BOOST_NOEXCEPT
|
541
|
+
{
|
542
|
+
return buckets_len_;
|
543
|
+
}
|
288
544
|
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
typedef typename
|
293
|
-
get_slist_impl_from_supposed_value_traits
|
294
|
-
<SupposedValueTraits>::type slist_impl;
|
295
|
-
typedef detail::bucket_impl<slist_impl> implementation_defined;
|
296
|
-
typedef implementation_defined type;
|
545
|
+
private:
|
546
|
+
bucket_ptr buckets_;
|
547
|
+
size_type buckets_len_;
|
297
548
|
};
|
298
549
|
|
299
|
-
template<class SupposedValueTraits>
|
300
|
-
struct unordered_bucket_ptr_impl
|
301
|
-
{
|
302
|
-
typedef typename detail::get_node_traits
|
303
|
-
<SupposedValueTraits>::type::node_ptr node_ptr;
|
304
|
-
typedef typename unordered_bucket_impl
|
305
|
-
<SupposedValueTraits>::type bucket_type;
|
306
|
-
|
307
|
-
typedef typename pointer_traits
|
308
|
-
<node_ptr>::template rebind_pointer
|
309
|
-
< bucket_type >::type implementation_defined;
|
310
|
-
typedef implementation_defined type;
|
311
|
-
};
|
312
550
|
|
313
551
|
template <class T>
|
314
552
|
struct store_hash_is_true
|
315
553
|
{
|
316
554
|
template<bool Add>
|
317
|
-
struct two_or_three {yes_type _[
|
318
|
-
template <class U> static yes_type test(...);
|
555
|
+
struct two_or_three {detail::yes_type _[2u + (unsigned)Add];};
|
556
|
+
template <class U> static detail::yes_type test(...);
|
319
557
|
template <class U> static two_or_three<U::store_hash> test (int);
|
320
|
-
static const bool value = sizeof(test<T>(0)) > sizeof(yes_type)*
|
558
|
+
static const bool value = sizeof(test<T>(0)) > sizeof(detail::yes_type)*2u;
|
321
559
|
};
|
322
560
|
|
323
561
|
template <class T>
|
324
562
|
struct optimize_multikey_is_true
|
325
563
|
{
|
326
564
|
template<bool Add>
|
327
|
-
struct two_or_three {yes_type _[
|
328
|
-
template <class U> static yes_type test(...);
|
565
|
+
struct two_or_three { detail::yes_type _[2u + (unsigned)Add];};
|
566
|
+
template <class U> static detail::yes_type test(...);
|
329
567
|
template <class U> static two_or_three<U::optimize_multikey> test (int);
|
330
|
-
static const bool value = sizeof(test<T>(0)) > sizeof(yes_type)*
|
568
|
+
static const bool value = sizeof(test<T>(0)) > sizeof(detail::yes_type)*2u;
|
331
569
|
};
|
332
570
|
|
333
571
|
struct insert_commit_data_impl
|
334
572
|
{
|
335
573
|
std::size_t hash;
|
574
|
+
std::size_t bucket_idx;
|
575
|
+
inline std::size_t get_hash() const
|
576
|
+
{ return hash; }
|
577
|
+
|
578
|
+
inline void set_hash(std::size_t h)
|
579
|
+
{ hash = h; }
|
336
580
|
};
|
337
581
|
|
338
582
|
template<class Node, class SlistNodePtr>
|
339
|
-
|
583
|
+
inline typename pointer_traits<SlistNodePtr>::template rebind_pointer<Node>::type
|
340
584
|
dcast_bucket_ptr(const SlistNodePtr &p)
|
341
585
|
{
|
342
586
|
typedef typename pointer_traits<SlistNodePtr>::template rebind_pointer<Node>::type node_ptr;
|
343
|
-
return pointer_traits<node_ptr>::
|
587
|
+
return pointer_traits<node_ptr>::static_cast_from(p);
|
344
588
|
}
|
345
589
|
|
346
590
|
template<class NodeTraits>
|
@@ -375,21 +619,22 @@ struct group_functions
|
|
375
619
|
typedef circular_slist_algorithms<node_traits> node_algorithms;
|
376
620
|
|
377
621
|
static slist_node_ptr get_bucket_before_begin
|
378
|
-
(
|
622
|
+
(slist_node_ptr bucket_beg, slist_node_ptr bucket_last, slist_node_ptr sp, detail::true_)
|
379
623
|
{
|
380
624
|
//First find the last node of p's group.
|
381
625
|
//This requires checking the first node of the next group or
|
382
626
|
//the bucket node.
|
627
|
+
node_ptr p = dcast_bucket_ptr<node>(sp);
|
383
628
|
node_ptr prev_node = p;
|
384
629
|
node_ptr nxt(node_traits::get_next(p));
|
385
|
-
while(!(bucket_beg <= nxt && nxt <=
|
630
|
+
while(!(bucket_beg <= nxt && nxt <= bucket_last) &&
|
386
631
|
(group_traits::get_next(nxt) == prev_node)){
|
387
632
|
prev_node = nxt;
|
388
633
|
nxt = node_traits::get_next(nxt);
|
389
634
|
}
|
390
635
|
|
391
636
|
//If we've reached the bucket node just return it.
|
392
|
-
if(bucket_beg <= nxt && nxt <=
|
637
|
+
if(bucket_beg <= nxt && nxt <= bucket_last){
|
393
638
|
return nxt;
|
394
639
|
}
|
395
640
|
|
@@ -398,17 +643,28 @@ struct group_functions
|
|
398
643
|
node_ptr last_node_group = group_traits::get_next(first_node_of_group);
|
399
644
|
slist_node_ptr possible_end = node_traits::get_next(last_node_group);
|
400
645
|
|
401
|
-
while(!(bucket_beg <= possible_end && possible_end <=
|
402
|
-
first_node_of_group =
|
646
|
+
while(!(bucket_beg <= possible_end && possible_end <= bucket_last)){
|
647
|
+
first_node_of_group = dcast_bucket_ptr<node>(possible_end);
|
403
648
|
last_node_group = group_traits::get_next(first_node_of_group);
|
404
649
|
possible_end = node_traits::get_next(last_node_group);
|
405
650
|
}
|
406
651
|
return possible_end;
|
407
652
|
}
|
408
653
|
|
409
|
-
static
|
654
|
+
static slist_node_ptr get_bucket_before_begin
|
655
|
+
(slist_node_ptr bucket_beg, slist_node_ptr bucket_last, slist_node_ptr sp, detail::false_)
|
410
656
|
{
|
411
|
-
|
657
|
+
//The end node is embedded in the singly linked list:
|
658
|
+
//iterate until we reach it.
|
659
|
+
while (!(bucket_beg <= sp && sp <= bucket_last)){
|
660
|
+
sp = reduced_node_traits::get_next(sp);
|
661
|
+
}
|
662
|
+
return sp;
|
663
|
+
}
|
664
|
+
|
665
|
+
static node_ptr get_prev_to_first_in_group(slist_node_ptr bucket_node, node_ptr first_in_group)
|
666
|
+
{
|
667
|
+
node_ptr nb = dcast_bucket_ptr<node>(bucket_node);
|
412
668
|
node_ptr n;
|
413
669
|
while((n = node_traits::get_next(nb)) != first_in_group){
|
414
670
|
nb = group_traits::get_next(n); //go to last in group
|
@@ -416,7 +672,7 @@ struct group_functions
|
|
416
672
|
return nb;
|
417
673
|
}
|
418
674
|
|
419
|
-
static void erase_from_group(
|
675
|
+
static void erase_from_group(slist_node_ptr end_ptr, node_ptr to_erase_ptr, detail::true_)
|
420
676
|
{
|
421
677
|
node_ptr const nxt_ptr(node_traits::get_next(to_erase_ptr));
|
422
678
|
//Check if the next node is in the group (not end node) and reverse linked to
|
@@ -426,13 +682,13 @@ struct group_functions
|
|
426
682
|
}
|
427
683
|
}
|
428
684
|
|
429
|
-
|
685
|
+
inline static void erase_from_group(slist_node_ptr, node_ptr, detail::false_)
|
430
686
|
{}
|
431
687
|
|
432
|
-
|
688
|
+
inline static node_ptr get_last_in_group(node_ptr first_in_group, detail::true_)
|
433
689
|
{ return group_traits::get_next(first_in_group); }
|
434
690
|
|
435
|
-
|
691
|
+
inline static node_ptr get_last_in_group(node_ptr n, detail::false_)
|
436
692
|
{ return n; }
|
437
693
|
|
438
694
|
static node_ptr get_first_in_group(node_ptr n, detail::true_)
|
@@ -444,33 +700,35 @@ struct group_functions
|
|
444
700
|
return n;
|
445
701
|
}
|
446
702
|
|
447
|
-
|
448
|
-
{
|
449
|
-
return node_traits::get_next(group_traits::get_next(ptr));
|
450
|
-
}
|
451
|
-
|
452
|
-
BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_first_in_group(const node_ptr &n, detail::false_)
|
703
|
+
inline static node_ptr get_first_in_group(node_ptr n, detail::false_)
|
453
704
|
{ return n; }
|
454
705
|
|
455
|
-
|
706
|
+
inline static bool is_first_in_group(node_ptr ptr)
|
707
|
+
{ return node_traits::get_next(group_traits::get_next(ptr)) != ptr; }
|
708
|
+
|
709
|
+
|
710
|
+
inline static void insert_in_group(node_ptr first_in_group, node_ptr n, detail::true_)
|
456
711
|
{ group_algorithms::link_after(first_in_group, n); }
|
457
712
|
|
458
|
-
static void insert_in_group(
|
713
|
+
inline static void insert_in_group(node_ptr, node_ptr, detail::false_)
|
459
714
|
{}
|
460
715
|
|
461
|
-
|
716
|
+
//Splits a group in two groups, and makes "new_first" the first node in the second group.
|
717
|
+
//Returns the first element of the first group
|
718
|
+
static node_ptr split_group(node_ptr const new_first)
|
462
719
|
{
|
463
|
-
node_ptr const
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
group_traits::set_next(
|
720
|
+
node_ptr const old_first((get_first_in_group)(new_first, detail::true_()));
|
721
|
+
//Check new_first was not the first in group
|
722
|
+
if(old_first != new_first){
|
723
|
+
node_ptr const last = group_traits::get_next(old_first);
|
724
|
+
group_traits::set_next(old_first, group_traits::get_next(new_first));
|
725
|
+
group_traits::set_next(new_first, last);
|
468
726
|
}
|
469
|
-
return
|
727
|
+
return old_first;
|
470
728
|
}
|
471
729
|
};
|
472
730
|
|
473
|
-
template<class BucketType, class SplitTraits>
|
731
|
+
template<class BucketType, class SplitTraits, class SlistNodeAlgorithms>
|
474
732
|
class incremental_rehash_rollback
|
475
733
|
{
|
476
734
|
private:
|
@@ -483,12 +741,12 @@ class incremental_rehash_rollback
|
|
483
741
|
|
484
742
|
public:
|
485
743
|
incremental_rehash_rollback
|
486
|
-
(bucket_type &source_bucket, bucket_type &destiny_bucket, split_traits &
|
744
|
+
(bucket_type &source_bucket, bucket_type &destiny_bucket, split_traits &split_tr)
|
487
745
|
: source_bucket_(source_bucket), destiny_bucket_(destiny_bucket)
|
488
|
-
, split_traits_(
|
746
|
+
, split_traits_(split_tr), released_(false)
|
489
747
|
{}
|
490
748
|
|
491
|
-
|
749
|
+
inline void release()
|
492
750
|
{ released_ = true; }
|
493
751
|
|
494
752
|
~incremental_rehash_rollback()
|
@@ -496,7 +754,7 @@ class incremental_rehash_rollback
|
|
496
754
|
if(!released_){
|
497
755
|
//If an exception is thrown, just put all moved nodes back in the old bucket
|
498
756
|
//and move back the split mark.
|
499
|
-
|
757
|
+
SlistNodeAlgorithms::transfer_after(destiny_bucket_.get_node_ptr(), source_bucket_.get_node_ptr());
|
500
758
|
split_traits_.decrement();
|
501
759
|
}
|
502
760
|
}
|
@@ -511,39 +769,42 @@ class incremental_rehash_rollback
|
|
511
769
|
template<class NodeTraits>
|
512
770
|
struct node_functions
|
513
771
|
{
|
514
|
-
|
772
|
+
inline static void store_hash(typename NodeTraits::node_ptr p, std::size_t h, detail::true_)
|
515
773
|
{ return NodeTraits::set_hash(p, h); }
|
516
774
|
|
517
|
-
|
775
|
+
inline static void store_hash(typename NodeTraits::node_ptr, std::size_t, detail::false_)
|
518
776
|
{}
|
519
777
|
};
|
520
778
|
|
521
|
-
|
779
|
+
inline std::size_t hash_to_bucket(std::size_t hash_value, std::size_t bucket_cnt, detail::false_)
|
522
780
|
{ return hash_value % bucket_cnt; }
|
523
781
|
|
524
|
-
|
782
|
+
inline std::size_t hash_to_bucket(std::size_t hash_value, std::size_t bucket_cnt, detail::true_)
|
525
783
|
{ return hash_value & (bucket_cnt - 1); }
|
526
784
|
|
527
|
-
template<bool Power2Buckets, bool Incremental>
|
528
|
-
|
785
|
+
template<bool Power2Buckets, bool Incremental> //!fastmod_buckets
|
786
|
+
inline std::size_t hash_to_bucket_split(std::size_t hash_value, std::size_t bucket_cnt, std::size_t split, detail::false_)
|
529
787
|
{
|
530
|
-
std::size_t bucket_number =
|
531
|
-
|
788
|
+
std::size_t bucket_number = hash_to_bucket(hash_value, bucket_cnt, detail::bool_<Power2Buckets>());
|
789
|
+
BOOST_IF_CONSTEXPR(Incremental)
|
532
790
|
bucket_number -= static_cast<std::size_t>(bucket_number >= split)*(bucket_cnt/2);
|
533
791
|
return bucket_number;
|
534
792
|
}
|
535
793
|
|
536
|
-
|
794
|
+
template<bool Power2Buckets, bool Incremental> //fastmod_buckets
|
795
|
+
inline std::size_t hash_to_bucket_split(std::size_t hash_value, std::size_t , std::size_t split, detail::true_)
|
796
|
+
{
|
797
|
+
return prime_fmod_size::position(hash_value, split);
|
798
|
+
}
|
537
799
|
|
538
800
|
//!This metafunction will obtain the type of a bucket
|
539
801
|
//!from the value_traits or hook option to be used with
|
540
802
|
//!a hash container.
|
541
803
|
template<class ValueTraitsOrHookOption>
|
542
804
|
struct unordered_bucket
|
543
|
-
: public
|
544
|
-
<typename ValueTraitsOrHookOption::
|
545
|
-
template pack<empty>::proto_value_traits
|
546
|
-
>
|
805
|
+
: public unordered_bucket_impl
|
806
|
+
< typename ValueTraitsOrHookOption::
|
807
|
+
template pack<empty>::proto_value_traits>
|
547
808
|
{};
|
548
809
|
|
549
810
|
//!This metafunction will obtain the type of a bucket pointer
|
@@ -551,10 +812,9 @@ struct unordered_bucket
|
|
551
812
|
//!a hash container.
|
552
813
|
template<class ValueTraitsOrHookOption>
|
553
814
|
struct unordered_bucket_ptr
|
554
|
-
: public
|
555
|
-
<typename ValueTraitsOrHookOption::
|
556
|
-
template pack<empty>::proto_value_traits
|
557
|
-
>
|
815
|
+
: public unordered_bucket_ptr_impl
|
816
|
+
< typename ValueTraitsOrHookOption::
|
817
|
+
template pack<empty>::proto_value_traits>
|
558
818
|
{};
|
559
819
|
|
560
820
|
//!This metafunction will obtain the type of the default bucket traits
|
@@ -565,13 +825,12 @@ template<class ValueTraitsOrHookOption>
|
|
565
825
|
struct unordered_default_bucket_traits
|
566
826
|
{
|
567
827
|
typedef typename ValueTraitsOrHookOption::
|
568
|
-
template pack<empty>::proto_value_traits
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
typedef implementation_defined type;
|
828
|
+
template pack<empty>::proto_value_traits supposed_value_traits;
|
829
|
+
|
830
|
+
typedef bucket_traits_impl
|
831
|
+
< typename unordered_bucket_ptr_impl
|
832
|
+
<supposed_value_traits>::type
|
833
|
+
, std::size_t> type;
|
575
834
|
};
|
576
835
|
|
577
836
|
struct default_bucket_traits;
|
@@ -597,34 +856,34 @@ struct hashtable_defaults
|
|
597
856
|
static const bool cache_begin = false;
|
598
857
|
static const bool compare_hash = false;
|
599
858
|
static const bool incremental = false;
|
859
|
+
static const bool linear_buckets = false;
|
860
|
+
static const bool fastmod_buckets = false;
|
600
861
|
};
|
601
862
|
|
602
863
|
template<class ValueTraits, bool IsConst>
|
603
864
|
struct downcast_node_to_value_t
|
604
865
|
: public detail::node_to_value<ValueTraits, IsConst>
|
605
866
|
{
|
606
|
-
typedef detail::node_to_value<ValueTraits, IsConst>
|
607
|
-
typedef typename base_t::result_type
|
608
|
-
typedef ValueTraits
|
609
|
-
typedef typename
|
610
|
-
<
|
611
|
-
<typename value_traits::node_traits>::type
|
612
|
-
>::type slist_impl;
|
867
|
+
typedef detail::node_to_value<ValueTraits, IsConst> base_t;
|
868
|
+
typedef typename base_t::result_type result_type;
|
869
|
+
typedef ValueTraits value_traits;
|
870
|
+
typedef typename unordered_bucket_impl
|
871
|
+
<value_traits>::type::node_traits::node node;
|
613
872
|
typedef typename detail::add_const_if_c
|
614
|
-
<
|
873
|
+
<node, IsConst>::type &first_argument_type;
|
615
874
|
typedef typename detail::add_const_if_c
|
616
875
|
< typename ValueTraits::node_traits::node
|
617
|
-
, IsConst>::type
|
876
|
+
, IsConst>::type &intermediate_argument_type;
|
618
877
|
typedef typename pointer_traits
|
619
878
|
<typename ValueTraits::pointer>::
|
620
879
|
template rebind_pointer
|
621
880
|
<const ValueTraits>::type const_value_traits_ptr;
|
622
881
|
|
623
|
-
|
882
|
+
inline downcast_node_to_value_t(const_value_traits_ptr ptr)
|
624
883
|
: base_t(ptr)
|
625
884
|
{}
|
626
885
|
|
627
|
-
|
886
|
+
inline result_type operator()(first_argument_type arg) const
|
628
887
|
{ return this->base_t::operator()(static_cast<intermediate_argument_type>(arg)); }
|
629
888
|
};
|
630
889
|
|
@@ -639,14 +898,14 @@ struct node_cast_adaptor
|
|
639
898
|
typedef typename pointer_traits<NodePtr>::element_type node;
|
640
899
|
|
641
900
|
template<class ConvertibleToF, class RealValuTraits>
|
642
|
-
|
901
|
+
inline node_cast_adaptor(const ConvertibleToF &c2f, const RealValuTraits *traits)
|
643
902
|
: base_t(base_t(c2f, traits))
|
644
903
|
{}
|
645
904
|
|
646
|
-
|
905
|
+
inline typename base_t::node_ptr operator()(const slist_node &to_clone)
|
647
906
|
{ return base_t::operator()(static_cast<const node &>(to_clone)); }
|
648
907
|
|
649
|
-
|
908
|
+
inline void operator()(SlistNodePtr to_clone)
|
650
909
|
{
|
651
910
|
base_t::operator()(pointer_traits<NodePtr>::pointer_to(static_cast<node &>(*to_clone)));
|
652
911
|
}
|
@@ -655,25 +914,58 @@ struct node_cast_adaptor
|
|
655
914
|
//bucket_plus_vtraits stores ValueTraits + BucketTraits
|
656
915
|
//this data is needed by iterators to obtain the
|
657
916
|
//value from the iterator and detect the bucket
|
658
|
-
template<class ValueTraits, class BucketTraits>
|
917
|
+
template<class ValueTraits, class BucketTraits, bool LinearBuckets>
|
659
918
|
struct bucket_plus_vtraits
|
660
919
|
{
|
920
|
+
private:
|
921
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(bucket_plus_vtraits)
|
922
|
+
|
923
|
+
|
924
|
+
struct data_type
|
925
|
+
: public ValueTraits, BucketTraits
|
926
|
+
{
|
927
|
+
private:
|
928
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(data_type)
|
929
|
+
|
930
|
+
public:
|
931
|
+
inline data_type(const ValueTraits& val_traits, const BucketTraits& b_traits)
|
932
|
+
: ValueTraits(val_traits), BucketTraits(b_traits)
|
933
|
+
{}
|
934
|
+
|
935
|
+
inline data_type(BOOST_RV_REF(data_type) other)
|
936
|
+
: ValueTraits (BOOST_MOVE_BASE(ValueTraits, other))
|
937
|
+
, BucketTraits(BOOST_MOVE_BASE(BucketTraits, other))
|
938
|
+
{}
|
939
|
+
} m_data;
|
940
|
+
|
941
|
+
public:
|
661
942
|
typedef BucketTraits bucket_traits;
|
662
943
|
typedef ValueTraits value_traits;
|
663
944
|
|
664
945
|
static const bool safemode_or_autounlink = is_safe_autounlink<value_traits::link_mode>::value;
|
665
946
|
|
666
|
-
typedef typename
|
667
|
-
|
668
|
-
|
947
|
+
typedef typename unordered_bucket_impl
|
948
|
+
<value_traits>::type bucket_type;
|
949
|
+
typedef typename unordered_bucket_ptr_impl
|
950
|
+
<value_traits>::type bucket_ptr;
|
669
951
|
typedef typename value_traits::node_traits node_traits;
|
952
|
+
typedef typename bucket_type::node_traits slist_node_traits;
|
670
953
|
typedef unordered_group_adapter<node_traits> group_traits;
|
671
|
-
typedef
|
672
|
-
typedef detail::
|
673
|
-
|
674
|
-
|
675
|
-
|
954
|
+
typedef group_functions<node_traits> group_functions_t;
|
955
|
+
typedef typename detail::if_c
|
956
|
+
< LinearBuckets
|
957
|
+
, linear_slist_algorithms<slist_node_traits>
|
958
|
+
, circular_slist_algorithms<slist_node_traits>
|
959
|
+
>::type slist_node_algorithms;
|
960
|
+
|
961
|
+
typedef typename slist_node_traits::node_ptr slist_node_ptr;
|
962
|
+
typedef trivial_value_traits
|
963
|
+
<slist_node_traits, normal_link> slist_value_traits;
|
964
|
+
typedef slist_iterator<slist_value_traits, false> siterator;
|
965
|
+
typedef slist_iterator<slist_value_traits, true> const_siterator;
|
966
|
+
|
676
967
|
typedef typename node_traits::node_ptr node_ptr;
|
968
|
+
typedef typename node_traits::const_node_ptr const_node_ptr;
|
677
969
|
typedef typename node_traits::node node;
|
678
970
|
typedef typename value_traits::value_type value_type;
|
679
971
|
typedef typename value_traits::pointer pointer;
|
@@ -690,75 +982,159 @@ struct bucket_plus_vtraits
|
|
690
982
|
<typename value_traits::pointer>::
|
691
983
|
template rebind_pointer
|
692
984
|
<const bucket_plus_vtraits>::type const_bucket_value_traits_ptr;
|
693
|
-
typedef
|
694
|
-
|
985
|
+
typedef detail::bool_<LinearBuckets> linear_buckets_t;
|
986
|
+
typedef bucket_plus_vtraits& this_ref;
|
987
|
+
|
988
|
+
static const std::size_t bucket_overhead = LinearBuckets ? 1u : 0u;
|
695
989
|
|
696
|
-
|
697
|
-
|
698
|
-
: data(val_traits, ::boost::forward<BucketTraitsType>(b_traits))
|
990
|
+
inline bucket_plus_vtraits(const ValueTraits &val_traits, const bucket_traits &b_traits)
|
991
|
+
: m_data(val_traits, b_traits)
|
699
992
|
{}
|
700
993
|
|
701
|
-
|
702
|
-
|
994
|
+
inline bucket_plus_vtraits(BOOST_RV_REF(bucket_plus_vtraits) other)
|
995
|
+
: m_data(boost::move(((bucket_plus_vtraits&)other).m_data))
|
996
|
+
{}
|
703
997
|
|
704
|
-
|
998
|
+
inline const_value_traits_ptr priv_value_traits_ptr() const
|
705
999
|
{ return pointer_traits<const_value_traits_ptr>::pointer_to(this->priv_value_traits()); }
|
706
1000
|
|
707
1001
|
//bucket_value_traits
|
708
1002
|
//
|
709
|
-
|
1003
|
+
inline const bucket_plus_vtraits &get_bucket_value_traits() const
|
710
1004
|
{ return *this; }
|
711
1005
|
|
712
|
-
|
1006
|
+
inline bucket_plus_vtraits &get_bucket_value_traits()
|
713
1007
|
{ return *this; }
|
714
1008
|
|
715
|
-
|
1009
|
+
inline const_bucket_value_traits_ptr bucket_value_traits_ptr() const
|
716
1010
|
{ return pointer_traits<const_bucket_value_traits_ptr>::pointer_to(this->get_bucket_value_traits()); }
|
717
1011
|
|
718
1012
|
//value traits
|
719
1013
|
//
|
720
|
-
|
721
|
-
{ return this->
|
1014
|
+
inline const value_traits &priv_value_traits() const
|
1015
|
+
{ return static_cast<const value_traits &>(this->m_data); }
|
722
1016
|
|
723
|
-
|
724
|
-
{ return this->
|
1017
|
+
inline value_traits &priv_value_traits()
|
1018
|
+
{ return static_cast<value_traits &>(this->m_data); }
|
725
1019
|
|
726
|
-
//
|
1020
|
+
//value traits
|
727
1021
|
//
|
728
|
-
|
729
|
-
{ return this->
|
1022
|
+
inline const bucket_traits &priv_bucket_traits() const
|
1023
|
+
{ return static_cast<const bucket_traits &>(this->m_data); }
|
730
1024
|
|
731
|
-
|
732
|
-
{ return this->
|
1025
|
+
inline bucket_traits& priv_bucket_traits()
|
1026
|
+
{ return static_cast<bucket_traits&>(this->m_data); }
|
733
1027
|
|
734
1028
|
//bucket operations
|
735
|
-
|
1029
|
+
inline bucket_ptr priv_bucket_pointer() const BOOST_NOEXCEPT
|
736
1030
|
{ return this->priv_bucket_traits().bucket_begin(); }
|
737
1031
|
|
738
|
-
std::size_t
|
739
|
-
{
|
1032
|
+
inline std::size_t priv_usable_bucket_count() const BOOST_NOEXCEPT
|
1033
|
+
{
|
1034
|
+
BOOST_IF_CONSTEXPR(bucket_overhead){
|
1035
|
+
const std::size_t n = this->priv_bucket_traits().bucket_count();
|
1036
|
+
return n - std::size_t(n != 0)*bucket_overhead;
|
1037
|
+
}
|
1038
|
+
else{
|
1039
|
+
return this->priv_bucket_traits().bucket_count();
|
1040
|
+
}
|
1041
|
+
}
|
740
1042
|
|
741
|
-
|
1043
|
+
inline bucket_type &priv_bucket(std::size_t n) const BOOST_NOEXCEPT
|
742
1044
|
{
|
743
|
-
|
744
|
-
return
|
1045
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(n < this->priv_usable_bucket_count());
|
1046
|
+
return this->priv_bucket_pointer()[std::ptrdiff_t(n)];
|
745
1047
|
}
|
746
1048
|
|
747
|
-
|
748
|
-
{ return this->
|
1049
|
+
inline bucket_ptr priv_bucket_ptr(std::size_t n) const BOOST_NOEXCEPT
|
1050
|
+
{ return pointer_traits<bucket_ptr>::pointer_to(this->priv_bucket(n)); }
|
1051
|
+
|
1052
|
+
inline bucket_ptr priv_past_usable_bucket_ptr() const
|
1053
|
+
{ return this->priv_bucket_pointer() + std::ptrdiff_t(priv_usable_bucket_count()); }
|
1054
|
+
|
1055
|
+
inline bucket_ptr priv_invalid_bucket_ptr() const
|
1056
|
+
{
|
1057
|
+
BOOST_IF_CONSTEXPR(LinearBuckets) {
|
1058
|
+
return bucket_ptr();
|
1059
|
+
}
|
1060
|
+
else{
|
1061
|
+
return this->priv_past_usable_bucket_ptr();
|
1062
|
+
}
|
1063
|
+
}
|
1064
|
+
|
1065
|
+
inline void priv_set_sentinel_bucket() const
|
1066
|
+
{
|
1067
|
+
BOOST_IF_CONSTEXPR(LinearBuckets) {
|
1068
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(this->priv_bucket_traits().bucket_count() > 1);
|
1069
|
+
bucket_type &b = this->priv_bucket_pointer()[std::ptrdiff_t(this->priv_usable_bucket_count())];
|
1070
|
+
slist_node_algorithms::set_sentinel(b.get_node_ptr());
|
1071
|
+
}
|
1072
|
+
}
|
1073
|
+
|
1074
|
+
inline void priv_unset_sentinel_bucket() const
|
1075
|
+
{
|
1076
|
+
BOOST_IF_CONSTEXPR(LinearBuckets) {
|
1077
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(this->priv_bucket_traits().bucket_count() > 1);
|
1078
|
+
bucket_type& b = this->priv_bucket_pointer()[std::ptrdiff_t(this->priv_usable_bucket_count())];
|
1079
|
+
slist_node_algorithms::init_header(b.get_node_ptr());
|
1080
|
+
}
|
1081
|
+
}
|
1082
|
+
|
1083
|
+
inline siterator priv_end_sit() const
|
1084
|
+
{ return priv_end_sit(linear_buckets_t()); }
|
1085
|
+
|
1086
|
+
inline siterator priv_end_sit(detail::true_) const
|
1087
|
+
{ return siterator(this->priv_bucket_pointer() + std::ptrdiff_t(this->priv_bucket_traits().bucket_count() - bucket_overhead)); }
|
1088
|
+
|
1089
|
+
inline siterator priv_end_sit(detail::false_) const
|
1090
|
+
{ return siterator(this->priv_bucket_pointer()->get_node_ptr()); }
|
1091
|
+
|
1092
|
+
inline siterator priv_bucket_lbegin(std::size_t n) const
|
1093
|
+
{ siterator s(this->priv_bucket_lbbegin(n)); return ++s; }
|
1094
|
+
|
1095
|
+
inline siterator priv_bucket_lbbegin(std::size_t n) const
|
1096
|
+
{ return this->sit_bbegin(this->priv_bucket(n)); }
|
1097
|
+
|
1098
|
+
inline siterator priv_bucket_lend(std::size_t n) const
|
1099
|
+
{ return this->sit_end(this->priv_bucket(n)); }
|
1100
|
+
|
1101
|
+
inline std::size_t priv_bucket_size(std::size_t n) const
|
1102
|
+
{ return slist_node_algorithms::count(this->priv_bucket(n).get_node_ptr())-1u; }
|
1103
|
+
|
1104
|
+
inline bool priv_bucket_empty(std::size_t n) const
|
1105
|
+
{ return slist_node_algorithms::is_empty(this->priv_bucket(n).get_node_ptr()); }
|
1106
|
+
|
1107
|
+
inline bool priv_bucket_empty(bucket_ptr p) const
|
1108
|
+
{ return slist_node_algorithms::is_empty(p->get_node_ptr()); }
|
1109
|
+
|
1110
|
+
static inline siterator priv_bucket_lbegin(bucket_type &b)
|
1111
|
+
{ return siterator(slist_node_traits::get_next(b.get_node_ptr())); }
|
1112
|
+
|
1113
|
+
static inline siterator priv_bucket_lbbegin(bucket_type& b)
|
1114
|
+
{ return siterator(b.get_node_ptr()); }
|
1115
|
+
|
1116
|
+
static inline siterator priv_bucket_lend(bucket_type& b)
|
1117
|
+
{ return siterator(slist_node_algorithms::end_node(b.get_node_ptr())); }
|
1118
|
+
|
1119
|
+
static inline std::size_t priv_bucket_size(const bucket_type& b)
|
1120
|
+
{ return slist_node_algorithms::count(b.get_node_ptr())-1u; }
|
1121
|
+
|
1122
|
+
static inline bool priv_bucket_empty(const bucket_type& b)
|
1123
|
+
{ return slist_node_algorithms::is_empty(b.get_node_ptr()); }
|
749
1124
|
|
750
1125
|
template<class NodeDisposer>
|
751
|
-
static std::size_t priv_erase_from_single_bucket
|
1126
|
+
static std::size_t priv_erase_from_single_bucket
|
1127
|
+
(bucket_type &b, siterator sbefore_first, siterator slast, NodeDisposer node_disposer, detail::true_) //optimize multikey
|
752
1128
|
{
|
753
1129
|
std::size_t n = 0;
|
754
1130
|
siterator const sfirst(++siterator(sbefore_first));
|
755
1131
|
if(sfirst != slast){
|
756
|
-
node_ptr const nf =
|
757
|
-
node_ptr const nl =
|
758
|
-
|
1132
|
+
node_ptr const nf = dcast_bucket_ptr<node>(sfirst.pointed_node());
|
1133
|
+
node_ptr const nl = dcast_bucket_ptr<node>(slast.pointed_node());
|
1134
|
+
slist_node_ptr const ne = (priv_bucket_lend(b)).pointed_node();
|
759
1135
|
|
760
|
-
if(group_functions_t::
|
761
|
-
// The node is at the beginning of a group.
|
1136
|
+
if(group_functions_t::is_first_in_group(nf)) {
|
1137
|
+
// The first node is at the beginning of a group.
|
762
1138
|
if(nl != ne){
|
763
1139
|
group_functions_t::split_group(nl);
|
764
1140
|
}
|
@@ -766,52 +1142,42 @@ struct bucket_plus_vtraits
|
|
766
1142
|
else {
|
767
1143
|
node_ptr const group1 = group_functions_t::split_group(nf);
|
768
1144
|
if(nl != ne) {
|
769
|
-
node_ptr const group2 = group_functions_t::split_group(
|
1145
|
+
node_ptr const group2 = group_functions_t::split_group(nl);
|
770
1146
|
if(nf == group2) { //Both first and last in the same group
|
771
1147
|
//so join group1 and group2
|
772
1148
|
node_ptr const end1 = group_traits::get_next(group1);
|
773
1149
|
node_ptr const end2 = group_traits::get_next(group2);
|
774
1150
|
group_traits::set_next(group1, end2);
|
775
|
-
group_traits::set_next(
|
1151
|
+
group_traits::set_next(nl, end1);
|
776
1152
|
}
|
777
1153
|
}
|
778
1154
|
}
|
779
1155
|
|
780
|
-
|
781
|
-
while(it != slast){
|
782
|
-
node_disposer((it++).pointed_node());
|
783
|
-
++n;
|
784
|
-
}
|
785
|
-
b.erase_after(sbefore_first, slast);
|
1156
|
+
n = slist_node_algorithms::unlink_after_and_dispose(sbefore_first.pointed_node(), slast.pointed_node(), node_disposer);
|
786
1157
|
}
|
787
1158
|
return n;
|
788
1159
|
}
|
789
1160
|
|
790
1161
|
template<class NodeDisposer>
|
791
|
-
static std::size_t priv_erase_from_single_bucket
|
1162
|
+
static std::size_t priv_erase_from_single_bucket
|
1163
|
+
(bucket_type &, siterator sbefore_first, siterator slast, NodeDisposer node_disposer, detail::false_) //optimize multikey
|
792
1164
|
{
|
793
|
-
|
794
|
-
siterator it(++siterator(sbefore_first));
|
795
|
-
while(it != slast){
|
796
|
-
node_disposer((it++).pointed_node());
|
797
|
-
++n;
|
798
|
-
}
|
799
|
-
b.erase_after(sbefore_first, slast);
|
800
|
-
return n;
|
1165
|
+
return slist_node_algorithms::unlink_after_and_dispose(sbefore_first.pointed_node(), slast.pointed_node(), node_disposer);
|
801
1166
|
}
|
802
1167
|
|
803
1168
|
template<class NodeDisposer>
|
804
1169
|
static void priv_erase_node(bucket_type &b, siterator i, NodeDisposer node_disposer, detail::true_) //optimize multikey
|
805
1170
|
{
|
806
|
-
|
807
|
-
|
1171
|
+
slist_node_ptr const ne(priv_bucket_lend(b).pointed_node());
|
1172
|
+
slist_node_ptr const nbb(priv_bucket_lbbegin(b).pointed_node());
|
1173
|
+
node_ptr n(dcast_bucket_ptr<node>(i.pointed_node()));
|
808
1174
|
node_ptr pos = node_traits::get_next(group_traits::get_next(n));
|
809
1175
|
node_ptr bn;
|
810
1176
|
node_ptr nn(node_traits::get_next(n));
|
811
1177
|
|
812
1178
|
if(pos != n) {
|
813
1179
|
//Node is the first of the group
|
814
|
-
bn = group_functions_t::get_prev_to_first_in_group(
|
1180
|
+
bn = group_functions_t::get_prev_to_first_in_group(nbb, n);
|
815
1181
|
|
816
1182
|
//Unlink the rest of the group if it's not the last node of its group
|
817
1183
|
if(nn != ne && group_traits::get_next(nn) == n){
|
@@ -829,12 +1195,15 @@ struct bucket_plus_vtraits
|
|
829
1195
|
node_ptr const x(group_algorithms::get_previous_node(n));
|
830
1196
|
group_algorithms::unlink_after(x);
|
831
1197
|
}
|
832
|
-
|
1198
|
+
slist_node_algorithms::unlink_after_and_dispose(bn, node_disposer);
|
833
1199
|
}
|
834
1200
|
|
835
1201
|
template<class NodeDisposer>
|
836
|
-
|
837
|
-
{
|
1202
|
+
inline static void priv_erase_node(bucket_type &b, siterator i, NodeDisposer node_disposer, detail::false_) //!optimize multikey
|
1203
|
+
{
|
1204
|
+
slist_node_ptr bi = slist_node_algorithms::get_previous_node(b.get_node_ptr(), i.pointed_node());
|
1205
|
+
slist_node_algorithms::unlink_after_and_dispose(bi, node_disposer);
|
1206
|
+
}
|
838
1207
|
|
839
1208
|
template<class NodeDisposer, bool OptimizeMultikey>
|
840
1209
|
std::size_t priv_erase_node_range( siterator const &before_first_it, std::size_t const first_bucket
|
@@ -844,19 +1213,19 @@ struct bucket_plus_vtraits
|
|
844
1213
|
std::size_t num_erased(0);
|
845
1214
|
siterator last_step_before_it;
|
846
1215
|
if(first_bucket != last_bucket){
|
847
|
-
bucket_type *b =
|
1216
|
+
bucket_type *b = &this->priv_bucket(0);
|
848
1217
|
num_erased += this->priv_erase_from_single_bucket
|
849
|
-
(b[first_bucket], before_first_it,
|
1218
|
+
(b[first_bucket], before_first_it, this->priv_bucket_lend(first_bucket), node_disposer, optimize_multikey_tag);
|
850
1219
|
for(std::size_t i = 0, n = (last_bucket - first_bucket - 1); i != n; ++i){
|
851
1220
|
num_erased += this->priv_erase_whole_bucket(b[first_bucket+i+1], node_disposer);
|
852
1221
|
}
|
853
|
-
last_step_before_it =
|
1222
|
+
last_step_before_it = this->priv_bucket_lbbegin(last_bucket);
|
854
1223
|
}
|
855
1224
|
else{
|
856
1225
|
last_step_before_it = before_first_it;
|
857
1226
|
}
|
858
1227
|
num_erased += this->priv_erase_from_single_bucket
|
859
|
-
(this->
|
1228
|
+
(this->priv_bucket(last_bucket), last_step_before_it, last_it, node_disposer, optimize_multikey_tag);
|
860
1229
|
return num_erased;
|
861
1230
|
}
|
862
1231
|
|
@@ -865,140 +1234,148 @@ struct bucket_plus_vtraits
|
|
865
1234
|
//First find the last node of p's group.
|
866
1235
|
//This requires checking the first node of the next group or
|
867
1236
|
//the bucket node.
|
868
|
-
slist_node_ptr end_ptr(b
|
869
|
-
|
870
|
-
|
1237
|
+
slist_node_ptr end_ptr(sit_end(b).pointed_node());
|
1238
|
+
slist_node_ptr last_node_group(b.get_node_ptr());
|
1239
|
+
slist_node_ptr possible_end(slist_node_traits::get_next(last_node_group));
|
871
1240
|
|
872
1241
|
while(end_ptr != possible_end){
|
873
|
-
last_node_group = group_traits::get_next(
|
874
|
-
possible_end =
|
1242
|
+
last_node_group = group_traits::get_next(dcast_bucket_ptr<node>(possible_end));
|
1243
|
+
possible_end = slist_node_traits::get_next(last_node_group);
|
875
1244
|
}
|
876
|
-
return
|
1245
|
+
return siterator(last_node_group);
|
877
1246
|
}
|
878
1247
|
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
siterator b_begin(b.before_begin());
|
884
|
-
siterator nxt(b_begin);
|
885
|
-
++nxt;
|
886
|
-
siterator const end_sit(b.end());
|
887
|
-
while(nxt != end_sit){
|
888
|
-
//No need to init group links as we'll delete all bucket nodes
|
889
|
-
nxt = bucket_type::s_erase_after_and_dispose(b_begin, node_disposer);
|
890
|
-
++num_erased;
|
891
|
-
}
|
892
|
-
return num_erased;
|
1248
|
+
inline static siterator priv_get_last(bucket_type &b, detail::false_) //NOT optimize multikey
|
1249
|
+
{
|
1250
|
+
slist_node_ptr p = b.get_node_ptr();
|
1251
|
+
return siterator(slist_node_algorithms::get_previous_node(p, slist_node_algorithms::end_node(p)));
|
893
1252
|
}
|
894
1253
|
|
895
|
-
|
896
|
-
|
1254
|
+
template<class NodeDisposer>
|
1255
|
+
static inline std::size_t priv_erase_whole_bucket(bucket_type &b, NodeDisposer node_disposer)
|
1256
|
+
{ return slist_node_algorithms::detach_and_dispose(b.get_node_ptr(), node_disposer); }
|
897
1257
|
|
898
1258
|
static siterator priv_get_previous(bucket_type &b, siterator i, detail::true_) //optimize multikey
|
899
1259
|
{
|
900
|
-
node_ptr const elem(
|
1260
|
+
node_ptr const elem(dcast_bucket_ptr<node>(i.pointed_node()));
|
901
1261
|
node_ptr const prev_in_group(group_traits::get_next(elem));
|
902
1262
|
bool const first_in_group = node_traits::get_next(prev_in_group) != elem;
|
903
|
-
|
904
|
-
?
|
905
|
-
:
|
1263
|
+
slist_node_ptr n = first_in_group
|
1264
|
+
? group_functions_t::get_prev_to_first_in_group(b.get_node_ptr(), elem)
|
1265
|
+
: group_traits::get_next(elem)
|
906
1266
|
;
|
907
|
-
return
|
1267
|
+
return siterator(n);
|
908
1268
|
}
|
909
1269
|
|
910
|
-
|
911
|
-
{ return b.
|
1270
|
+
inline static siterator priv_get_previous(bucket_type &b, siterator i, detail::false_) //NOT optimize multikey
|
1271
|
+
{ return siterator(slist_node_algorithms::get_previous_node(b.get_node_ptr(), i.pointed_node())); }
|
912
1272
|
|
913
|
-
|
1273
|
+
template<class Disposer>
|
1274
|
+
struct typeof_node_disposer
|
914
1275
|
{
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
, detail::dcast_bucket_ptr<node>(it.pointed_node()));
|
920
|
-
//Now get the bucket_impl from the iterator
|
921
|
-
const bucket_type &b = static_cast<const bucket_type&>
|
922
|
-
(bucket_type::slist_type::container_from_end_iterator(bucket_type::s_iterator_to(*bb)));
|
923
|
-
//Now just calculate the index b has in the bucket array
|
924
|
-
return static_cast<std::size_t>(&b - &*f);
|
925
|
-
}
|
1276
|
+
typedef node_cast_adaptor
|
1277
|
+
< detail::node_disposer< Disposer, value_traits, CommonSListAlgorithms>
|
1278
|
+
, slist_node_ptr, node_ptr > type;
|
1279
|
+
};
|
926
1280
|
|
927
|
-
|
1281
|
+
template<class Disposer>
|
1282
|
+
inline typename typeof_node_disposer<Disposer>::type
|
1283
|
+
make_node_disposer(const Disposer &disposer) const
|
928
1284
|
{
|
929
|
-
|
930
|
-
|
931
|
-
|
1285
|
+
typedef typename typeof_node_disposer<Disposer>::type return_t;
|
1286
|
+
return return_t(disposer, &this->priv_value_traits());
|
1287
|
+
}
|
932
1288
|
|
933
|
-
|
934
|
-
|
935
|
-
while(!(first_ptr <= it.pointed_node() && it.pointed_node() <= last_ptr)){
|
936
|
-
++it;
|
937
|
-
}
|
938
|
-
//Now get the bucket_impl from the iterator
|
939
|
-
const bucket_type &b = static_cast<const bucket_type&>
|
940
|
-
(bucket_type::container_from_end_iterator(it));
|
1289
|
+
static inline bucket_ptr to_ptr(bucket_type &b)
|
1290
|
+
{ return pointer_traits<bucket_ptr>::pointer_to(b); }
|
941
1291
|
|
942
|
-
|
943
|
-
|
944
|
-
|
1292
|
+
static inline siterator sit_bbegin(bucket_type& b)
|
1293
|
+
{ return siterator(b.get_node_ptr()); }
|
1294
|
+
|
1295
|
+
static inline siterator sit_begin(bucket_type& b)
|
1296
|
+
{ return siterator(b.begin_ptr()); }
|
945
1297
|
|
946
|
-
|
947
|
-
{ return
|
1298
|
+
static inline siterator sit_end(bucket_type& b)
|
1299
|
+
{ return siterator(slist_node_algorithms::end_node(b.get_node_ptr())); }
|
948
1300
|
|
949
|
-
|
1301
|
+
inline static std::size_t priv_stored_hash(siterator s, detail::true_) //store_hash
|
1302
|
+
{ return node_traits::get_hash(dcast_bucket_ptr<node>(s.pointed_node())); }
|
1303
|
+
|
1304
|
+
inline static std::size_t priv_stored_hash(siterator, detail::false_) //NO store_hash
|
950
1305
|
{ return std::size_t(-1); }
|
951
1306
|
|
952
|
-
|
1307
|
+
inline node &priv_value_to_node(reference v)
|
953
1308
|
{ return *this->priv_value_traits().to_node_ptr(v); }
|
954
1309
|
|
955
|
-
|
1310
|
+
inline const node &priv_value_to_node(const_reference v) const
|
956
1311
|
{ return *this->priv_value_traits().to_node_ptr(v); }
|
957
1312
|
|
958
|
-
|
959
|
-
{ return
|
1313
|
+
inline node_ptr priv_value_to_node_ptr(reference v)
|
1314
|
+
{ return this->priv_value_traits().to_node_ptr(v); }
|
1315
|
+
|
1316
|
+
inline const_node_ptr priv_value_to_node_ptr(const_reference v) const
|
1317
|
+
{ return this->priv_value_traits().to_node_ptr(v); }
|
1318
|
+
|
1319
|
+
inline reference priv_value_from_siterator(siterator s)
|
1320
|
+
{ return *this->priv_value_traits().to_value_ptr(dcast_bucket_ptr<node>(s.pointed_node())); }
|
960
1321
|
|
961
|
-
|
962
|
-
{ return *this->priv_value_traits().to_value_ptr(
|
1322
|
+
inline const_reference priv_value_from_siterator(siterator s) const
|
1323
|
+
{ return *this->priv_value_traits().to_value_ptr(dcast_bucket_ptr<node>(s.pointed_node())); }
|
1324
|
+
|
1325
|
+
static void priv_init_buckets(const bucket_ptr buckets_ptr, const std::size_t bucket_cnt)
|
1326
|
+
{
|
1327
|
+
bucket_ptr buckets_it = buckets_ptr;
|
1328
|
+
for (std::size_t bucket_i = 0; bucket_i != bucket_cnt; ++buckets_it, ++bucket_i) {
|
1329
|
+
slist_node_algorithms::init_header(buckets_it->get_node_ptr());
|
1330
|
+
}
|
1331
|
+
}
|
963
1332
|
|
964
1333
|
void priv_clear_buckets(const bucket_ptr buckets_ptr, const std::size_t bucket_cnt)
|
965
1334
|
{
|
966
1335
|
bucket_ptr buckets_it = buckets_ptr;
|
967
1336
|
for(std::size_t bucket_i = 0; bucket_i != bucket_cnt; ++buckets_it, ++bucket_i){
|
968
|
-
|
969
|
-
|
1337
|
+
bucket_type &b = *buckets_it;
|
1338
|
+
BOOST_IF_CONSTEXPR(safemode_or_autounlink){
|
1339
|
+
slist_node_algorithms::detach_and_dispose(b.get_node_ptr(), this->make_node_disposer(detail::null_disposer()));
|
970
1340
|
}
|
971
1341
|
else{
|
972
|
-
|
1342
|
+
slist_node_algorithms::init_header(b.get_node_ptr());
|
973
1343
|
}
|
974
1344
|
}
|
975
1345
|
}
|
976
1346
|
|
977
|
-
|
1347
|
+
inline std::size_t priv_stored_or_compute_hash(const value_type &v, detail::true_) const //For store_hash == true
|
978
1348
|
{ return node_traits::get_hash(this->priv_value_traits().to_node_ptr(v)); }
|
979
1349
|
|
980
|
-
typedef hashtable_iterator<bucket_plus_vtraits, false> iterator;
|
981
|
-
typedef hashtable_iterator<bucket_plus_vtraits, true> const_iterator;
|
1350
|
+
typedef hashtable_iterator<bucket_plus_vtraits, LinearBuckets, false> iterator;
|
1351
|
+
typedef hashtable_iterator<bucket_plus_vtraits, LinearBuckets, true> const_iterator;
|
982
1352
|
|
983
|
-
|
984
|
-
{ return
|
1353
|
+
inline iterator end() BOOST_NOEXCEPT
|
1354
|
+
{ return this->build_iterator(this->priv_end_sit(), bucket_ptr()); }
|
985
1355
|
|
986
|
-
|
987
|
-
{ return this->cend();
|
1356
|
+
inline const_iterator end() const BOOST_NOEXCEPT
|
1357
|
+
{ return this->cend(); }
|
988
1358
|
|
989
|
-
|
990
|
-
{ return
|
1359
|
+
inline const_iterator cend() const BOOST_NOEXCEPT
|
1360
|
+
{ return this->build_const_iterator(this->priv_end_sit(), bucket_ptr()); }
|
991
1361
|
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
1362
|
+
inline iterator build_iterator(siterator s, bucket_ptr p)
|
1363
|
+
{ return this->build_iterator(s, p, linear_buckets_t()); }
|
1364
|
+
|
1365
|
+
inline iterator build_iterator(siterator s, bucket_ptr p, detail::true_) //linear buckets
|
1366
|
+
{ return iterator(s, p, this->priv_value_traits_ptr()); }
|
1367
|
+
|
1368
|
+
inline iterator build_iterator(siterator s, bucket_ptr, detail::false_) //!linear buckets
|
1369
|
+
{ return iterator(s, &this->get_bucket_value_traits()); }
|
999
1370
|
|
1000
|
-
|
1001
|
-
|
1371
|
+
inline const_iterator build_const_iterator(siterator s, bucket_ptr p) const
|
1372
|
+
{ return this->build_const_iterator(s, p, linear_buckets_t()); }
|
1373
|
+
|
1374
|
+
inline const_iterator build_const_iterator(siterator s, bucket_ptr p, detail::true_) const //linear buckets
|
1375
|
+
{ return const_iterator(s, p, this->priv_value_traits_ptr()); }
|
1376
|
+
|
1377
|
+
inline const_iterator build_const_iterator(siterator s, bucket_ptr, detail::false_) const //!linear buckets
|
1378
|
+
{ return const_iterator(s, &this->get_bucket_value_traits()); }
|
1002
1379
|
};
|
1003
1380
|
|
1004
1381
|
template<class Hash, class>
|
@@ -1010,7 +1387,7 @@ struct get_hash
|
|
1010
1387
|
template<class T>
|
1011
1388
|
struct get_hash<void, T>
|
1012
1389
|
{
|
1013
|
-
typedef ::
|
1390
|
+
typedef detail::internal_hash_functor<T> type;
|
1014
1391
|
};
|
1015
1392
|
|
1016
1393
|
template<class EqualTo, class>
|
@@ -1022,7 +1399,7 @@ struct get_equal_to
|
|
1022
1399
|
template<class T>
|
1023
1400
|
struct get_equal_to<void, T>
|
1024
1401
|
{
|
1025
|
-
typedef
|
1402
|
+
typedef value_equal<T> type;
|
1026
1403
|
};
|
1027
1404
|
|
1028
1405
|
template<class KeyOfValue, class T>
|
@@ -1064,18 +1441,24 @@ struct hash_key_equal
|
|
1064
1441
|
|
1065
1442
|
//bucket_hash_t
|
1066
1443
|
//Stores bucket_plus_vtraits plust the hash function
|
1067
|
-
template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash, class BucketTraits>
|
1444
|
+
template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash, class BucketTraits, bool LinearBuckets>
|
1068
1445
|
struct bucket_hash_t
|
1069
1446
|
//Use public inheritance to avoid MSVC bugs with closures
|
1070
1447
|
: public detail::ebo_functor_holder
|
1071
|
-
<typename hash_key_hash < typename bucket_plus_vtraits<ValueTraits,BucketTraits>::value_traits::value_type
|
1448
|
+
<typename hash_key_hash < typename bucket_plus_vtraits<ValueTraits,BucketTraits, LinearBuckets >::value_traits::value_type
|
1072
1449
|
, VoidOrKeyOfValue
|
1073
1450
|
, VoidOrKeyHash
|
1074
1451
|
>::type
|
1075
1452
|
>
|
1076
|
-
, bucket_plus_vtraits<ValueTraits, BucketTraits> //4
|
1453
|
+
, bucket_plus_vtraits<ValueTraits, BucketTraits, LinearBuckets> //4
|
1077
1454
|
{
|
1078
|
-
|
1455
|
+
private:
|
1456
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(bucket_hash_t)
|
1457
|
+
|
1458
|
+
public:
|
1459
|
+
|
1460
|
+
typedef typename bucket_plus_vtraits
|
1461
|
+
<ValueTraits,BucketTraits, LinearBuckets>::value_traits value_traits;
|
1079
1462
|
typedef typename value_traits::value_type value_type;
|
1080
1463
|
typedef typename value_traits::node_traits node_traits;
|
1081
1464
|
typedef hash_key_hash
|
@@ -1084,31 +1467,41 @@ struct bucket_hash_t
|
|
1084
1467
|
typedef typename hash_key_types_base<value_type, VoidOrKeyOfValue>::key_of_value key_of_value;
|
1085
1468
|
|
1086
1469
|
typedef BucketTraits bucket_traits;
|
1087
|
-
typedef bucket_plus_vtraits<ValueTraits, BucketTraits> bucket_plus_vtraits_t;
|
1470
|
+
typedef bucket_plus_vtraits<ValueTraits, BucketTraits, LinearBuckets> bucket_plus_vtraits_t;
|
1088
1471
|
typedef detail::ebo_functor_holder<hasher> base_t;
|
1089
1472
|
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1473
|
+
inline bucket_hash_t(const ValueTraits &val_traits, const bucket_traits &b_traits, const hasher & h)
|
1474
|
+
: base_t(h)
|
1475
|
+
, bucket_plus_vtraits_t(val_traits, b_traits)
|
1093
1476
|
{}
|
1094
1477
|
|
1095
|
-
|
1478
|
+
inline bucket_hash_t(BOOST_RV_REF(bucket_hash_t) other)
|
1479
|
+
: base_t(BOOST_MOVE_BASE(base_t, other))
|
1480
|
+
, bucket_plus_vtraits_t(BOOST_MOVE_BASE(bucket_plus_vtraits_t, other))
|
1481
|
+
{}
|
1482
|
+
|
1483
|
+
template<class K>
|
1484
|
+
inline std::size_t priv_hash(const K &k) const
|
1485
|
+
{ return this->base_t::operator()(k); }
|
1486
|
+
|
1487
|
+
inline const hasher &priv_hasher() const
|
1096
1488
|
{ return this->base_t::get(); }
|
1097
1489
|
|
1098
|
-
hasher &priv_hasher()
|
1490
|
+
inline hasher &priv_hasher()
|
1099
1491
|
{ return this->base_t::get(); }
|
1100
1492
|
|
1101
1493
|
using bucket_plus_vtraits_t::priv_stored_or_compute_hash; //For store_hash == true
|
1102
1494
|
|
1103
|
-
|
1495
|
+
inline std::size_t priv_stored_or_compute_hash(const value_type &v, detail::false_) const //For store_hash == false
|
1104
1496
|
{ return this->priv_hasher()(key_of_value()(v)); }
|
1105
1497
|
};
|
1106
1498
|
|
1107
|
-
template<class ValueTraits, class BucketTraits, class VoidOrKeyOfValue, class VoidOrKeyEqual>
|
1499
|
+
template<class ValueTraits, class BucketTraits, class VoidOrKeyOfValue, class VoidOrKeyEqual, bool LinearBuckets>
|
1108
1500
|
struct hashtable_equal_holder
|
1109
1501
|
{
|
1110
1502
|
typedef detail::ebo_functor_holder
|
1111
|
-
< typename hash_key_equal < typename bucket_plus_vtraits
|
1503
|
+
< typename hash_key_equal < typename bucket_plus_vtraits
|
1504
|
+
<ValueTraits, BucketTraits, LinearBuckets>::value_traits::value_type
|
1112
1505
|
, VoidOrKeyOfValue
|
1113
1506
|
, VoidOrKeyEqual
|
1114
1507
|
>::type
|
@@ -1119,146 +1512,185 @@ struct hashtable_equal_holder
|
|
1119
1512
|
//bucket_hash_equal_t
|
1120
1513
|
//Stores bucket_hash_t and the equality function when the first
|
1121
1514
|
//non-empty bucket shall not be cached.
|
1122
|
-
template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash, class VoidOrKeyEqual, class BucketTraits, bool>
|
1515
|
+
template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash, class VoidOrKeyEqual, class BucketTraits, bool LinearBuckets, bool>
|
1123
1516
|
struct bucket_hash_equal_t
|
1124
1517
|
//Use public inheritance to avoid MSVC bugs with closures
|
1125
|
-
: public bucket_hash_t<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, BucketTraits> //3
|
1126
|
-
, public hashtable_equal_holder<ValueTraits, BucketTraits, VoidOrKeyOfValue, VoidOrKeyEqual>::type //equal
|
1518
|
+
: public bucket_hash_t<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, BucketTraits, LinearBuckets> //3
|
1519
|
+
, public hashtable_equal_holder<ValueTraits, BucketTraits, VoidOrKeyOfValue, VoidOrKeyEqual, LinearBuckets>::type //equal
|
1127
1520
|
{
|
1521
|
+
private:
|
1522
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(bucket_hash_equal_t)
|
1523
|
+
|
1524
|
+
public:
|
1128
1525
|
typedef typename hashtable_equal_holder
|
1129
|
-
<ValueTraits, BucketTraits, VoidOrKeyOfValue
|
1130
|
-
|
1131
|
-
typedef
|
1132
|
-
|
1133
|
-
|
1134
|
-
typedef
|
1135
|
-
|
1136
|
-
typedef
|
1137
|
-
typedef typename
|
1138
|
-
typedef
|
1139
|
-
typedef
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1526
|
+
< ValueTraits, BucketTraits, VoidOrKeyOfValue
|
1527
|
+
, VoidOrKeyEqual, LinearBuckets>::type equal_holder_t;
|
1528
|
+
typedef bucket_hash_t< ValueTraits, VoidOrKeyOfValue
|
1529
|
+
, VoidOrKeyHash, BucketTraits
|
1530
|
+
, LinearBuckets> bucket_hash_type;
|
1531
|
+
typedef bucket_plus_vtraits
|
1532
|
+
<ValueTraits, BucketTraits, LinearBuckets> bucket_plus_vtraits_t;
|
1533
|
+
typedef ValueTraits value_traits;
|
1534
|
+
typedef typename equal_holder_t::functor_type key_equal;
|
1535
|
+
typedef typename bucket_hash_type::hasher hasher;
|
1536
|
+
typedef BucketTraits bucket_traits;
|
1537
|
+
typedef typename bucket_plus_vtraits_t::siterator siterator;
|
1538
|
+
typedef typename bucket_plus_vtraits_t::const_siterator const_siterator;
|
1539
|
+
typedef typename bucket_plus_vtraits_t::bucket_type bucket_type;
|
1540
|
+
typedef typename bucket_plus_vtraits_t::slist_node_algorithms slist_node_algorithms;
|
1541
|
+
typedef typename unordered_bucket_ptr_impl
|
1542
|
+
<value_traits>::type bucket_ptr;
|
1543
|
+
|
1544
|
+
bucket_hash_equal_t(const ValueTraits &val_traits, const bucket_traits &b_traits, const hasher & h, const key_equal &e)
|
1545
|
+
: bucket_hash_type(val_traits, b_traits, h)
|
1144
1546
|
, equal_holder_t(e)
|
1145
1547
|
{}
|
1146
1548
|
|
1147
|
-
|
1148
|
-
|
1549
|
+
inline bucket_hash_equal_t(BOOST_RV_REF(bucket_hash_equal_t) other)
|
1550
|
+
: bucket_hash_type(BOOST_MOVE_BASE(bucket_hash_type, other))
|
1551
|
+
, equal_holder_t(BOOST_MOVE_BASE(equal_holder_t, other))
|
1552
|
+
{}
|
1553
|
+
|
1554
|
+
inline bucket_ptr priv_get_cache()
|
1555
|
+
{ return this->priv_bucket_pointer(); }
|
1556
|
+
|
1557
|
+
inline void priv_set_cache(bucket_ptr)
|
1558
|
+
{}
|
1149
1559
|
|
1150
|
-
|
1560
|
+
inline void priv_set_cache_bucket_num(std::size_t)
|
1151
1561
|
{}
|
1152
1562
|
|
1153
|
-
|
1563
|
+
inline std::size_t priv_get_cache_bucket_num()
|
1154
1564
|
{ return 0u; }
|
1155
1565
|
|
1156
|
-
|
1566
|
+
inline void priv_init_cache()
|
1157
1567
|
{}
|
1158
1568
|
|
1159
|
-
|
1569
|
+
inline void priv_swap_cache(bucket_hash_equal_t &)
|
1160
1570
|
{}
|
1161
1571
|
|
1162
|
-
siterator priv_begin() const
|
1572
|
+
siterator priv_begin(bucket_ptr &pbucketptr) const
|
1163
1573
|
{
|
1164
1574
|
std::size_t n = 0;
|
1165
|
-
std::size_t bucket_cnt = this->
|
1575
|
+
std::size_t bucket_cnt = this->priv_usable_bucket_count();
|
1166
1576
|
for (n = 0; n < bucket_cnt; ++n){
|
1167
|
-
bucket_type &b = this->
|
1168
|
-
if(!b.
|
1169
|
-
|
1577
|
+
bucket_type &b = this->priv_bucket(n);
|
1578
|
+
if(!slist_node_algorithms::is_empty(b.get_node_ptr())){
|
1579
|
+
pbucketptr = this->to_ptr(b);
|
1580
|
+
return siterator(b.begin_ptr());
|
1170
1581
|
}
|
1171
1582
|
}
|
1172
|
-
|
1583
|
+
pbucketptr = this->priv_invalid_bucket_ptr();
|
1584
|
+
return this->priv_end_sit();
|
1173
1585
|
}
|
1174
1586
|
|
1175
|
-
|
1587
|
+
inline void priv_insertion_update_cache(std::size_t)
|
1176
1588
|
{}
|
1177
1589
|
|
1178
|
-
|
1590
|
+
inline void priv_erasure_update_cache_range(std::size_t, std::size_t)
|
1179
1591
|
{}
|
1180
1592
|
|
1181
|
-
|
1593
|
+
inline void priv_erasure_update_cache(bucket_ptr)
|
1182
1594
|
{}
|
1183
1595
|
|
1184
|
-
|
1596
|
+
inline void priv_erasure_update_cache()
|
1597
|
+
{}
|
1598
|
+
|
1599
|
+
inline const key_equal &priv_equal() const
|
1185
1600
|
{ return this->equal_holder_t::get(); }
|
1186
1601
|
|
1187
|
-
|
1602
|
+
inline key_equal &priv_equal()
|
1188
1603
|
{ return this->equal_holder_t::get(); }
|
1189
1604
|
};
|
1190
1605
|
|
1191
1606
|
//bucket_hash_equal_t
|
1192
1607
|
//Stores bucket_hash_t and the equality function when the first
|
1193
1608
|
//non-empty bucket shall be cached.
|
1194
|
-
template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash, class VoidOrKeyEqual, class BucketTraits> //cache_begin == true version
|
1195
|
-
struct bucket_hash_equal_t<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual, BucketTraits, true>
|
1609
|
+
template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash, class VoidOrKeyEqual, class BucketTraits, bool LinearBuckets> //cache_begin == true version
|
1610
|
+
struct bucket_hash_equal_t<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual, BucketTraits, LinearBuckets, true>
|
1196
1611
|
//Use public inheritance to avoid MSVC bugs with closures
|
1197
|
-
: bucket_hash_t<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, BucketTraits> //2
|
1198
|
-
, hashtable_equal_holder<ValueTraits, BucketTraits, VoidOrKeyOfValue, VoidOrKeyEqual>::type
|
1612
|
+
: public bucket_hash_t<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, BucketTraits, LinearBuckets> //2
|
1613
|
+
, public hashtable_equal_holder<ValueTraits, BucketTraits, VoidOrKeyOfValue, VoidOrKeyEqual, LinearBuckets>::type
|
1199
1614
|
{
|
1615
|
+
private:
|
1616
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(bucket_hash_equal_t)
|
1617
|
+
|
1618
|
+
public:
|
1619
|
+
|
1200
1620
|
typedef typename hashtable_equal_holder
|
1201
|
-
<ValueTraits, BucketTraits
|
1621
|
+
< ValueTraits, BucketTraits
|
1622
|
+
, VoidOrKeyOfValue, VoidOrKeyEqual, LinearBuckets>::type equal_holder_t;
|
1202
1623
|
|
1203
|
-
typedef bucket_plus_vtraits
|
1624
|
+
typedef bucket_plus_vtraits
|
1625
|
+
< ValueTraits, BucketTraits, LinearBuckets> bucket_plus_vtraits_t;
|
1204
1626
|
typedef ValueTraits value_traits;
|
1205
1627
|
typedef typename equal_holder_t::functor_type key_equal;
|
1206
|
-
typedef bucket_hash_t
|
1628
|
+
typedef bucket_hash_t
|
1629
|
+
< ValueTraits, VoidOrKeyOfValue
|
1630
|
+
, VoidOrKeyHash, BucketTraits, LinearBuckets> bucket_hash_type;
|
1207
1631
|
typedef typename bucket_hash_type::hasher hasher;
|
1208
1632
|
typedef BucketTraits bucket_traits;
|
1209
|
-
typedef typename bucket_plus_vtraits_t::
|
1633
|
+
typedef typename bucket_plus_vtraits_t::siterator siterator;
|
1634
|
+
typedef typename bucket_plus_vtraits_t::slist_node_algorithms slist_node_algorithms;
|
1210
1635
|
|
1211
|
-
|
1212
|
-
|
1213
|
-
: bucket_hash_type(val_traits, ::boost::forward<BucketTraitsType>(b_traits), h)
|
1636
|
+
bucket_hash_equal_t(const ValueTraits &val_traits, const bucket_traits &b_traits, const hasher & h, const key_equal &e)
|
1637
|
+
: bucket_hash_type(val_traits, b_traits, h)
|
1214
1638
|
, equal_holder_t(e)
|
1215
1639
|
{}
|
1216
1640
|
|
1217
|
-
|
1218
|
-
|
1641
|
+
inline bucket_hash_equal_t(BOOST_RV_REF(bucket_hash_equal_t) other)
|
1642
|
+
: bucket_hash_type(BOOST_MOVE_BASE(bucket_hash_type, other))
|
1643
|
+
, equal_holder_t(BOOST_MOVE_BASE(equal_holder_t, other))
|
1644
|
+
{}
|
1219
1645
|
|
1220
|
-
|
1221
|
-
|
1646
|
+
typedef typename unordered_bucket_ptr_impl
|
1647
|
+
<typename bucket_hash_type::value_traits>::type bucket_ptr;
|
1222
1648
|
|
1223
|
-
|
1649
|
+
inline bucket_ptr priv_get_cache() const
|
1224
1650
|
{ return cached_begin_; }
|
1225
1651
|
|
1226
|
-
|
1652
|
+
inline void priv_set_cache(bucket_ptr p)
|
1227
1653
|
{ cached_begin_ = p; }
|
1228
1654
|
|
1229
|
-
|
1230
|
-
{ return this->cached_begin_ - this->bucket_hash_type::priv_bucket_pointer(); }
|
1231
|
-
|
1232
|
-
BOOST_INTRUSIVE_FORCEINLINE void priv_initialize_cache()
|
1233
|
-
{ this->cached_begin_ = this->bucket_hash_type::priv_invalid_bucket(); }
|
1234
|
-
|
1235
|
-
BOOST_INTRUSIVE_FORCEINLINE void priv_swap_cache(bucket_hash_equal_t &other)
|
1655
|
+
inline void priv_set_cache_bucket_num(std::size_t insertion_bucket)
|
1236
1656
|
{
|
1237
|
-
|
1657
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(insertion_bucket <= this->priv_usable_bucket_count());
|
1658
|
+
this->cached_begin_ = this->priv_bucket_pointer() + std::ptrdiff_t(insertion_bucket);
|
1238
1659
|
}
|
1239
1660
|
|
1240
|
-
|
1661
|
+
inline std::size_t priv_get_cache_bucket_num()
|
1662
|
+
{ return std::size_t(this->cached_begin_ - this->priv_bucket_pointer()); }
|
1663
|
+
|
1664
|
+
inline void priv_init_cache()
|
1665
|
+
{ this->cached_begin_ = this->priv_past_usable_bucket_ptr(); }
|
1666
|
+
|
1667
|
+
inline void priv_swap_cache(bucket_hash_equal_t &other)
|
1668
|
+
{ ::boost::adl_move_swap(this->cached_begin_, other.cached_begin_); }
|
1669
|
+
|
1670
|
+
siterator priv_begin(bucket_ptr& pbucketptr) const
|
1241
1671
|
{
|
1242
|
-
|
1243
|
-
|
1672
|
+
pbucketptr = this->cached_begin_;
|
1673
|
+
if(this->cached_begin_ == this->priv_past_usable_bucket_ptr()){
|
1674
|
+
return this->priv_end_sit();
|
1244
1675
|
}
|
1245
1676
|
else{
|
1246
|
-
return
|
1677
|
+
return siterator(cached_begin_->begin_ptr());
|
1247
1678
|
}
|
1248
1679
|
}
|
1249
1680
|
|
1250
1681
|
void priv_insertion_update_cache(std::size_t insertion_bucket)
|
1251
1682
|
{
|
1252
|
-
|
1683
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(insertion_bucket < this->priv_usable_bucket_count());
|
1684
|
+
bucket_ptr p = this->priv_bucket_pointer() + std::ptrdiff_t(insertion_bucket);
|
1253
1685
|
if(p < this->cached_begin_){
|
1254
1686
|
this->cached_begin_ = p;
|
1255
1687
|
}
|
1256
1688
|
}
|
1257
1689
|
|
1258
|
-
|
1690
|
+
inline const key_equal &priv_equal() const
|
1259
1691
|
{ return this->equal_holder_t::get(); }
|
1260
1692
|
|
1261
|
-
|
1693
|
+
inline key_equal &priv_equal()
|
1262
1694
|
{ return this->equal_holder_t::get(); }
|
1263
1695
|
|
1264
1696
|
void priv_erasure_update_cache_range(std::size_t first_bucket_num, std::size_t last_bucket_num)
|
@@ -1266,24 +1698,30 @@ struct bucket_hash_equal_t<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrK
|
|
1266
1698
|
//If the last bucket is the end, the cache must be updated
|
1267
1699
|
//to the last position if all
|
1268
1700
|
if(this->priv_get_cache_bucket_num() == first_bucket_num &&
|
1269
|
-
this->
|
1270
|
-
this->priv_set_cache(this->
|
1701
|
+
this->priv_bucket_empty(first_bucket_num) ){
|
1702
|
+
this->priv_set_cache(this->priv_bucket_pointer() + std::ptrdiff_t(last_bucket_num));
|
1703
|
+
this->priv_erasure_update_cache();
|
1704
|
+
}
|
1705
|
+
}
|
1706
|
+
|
1707
|
+
void priv_erasure_update_cache(bucket_ptr first_bucket)
|
1708
|
+
{
|
1709
|
+
//If the last bucket is the end, the cache must be updated
|
1710
|
+
//to the last position if all
|
1711
|
+
if (this->priv_get_cache() == first_bucket &&
|
1712
|
+
this->priv_bucket_empty(first_bucket)) {
|
1271
1713
|
this->priv_erasure_update_cache();
|
1272
1714
|
}
|
1273
1715
|
}
|
1274
1716
|
|
1275
1717
|
void priv_erasure_update_cache()
|
1276
1718
|
{
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
;
|
1281
|
-
; ++current_n, ++this->priv_get_cache()){
|
1282
|
-
if(!this->priv_get_cache()->empty()){
|
1283
|
-
return;
|
1284
|
-
}
|
1719
|
+
const bucket_ptr cache_end = this->priv_past_usable_bucket_ptr();
|
1720
|
+
while( cached_begin_ != cache_end) {
|
1721
|
+
if (!slist_node_algorithms::is_empty(cached_begin_->get_node_ptr())) {
|
1722
|
+
return;
|
1285
1723
|
}
|
1286
|
-
|
1724
|
+
++cached_begin_;
|
1287
1725
|
}
|
1288
1726
|
}
|
1289
1727
|
|
@@ -1294,42 +1732,67 @@ struct bucket_hash_equal_t<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrK
|
|
1294
1732
|
//to maintain minimal container size with compilers like MSVC
|
1295
1733
|
//that have problems with EBO and multiple empty base classes
|
1296
1734
|
template<class DeriveFrom, class SizeType, bool>
|
1297
|
-
struct
|
1735
|
+
struct hashtable_size_wrapper
|
1298
1736
|
: public DeriveFrom
|
1299
1737
|
{
|
1738
|
+
private:
|
1739
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(hashtable_size_wrapper)
|
1740
|
+
|
1741
|
+
public:
|
1300
1742
|
template<class Base, class Arg0, class Arg1, class Arg2>
|
1301
|
-
|
1302
|
-
|
1303
|
-
: DeriveFrom(::boost::forward<Base>(base)
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1743
|
+
hashtable_size_wrapper( BOOST_FWD_REF(Base) base, BOOST_FWD_REF(Arg0) arg0
|
1744
|
+
, BOOST_FWD_REF(Arg1) arg1, BOOST_FWD_REF(Arg2) arg2)
|
1745
|
+
: DeriveFrom( ::boost::forward<Base>(base)
|
1746
|
+
, ::boost::forward<Arg0>(arg0)
|
1747
|
+
, ::boost::forward<Arg1>(arg1)
|
1748
|
+
, ::boost::forward<Arg2>(arg2))
|
1307
1749
|
{}
|
1308
1750
|
typedef detail::size_holder < true, SizeType> size_traits;//size_traits
|
1309
1751
|
|
1752
|
+
inline hashtable_size_wrapper(BOOST_RV_REF(hashtable_size_wrapper) other)
|
1753
|
+
: DeriveFrom(BOOST_MOVE_BASE(DeriveFrom, other))
|
1754
|
+
{}
|
1755
|
+
|
1310
1756
|
size_traits size_traits_;
|
1311
1757
|
|
1312
1758
|
typedef const size_traits & size_traits_const_t;
|
1313
1759
|
typedef size_traits & size_traits_t;
|
1314
1760
|
|
1315
|
-
|
1316
|
-
{ return size_traits_; }
|
1761
|
+
inline SizeType get_hashtable_size_wrapper_size() const
|
1762
|
+
{ return size_traits_.get_size(); }
|
1317
1763
|
|
1318
|
-
|
1764
|
+
inline void set_hashtable_size_wrapper_size(SizeType s)
|
1765
|
+
{ size_traits_.set_size(s); }
|
1766
|
+
|
1767
|
+
inline void inc_hashtable_size_wrapper_size()
|
1768
|
+
{ size_traits_.increment(); }
|
1769
|
+
|
1770
|
+
inline void dec_hashtable_size_wrapper_size()
|
1771
|
+
{ size_traits_.decrement(); }
|
1772
|
+
|
1773
|
+
inline size_traits_t priv_size_traits()
|
1319
1774
|
{ return size_traits_; }
|
1320
1775
|
};
|
1321
1776
|
|
1322
1777
|
template<class DeriveFrom, class SizeType>
|
1323
|
-
struct
|
1778
|
+
struct hashtable_size_wrapper<DeriveFrom, SizeType, false>
|
1324
1779
|
: public DeriveFrom
|
1325
1780
|
{
|
1781
|
+
private:
|
1782
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(hashtable_size_wrapper)
|
1783
|
+
|
1784
|
+
public:
|
1326
1785
|
template<class Base, class Arg0, class Arg1, class Arg2>
|
1327
|
-
|
1328
|
-
|
1329
|
-
: DeriveFrom(::boost::forward<Base>(base)
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1786
|
+
hashtable_size_wrapper( BOOST_FWD_REF(Base) base, BOOST_FWD_REF(Arg0) arg0
|
1787
|
+
, BOOST_FWD_REF(Arg1) arg1, BOOST_FWD_REF(Arg2) arg2)
|
1788
|
+
: DeriveFrom( ::boost::forward<Base>(base)
|
1789
|
+
, ::boost::forward<Arg0>(arg0)
|
1790
|
+
, ::boost::forward<Arg1>(arg1)
|
1791
|
+
, ::boost::forward<Arg2>(arg2))
|
1792
|
+
{}
|
1793
|
+
|
1794
|
+
inline hashtable_size_wrapper(BOOST_RV_REF(hashtable_size_wrapper) other)
|
1795
|
+
: DeriveFrom(BOOST_MOVE_BASE(DeriveFrom, other))
|
1333
1796
|
{}
|
1334
1797
|
|
1335
1798
|
typedef detail::size_holder< false, SizeType> size_traits;
|
@@ -1337,38 +1800,61 @@ struct hashtable_size_traits_wrapper<DeriveFrom, SizeType, false>
|
|
1337
1800
|
typedef size_traits size_traits_const_t;
|
1338
1801
|
typedef size_traits size_traits_t;
|
1339
1802
|
|
1340
|
-
|
1803
|
+
inline SizeType get_hashtable_size_wrapper_size() const
|
1804
|
+
{ return 0u; }
|
1805
|
+
|
1806
|
+
inline void set_hashtable_size_wrapper_size(SizeType)
|
1807
|
+
{}
|
1808
|
+
|
1809
|
+
inline void inc_hashtable_size_wrapper_size()
|
1810
|
+
{}
|
1811
|
+
|
1812
|
+
inline void dec_hashtable_size_wrapper_size()
|
1813
|
+
{}
|
1814
|
+
|
1815
|
+
inline size_traits priv_size_traits()
|
1341
1816
|
{ return size_traits(); }
|
1342
1817
|
};
|
1343
1818
|
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
struct
|
1348
|
-
: public hashtable_size_traits_wrapper
|
1349
|
-
< bucket_hash_equal_t
|
1350
|
-
< ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual
|
1351
|
-
, BucketTraits
|
1352
|
-
, 0 != (BoolFlags & hash_bool_flags::cache_begin_pos)
|
1353
|
-
> //2
|
1354
|
-
, SizeType
|
1355
|
-
, (BoolFlags & hash_bool_flags::incremental_pos) != 0
|
1356
|
-
>
|
1819
|
+
template< class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash
|
1820
|
+
, class VoidOrKeyEqual, class BucketTraits, class SizeType
|
1821
|
+
, std::size_t BoolFlags>
|
1822
|
+
struct get_hashtable_size_wrapper_bucket
|
1357
1823
|
{
|
1358
|
-
typedef
|
1824
|
+
typedef hashtable_size_wrapper
|
1359
1825
|
< bucket_hash_equal_t
|
1360
1826
|
< ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual
|
1361
1827
|
, BucketTraits
|
1828
|
+
, 0 != (BoolFlags & hash_bool_flags::linear_buckets_pos)
|
1362
1829
|
, 0 != (BoolFlags & hash_bool_flags::cache_begin_pos)
|
1363
1830
|
> //2
|
1364
1831
|
, SizeType
|
1365
|
-
, (BoolFlags & hash_bool_flags::incremental_pos)
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1832
|
+
, (BoolFlags & hash_bool_flags::incremental_pos) != 0 ||
|
1833
|
+
(BoolFlags & hash_bool_flags::fastmod_buckets_pos) != 0
|
1834
|
+
> type;
|
1835
|
+
};
|
1836
|
+
|
1837
|
+
//hashdata_internal
|
1838
|
+
//Stores bucket_hash_equal_t and split_traits
|
1839
|
+
template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash, class VoidOrKeyEqual, class BucketTraits, class SizeType, std::size_t BoolFlags>
|
1840
|
+
struct hashdata_internal
|
1841
|
+
: public get_hashtable_size_wrapper_bucket
|
1842
|
+
<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual, BucketTraits, SizeType, BoolFlags>::type
|
1843
|
+
{
|
1844
|
+
private:
|
1845
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(hashdata_internal)
|
1846
|
+
|
1847
|
+
public:
|
1848
|
+
static const bool linear_buckets = 0 != (BoolFlags & hash_bool_flags::linear_buckets_pos);
|
1849
|
+
typedef typename get_hashtable_size_wrapper_bucket
|
1850
|
+
<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual, BucketTraits, SizeType, BoolFlags>::type split_bucket_hash_equal_t;
|
1851
|
+
|
1852
|
+
typedef typename split_bucket_hash_equal_t::key_equal key_equal;
|
1853
|
+
typedef typename split_bucket_hash_equal_t::hasher hasher;
|
1854
|
+
typedef bucket_plus_vtraits
|
1855
|
+
<ValueTraits, BucketTraits, linear_buckets> bucket_plus_vtraits_t;
|
1370
1856
|
typedef SizeType size_type;
|
1371
|
-
typedef typename
|
1857
|
+
typedef typename split_bucket_hash_equal_t::size_traits split_traits;
|
1372
1858
|
typedef typename bucket_plus_vtraits_t::bucket_ptr bucket_ptr;
|
1373
1859
|
typedef typename bucket_plus_vtraits_t::const_value_traits_ptr const_value_traits_ptr;
|
1374
1860
|
typedef typename bucket_plus_vtraits_t::siterator siterator;
|
@@ -1385,13 +1871,8 @@ struct hashdata_internal
|
|
1385
1871
|
typedef typename node_traits::node node;
|
1386
1872
|
typedef typename node_traits::node_ptr node_ptr;
|
1387
1873
|
typedef typename node_traits::const_node_ptr const_node_ptr;
|
1388
|
-
typedef
|
1389
|
-
typedef typename
|
1390
|
-
<typename detail::reduced_slist_node_traits
|
1391
|
-
<typename value_traits::node_traits>::type
|
1392
|
-
>::type slist_impl;
|
1393
|
-
typedef typename slist_impl::node_algorithms node_algorithms;
|
1394
|
-
typedef typename slist_impl::node_ptr slist_node_ptr;
|
1874
|
+
typedef typename bucket_plus_vtraits_t::slist_node_algorithms slist_node_algorithms;
|
1875
|
+
typedef typename bucket_plus_vtraits_t::slist_node_ptr slist_node_ptr;
|
1395
1876
|
|
1396
1877
|
typedef hash_key_types_base
|
1397
1878
|
< typename ValueTraits::value_type
|
@@ -1399,195 +1880,303 @@ struct hashdata_internal
|
|
1399
1880
|
> hash_types_base;
|
1400
1881
|
typedef typename hash_types_base::key_of_value key_of_value;
|
1401
1882
|
|
1402
|
-
static const bool store_hash =
|
1883
|
+
static const bool store_hash = store_hash_is_true<node_traits>::value;
|
1403
1884
|
static const bool safemode_or_autounlink = is_safe_autounlink<value_traits::link_mode>::value;
|
1404
1885
|
static const bool stateful_value_traits = detail::is_stateful_value_traits<value_traits>::value;
|
1405
1886
|
|
1406
1887
|
typedef detail::bool_<store_hash> store_hash_t;
|
1407
1888
|
|
1408
1889
|
typedef detail::transform_iterator
|
1409
|
-
<
|
1410
|
-
, downcast_node_to_value_t
|
1411
|
-
< value_traits
|
1412
|
-
, false> > local_iterator;
|
1890
|
+
< siterator
|
1891
|
+
, downcast_node_to_value_t<value_traits, false> > local_iterator;
|
1413
1892
|
|
1414
1893
|
typedef detail::transform_iterator
|
1415
|
-
<
|
1416
|
-
, downcast_node_to_value_t
|
1417
|
-
< value_traits
|
1418
|
-
, true> > const_local_iterator;
|
1419
|
-
//
|
1894
|
+
< siterator
|
1895
|
+
, downcast_node_to_value_t<value_traits, true> > const_local_iterator;
|
1420
1896
|
|
1421
|
-
|
1422
|
-
|
1897
|
+
typedef detail::bool_<linear_buckets> linear_buckets_t;
|
1898
|
+
|
1899
|
+
hashdata_internal( const ValueTraits &val_traits, const bucket_traits &b_traits
|
1423
1900
|
, const hasher & h, const key_equal &e)
|
1424
|
-
:
|
1901
|
+
: split_bucket_hash_equal_t(val_traits, b_traits, h, e)
|
1425
1902
|
{}
|
1426
1903
|
|
1427
|
-
|
1428
|
-
|
1904
|
+
inline hashdata_internal(BOOST_RV_REF(hashdata_internal) other)
|
1905
|
+
: split_bucket_hash_equal_t(BOOST_MOVE_BASE(split_bucket_hash_equal_t, other))
|
1906
|
+
{}
|
1429
1907
|
|
1430
|
-
|
1908
|
+
inline typename split_bucket_hash_equal_t::size_traits_t priv_split_traits()
|
1431
1909
|
{ return this->priv_size_traits(); }
|
1432
1910
|
|
1433
1911
|
~hashdata_internal()
|
1434
1912
|
{ this->priv_clear_buckets(); }
|
1435
1913
|
|
1914
|
+
using split_bucket_hash_equal_t::priv_clear_buckets;
|
1915
|
+
|
1436
1916
|
void priv_clear_buckets()
|
1437
1917
|
{
|
1438
|
-
this->
|
1439
|
-
|
1440
|
-
, this->internal_type::priv_bucket_count()
|
1441
|
-
- (this->priv_get_cache()
|
1442
|
-
- this->internal_type::priv_bucket_pointer()));
|
1918
|
+
const std::size_t cache_num = this->priv_get_cache_bucket_num();
|
1919
|
+
this->priv_clear_buckets(this->priv_get_cache(), this->priv_usable_bucket_count() - cache_num);
|
1443
1920
|
}
|
1444
1921
|
|
1445
1922
|
void priv_clear_buckets_and_cache()
|
1446
1923
|
{
|
1447
1924
|
this->priv_clear_buckets();
|
1448
|
-
this->
|
1925
|
+
this->priv_init_cache();
|
1449
1926
|
}
|
1450
1927
|
|
1451
|
-
void
|
1928
|
+
void priv_init_buckets_and_cache()
|
1452
1929
|
{
|
1453
|
-
this->
|
1454
|
-
|
1455
|
-
, this->internal_type::priv_bucket_count());
|
1456
|
-
this->priv_initialize_cache();
|
1930
|
+
this->priv_init_buckets(this->priv_bucket_pointer(), this->priv_usable_bucket_count());
|
1931
|
+
this->priv_init_cache();
|
1457
1932
|
}
|
1933
|
+
|
1934
|
+
typedef typename bucket_plus_vtraits_t::iterator iterator;
|
1935
|
+
typedef typename bucket_plus_vtraits_t::const_iterator const_iterator;
|
1458
1936
|
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
static std::size_t priv_stored_hash(slist_node_ptr n, detail::true_ true_value)
|
1463
|
-
{ return bucket_plus_vtraits<ValueTraits, BucketTraits>::priv_stored_hash(n, true_value); }
|
1937
|
+
//public functions
|
1938
|
+
inline SizeType split_count() const BOOST_NOEXCEPT
|
1939
|
+
{ return this->split_bucket_hash_equal_t::get_hashtable_size_wrapper_size(); }
|
1464
1940
|
|
1465
|
-
|
1466
|
-
{
|
1941
|
+
inline void split_count(SizeType s) BOOST_NOEXCEPT
|
1942
|
+
{ this->split_bucket_hash_equal_t::set_hashtable_size_wrapper_size(s); }
|
1467
1943
|
|
1468
1944
|
//public functions
|
1469
|
-
|
1945
|
+
inline void inc_split_count() BOOST_NOEXCEPT
|
1946
|
+
{ this->split_bucket_hash_equal_t::inc_hashtable_size_wrapper_size(); }
|
1947
|
+
|
1948
|
+
inline void dec_split_count() BOOST_NOEXCEPT
|
1949
|
+
{ this->split_bucket_hash_equal_t::dec_hashtable_size_wrapper_size(); }
|
1950
|
+
|
1951
|
+
inline static SizeType initial_split_from_bucket_count(SizeType bc) BOOST_NOEXCEPT
|
1952
|
+
{
|
1953
|
+
BOOST_IF_CONSTEXPR(fastmod_buckets) {
|
1954
|
+
size_type split;
|
1955
|
+
split = static_cast<SizeType>(prime_fmod_size::lower_size_index(bc));
|
1956
|
+
//The passed bucket size must be exactly the supported one
|
1957
|
+
BOOST_ASSERT(prime_fmod_size::size(split) == bc);
|
1958
|
+
return split;
|
1959
|
+
}
|
1960
|
+
else {
|
1961
|
+
BOOST_IF_CONSTEXPR(incremental) {
|
1962
|
+
BOOST_ASSERT(0 == (std::size_t(bc) & (std::size_t(bc) - 1u)));
|
1963
|
+
return size_type(bc >> 1u);
|
1964
|
+
}
|
1965
|
+
else{
|
1966
|
+
return bc;
|
1967
|
+
}
|
1968
|
+
}
|
1969
|
+
}
|
1970
|
+
|
1971
|
+
inline static SizeType rehash_split_from_bucket_count(SizeType bc) BOOST_NOEXCEPT
|
1470
1972
|
{
|
1471
|
-
|
1973
|
+
BOOST_IF_CONSTEXPR(fastmod_buckets) {
|
1974
|
+
return (initial_split_from_bucket_count)(bc);
|
1975
|
+
}
|
1976
|
+
else {
|
1977
|
+
BOOST_IF_CONSTEXPR(incremental) {
|
1978
|
+
BOOST_ASSERT(0 == (std::size_t(bc) & (std::size_t(bc) - 1u)));
|
1979
|
+
return bc;
|
1980
|
+
}
|
1981
|
+
else{
|
1982
|
+
return bc;
|
1983
|
+
}
|
1984
|
+
}
|
1472
1985
|
}
|
1473
1986
|
|
1474
|
-
|
1987
|
+
inline iterator iterator_to(reference value) BOOST_NOEXCEPT_IF(!linear_buckets)
|
1988
|
+
{ return iterator_to(value, linear_buckets_t()); }
|
1989
|
+
|
1990
|
+
const_iterator iterator_to(const_reference value) const BOOST_NOEXCEPT_IF(!linear_buckets)
|
1991
|
+
{ return iterator_to(value, linear_buckets_t()); }
|
1992
|
+
|
1993
|
+
iterator iterator_to(reference value, detail::true_) //linear_buckets
|
1475
1994
|
{
|
1476
|
-
|
1477
|
-
|
1995
|
+
const std::size_t h = this->priv_stored_or_compute_hash(value, store_hash_t());
|
1996
|
+
siterator sit(this->priv_value_to_node_ptr(value));
|
1997
|
+
return this->build_iterator(sit, this->priv_hash_to_bucket_ptr(h));
|
1478
1998
|
}
|
1479
1999
|
|
1480
|
-
const_iterator iterator_to(const_reference value) const
|
2000
|
+
const_iterator iterator_to(const_reference value, detail::true_) const //linear_buckets
|
1481
2001
|
{
|
1482
|
-
|
1483
|
-
|
1484
|
-
|
2002
|
+
const std::size_t h = this->priv_stored_or_compute_hash(value, store_hash_t());
|
2003
|
+
siterator const sit = siterator
|
2004
|
+
( pointer_traits<node_ptr>::const_cast_from(this->priv_value_to_node_ptr(value))
|
1485
2005
|
);
|
2006
|
+
return this->build_const_iterator(sit, this->priv_hash_to_bucket_ptr(h));
|
2007
|
+
}
|
2008
|
+
|
2009
|
+
static const bool incremental = 0 != (BoolFlags & hash_bool_flags::incremental_pos);
|
2010
|
+
static const bool power_2_buckets = incremental || (0 != (BoolFlags & hash_bool_flags::power_2_buckets_pos));
|
2011
|
+
static const bool fastmod_buckets = 0 != (BoolFlags & hash_bool_flags::fastmod_buckets_pos);
|
2012
|
+
|
2013
|
+
typedef detail::bool_<fastmod_buckets> fastmod_buckets_t;
|
2014
|
+
|
2015
|
+
inline bucket_type &priv_hash_to_bucket(std::size_t hash_value) const
|
2016
|
+
{ return this->priv_bucket(this->priv_hash_to_nbucket(hash_value)); }
|
2017
|
+
|
2018
|
+
inline bucket_ptr priv_hash_to_bucket_ptr(std::size_t hash_value) const
|
2019
|
+
{ return this->priv_bucket_ptr(this->priv_hash_to_nbucket(hash_value)); }
|
2020
|
+
|
2021
|
+
inline size_type priv_hash_to_nbucket(std::size_t hash_value) const
|
2022
|
+
{ return (priv_hash_to_nbucket)(hash_value, fastmod_buckets_t()); }
|
2023
|
+
|
2024
|
+
inline size_type priv_hash_to_nbucket(std::size_t hash_value, detail::true_) const //fastmod_buckets_t
|
2025
|
+
{ return static_cast<size_type>(prime_fmod_size::position(hash_value, this->split_count())); }
|
2026
|
+
|
2027
|
+
inline size_type priv_hash_to_nbucket(std::size_t hash_value, detail::false_) const //!fastmod_buckets_t
|
2028
|
+
{
|
2029
|
+
return static_cast<size_type>(hash_to_bucket_split<power_2_buckets, incremental>
|
2030
|
+
(hash_value, this->priv_usable_bucket_count(), this->split_count(), detail::false_()));
|
2031
|
+
}
|
2032
|
+
|
2033
|
+
inline iterator iterator_to(reference value, detail::false_) BOOST_NOEXCEPT
|
2034
|
+
{
|
2035
|
+
return iterator( siterator(this->priv_value_to_node_ptr(value))
|
2036
|
+
, &this->get_bucket_value_traits());
|
2037
|
+
}
|
2038
|
+
|
2039
|
+
const_iterator iterator_to(const_reference value, detail::false_) const BOOST_NOEXCEPT
|
2040
|
+
{
|
2041
|
+
siterator const sit = siterator
|
2042
|
+
( pointer_traits<node_ptr>::const_cast_from(this->priv_value_to_node_ptr(value)) );
|
1486
2043
|
return const_iterator(sit, &this->get_bucket_value_traits());
|
1487
2044
|
}
|
1488
2045
|
|
1489
|
-
|
2046
|
+
|
2047
|
+
static local_iterator s_local_iterator_to(reference value) BOOST_NOEXCEPT
|
1490
2048
|
{
|
1491
|
-
|
1492
|
-
siterator sit
|
2049
|
+
BOOST_INTRUSIVE_STATIC_ASSERT((!stateful_value_traits));
|
2050
|
+
siterator sit(value_traits::to_node_ptr(value));
|
1493
2051
|
return local_iterator(sit, const_value_traits_ptr());
|
1494
2052
|
}
|
1495
2053
|
|
1496
|
-
static const_local_iterator s_local_iterator_to(const_reference value)
|
2054
|
+
static const_local_iterator s_local_iterator_to(const_reference value) BOOST_NOEXCEPT
|
1497
2055
|
{
|
1498
|
-
|
1499
|
-
siterator const sit =
|
1500
|
-
(
|
2056
|
+
BOOST_INTRUSIVE_STATIC_ASSERT((!stateful_value_traits));
|
2057
|
+
siterator const sit = siterator
|
2058
|
+
( pointer_traits<node_ptr>::const_cast_from
|
1501
2059
|
(value_traits::to_node_ptr(value))
|
1502
2060
|
);
|
1503
2061
|
return const_local_iterator(sit, const_value_traits_ptr());
|
1504
2062
|
}
|
1505
2063
|
|
1506
|
-
local_iterator local_iterator_to(reference value)
|
2064
|
+
local_iterator local_iterator_to(reference value) BOOST_NOEXCEPT
|
1507
2065
|
{
|
1508
|
-
siterator sit
|
2066
|
+
siterator sit(this->priv_value_to_node_ptr(value));
|
1509
2067
|
return local_iterator(sit, this->priv_value_traits_ptr());
|
1510
2068
|
}
|
1511
2069
|
|
1512
|
-
const_local_iterator local_iterator_to(const_reference value) const
|
2070
|
+
const_local_iterator local_iterator_to(const_reference value) const BOOST_NOEXCEPT
|
1513
2071
|
{
|
1514
|
-
|
1515
|
-
(
|
1516
|
-
(pointer_traits<const_node_ptr>::pointer_to(this->priv_value_to_node(value)))
|
1517
|
-
);
|
2072
|
+
siterator sit
|
2073
|
+
( pointer_traits<node_ptr>::const_cast_from(this->priv_value_to_node_ptr(value)) );
|
1518
2074
|
return const_local_iterator(sit, this->priv_value_traits_ptr());
|
1519
2075
|
}
|
1520
2076
|
|
1521
|
-
|
1522
|
-
{
|
1523
|
-
const std::size_t bc = this->priv_bucket_count();
|
1524
|
-
BOOST_INTRUSIVE_INVARIANT_ASSERT(sizeof(size_type) >= sizeof(std::size_t) || bc <= size_type(-1));
|
1525
|
-
return static_cast<size_type>(bc);
|
1526
|
-
}
|
2077
|
+
inline size_type bucket_count() const BOOST_NOEXCEPT
|
2078
|
+
{ return size_type(this->priv_usable_bucket_count()); }
|
1527
2079
|
|
1528
|
-
|
1529
|
-
{ return this->
|
2080
|
+
inline size_type bucket_size(size_type n) const BOOST_NOEXCEPT
|
2081
|
+
{ return (size_type)this->priv_bucket_size(n); }
|
1530
2082
|
|
1531
|
-
|
2083
|
+
inline bucket_ptr bucket_pointer() const BOOST_NOEXCEPT
|
1532
2084
|
{ return this->priv_bucket_pointer(); }
|
1533
2085
|
|
1534
|
-
|
1535
|
-
{ return local_iterator(this->
|
2086
|
+
inline local_iterator begin(size_type n) BOOST_NOEXCEPT
|
2087
|
+
{ return local_iterator(this->priv_bucket_lbegin(n), this->priv_value_traits_ptr()); }
|
1536
2088
|
|
1537
|
-
|
2089
|
+
inline const_local_iterator begin(size_type n) const BOOST_NOEXCEPT
|
1538
2090
|
{ return this->cbegin(n); }
|
1539
2091
|
|
1540
|
-
static
|
2092
|
+
static inline size_type suggested_upper_bucket_count(size_type n) BOOST_NOEXCEPT
|
1541
2093
|
{
|
1542
|
-
|
2094
|
+
BOOST_IF_CONSTEXPR(fastmod_buckets){
|
2095
|
+
std::size_t s = prime_fmod_size::upper_size_index(n);
|
2096
|
+
return static_cast<SizeType>(prime_fmod_size::size(s));
|
2097
|
+
}
|
2098
|
+
else{
|
2099
|
+
return prime_list_holder<0>::suggested_upper_bucket_count(n);
|
2100
|
+
}
|
1543
2101
|
}
|
1544
2102
|
|
1545
|
-
static
|
2103
|
+
static inline size_type suggested_lower_bucket_count(size_type n) BOOST_NOEXCEPT
|
1546
2104
|
{
|
1547
|
-
|
2105
|
+
BOOST_IF_CONSTEXPR(fastmod_buckets){
|
2106
|
+
std::size_t s = prime_fmod_size::lower_size_index(n);
|
2107
|
+
return static_cast<SizeType>(prime_fmod_size::size(s));
|
2108
|
+
}
|
2109
|
+
else{
|
2110
|
+
return prime_list_holder<0>::suggested_lower_bucket_count(n);
|
2111
|
+
}
|
1548
2112
|
}
|
1549
2113
|
|
1550
|
-
const_local_iterator cbegin(size_type n) const
|
2114
|
+
const_local_iterator cbegin(size_type n) const BOOST_NOEXCEPT
|
1551
2115
|
{
|
1552
2116
|
return const_local_iterator
|
1553
|
-
(
|
2117
|
+
(this->priv_bucket_lbegin(n)
|
1554
2118
|
, this->priv_value_traits_ptr());
|
1555
2119
|
}
|
1556
2120
|
|
1557
|
-
using
|
1558
|
-
using
|
2121
|
+
using split_bucket_hash_equal_t::end;
|
2122
|
+
using split_bucket_hash_equal_t::cend;
|
1559
2123
|
|
1560
|
-
local_iterator end(size_type n)
|
1561
|
-
{ return local_iterator(this->
|
2124
|
+
local_iterator end(size_type n) BOOST_NOEXCEPT
|
2125
|
+
{ return local_iterator(this->priv_bucket_lend(n), this->priv_value_traits_ptr()); }
|
1562
2126
|
|
1563
|
-
|
2127
|
+
inline const_local_iterator end(size_type n) const BOOST_NOEXCEPT
|
1564
2128
|
{ return this->cend(n); }
|
1565
2129
|
|
1566
|
-
const_local_iterator cend(size_type n) const
|
2130
|
+
const_local_iterator cend(size_type n) const BOOST_NOEXCEPT
|
1567
2131
|
{
|
1568
2132
|
return const_local_iterator
|
1569
|
-
(
|
2133
|
+
( this->priv_bucket_lend(n)
|
1570
2134
|
, this->priv_value_traits_ptr());
|
1571
2135
|
}
|
1572
2136
|
|
1573
2137
|
//Public functions for hashtable_impl
|
1574
2138
|
|
1575
|
-
|
1576
|
-
{
|
2139
|
+
inline iterator begin() BOOST_NOEXCEPT
|
2140
|
+
{
|
2141
|
+
bucket_ptr p;
|
2142
|
+
siterator s = this->priv_begin(p);
|
2143
|
+
return this->build_iterator(s, p);
|
2144
|
+
}
|
1577
2145
|
|
1578
|
-
|
2146
|
+
inline const_iterator begin() const BOOST_NOEXCEPT
|
1579
2147
|
{ return this->cbegin(); }
|
1580
2148
|
|
1581
|
-
|
1582
|
-
{
|
2149
|
+
inline const_iterator cbegin() const BOOST_NOEXCEPT
|
2150
|
+
{
|
2151
|
+
bucket_ptr p;
|
2152
|
+
siterator s = this->priv_begin(p);
|
2153
|
+
return this->build_const_iterator(s, p);
|
2154
|
+
}
|
1583
2155
|
|
1584
|
-
|
2156
|
+
inline hasher hash_function() const
|
1585
2157
|
{ return this->priv_hasher(); }
|
1586
2158
|
|
1587
|
-
|
2159
|
+
inline key_equal key_eq() const
|
1588
2160
|
{ return this->priv_equal(); }
|
1589
2161
|
};
|
1590
2162
|
|
2163
|
+
template< class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash
|
2164
|
+
, class VoidOrKeyEqual, class BucketTraits, class SizeType
|
2165
|
+
, std::size_t BoolFlags>
|
2166
|
+
struct get_hashtable_size_wrapper_internal
|
2167
|
+
{
|
2168
|
+
typedef hashtable_size_wrapper
|
2169
|
+
< hashdata_internal
|
2170
|
+
< ValueTraits
|
2171
|
+
, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual
|
2172
|
+
, BucketTraits, SizeType
|
2173
|
+
, BoolFlags & ~(hash_bool_flags::constant_time_size_pos) //1
|
2174
|
+
>
|
2175
|
+
, SizeType
|
2176
|
+
, (BoolFlags& hash_bool_flags::constant_time_size_pos) != 0
|
2177
|
+
> type;
|
2178
|
+
};
|
2179
|
+
|
1591
2180
|
/// @endcond
|
1592
2181
|
|
1593
2182
|
//! The class template hashtable is an intrusive hash table container, that
|
@@ -1632,27 +2221,13 @@ template<class T, class ...Options>
|
|
1632
2221
|
template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyHash, class VoidOrKeyEqual, class BucketTraits, class SizeType, std::size_t BoolFlags>
|
1633
2222
|
#endif
|
1634
2223
|
class hashtable_impl
|
1635
|
-
: private
|
1636
|
-
|
1637
|
-
< ValueTraits
|
1638
|
-
, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual
|
1639
|
-
, BucketTraits, SizeType
|
1640
|
-
, BoolFlags & (hash_bool_flags::incremental_pos | hash_bool_flags::cache_begin_pos) //1
|
1641
|
-
>
|
1642
|
-
, SizeType
|
1643
|
-
, (BoolFlags & hash_bool_flags::constant_time_size_pos) != 0
|
1644
|
-
>
|
2224
|
+
: private get_hashtable_size_wrapper_internal
|
2225
|
+
<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual, BucketTraits, SizeType, BoolFlags>::type
|
1645
2226
|
{
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1649
|
-
|
1650
|
-
, BucketTraits, SizeType
|
1651
|
-
, BoolFlags & (hash_bool_flags::incremental_pos | hash_bool_flags::cache_begin_pos) //1
|
1652
|
-
>
|
1653
|
-
, SizeType
|
1654
|
-
, (BoolFlags & hash_bool_flags::constant_time_size_pos) != 0
|
1655
|
-
> internal_type;
|
2227
|
+
static const bool linear_buckets_flag = (BoolFlags & hash_bool_flags::linear_buckets_pos) != 0;
|
2228
|
+
typedef typename get_hashtable_size_wrapper_internal
|
2229
|
+
<ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual, BucketTraits, SizeType, BoolFlags>::type
|
2230
|
+
internal_type;
|
1656
2231
|
typedef typename internal_type::size_traits size_traits;
|
1657
2232
|
typedef hash_key_types_base
|
1658
2233
|
< typename ValueTraits::value_type
|
@@ -1664,10 +2239,14 @@ class hashtable_impl
|
|
1664
2239
|
/// @cond
|
1665
2240
|
typedef BucketTraits bucket_traits;
|
1666
2241
|
|
1667
|
-
typedef
|
1668
|
-
|
2242
|
+
typedef bucket_plus_vtraits
|
2243
|
+
<ValueTraits, BucketTraits, linear_buckets_flag> bucket_plus_vtraits_t;
|
1669
2244
|
typedef typename bucket_plus_vtraits_t::const_value_traits_ptr const_value_traits_ptr;
|
1670
2245
|
|
2246
|
+
typedef detail::bool_<linear_buckets_flag> linear_buckets_t;
|
2247
|
+
|
2248
|
+
typedef typename internal_type::siterator siterator;
|
2249
|
+
typedef typename internal_type::const_siterator const_siterator;
|
1671
2250
|
using internal_type::begin;
|
1672
2251
|
using internal_type::cbegin;
|
1673
2252
|
using internal_type::end;
|
@@ -1697,10 +2276,8 @@ class hashtable_impl
|
|
1697
2276
|
typedef SizeType size_type;
|
1698
2277
|
typedef typename internal_type::key_equal key_equal;
|
1699
2278
|
typedef typename internal_type::hasher hasher;
|
1700
|
-
typedef
|
2279
|
+
typedef typename internal_type::bucket_type bucket_type;
|
1701
2280
|
typedef typename internal_type::bucket_ptr bucket_ptr;
|
1702
|
-
typedef typename slist_impl::iterator siterator;
|
1703
|
-
typedef typename slist_impl::const_iterator const_siterator;
|
1704
2281
|
typedef typename internal_type::iterator iterator;
|
1705
2282
|
typedef typename internal_type::const_iterator const_iterator;
|
1706
2283
|
typedef typename internal_type::local_iterator local_iterator;
|
@@ -1717,7 +2294,7 @@ class hashtable_impl
|
|
1717
2294
|
<node_ptr>::reference node_reference;
|
1718
2295
|
typedef typename pointer_traits
|
1719
2296
|
<const_node_ptr>::reference const_node_reference;
|
1720
|
-
typedef typename
|
2297
|
+
typedef typename internal_type::slist_node_algorithms slist_node_algorithms;
|
1721
2298
|
|
1722
2299
|
static const bool stateful_value_traits = internal_type::stateful_value_traits;
|
1723
2300
|
static const bool store_hash = internal_type::store_hash;
|
@@ -1728,9 +2305,10 @@ class hashtable_impl
|
|
1728
2305
|
static const bool compare_hash = 0 != (BoolFlags & hash_bool_flags::compare_hash_pos);
|
1729
2306
|
static const bool incremental = 0 != (BoolFlags & hash_bool_flags::incremental_pos);
|
1730
2307
|
static const bool power_2_buckets = incremental || (0 != (BoolFlags & hash_bool_flags::power_2_buckets_pos));
|
1731
|
-
|
1732
|
-
static const bool
|
1733
|
-
=
|
2308
|
+
static const bool optimize_multikey = optimize_multikey_is_true<node_traits>::value && !unique_keys;
|
2309
|
+
static const bool linear_buckets = linear_buckets_flag;
|
2310
|
+
static const bool fastmod_buckets = 0 != (BoolFlags & hash_bool_flags::fastmod_buckets_pos);
|
2311
|
+
static const std::size_t bucket_overhead = internal_type::bucket_overhead;
|
1734
2312
|
|
1735
2313
|
/// @cond
|
1736
2314
|
static const bool is_multikey = !unique_keys;
|
@@ -1738,9 +2316,13 @@ class hashtable_impl
|
|
1738
2316
|
|
1739
2317
|
//Configuration error: compare_hash<> can't be specified without store_hash<>
|
1740
2318
|
//See documentation for more explanations
|
1741
|
-
|
2319
|
+
BOOST_INTRUSIVE_STATIC_ASSERT((!compare_hash || store_hash));
|
2320
|
+
|
2321
|
+
//Configuration error: fasmod_buckets<> can't be specified with incremental<> or power_2_buckets<>
|
2322
|
+
//See documentation for more explanations
|
2323
|
+
BOOST_INTRUSIVE_STATIC_ASSERT(!(fastmod_buckets && power_2_buckets));
|
1742
2324
|
|
1743
|
-
typedef typename
|
2325
|
+
typedef typename internal_type::slist_node_ptr slist_node_ptr;
|
1744
2326
|
typedef typename pointer_traits
|
1745
2327
|
<slist_node_ptr>::template rebind_pointer
|
1746
2328
|
< void >::type void_pointer;
|
@@ -1752,9 +2334,11 @@ class hashtable_impl
|
|
1752
2334
|
typedef detail::bool_<optimize_multikey> optimize_multikey_t;
|
1753
2335
|
typedef detail::bool_<cache_begin> cache_begin_t;
|
1754
2336
|
typedef detail::bool_<power_2_buckets> power_2_buckets_t;
|
2337
|
+
typedef detail::bool_<fastmod_buckets> fastmod_buckets_t;
|
2338
|
+
typedef detail::bool_<compare_hash> compare_hash_t;
|
1755
2339
|
typedef typename internal_type::split_traits split_traits;
|
1756
|
-
typedef
|
1757
|
-
typedef
|
2340
|
+
typedef group_functions<node_traits> group_functions_t;
|
2341
|
+
typedef node_functions<node_traits> node_functions_t;
|
1758
2342
|
|
1759
2343
|
private:
|
1760
2344
|
//noncopyable, movable
|
@@ -1763,31 +2347,41 @@ class hashtable_impl
|
|
1763
2347
|
static const bool safemode_or_autounlink = internal_type::safemode_or_autounlink;
|
1764
2348
|
|
1765
2349
|
//Constant-time size is incompatible with auto-unlink hooks!
|
1766
|
-
|
2350
|
+
BOOST_INTRUSIVE_STATIC_ASSERT(!(constant_time_size && ((int)value_traits::link_mode == (int)auto_unlink)));
|
1767
2351
|
//Cache begin is incompatible with auto-unlink hooks!
|
1768
|
-
|
2352
|
+
BOOST_INTRUSIVE_STATIC_ASSERT(!(cache_begin && ((int)value_traits::link_mode == (int)auto_unlink)));
|
1769
2353
|
|
1770
|
-
template<class Disposer>
|
1771
|
-
struct typeof_node_disposer
|
1772
|
-
{
|
1773
|
-
typedef node_cast_adaptor
|
1774
|
-
< detail::node_disposer< Disposer, value_traits, CircularSListAlgorithms>
|
1775
|
-
, slist_node_ptr, node_ptr > type;
|
1776
|
-
};
|
1777
2354
|
|
1778
|
-
|
1779
|
-
|
1780
|
-
|
2355
|
+
/// @endcond
|
2356
|
+
|
2357
|
+
public:
|
2358
|
+
typedef insert_commit_data_impl insert_commit_data;
|
2359
|
+
|
2360
|
+
private:
|
2361
|
+
void default_init_actions()
|
1781
2362
|
{
|
1782
|
-
|
1783
|
-
|
2363
|
+
this->priv_set_sentinel_bucket();
|
2364
|
+
this->priv_init_buckets_and_cache();
|
2365
|
+
this->priv_size_count(size_type(0));
|
2366
|
+
size_type bucket_sz = this->bucket_count();
|
2367
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(bucket_sz != 0);
|
2368
|
+
//Check power of two bucket array if the option is activated
|
2369
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT
|
2370
|
+
(!power_2_buckets || (0 == (bucket_sz & (bucket_sz - 1))));
|
2371
|
+
this->split_count(this->initial_split_from_bucket_count(bucket_sz));
|
1784
2372
|
}
|
1785
2373
|
|
1786
|
-
|
2374
|
+
inline SizeType priv_size_count() const BOOST_NOEXCEPT
|
2375
|
+
{ return this->internal_type::get_hashtable_size_wrapper_size(); }
|
1787
2376
|
|
1788
|
-
|
1789
|
-
|
2377
|
+
inline void priv_size_count(SizeType s) BOOST_NOEXCEPT
|
2378
|
+
{ this->internal_type::set_hashtable_size_wrapper_size(s); }
|
2379
|
+
|
2380
|
+
inline void priv_size_inc() BOOST_NOEXCEPT
|
2381
|
+
{ this->internal_type::inc_hashtable_size_wrapper_size(); }
|
1790
2382
|
|
2383
|
+
inline void priv_size_dec() BOOST_NOEXCEPT
|
2384
|
+
{ this->internal_type::dec_hashtable_size_wrapper_size(); }
|
1791
2385
|
|
1792
2386
|
public:
|
1793
2387
|
|
@@ -1809,16 +2403,7 @@ class hashtable_impl
|
|
1809
2403
|
, const key_equal &equal_func = key_equal()
|
1810
2404
|
, const value_traits &v_traits = value_traits())
|
1811
2405
|
: internal_type(v_traits, b_traits, hash_func, equal_func)
|
1812
|
-
{
|
1813
|
-
this->priv_initialize_buckets_and_cache();
|
1814
|
-
this->priv_size_traits().set_size(size_type(0));
|
1815
|
-
size_type bucket_sz = this->bucket_count();
|
1816
|
-
BOOST_INTRUSIVE_INVARIANT_ASSERT(bucket_sz != 0);
|
1817
|
-
//Check power of two bucket array if the option is activated
|
1818
|
-
BOOST_INTRUSIVE_INVARIANT_ASSERT
|
1819
|
-
(!power_2_buckets || (0 == (bucket_sz & (bucket_sz-1))));
|
1820
|
-
this->priv_split_traits().set_size(bucket_sz>>1);
|
1821
|
-
}
|
2406
|
+
{ this->default_init_actions(); }
|
1822
2407
|
|
1823
2408
|
//! <b>Requires</b>: buckets must not be being used by any other resource
|
1824
2409
|
//! and dereferencing iterator must yield an lvalue of type value_type.
|
@@ -1843,14 +2428,8 @@ class hashtable_impl
|
|
1843
2428
|
, const value_traits &v_traits = value_traits())
|
1844
2429
|
: internal_type(v_traits, b_traits, hash_func, equal_func)
|
1845
2430
|
{
|
1846
|
-
this->
|
1847
|
-
|
1848
|
-
size_type bucket_sz = this->bucket_count();
|
1849
|
-
BOOST_INTRUSIVE_INVARIANT_ASSERT(bucket_sz != 0);
|
1850
|
-
//Check power of two bucket array if the option is activated
|
1851
|
-
BOOST_INTRUSIVE_INVARIANT_ASSERT
|
1852
|
-
(!power_2_buckets || (0 == (bucket_sz & (bucket_sz-1))));
|
1853
|
-
this->priv_split_traits().set_size(bucket_sz>>1);
|
2431
|
+
this->default_init_actions();
|
2432
|
+
|
1854
2433
|
//Now insert
|
1855
2434
|
if(unique)
|
1856
2435
|
this->insert_unique(b, e);
|
@@ -1868,18 +2447,14 @@ class hashtable_impl
|
|
1868
2447
|
//! move constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
1869
2448
|
//! or the move constructor of value traits, bucket traits, hasher or comparison throws.
|
1870
2449
|
hashtable_impl(BOOST_RV_REF(hashtable_impl) x)
|
1871
|
-
: internal_type(
|
1872
|
-
, ::boost::move(x.priv_bucket_traits())
|
1873
|
-
, ::boost::move(x.priv_hasher())
|
1874
|
-
, ::boost::move(x.priv_equal())
|
1875
|
-
)
|
2450
|
+
: internal_type(BOOST_MOVE_BASE(internal_type, x))
|
1876
2451
|
{
|
1877
2452
|
this->priv_swap_cache(x);
|
1878
|
-
x.
|
1879
|
-
this->
|
1880
|
-
x.
|
1881
|
-
this->
|
1882
|
-
x.
|
2453
|
+
x.priv_init_cache();
|
2454
|
+
this->priv_size_count(x.priv_size_count());
|
2455
|
+
x.priv_size_count(size_type(0));
|
2456
|
+
this->split_count(x.split_count());
|
2457
|
+
x.split_count(size_type(0));
|
1883
2458
|
}
|
1884
2459
|
|
1885
2460
|
//! <b>Effects</b>: Equivalent to swap.
|
@@ -1887,7 +2462,6 @@ class hashtable_impl
|
|
1887
2462
|
hashtable_impl& operator=(BOOST_RV_REF(hashtable_impl) x)
|
1888
2463
|
{ this->swap(x); return *this; }
|
1889
2464
|
|
1890
|
-
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1891
2465
|
//! <b>Effects</b>: Detaches all elements from this. The objects in the unordered_set
|
1892
2466
|
//! are not deleted (i.e. no destructors are called).
|
1893
2467
|
//!
|
@@ -1895,15 +2469,17 @@ class hashtable_impl
|
|
1895
2469
|
//! it's a safe-mode or auto-unlink value. Otherwise constant.
|
1896
2470
|
//!
|
1897
2471
|
//! <b>Throws</b>: Nothing.
|
1898
|
-
~hashtable_impl()
|
2472
|
+
~hashtable_impl()
|
2473
|
+
{}
|
1899
2474
|
|
2475
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1900
2476
|
//! <b>Effects</b>: Returns an iterator pointing to the beginning of the unordered_set.
|
1901
2477
|
//!
|
1902
2478
|
//! <b>Complexity</b>: Amortized constant time.
|
1903
2479
|
//! Worst case (empty unordered_set): O(this->bucket_count())
|
1904
2480
|
//!
|
1905
2481
|
//! <b>Throws</b>: Nothing.
|
1906
|
-
iterator begin();
|
2482
|
+
iterator begin() BOOST_NOEXCEPT;
|
1907
2483
|
|
1908
2484
|
//! <b>Effects</b>: Returns a const_iterator pointing to the beginning
|
1909
2485
|
//! of the unordered_set.
|
@@ -1912,7 +2488,7 @@ class hashtable_impl
|
|
1912
2488
|
//! Worst case (empty unordered_set): O(this->bucket_count())
|
1913
2489
|
//!
|
1914
2490
|
//! <b>Throws</b>: Nothing.
|
1915
|
-
const_iterator begin() const;
|
2491
|
+
const_iterator begin() const BOOST_NOEXCEPT;
|
1916
2492
|
|
1917
2493
|
//! <b>Effects</b>: Returns a const_iterator pointing to the beginning
|
1918
2494
|
//! of the unordered_set.
|
@@ -1921,28 +2497,28 @@ class hashtable_impl
|
|
1921
2497
|
//! Worst case (empty unordered_set): O(this->bucket_count())
|
1922
2498
|
//!
|
1923
2499
|
//! <b>Throws</b>: Nothing.
|
1924
|
-
const_iterator cbegin() const;
|
2500
|
+
const_iterator cbegin() const BOOST_NOEXCEPT;
|
1925
2501
|
|
1926
2502
|
//! <b>Effects</b>: Returns an iterator pointing to the end of the unordered_set.
|
1927
2503
|
//!
|
1928
2504
|
//! <b>Complexity</b>: Constant.
|
1929
2505
|
//!
|
1930
2506
|
//! <b>Throws</b>: Nothing.
|
1931
|
-
iterator end();
|
2507
|
+
iterator end() BOOST_NOEXCEPT;
|
1932
2508
|
|
1933
2509
|
//! <b>Effects</b>: Returns a const_iterator pointing to the end of the unordered_set.
|
1934
2510
|
//!
|
1935
2511
|
//! <b>Complexity</b>: Constant.
|
1936
2512
|
//!
|
1937
2513
|
//! <b>Throws</b>: Nothing.
|
1938
|
-
const_iterator end() const;
|
2514
|
+
const_iterator end() const BOOST_NOEXCEPT;
|
1939
2515
|
|
1940
2516
|
//! <b>Effects</b>: Returns a const_iterator pointing to the end of the unordered_set.
|
1941
2517
|
//!
|
1942
2518
|
//! <b>Complexity</b>: Constant.
|
1943
2519
|
//!
|
1944
2520
|
//! <b>Throws</b>: Nothing.
|
1945
|
-
const_iterator cend() const;
|
2521
|
+
const_iterator cend() const BOOST_NOEXCEPT;
|
1946
2522
|
|
1947
2523
|
//! <b>Effects</b>: Returns the hasher object used by the unordered_set.
|
1948
2524
|
//!
|
@@ -1967,9 +2543,9 @@ class hashtable_impl
|
|
1967
2543
|
//! Otherwise constant.
|
1968
2544
|
//!
|
1969
2545
|
//! <b>Throws</b>: Nothing.
|
1970
|
-
bool empty() const
|
2546
|
+
bool empty() const BOOST_NOEXCEPT
|
1971
2547
|
{
|
1972
|
-
|
2548
|
+
BOOST_IF_CONSTEXPR(constant_time_size){
|
1973
2549
|
return !this->size();
|
1974
2550
|
}
|
1975
2551
|
else if(cache_begin){
|
@@ -1979,7 +2555,7 @@ class hashtable_impl
|
|
1979
2555
|
size_type bucket_cnt = this->bucket_count();
|
1980
2556
|
const bucket_type *b = boost::movelib::to_raw_pointer(this->priv_bucket_pointer());
|
1981
2557
|
for (size_type n = 0; n < bucket_cnt; ++n, ++b){
|
1982
|
-
if(!b->
|
2558
|
+
if(!slist_node_algorithms::is_empty(b->get_node_ptr())){
|
1983
2559
|
return false;
|
1984
2560
|
}
|
1985
2561
|
}
|
@@ -1993,18 +2569,19 @@ class hashtable_impl
|
|
1993
2569
|
//! constant_time_size is false. Constant-time otherwise.
|
1994
2570
|
//!
|
1995
2571
|
//! <b>Throws</b>: Nothing.
|
1996
|
-
size_type size() const
|
2572
|
+
size_type size() const BOOST_NOEXCEPT
|
1997
2573
|
{
|
1998
|
-
|
1999
|
-
return this->
|
2574
|
+
BOOST_IF_CONSTEXPR(constant_time_size)
|
2575
|
+
return this->priv_size_count();
|
2000
2576
|
else{
|
2001
|
-
|
2002
|
-
|
2577
|
+
std::size_t len = 0;
|
2578
|
+
std::size_t bucket_cnt = this->bucket_count();
|
2003
2579
|
const bucket_type *b = boost::movelib::to_raw_pointer(this->priv_bucket_pointer());
|
2004
|
-
for (
|
2005
|
-
len += b->
|
2580
|
+
for (std::size_t n = 0; n < bucket_cnt; ++n, ++b){
|
2581
|
+
len += slist_node_algorithms::count(b->get_node_ptr()) - 1u;
|
2006
2582
|
}
|
2007
|
-
|
2583
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT((len <= SizeType(-1)));
|
2584
|
+
return size_type(len);
|
2008
2585
|
}
|
2009
2586
|
}
|
2010
2587
|
|
@@ -2051,7 +2628,7 @@ class hashtable_impl
|
|
2051
2628
|
//! <b>Throws</b>: If cloner or hasher throw or hash or equality predicate copying
|
2052
2629
|
//! throws. Basic guarantee.
|
2053
2630
|
template <class Cloner, class Disposer>
|
2054
|
-
|
2631
|
+
inline void clone_from(const hashtable_impl &src, Cloner cloner, Disposer disposer)
|
2055
2632
|
{ this->priv_clone_from(src, cloner, disposer); }
|
2056
2633
|
|
2057
2634
|
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw
|
@@ -2074,7 +2651,7 @@ class hashtable_impl
|
|
2074
2651
|
//! <b>Throws</b>: If cloner or hasher throw or hash or equality predicate copying
|
2075
2652
|
//! throws. Basic guarantee.
|
2076
2653
|
template <class Cloner, class Disposer>
|
2077
|
-
|
2654
|
+
inline void clone_from(BOOST_RV_REF(hashtable_impl) src, Cloner cloner, Disposer disposer)
|
2078
2655
|
{ this->priv_clone_from(static_cast<hashtable_impl&>(src), cloner, disposer); }
|
2079
2656
|
|
2080
2657
|
//! <b>Requires</b>: value must be an lvalue
|
@@ -2096,7 +2673,7 @@ class hashtable_impl
|
|
2096
2673
|
siterator prev;
|
2097
2674
|
siterator const it = this->priv_find
|
2098
2675
|
(key_of_value()(value), this->priv_hasher(), this->priv_equal(), bucket_num, hash_value, prev);
|
2099
|
-
bool const next_is_in_group = optimize_multikey && it != this->
|
2676
|
+
bool const next_is_in_group = optimize_multikey && it != this->priv_end_sit();
|
2100
2677
|
return this->priv_insert_equal_after_find(value, bucket_num, hash_value, prev, next_is_in_group);
|
2101
2678
|
}
|
2102
2679
|
|
@@ -2140,7 +2717,7 @@ class hashtable_impl
|
|
2140
2717
|
insert_commit_data commit_data;
|
2141
2718
|
std::pair<iterator, bool> ret = this->insert_unique_check(key_of_value()(value), commit_data);
|
2142
2719
|
if(ret.second){
|
2143
|
-
ret.first = this->
|
2720
|
+
ret.first = this->insert_unique_fast_commit(value, commit_data);
|
2144
2721
|
}
|
2145
2722
|
return ret;
|
2146
2723
|
}
|
@@ -2206,12 +2783,15 @@ class hashtable_impl
|
|
2206
2783
|
, KeyEqual equal_func
|
2207
2784
|
, insert_commit_data &commit_data)
|
2208
2785
|
{
|
2209
|
-
|
2210
|
-
|
2211
|
-
|
2212
|
-
|
2213
|
-
|
2214
|
-
|
2786
|
+
const std::size_t h = hash_func(key);
|
2787
|
+
const std::size_t bn = this->priv_hash_to_nbucket(h);
|
2788
|
+
|
2789
|
+
commit_data.bucket_idx = bn;
|
2790
|
+
commit_data.set_hash(h);
|
2791
|
+
|
2792
|
+
bucket_ptr bp = this->priv_bucket_ptr(bn);
|
2793
|
+
siterator const s = this->priv_find_in_bucket(*bp, key, equal_func, h);
|
2794
|
+
return std::pair<iterator, bool>(this->build_iterator(s, bp), s == this->priv_end_sit());
|
2215
2795
|
}
|
2216
2796
|
|
2217
2797
|
//! <b>Effects</b>: Checks if a value can be inserted in the unordered_set, using
|
@@ -2241,7 +2821,7 @@ class hashtable_impl
|
|
2241
2821
|
//! objects are inserted or erased from the unordered_set.
|
2242
2822
|
//!
|
2243
2823
|
//! After a successful rehashing insert_commit_data remains valid.
|
2244
|
-
|
2824
|
+
inline std::pair<iterator, bool> insert_unique_check
|
2245
2825
|
( const key_type &key, insert_commit_data &commit_data)
|
2246
2826
|
{ return this->insert_unique_check(key, this->priv_hasher(), this->priv_equal(), commit_data); }
|
2247
2827
|
|
@@ -2264,17 +2844,53 @@ class hashtable_impl
|
|
2264
2844
|
//! erased between the "insert_check" and "insert_commit" calls.
|
2265
2845
|
//!
|
2266
2846
|
//! After a successful rehashing insert_commit_data remains valid.
|
2267
|
-
iterator insert_unique_commit(reference value, const insert_commit_data
|
2847
|
+
iterator insert_unique_commit(reference value, const insert_commit_data& commit_data) BOOST_NOEXCEPT
|
2268
2848
|
{
|
2269
|
-
size_type bucket_num = this->
|
2270
|
-
bucket_type
|
2849
|
+
size_type bucket_num = this->priv_hash_to_nbucket(commit_data.get_hash());
|
2850
|
+
bucket_type& b = this->priv_bucket(bucket_num);
|
2271
2851
|
this->priv_size_traits().increment();
|
2272
2852
|
node_ptr const n = pointer_traits<node_ptr>::pointer_to(this->priv_value_to_node(value));
|
2273
|
-
BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink ||
|
2274
|
-
node_functions_t::store_hash(n, commit_data.
|
2853
|
+
BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || slist_node_algorithms::unique(n));
|
2854
|
+
node_functions_t::store_hash(n, commit_data.get_hash(), store_hash_t());
|
2275
2855
|
this->priv_insertion_update_cache(bucket_num);
|
2276
2856
|
group_functions_t::insert_in_group(n, n, optimize_multikey_t());
|
2277
|
-
|
2857
|
+
slist_node_algorithms::link_after(b.get_node_ptr(), n);
|
2858
|
+
return this->build_iterator(siterator(n), this->to_ptr(b));
|
2859
|
+
}
|
2860
|
+
|
2861
|
+
//! <b>Requires</b>: value must be an lvalue of type value_type. commit_data
|
2862
|
+
//! must have been obtained from a previous call to "insert_check".
|
2863
|
+
//! No objects should have been inserted or erased from the unordered_set between
|
2864
|
+
//! the "insert_check" that filled "commit_data" and the call to "insert_commit".
|
2865
|
+
//!
|
2866
|
+
//! No rehashing shall be performed between `insert_check` and `insert_fast_commit`.
|
2867
|
+
//!
|
2868
|
+
//! <b>Effects</b>: Inserts the value in the unordered_set using the information obtained
|
2869
|
+
//! from the "commit_data" that a previous "insert_check" filled.
|
2870
|
+
//!
|
2871
|
+
//! <b>Returns</b>: An iterator to the newly inserted object.
|
2872
|
+
//!
|
2873
|
+
//! <b>Complexity</b>: Constant time.
|
2874
|
+
//!
|
2875
|
+
//! <b>Throws</b>: Nothing.
|
2876
|
+
//!
|
2877
|
+
//! <b>Notes</b>: This function has only sense if a "insert_check" has been
|
2878
|
+
//! previously executed to fill "commit_data". No value should be inserted or
|
2879
|
+
//! erased between the "insert_check" and "insert_commit" calls.
|
2880
|
+
//!
|
2881
|
+
//! Since this commit operation does not support rehashing between the check
|
2882
|
+
//! and the commit, it's faster than `insert_commit`.
|
2883
|
+
iterator insert_unique_fast_commit(reference value, const insert_commit_data &commit_data) BOOST_NOEXCEPT
|
2884
|
+
{
|
2885
|
+
this->priv_size_inc();
|
2886
|
+
node_ptr const n = this->priv_value_to_node_ptr(value);
|
2887
|
+
BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || slist_node_algorithms::unique(n));
|
2888
|
+
node_functions_t::store_hash(n, commit_data.get_hash(), store_hash_t());
|
2889
|
+
this->priv_insertion_update_cache(static_cast<size_type>(commit_data.bucket_idx));
|
2890
|
+
group_functions_t::insert_in_group(n, n, optimize_multikey_t());
|
2891
|
+
bucket_type& b = this->priv_bucket(commit_data.bucket_idx);
|
2892
|
+
slist_node_algorithms::link_after(b.get_node_ptr(), n);
|
2893
|
+
return this->build_iterator(siterator(n), this->to_ptr(b));
|
2278
2894
|
}
|
2279
2895
|
|
2280
2896
|
//! <b>Effects</b>: Erases the element pointed to by i.
|
@@ -2285,7 +2901,7 @@ class hashtable_impl
|
|
2285
2901
|
//!
|
2286
2902
|
//! <b>Note</b>: Invalidates the iterators (but not the references)
|
2287
2903
|
//! to the erased element. No destructors are called.
|
2288
|
-
|
2904
|
+
inline void erase(const_iterator i) BOOST_NOEXCEPT
|
2289
2905
|
{ this->erase_and_dispose(i, detail::null_disposer()); }
|
2290
2906
|
|
2291
2907
|
//! <b>Effects</b>: Erases the range pointed to by b end e.
|
@@ -2297,7 +2913,7 @@ class hashtable_impl
|
|
2297
2913
|
//!
|
2298
2914
|
//! <b>Note</b>: Invalidates the iterators (but not the references)
|
2299
2915
|
//! to the erased elements. No destructors are called.
|
2300
|
-
|
2916
|
+
inline void erase(const_iterator b, const_iterator e) BOOST_NOEXCEPT
|
2301
2917
|
{ this->erase_and_dispose(b, e, detail::null_disposer()); }
|
2302
2918
|
|
2303
2919
|
//! <b>Effects</b>: Erases all the elements with the given value.
|
@@ -2312,7 +2928,7 @@ class hashtable_impl
|
|
2312
2928
|
//!
|
2313
2929
|
//! <b>Note</b>: Invalidates the iterators (but not the references)
|
2314
2930
|
//! to the erased elements. No destructors are called.
|
2315
|
-
|
2931
|
+
inline size_type erase(const key_type &key)
|
2316
2932
|
{ return this->erase(key, this->priv_hasher(), this->priv_equal()); }
|
2317
2933
|
|
2318
2934
|
//! <b>Requires</b>: "hash_func" must be a hash function that induces
|
@@ -2336,7 +2952,7 @@ class hashtable_impl
|
|
2336
2952
|
//! <b>Note</b>: Invalidates the iterators (but not the references)
|
2337
2953
|
//! to the erased elements. No destructors are called.
|
2338
2954
|
template<class KeyType, class KeyHasher, class KeyEqual>
|
2339
|
-
|
2955
|
+
inline size_type erase(const KeyType& key, KeyHasher hash_func, KeyEqual equal_func)
|
2340
2956
|
{ return this->erase_and_dispose(key, hash_func, equal_func, detail::null_disposer()); }
|
2341
2957
|
|
2342
2958
|
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
@@ -2353,14 +2969,13 @@ class hashtable_impl
|
|
2353
2969
|
template<class Disposer>
|
2354
2970
|
BOOST_INTRUSIVE_DOC1ST(void
|
2355
2971
|
, typename detail::disable_if_convertible<Disposer BOOST_INTRUSIVE_I const_iterator>::type)
|
2356
|
-
erase_and_dispose(const_iterator i, Disposer disposer)
|
2972
|
+
erase_and_dispose(const_iterator i, Disposer disposer) BOOST_NOEXCEPT
|
2357
2973
|
{
|
2358
2974
|
//Get the bucket number and local iterator for both iterators
|
2359
|
-
|
2360
|
-
|
2361
|
-
this->
|
2362
|
-
this->
|
2363
|
-
this->priv_erasure_update_cache_range(first_bucket_num, first_bucket_num);
|
2975
|
+
const bucket_ptr bp = this->priv_get_bucket_ptr(i);
|
2976
|
+
this->priv_erase_node(*bp, i.slist_it(), this->make_node_disposer(disposer), optimize_multikey_t());
|
2977
|
+
this->priv_size_dec();
|
2978
|
+
this->priv_erasure_update_cache(bp);
|
2364
2979
|
}
|
2365
2980
|
|
2366
2981
|
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
@@ -2376,33 +2991,31 @@ class hashtable_impl
|
|
2376
2991
|
//! <b>Note</b>: Invalidates the iterators
|
2377
2992
|
//! to the erased elements.
|
2378
2993
|
template<class Disposer>
|
2379
|
-
void erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer)
|
2994
|
+
void erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer) BOOST_NOEXCEPT
|
2380
2995
|
{
|
2381
2996
|
if(b != e){
|
2382
2997
|
//Get the bucket number and local iterator for both iterators
|
2383
|
-
|
2384
|
-
size_type first_bucket_num = this->priv_get_bucket_num(first_local_it);
|
2998
|
+
size_type first_bucket_num = this->priv_get_bucket_num(b);
|
2385
2999
|
|
2386
|
-
const bucket_ptr buck_ptr = this->priv_bucket_pointer();
|
2387
3000
|
siterator before_first_local_it
|
2388
|
-
= this->priv_get_previous(
|
3001
|
+
= this->priv_get_previous(this->priv_bucket(first_bucket_num), b.slist_it(), optimize_multikey_t());
|
2389
3002
|
size_type last_bucket_num;
|
2390
3003
|
siterator last_local_it;
|
2391
3004
|
|
2392
3005
|
//For the end iterator, we will assign the end iterator
|
2393
3006
|
//of the last bucket
|
2394
3007
|
if(e == this->end()){
|
2395
|
-
last_bucket_num = this->bucket_count() -
|
2396
|
-
last_local_it =
|
3008
|
+
last_bucket_num = size_type(this->bucket_count() - 1u);
|
3009
|
+
last_local_it = this->sit_end(this->priv_bucket(last_bucket_num));
|
2397
3010
|
}
|
2398
3011
|
else{
|
2399
3012
|
last_local_it = e.slist_it();
|
2400
|
-
last_bucket_num
|
3013
|
+
last_bucket_num = this->priv_get_bucket_num(e);
|
2401
3014
|
}
|
2402
|
-
size_type const num_erased = this->priv_erase_node_range
|
3015
|
+
size_type const num_erased = (size_type)this->priv_erase_node_range
|
2403
3016
|
( before_first_local_it, first_bucket_num, last_local_it, last_bucket_num
|
2404
|
-
, make_node_disposer(disposer), optimize_multikey_t());
|
2405
|
-
this->
|
3017
|
+
, this->make_node_disposer(disposer), optimize_multikey_t());
|
3018
|
+
this->priv_size_count(size_type(this->priv_size_count()-num_erased));
|
2406
3019
|
this->priv_erasure_update_cache_range(first_bucket_num, last_bucket_num);
|
2407
3020
|
}
|
2408
3021
|
}
|
@@ -2423,7 +3036,7 @@ class hashtable_impl
|
|
2423
3036
|
//! <b>Note</b>: Invalidates the iterators (but not the references)
|
2424
3037
|
//! to the erased elements. No destructors are called.
|
2425
3038
|
template<class Disposer>
|
2426
|
-
|
3039
|
+
inline size_type erase_and_dispose(const key_type &key, Disposer disposer)
|
2427
3040
|
{ return this->erase_and_dispose(key, this->priv_hasher(), this->priv_equal(), disposer); }
|
2428
3041
|
|
2429
3042
|
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
@@ -2449,30 +3062,34 @@ class hashtable_impl
|
|
2449
3062
|
std::size_t h;
|
2450
3063
|
siterator prev;
|
2451
3064
|
siterator it = this->priv_find(key, hash_func, equal_func, bucket_num, h, prev);
|
2452
|
-
bool const success = it != this->
|
3065
|
+
bool const success = it != this->priv_end_sit();
|
2453
3066
|
|
2454
|
-
|
3067
|
+
std::size_t cnt(0);
|
2455
3068
|
if(success){
|
2456
3069
|
if(optimize_multikey){
|
3070
|
+
siterator past_last_in_group = it;
|
3071
|
+
(priv_go_to_last_in_group)(past_last_in_group, optimize_multikey_t());
|
3072
|
+
++past_last_in_group;
|
2457
3073
|
cnt = this->priv_erase_from_single_bucket
|
2458
|
-
(this->
|
3074
|
+
( this->priv_bucket(bucket_num), prev
|
3075
|
+
, past_last_in_group
|
3076
|
+
, this->make_node_disposer(disposer), optimize_multikey_t());
|
2459
3077
|
}
|
2460
3078
|
else{
|
2461
|
-
|
2462
|
-
siterator const end_sit = b.end();
|
3079
|
+
siterator const end_sit = this->priv_bucket_lend(bucket_num);
|
2463
3080
|
do{
|
2464
3081
|
++cnt;
|
2465
3082
|
++it;
|
2466
3083
|
}while(it != end_sit &&
|
2467
|
-
|
2468
|
-
|
2469
|
-
|
3084
|
+
this->priv_is_value_equal_to_key
|
3085
|
+
(this->priv_value_from_siterator(it), h, key, equal_func, compare_hash_t()));
|
3086
|
+
slist_node_algorithms::unlink_after_and_dispose(prev.pointed_node(), it.pointed_node(), this->make_node_disposer(disposer));
|
2470
3087
|
}
|
2471
|
-
this->
|
3088
|
+
this->priv_size_count(size_type(this->priv_size_count()-cnt));
|
2472
3089
|
this->priv_erasure_update_cache();
|
2473
3090
|
}
|
2474
3091
|
|
2475
|
-
return cnt;
|
3092
|
+
return static_cast<size_type>(cnt);
|
2476
3093
|
}
|
2477
3094
|
|
2478
3095
|
//! <b>Effects</b>: Erases all of the elements.
|
@@ -2484,10 +3101,10 @@ class hashtable_impl
|
|
2484
3101
|
//!
|
2485
3102
|
//! <b>Note</b>: Invalidates the iterators (but not the references)
|
2486
3103
|
//! to the erased elements. No destructors are called.
|
2487
|
-
void clear()
|
3104
|
+
void clear() BOOST_NOEXCEPT
|
2488
3105
|
{
|
2489
3106
|
this->priv_clear_buckets_and_cache();
|
2490
|
-
this->
|
3107
|
+
this->priv_size_count(size_type(0));
|
2491
3108
|
}
|
2492
3109
|
|
2493
3110
|
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
@@ -2502,18 +3119,19 @@ class hashtable_impl
|
|
2502
3119
|
//! <b>Note</b>: Invalidates the iterators (but not the references)
|
2503
3120
|
//! to the erased elements. No destructors are called.
|
2504
3121
|
template<class Disposer>
|
2505
|
-
void clear_and_dispose(Disposer disposer)
|
3122
|
+
void clear_and_dispose(Disposer disposer) BOOST_NOEXCEPT
|
2506
3123
|
{
|
2507
3124
|
if(!constant_time_size || !this->empty()){
|
2508
3125
|
size_type num_buckets = this->bucket_count();
|
2509
3126
|
bucket_ptr b = this->priv_bucket_pointer();
|
2510
|
-
typename typeof_node_disposer<Disposer>::type d(disposer, &this->priv_value_traits());
|
2511
|
-
for(; num_buckets
|
2512
|
-
|
3127
|
+
typename internal_type::template typeof_node_disposer<Disposer>::type d(disposer, &this->priv_value_traits());
|
3128
|
+
for(; num_buckets; ++b){
|
3129
|
+
--num_buckets;
|
3130
|
+
slist_node_algorithms::detach_and_dispose(b->get_node_ptr(), d);
|
2513
3131
|
}
|
2514
|
-
this->
|
3132
|
+
this->priv_size_count(size_type(0));
|
2515
3133
|
}
|
2516
|
-
this->
|
3134
|
+
this->priv_init_cache();
|
2517
3135
|
}
|
2518
3136
|
|
2519
3137
|
//! <b>Effects</b>: Returns the number of contained elements with the given value
|
@@ -2521,7 +3139,7 @@ class hashtable_impl
|
|
2521
3139
|
//! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
|
2522
3140
|
//!
|
2523
3141
|
//! <b>Throws</b>: If the internal hasher or the equality functor throws.
|
2524
|
-
|
3142
|
+
inline size_type count(const key_type &key) const
|
2525
3143
|
{ return this->count(key, this->priv_hasher(), this->priv_equal()); }
|
2526
3144
|
|
2527
3145
|
//! <b>Requires</b>: "hash_func" must be a hash function that induces
|
@@ -2552,7 +3170,7 @@ class hashtable_impl
|
|
2552
3170
|
//! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
|
2553
3171
|
//!
|
2554
3172
|
//! <b>Throws</b>: If the internal hasher or the equality functor throws.
|
2555
|
-
|
3173
|
+
inline iterator find(const key_type &key)
|
2556
3174
|
{ return this->find(key, this->priv_hasher(), this->priv_equal()); }
|
2557
3175
|
|
2558
3176
|
//! <b>Requires</b>: "hash_func" must be a hash function that induces
|
@@ -2577,11 +3195,10 @@ class hashtable_impl
|
|
2577
3195
|
template<class KeyType, class KeyHasher, class KeyEqual>
|
2578
3196
|
iterator find(const KeyType &key, KeyHasher hash_func, KeyEqual equal_func)
|
2579
3197
|
{
|
2580
|
-
|
2581
|
-
|
2582
|
-
siterator
|
2583
|
-
return
|
2584
|
-
, &this->get_bucket_value_traits());
|
3198
|
+
std::size_t h = hash_func(key);
|
3199
|
+
bucket_ptr bp = this->priv_hash_to_bucket_ptr(h);
|
3200
|
+
siterator s = this->priv_find_in_bucket(*bp, key, equal_func, h);
|
3201
|
+
return this->build_iterator(s, bp);
|
2585
3202
|
}
|
2586
3203
|
|
2587
3204
|
//! <b>Effects</b>: Finds a const_iterator to the first element whose key is
|
@@ -2590,7 +3207,7 @@ class hashtable_impl
|
|
2590
3207
|
//! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
|
2591
3208
|
//!
|
2592
3209
|
//! <b>Throws</b>: If the internal hasher or the equality functor throws.
|
2593
|
-
|
3210
|
+
inline const_iterator find(const key_type &key) const
|
2594
3211
|
{ return this->find(key, this->priv_hasher(), this->priv_equal()); }
|
2595
3212
|
|
2596
3213
|
//! <b>Requires</b>: "hash_func" must be a hash function that induces
|
@@ -2616,11 +3233,10 @@ class hashtable_impl
|
|
2616
3233
|
const_iterator find
|
2617
3234
|
(const KeyType &key, KeyHasher hash_func, KeyEqual equal_func) const
|
2618
3235
|
{
|
2619
|
-
|
2620
|
-
|
2621
|
-
siterator
|
2622
|
-
return
|
2623
|
-
, &this->get_bucket_value_traits());
|
3236
|
+
std::size_t h = hash_func(key);
|
3237
|
+
bucket_ptr bp = this->priv_hash_to_bucket_ptr(h);
|
3238
|
+
siterator s = this->priv_find_in_bucket(*bp, key, equal_func, h);
|
3239
|
+
return this->build_const_iterator(s, bp);
|
2624
3240
|
}
|
2625
3241
|
|
2626
3242
|
//! <b>Effects</b>: Returns a range containing all elements with values equivalent
|
@@ -2630,7 +3246,7 @@ class hashtable_impl
|
|
2630
3246
|
//! <b>Complexity</b>: Average case O(this->count(value)). Worst case O(this->size()).
|
2631
3247
|
//!
|
2632
3248
|
//! <b>Throws</b>: If the internal hasher or the equality functor throws.
|
2633
|
-
|
3249
|
+
inline std::pair<iterator,iterator> equal_range(const key_type &key)
|
2634
3250
|
{ return this->equal_range(key, this->priv_hasher(), this->priv_equal()); }
|
2635
3251
|
|
2636
3252
|
//! <b>Requires</b>: "hash_func" must be a hash function that induces
|
@@ -2657,11 +3273,11 @@ class hashtable_impl
|
|
2657
3273
|
std::pair<iterator,iterator> equal_range
|
2658
3274
|
(const KeyType &key, KeyHasher hash_func, KeyEqual equal_func)
|
2659
3275
|
{
|
2660
|
-
|
3276
|
+
priv_equal_range_result ret =
|
2661
3277
|
this->priv_equal_range(key, hash_func, equal_func);
|
2662
3278
|
return std::pair<iterator, iterator>
|
2663
|
-
(
|
2664
|
-
,
|
3279
|
+
( this->build_iterator(ret.first, ret.bucket_first)
|
3280
|
+
, this->build_iterator(ret.second, ret.bucket_second));
|
2665
3281
|
}
|
2666
3282
|
|
2667
3283
|
//! <b>Effects</b>: Returns a range containing all elements with values equivalent
|
@@ -2671,7 +3287,7 @@ class hashtable_impl
|
|
2671
3287
|
//! <b>Complexity</b>: Average case O(this->count(value)). Worst case O(this->size()).
|
2672
3288
|
//!
|
2673
3289
|
//! <b>Throws</b>: If the internal hasher or the equality functor throws.
|
2674
|
-
|
3290
|
+
inline std::pair<const_iterator, const_iterator>
|
2675
3291
|
equal_range(const key_type &key) const
|
2676
3292
|
{ return this->equal_range(key, this->priv_hasher(), this->priv_equal()); }
|
2677
3293
|
|
@@ -2699,11 +3315,11 @@ class hashtable_impl
|
|
2699
3315
|
std::pair<const_iterator,const_iterator> equal_range
|
2700
3316
|
(const KeyType &key, KeyHasher hash_func, KeyEqual equal_func) const
|
2701
3317
|
{
|
2702
|
-
|
3318
|
+
priv_equal_range_result ret =
|
2703
3319
|
this->priv_equal_range(key, hash_func, equal_func);
|
2704
3320
|
return std::pair<const_iterator, const_iterator>
|
2705
|
-
(
|
2706
|
-
,
|
3321
|
+
( this->build_const_iterator(ret.first, ret.bucket_first)
|
3322
|
+
, this->build_const_iterator(ret.second, ret.bucket_second));
|
2707
3323
|
}
|
2708
3324
|
|
2709
3325
|
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
@@ -2717,7 +3333,7 @@ class hashtable_impl
|
|
2717
3333
|
//! <b>Complexity</b>: Constant.
|
2718
3334
|
//!
|
2719
3335
|
//! <b>Throws</b>: If the internal hash function throws.
|
2720
|
-
iterator iterator_to(reference value);
|
3336
|
+
iterator iterator_to(reference value) BOOST_NOEXCEPT;
|
2721
3337
|
|
2722
3338
|
//! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
|
2723
3339
|
//! appropriate type. Otherwise the behavior is undefined.
|
@@ -2728,7 +3344,7 @@ class hashtable_impl
|
|
2728
3344
|
//! <b>Complexity</b>: Constant.
|
2729
3345
|
//!
|
2730
3346
|
//! <b>Throws</b>: If the internal hash function throws.
|
2731
|
-
const_iterator iterator_to(const_reference value) const;
|
3347
|
+
const_iterator iterator_to(const_reference value) const BOOST_NOEXCEPT;
|
2732
3348
|
|
2733
3349
|
//! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
|
2734
3350
|
//! appropriate type. Otherwise the behavior is undefined.
|
@@ -2742,7 +3358,7 @@ class hashtable_impl
|
|
2742
3358
|
//!
|
2743
3359
|
//! <b>Note</b>: This static function is available only if the <i>value traits</i>
|
2744
3360
|
//! is stateless.
|
2745
|
-
static local_iterator s_local_iterator_to(reference value);
|
3361
|
+
static local_iterator s_local_iterator_to(reference value) BOOST_NOEXCEPT;
|
2746
3362
|
|
2747
3363
|
//! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
|
2748
3364
|
//! appropriate type. Otherwise the behavior is undefined.
|
@@ -2756,7 +3372,7 @@ class hashtable_impl
|
|
2756
3372
|
//!
|
2757
3373
|
//! <b>Note</b>: This static function is available only if the <i>value traits</i>
|
2758
3374
|
//! is stateless.
|
2759
|
-
static const_local_iterator s_local_iterator_to(const_reference value);
|
3375
|
+
static const_local_iterator s_local_iterator_to(const_reference value) BOOST_NOEXCEPT;
|
2760
3376
|
|
2761
3377
|
//! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
|
2762
3378
|
//! appropriate type. Otherwise the behavior is undefined.
|
@@ -2767,7 +3383,7 @@ class hashtable_impl
|
|
2767
3383
|
//! <b>Complexity</b>: Constant.
|
2768
3384
|
//!
|
2769
3385
|
//! <b>Throws</b>: Nothing.
|
2770
|
-
local_iterator local_iterator_to(reference value);
|
3386
|
+
local_iterator local_iterator_to(reference value) BOOST_NOEXCEPT;
|
2771
3387
|
|
2772
3388
|
//! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
|
2773
3389
|
//! appropriate type. Otherwise the behavior is undefined.
|
@@ -2778,7 +3394,7 @@ class hashtable_impl
|
|
2778
3394
|
//! <b>Complexity</b>: Constant.
|
2779
3395
|
//!
|
2780
3396
|
//! <b>Throws</b>: Nothing.
|
2781
|
-
const_local_iterator local_iterator_to(const_reference value) const;
|
3397
|
+
const_local_iterator local_iterator_to(const_reference value) const BOOST_NOEXCEPT;
|
2782
3398
|
|
2783
3399
|
//! <b>Effects</b>: Returns the number of buckets passed in the constructor
|
2784
3400
|
//! or the last rehash function.
|
@@ -2786,7 +3402,7 @@ class hashtable_impl
|
|
2786
3402
|
//! <b>Complexity</b>: Constant.
|
2787
3403
|
//!
|
2788
3404
|
//! <b>Throws</b>: Nothing.
|
2789
|
-
size_type bucket_count() const;
|
3405
|
+
size_type bucket_count() const BOOST_NOEXCEPT;
|
2790
3406
|
|
2791
3407
|
//! <b>Requires</b>: n is in the range [0, this->bucket_count()).
|
2792
3408
|
//!
|
@@ -2795,7 +3411,7 @@ class hashtable_impl
|
|
2795
3411
|
//! <b>Complexity</b>: Constant.
|
2796
3412
|
//!
|
2797
3413
|
//! <b>Throws</b>: Nothing.
|
2798
|
-
size_type bucket_size(size_type n) const;
|
3414
|
+
size_type bucket_size(size_type n) const BOOST_NOEXCEPT;
|
2799
3415
|
#endif //#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
2800
3416
|
|
2801
3417
|
//! <b>Effects</b>: Returns the index of the bucket in which elements
|
@@ -2806,8 +3422,8 @@ class hashtable_impl
|
|
2806
3422
|
//! <b>Throws</b>: If the hash functor throws.
|
2807
3423
|
//!
|
2808
3424
|
//! <b>Note</b>: the return value is in the range [0, this->bucket_count()).
|
2809
|
-
|
2810
|
-
{ return this->
|
3425
|
+
inline size_type bucket(const key_type& k) const
|
3426
|
+
{ return this->priv_hash_to_nbucket(this->priv_hash(k)); }
|
2811
3427
|
|
2812
3428
|
//! <b>Requires</b>: "hash_func" must be a hash function that induces
|
2813
3429
|
//! the same hash values as the stored hasher. The difference is that
|
@@ -2822,8 +3438,8 @@ class hashtable_impl
|
|
2822
3438
|
//!
|
2823
3439
|
//! <b>Note</b>: the return value is in the range [0, this->bucket_count()).
|
2824
3440
|
template<class KeyType, class KeyHasher>
|
2825
|
-
|
2826
|
-
{ return this->
|
3441
|
+
inline size_type bucket(const KeyType& k, KeyHasher hash_func) const
|
3442
|
+
{ return this->priv_hash_to_nbucket(hash_func(k)); }
|
2827
3443
|
|
2828
3444
|
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
2829
3445
|
//! <b>Effects</b>: Returns the bucket array pointer passed in the constructor
|
@@ -2832,7 +3448,7 @@ class hashtable_impl
|
|
2832
3448
|
//! <b>Complexity</b>: Constant.
|
2833
3449
|
//!
|
2834
3450
|
//! <b>Throws</b>: Nothing.
|
2835
|
-
bucket_ptr bucket_pointer() const;
|
3451
|
+
bucket_ptr bucket_pointer() const BOOST_NOEXCEPT;
|
2836
3452
|
|
2837
3453
|
//! <b>Requires</b>: n is in the range [0, this->bucket_count()).
|
2838
3454
|
//!
|
@@ -2845,7 +3461,7 @@ class hashtable_impl
|
|
2845
3461
|
//!
|
2846
3462
|
//! <b>Note</b>: [this->begin(n), this->end(n)) is a valid range
|
2847
3463
|
//! containing all of the elements in the nth bucket.
|
2848
|
-
local_iterator begin(size_type n);
|
3464
|
+
local_iterator begin(size_type n) BOOST_NOEXCEPT;
|
2849
3465
|
|
2850
3466
|
//! <b>Requires</b>: n is in the range [0, this->bucket_count()).
|
2851
3467
|
//!
|
@@ -2858,7 +3474,7 @@ class hashtable_impl
|
|
2858
3474
|
//!
|
2859
3475
|
//! <b>Note</b>: [this->begin(n), this->end(n)) is a valid range
|
2860
3476
|
//! containing all of the elements in the nth bucket.
|
2861
|
-
const_local_iterator begin(size_type n) const;
|
3477
|
+
const_local_iterator begin(size_type n) const BOOST_NOEXCEPT;
|
2862
3478
|
|
2863
3479
|
//! <b>Requires</b>: n is in the range [0, this->bucket_count()).
|
2864
3480
|
//!
|
@@ -2871,7 +3487,7 @@ class hashtable_impl
|
|
2871
3487
|
//!
|
2872
3488
|
//! <b>Note</b>: [this->begin(n), this->end(n)) is a valid range
|
2873
3489
|
//! containing all of the elements in the nth bucket.
|
2874
|
-
const_local_iterator cbegin(size_type n) const;
|
3490
|
+
const_local_iterator cbegin(size_type n) const BOOST_NOEXCEPT;
|
2875
3491
|
|
2876
3492
|
//! <b>Requires</b>: n is in the range [0, this->bucket_count()).
|
2877
3493
|
//!
|
@@ -2884,7 +3500,7 @@ class hashtable_impl
|
|
2884
3500
|
//!
|
2885
3501
|
//! <b>Note</b>: [this->begin(n), this->end(n)) is a valid range
|
2886
3502
|
//! containing all of the elements in the nth bucket.
|
2887
|
-
local_iterator end(size_type n);
|
3503
|
+
local_iterator end(size_type n) BOOST_NOEXCEPT;
|
2888
3504
|
|
2889
3505
|
//! <b>Requires</b>: n is in the range [0, this->bucket_count()).
|
2890
3506
|
//!
|
@@ -2897,7 +3513,7 @@ class hashtable_impl
|
|
2897
3513
|
//!
|
2898
3514
|
//! <b>Note</b>: [this->begin(n), this->end(n)) is a valid range
|
2899
3515
|
//! containing all of the elements in the nth bucket.
|
2900
|
-
const_local_iterator end(size_type n) const;
|
3516
|
+
const_local_iterator end(size_type n) const BOOST_NOEXCEPT;
|
2901
3517
|
|
2902
3518
|
//! <b>Requires</b>: n is in the range [0, this->bucket_count()).
|
2903
3519
|
//!
|
@@ -2910,7 +3526,7 @@ class hashtable_impl
|
|
2910
3526
|
//!
|
2911
3527
|
//! <b>Note</b>: [this->begin(n), this->end(n)) is a valid range
|
2912
3528
|
//! containing all of the elements in the nth bucket.
|
2913
|
-
const_local_iterator cend(size_type n) const;
|
3529
|
+
const_local_iterator cend(size_type n) const BOOST_NOEXCEPT;
|
2914
3530
|
#endif //#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
2915
3531
|
|
2916
3532
|
//! <b>Requires</b>: new_bucket_traits can hold a pointer to a new bucket array
|
@@ -2940,8 +3556,8 @@ class hashtable_impl
|
|
2940
3556
|
//! <b>Complexity</b>: Average case linear in this->size(), worst case quadratic.
|
2941
3557
|
//!
|
2942
3558
|
//! <b>Throws</b>: If the hasher functor throws. Basic guarantee.
|
2943
|
-
|
2944
|
-
{ this->
|
3559
|
+
inline void rehash(const bucket_traits &new_bucket_traits)
|
3560
|
+
{ this->priv_rehash_impl(new_bucket_traits, false); }
|
2945
3561
|
|
2946
3562
|
//! <b>Note</b>: This function is used when keys from inserted elements are changed
|
2947
3563
|
//! (e.g. a language change when key is a string) but uniqueness and hash properties are
|
@@ -2963,8 +3579,8 @@ class hashtable_impl
|
|
2963
3579
|
//! <b>Complexity</b>: Average case linear in this->size(), worst case quadratic.
|
2964
3580
|
//!
|
2965
3581
|
//! <b>Throws</b>: If the hasher functor throws. Basic guarantee.
|
2966
|
-
|
2967
|
-
{ this->
|
3582
|
+
inline void full_rehash()
|
3583
|
+
{ this->priv_rehash_impl(this->priv_bucket_traits(), true); }
|
2968
3584
|
|
2969
3585
|
//! <b>Requires</b>:
|
2970
3586
|
//!
|
@@ -2978,48 +3594,50 @@ class hashtable_impl
|
|
2978
3594
|
bool incremental_rehash(bool grow = true)
|
2979
3595
|
{
|
2980
3596
|
//This function is only available for containers with incremental hashing
|
2981
|
-
|
2982
|
-
const
|
2983
|
-
const
|
2984
|
-
const bucket_ptr buck_ptr = this->priv_bucket_pointer();
|
3597
|
+
BOOST_INTRUSIVE_STATIC_ASSERT(( incremental && power_2_buckets ));
|
3598
|
+
const std::size_t split_idx = this->split_count();
|
3599
|
+
const std::size_t bucket_cnt = this->bucket_count();
|
2985
3600
|
bool ret = false;
|
2986
3601
|
|
2987
3602
|
if(grow){
|
2988
3603
|
//Test if the split variable can be changed
|
2989
3604
|
if((ret = split_idx < bucket_cnt)){
|
2990
|
-
const
|
2991
|
-
bucket_type &old_bucket =
|
2992
|
-
this->
|
3605
|
+
const std::size_t bucket_to_rehash = split_idx - bucket_cnt/2u;
|
3606
|
+
bucket_type &old_bucket = this->priv_bucket(bucket_to_rehash);
|
3607
|
+
this->inc_split_count();
|
2993
3608
|
|
2994
3609
|
//Anti-exception stuff: if an exception is thrown while
|
2995
3610
|
//moving elements from old_bucket to the target bucket, all moved
|
2996
3611
|
//elements are moved back to the original one.
|
2997
|
-
|
2998
|
-
(
|
2999
|
-
|
3000
|
-
|
3001
|
-
|
3612
|
+
incremental_rehash_rollback<bucket_type, split_traits, slist_node_algorithms> rollback
|
3613
|
+
( this->priv_bucket(split_idx), old_bucket, this->priv_split_traits());
|
3614
|
+
siterator before_i(old_bucket.get_node_ptr());
|
3615
|
+
siterator i(before_i); ++i;
|
3616
|
+
siterator end_sit = linear_buckets ? siterator() : before_i;
|
3617
|
+
for( ; i != end_sit; i = before_i, ++i){
|
3618
|
+
const value_type &v = this->priv_value_from_siterator(i);
|
3002
3619
|
const std::size_t hash_value = this->priv_stored_or_compute_hash(v, store_hash_t());
|
3003
|
-
const
|
3004
|
-
siterator
|
3620
|
+
const std::size_t new_n = this->priv_hash_to_nbucket(hash_value);
|
3621
|
+
siterator last = i;
|
3622
|
+
(priv_go_to_last_in_group)(last, optimize_multikey_t());
|
3005
3623
|
if(new_n == bucket_to_rehash){
|
3006
3624
|
before_i = last;
|
3007
3625
|
}
|
3008
3626
|
else{
|
3009
|
-
bucket_type &new_b =
|
3010
|
-
|
3627
|
+
bucket_type &new_b = this->priv_bucket(new_n);
|
3628
|
+
slist_node_algorithms::transfer_after(new_b.get_node_ptr(), before_i.pointed_node(), last.pointed_node());
|
3011
3629
|
}
|
3012
3630
|
}
|
3013
3631
|
rollback.release();
|
3014
3632
|
this->priv_erasure_update_cache();
|
3015
3633
|
}
|
3016
3634
|
}
|
3017
|
-
else if((ret = split_idx > bucket_cnt/
|
3018
|
-
const
|
3019
|
-
bucket_type &target_bucket =
|
3020
|
-
bucket_type &source_bucket =
|
3021
|
-
|
3022
|
-
this->
|
3635
|
+
else if((ret = split_idx > bucket_cnt/2u)){ //!grow
|
3636
|
+
const std::size_t target_bucket_num = split_idx - 1u - bucket_cnt/2u;
|
3637
|
+
bucket_type &target_bucket = this->priv_bucket(target_bucket_num);
|
3638
|
+
bucket_type &source_bucket = this->priv_bucket(split_idx-1u);
|
3639
|
+
slist_node_algorithms::transfer_after(target_bucket.get_node_ptr(), source_bucket.get_node_ptr());
|
3640
|
+
this->dec_split_count();
|
3023
3641
|
this->priv_insertion_update_cache(target_bucket_num);
|
3024
3642
|
}
|
3025
3643
|
return ret;
|
@@ -3038,40 +3656,50 @@ class hashtable_impl
|
|
3038
3656
|
//! <b>Throws</b>: Nothing
|
3039
3657
|
//!
|
3040
3658
|
//! <b>Note</b>: this method is only available if incremental<true> option is activated.
|
3041
|
-
bool incremental_rehash(const bucket_traits &new_bucket_traits)
|
3659
|
+
bool incremental_rehash(const bucket_traits &new_bucket_traits) BOOST_NOEXCEPT
|
3042
3660
|
{
|
3043
3661
|
//This function is only available for containers with incremental hashing
|
3044
|
-
|
3045
|
-
|
3046
|
-
size_type
|
3662
|
+
BOOST_INTRUSIVE_STATIC_ASSERT(( incremental && power_2_buckets ));
|
3663
|
+
const bucket_ptr new_buckets = new_bucket_traits.bucket_begin();
|
3664
|
+
const size_type new_bucket_count_stdszt = static_cast<SizeType>(new_bucket_traits.bucket_count() - bucket_overhead);
|
3665
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(sizeof(size_type) >= sizeof(std::size_t) || new_bucket_count_stdszt <= size_type(-1));
|
3666
|
+
size_type new_bucket_count = static_cast<size_type>(new_bucket_count_stdszt);
|
3667
|
+
const size_type old_bucket_count = static_cast<size_type>(this->priv_usable_bucket_count());
|
3047
3668
|
const size_type split_idx = this->split_count();
|
3048
3669
|
|
3049
3670
|
//Test new bucket size is consistent with internal bucket size and split count
|
3050
|
-
if(
|
3051
|
-
if(!(split_idx >=
|
3671
|
+
if(new_bucket_count/2 == old_bucket_count){
|
3672
|
+
if(!(split_idx >= old_bucket_count))
|
3052
3673
|
return false;
|
3053
3674
|
}
|
3054
|
-
else if(
|
3055
|
-
if(!(split_idx <=
|
3675
|
+
else if(new_bucket_count == old_bucket_count/2){
|
3676
|
+
if(!(split_idx <= new_bucket_count))
|
3056
3677
|
return false;
|
3057
3678
|
}
|
3058
3679
|
else{
|
3059
3680
|
return false;
|
3060
3681
|
}
|
3061
3682
|
|
3062
|
-
const size_type ini_n = this->priv_get_cache_bucket_num();
|
3683
|
+
const size_type ini_n = (size_type)this->priv_get_cache_bucket_num();
|
3063
3684
|
const bucket_ptr old_buckets = this->priv_bucket_pointer();
|
3064
|
-
|
3065
|
-
|
3685
|
+
|
3686
|
+
|
3687
|
+
this->priv_unset_sentinel_bucket();
|
3688
|
+
this->priv_initialize_new_buckets(old_buckets, old_bucket_count, new_buckets, new_bucket_count);
|
3689
|
+
if (&new_bucket_traits != &this->priv_bucket_traits())
|
3690
|
+
this->priv_bucket_traits() = new_bucket_traits;
|
3691
|
+
|
3692
|
+
if(old_buckets != new_buckets){
|
3066
3693
|
for(size_type n = ini_n; n < split_idx; ++n){
|
3067
|
-
|
3068
|
-
|
3069
|
-
|
3694
|
+
slist_node_ptr new_bucket_nodeptr = new_bucket_traits.bucket_begin()[difference_type(n)].get_node_ptr();
|
3695
|
+
slist_node_ptr old_bucket_node_ptr = old_buckets[difference_type(n)].get_node_ptr();
|
3696
|
+
slist_node_algorithms::transfer_after(new_bucket_nodeptr, old_bucket_node_ptr);
|
3070
3697
|
}
|
3071
|
-
//
|
3072
|
-
this->
|
3073
|
-
this->priv_insertion_update_cache(ini_n);
|
3698
|
+
//Reset cache to safe position
|
3699
|
+
this->priv_set_cache_bucket_num(ini_n);
|
3074
3700
|
}
|
3701
|
+
|
3702
|
+
this->priv_set_sentinel_bucket();
|
3075
3703
|
return true;
|
3076
3704
|
}
|
3077
3705
|
|
@@ -3084,7 +3712,7 @@ class hashtable_impl
|
|
3084
3712
|
//! <b>Complexity</b>: Constant
|
3085
3713
|
//!
|
3086
3714
|
//! <b>Throws</b>: Nothing
|
3087
|
-
size_type split_count() const;
|
3715
|
+
size_type split_count() const BOOST_NOEXCEPT;
|
3088
3716
|
|
3089
3717
|
//! <b>Effects</b>: Returns the nearest new bucket count optimized for
|
3090
3718
|
//! the container that is bigger or equal than n. This suggestion can be
|
@@ -3095,7 +3723,7 @@ class hashtable_impl
|
|
3095
3723
|
//! <b>Complexity</b>: Amortized constant time.
|
3096
3724
|
//!
|
3097
3725
|
//! <b>Throws</b>: Nothing.
|
3098
|
-
static size_type suggested_upper_bucket_count(size_type n);
|
3726
|
+
static size_type suggested_upper_bucket_count(size_type n) BOOST_NOEXCEPT;
|
3099
3727
|
|
3100
3728
|
//! <b>Effects</b>: Returns the nearest new bucket count optimized for
|
3101
3729
|
//! the container that is smaller or equal than n. This suggestion can be
|
@@ -3106,7 +3734,7 @@ class hashtable_impl
|
|
3106
3734
|
//! <b>Complexity</b>: Amortized constant time.
|
3107
3735
|
//!
|
3108
3736
|
//! <b>Throws</b>: Nothing.
|
3109
|
-
static size_type suggested_lower_bucket_count(size_type n);
|
3737
|
+
static size_type suggested_lower_bucket_count(size_type n) BOOST_NOEXCEPT;
|
3110
3738
|
#endif //#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
3111
3739
|
|
3112
3740
|
|
@@ -3116,6 +3744,10 @@ class hashtable_impl
|
|
3116
3744
|
if(constant_time_size && x.size() != y.size()){
|
3117
3745
|
return false;
|
3118
3746
|
}
|
3747
|
+
|
3748
|
+
if (boost::intrusive::iterator_udistance(x.begin(), x.end()) != x.size())
|
3749
|
+
return false;
|
3750
|
+
|
3119
3751
|
for (const_iterator ix = x.cbegin(), ex = x.cend(); ix != ex; ++ix){
|
3120
3752
|
std::pair<const_iterator, const_iterator> eqx(x.equal_range(key_of_value()(*ix))),
|
3121
3753
|
eqy(y.equal_range(key_of_value()(*ix)));
|
@@ -3145,21 +3777,48 @@ class hashtable_impl
|
|
3145
3777
|
{ return !(x < y); }
|
3146
3778
|
|
3147
3779
|
/// @cond
|
3148
|
-
|
3780
|
+
inline void check() const {}
|
3149
3781
|
private:
|
3150
3782
|
|
3151
|
-
void
|
3783
|
+
static void priv_initialize_new_buckets
|
3784
|
+
( bucket_ptr old_buckets, size_type old_bucket_count
|
3785
|
+
, bucket_ptr new_buckets, size_type new_bucket_count)
|
3786
|
+
{
|
3787
|
+
//Initialize new buckets
|
3788
|
+
const bool same_buffer = old_buckets == new_buckets;
|
3789
|
+
if (same_buffer && new_bucket_count <= old_bucket_count) {
|
3790
|
+
//Nothing to do here
|
3791
|
+
}
|
3792
|
+
else {
|
3793
|
+
bucket_ptr p;
|
3794
|
+
size_type c;
|
3795
|
+
|
3796
|
+
if (same_buffer) {
|
3797
|
+
p = old_buckets + std::ptrdiff_t(old_bucket_count);
|
3798
|
+
c = size_type(new_bucket_count - old_bucket_count);
|
3799
|
+
}
|
3800
|
+
else {
|
3801
|
+
p = new_buckets;
|
3802
|
+
c = new_bucket_count;
|
3803
|
+
}
|
3804
|
+
internal_type::priv_init_buckets(p, c);
|
3805
|
+
}
|
3806
|
+
}
|
3807
|
+
|
3808
|
+
void priv_rehash_impl(const bucket_traits &new_bucket_traits, bool do_full_rehash)
|
3152
3809
|
{
|
3810
|
+
const std::size_t nbc = new_bucket_traits.bucket_count() - bucket_overhead;
|
3811
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(sizeof(SizeType) >= sizeof(std::size_t) || nbc <= SizeType(-1));
|
3812
|
+
|
3153
3813
|
const bucket_ptr new_buckets = new_bucket_traits.bucket_begin();
|
3154
|
-
|
3814
|
+
const size_type new_bucket_count = static_cast<SizeType>(nbc);
|
3155
3815
|
const bucket_ptr old_buckets = this->priv_bucket_pointer();
|
3156
|
-
|
3816
|
+
const size_type old_bucket_count = this->bucket_count();
|
3157
3817
|
|
3158
3818
|
//Check power of two bucket array if the option is activated
|
3159
3819
|
BOOST_INTRUSIVE_INVARIANT_ASSERT
|
3160
3820
|
(!power_2_buckets || (0 == (new_bucket_count & (new_bucket_count-1u))));
|
3161
3821
|
|
3162
|
-
size_type n = this->priv_get_cache_bucket_num();
|
3163
3822
|
const bool same_buffer = old_buckets == new_buckets;
|
3164
3823
|
//If the new bucket length is a common factor
|
3165
3824
|
//of the old one we can avoid hash calculations.
|
@@ -3168,86 +3827,95 @@ class hashtable_impl
|
|
3168
3827
|
//If we are shrinking the same bucket array and it's
|
3169
3828
|
//is a fast shrink, just rehash the last nodes
|
3170
3829
|
size_type new_first_bucket_num = new_bucket_count;
|
3171
|
-
|
3172
|
-
|
3173
|
-
|
3830
|
+
size_type old_bucket_cache = (size_type)this->priv_get_cache_bucket_num();
|
3831
|
+
if(same_buffer && fast_shrink && (old_bucket_cache < new_bucket_count)){
|
3832
|
+
new_first_bucket_num = old_bucket_cache;
|
3833
|
+
old_bucket_cache = new_bucket_count;
|
3174
3834
|
}
|
3175
3835
|
|
3836
|
+
if (!do_full_rehash)
|
3837
|
+
this->priv_initialize_new_buckets(old_buckets, old_bucket_count, new_buckets, new_bucket_count);
|
3838
|
+
|
3176
3839
|
//Anti-exception stuff: they destroy the elements if something goes wrong.
|
3177
3840
|
//If the source and destination buckets are the same, the second rollback function
|
3178
3841
|
//is harmless, because all elements have been already unlinked and destroyed
|
3179
|
-
|
3180
|
-
typedef detail::
|
3181
|
-
NodeDisposer
|
3182
|
-
|
3183
|
-
ArrayDisposer
|
3842
|
+
|
3843
|
+
typedef typename internal_type::template typeof_node_disposer<detail::null_disposer>::type NodeDisposer;
|
3844
|
+
typedef exception_bucket_disposer<bucket_type, slist_node_algorithms, NodeDisposer, size_type> ArrayDisposer;
|
3845
|
+
NodeDisposer nd(this->make_node_disposer(detail::null_disposer()));
|
3846
|
+
ArrayDisposer rollback1(new_buckets[0], nd, new_bucket_count);
|
3847
|
+
ArrayDisposer rollback2(old_buckets[0], nd, old_bucket_count);
|
3184
3848
|
|
3185
3849
|
//Put size in a safe value for rollback exception
|
3186
|
-
size_type const size_backup = this->
|
3187
|
-
this->
|
3850
|
+
size_type const size_backup = this->priv_size_count();
|
3851
|
+
this->priv_size_count(0);
|
3188
3852
|
//Put cache to safe position
|
3189
|
-
this->
|
3190
|
-
this->
|
3853
|
+
this->priv_init_cache();
|
3854
|
+
this->priv_unset_sentinel_bucket();
|
3855
|
+
|
3856
|
+
const size_type split = this->rehash_split_from_bucket_count(new_bucket_count);
|
3191
3857
|
|
3192
3858
|
//Iterate through nodes
|
3193
|
-
for(; n < old_bucket_count; ++n){
|
3194
|
-
bucket_type &old_bucket = old_buckets[n];
|
3859
|
+
for(size_type n = old_bucket_cache; n < old_bucket_count; ++n){
|
3860
|
+
bucket_type &old_bucket = old_buckets[difference_type(n)];
|
3195
3861
|
if(!fast_shrink){
|
3196
|
-
|
3862
|
+
siterator before_i(old_bucket.get_node_ptr());
|
3863
|
+
siterator i(before_i); ++i;
|
3864
|
+
siterator end_sit(this->sit_end(old_bucket));
|
3865
|
+
for( //
|
3197
3866
|
; i != end_sit
|
3198
3867
|
; i = before_i, ++i){
|
3199
3868
|
|
3200
3869
|
//First obtain hash value (and store it if do_full_rehash)
|
3201
3870
|
std::size_t hash_value;
|
3202
3871
|
if(do_full_rehash){
|
3203
|
-
value_type &v = this->
|
3872
|
+
value_type &v = this->priv_value_from_siterator(i);
|
3204
3873
|
hash_value = this->priv_hasher()(key_of_value()(v));
|
3205
|
-
node_functions_t::store_hash(
|
3874
|
+
node_functions_t::store_hash(this->priv_value_to_node_ptr(v), hash_value, store_hash_t());
|
3206
3875
|
}
|
3207
3876
|
else{
|
3208
|
-
const value_type &v = this->
|
3877
|
+
const value_type &v = this->priv_value_from_siterator(i);
|
3209
3878
|
hash_value = this->priv_stored_or_compute_hash(v, store_hash_t());
|
3210
3879
|
}
|
3211
3880
|
|
3212
3881
|
//Now calculate the new bucket position
|
3213
|
-
const size_type new_n =
|
3214
|
-
(hash_value, new_bucket_count,
|
3882
|
+
const size_type new_n = (size_type)hash_to_bucket_split<power_2_buckets, incremental>
|
3883
|
+
(hash_value, new_bucket_count, split, fastmod_buckets_t());
|
3215
3884
|
|
3216
3885
|
//Update first used bucket cache
|
3217
3886
|
if(cache_begin && new_n < new_first_bucket_num)
|
3218
3887
|
new_first_bucket_num = new_n;
|
3219
3888
|
|
3220
3889
|
//If the target bucket is new, transfer the whole group
|
3221
|
-
siterator
|
3890
|
+
siterator last = i;
|
3891
|
+
(priv_go_to_last_in_group)(i, optimize_multikey_t());
|
3222
3892
|
|
3223
3893
|
if(same_buffer && new_n == n){
|
3224
3894
|
before_i = last;
|
3225
3895
|
}
|
3226
3896
|
else{
|
3227
|
-
bucket_type &new_b = new_buckets[new_n];
|
3228
|
-
|
3897
|
+
bucket_type &new_b = new_buckets[difference_type(new_n)];
|
3898
|
+
slist_node_algorithms::transfer_after(new_b.get_node_ptr(), before_i.pointed_node(), last.pointed_node());
|
3229
3899
|
}
|
3230
3900
|
}
|
3231
3901
|
}
|
3232
3902
|
else{
|
3233
|
-
const size_type new_n =
|
3903
|
+
const size_type new_n = (size_type)hash_to_bucket_split<power_2_buckets, incremental>
|
3904
|
+
(n, new_bucket_count, split, fastmod_buckets_t());
|
3234
3905
|
if(cache_begin && new_n < new_first_bucket_num)
|
3235
3906
|
new_first_bucket_num = new_n;
|
3236
|
-
bucket_type &new_b = new_buckets[new_n];
|
3237
|
-
|
3238
|
-
|
3239
|
-
, old_bucket.before_begin()
|
3240
|
-
, bucket_plus_vtraits_t::priv_get_last(old_bucket, optimize_multikey_t()));
|
3907
|
+
bucket_type &new_b = new_buckets[difference_type(new_n)];
|
3908
|
+
siterator last = this->priv_get_last(old_bucket, optimize_multikey_t());
|
3909
|
+
slist_node_algorithms::transfer_after(new_b.get_node_ptr(), old_bucket.get_node_ptr(), last.pointed_node());
|
3241
3910
|
}
|
3242
3911
|
}
|
3243
3912
|
|
3244
|
-
this->
|
3245
|
-
this->
|
3246
|
-
if(&new_bucket_traits != &this->priv_bucket_traits())
|
3913
|
+
this->priv_size_count(size_backup);
|
3914
|
+
this->split_count(split);
|
3915
|
+
if(&new_bucket_traits != &this->priv_bucket_traits())
|
3247
3916
|
this->priv_bucket_traits() = new_bucket_traits;
|
3248
|
-
|
3249
|
-
this->
|
3250
|
-
this->priv_insertion_update_cache(new_first_bucket_num);
|
3917
|
+
this->priv_set_sentinel_bucket();
|
3918
|
+
this->priv_set_cache_bucket_num(new_first_bucket_num);
|
3251
3919
|
rollback1.release();
|
3252
3920
|
rollback2.release();
|
3253
3921
|
}
|
@@ -3282,8 +3950,8 @@ class hashtable_impl
|
|
3282
3950
|
for(; b != e; ++b){
|
3283
3951
|
//No need to check for duplicates and insert it in the first position
|
3284
3952
|
//as this is an unordered container. So use minimal insertion code
|
3285
|
-
std::size_t const hash_to_store = this->priv_stored_or_compute_hash(*b, store_hash_t())
|
3286
|
-
size_type const bucket_number = this->
|
3953
|
+
std::size_t const hash_to_store = this->priv_stored_or_compute_hash(*b, store_hash_t());
|
3954
|
+
size_type const bucket_number = this->priv_hash_to_nbucket(hash_to_store);
|
3287
3955
|
typedef typename detail::if_c
|
3288
3956
|
<detail::is_const<MaybeConstHashtableImpl>::value, const_reference, reference>::type reference_type;
|
3289
3957
|
reference_type r = *b;
|
@@ -3301,16 +3969,14 @@ class hashtable_impl
|
|
3301
3969
|
{
|
3302
3970
|
//No need to check for duplicates and insert it in the first position
|
3303
3971
|
//as this is an unordered container. So use minimal insertion code
|
3304
|
-
|
3305
|
-
|
3306
|
-
bucket_type &cur_bucket = this->priv_bucket_pointer()[bucket_number];
|
3307
|
-
siterator const prev(cur_bucket.before_begin());
|
3972
|
+
bucket_type &cur_bucket = this->priv_bucket(bucket_number);
|
3973
|
+
siterator const prev(cur_bucket.get_node_ptr());
|
3308
3974
|
//Just check if the cloned node is equal to the first inserted value in the new bucket
|
3309
3975
|
//as equal src values were contiguous and they should be already inserted in the
|
3310
3976
|
//destination bucket.
|
3311
|
-
bool const next_is_in_group = optimize_multikey && !
|
3977
|
+
bool const next_is_in_group = optimize_multikey && !this->priv_bucket_empty(bucket_number) &&
|
3312
3978
|
this->priv_equal()( key_of_value()(src_ref)
|
3313
|
-
, key_of_value()(this->
|
3979
|
+
, key_of_value()(this->priv_value_from_siterator(++siterator(prev))));
|
3314
3980
|
this->priv_insert_equal_after_find(*cloner(src_ref), bucket_number, hash_to_store, prev, next_is_in_group);
|
3315
3981
|
}
|
3316
3982
|
|
@@ -3320,108 +3986,122 @@ class hashtable_impl
|
|
3320
3986
|
//First clone the first ones
|
3321
3987
|
const size_type src_bucket_count = src.bucket_count();
|
3322
3988
|
const size_type dst_bucket_count = this->bucket_count();
|
3323
|
-
const bucket_ptr src_buckets = src.priv_bucket_pointer();
|
3324
|
-
const bucket_ptr dst_buckets = this->priv_bucket_pointer();
|
3325
3989
|
size_type constructed = 0;
|
3326
|
-
typedef
|
3327
|
-
, slist_node_ptr, node_ptr > NodeDisposer;
|
3990
|
+
typedef typename internal_type::template typeof_node_disposer<Disposer>::type NodeDisposer;
|
3328
3991
|
NodeDisposer node_disp(disposer, &this->priv_value_traits());
|
3329
3992
|
|
3330
|
-
|
3331
|
-
rollback(
|
3993
|
+
exception_bucket_disposer<bucket_type, slist_node_algorithms, NodeDisposer, size_type>
|
3994
|
+
rollback(this->priv_bucket(0), node_disp, constructed);
|
3332
3995
|
//Now insert the remaining ones using the modulo trick
|
3333
3996
|
for( //"constructed" already initialized
|
3334
3997
|
; constructed < src_bucket_count
|
3335
3998
|
; ++constructed){
|
3336
|
-
|
3337
|
-
const
|
3338
|
-
|
3339
|
-
|
3340
|
-
|
3999
|
+
|
4000
|
+
const size_type new_n = (size_type)hash_to_bucket_split<power_2_buckets, incremental>
|
4001
|
+
(constructed, dst_bucket_count, this->split_count(), fastmod_buckets_t());
|
4002
|
+
bucket_type &src_b = src.priv_bucket(constructed);
|
4003
|
+
for( siterator b(this->priv_bucket_lbegin(src_b)), e(this->priv_bucket_lend(src_b)); b != e; ++b){
|
3341
4004
|
typedef typename detail::if_c
|
3342
4005
|
<detail::is_const<MaybeConstHashtableImpl>::value, const_reference, reference>::type reference_type;
|
3343
|
-
reference_type r = this->
|
4006
|
+
reference_type r = this->priv_value_from_siterator(b);
|
3344
4007
|
this->priv_clone_front_in_bucket<reference_type>
|
3345
|
-
(new_n, r, this->priv_stored_hash(
|
4008
|
+
(new_n, r, this->priv_stored_hash(b, store_hash_t()), cloner);
|
3346
4009
|
}
|
3347
4010
|
}
|
3348
4011
|
this->priv_hasher() = src.priv_hasher();
|
3349
4012
|
this->priv_equal() = src.priv_equal();
|
3350
4013
|
rollback.release();
|
3351
|
-
this->
|
3352
|
-
this->
|
3353
|
-
this->
|
4014
|
+
this->priv_size_count(src.priv_size_count());
|
4015
|
+
this->split_count(dst_bucket_count);
|
4016
|
+
this->priv_set_cache_bucket_num(0u);
|
3354
4017
|
this->priv_erasure_update_cache();
|
3355
4018
|
}
|
3356
4019
|
|
3357
|
-
std::size_t priv_hash_to_bucket(std::size_t hash_value) const
|
3358
|
-
{
|
3359
|
-
return detail::hash_to_bucket_split<power_2_buckets, incremental>
|
3360
|
-
(hash_value, this->priv_bucket_traits().bucket_count(), this->priv_split_traits().get_size());
|
3361
|
-
}
|
3362
|
-
|
3363
4020
|
iterator priv_insert_equal_after_find(reference value, size_type bucket_num, std::size_t hash_value, siterator prev, bool const next_is_in_group)
|
3364
4021
|
{
|
3365
4022
|
//Now store hash if needed
|
3366
|
-
node_ptr n =
|
4023
|
+
node_ptr n = this->priv_value_to_node_ptr(value);
|
3367
4024
|
node_functions_t::store_hash(n, hash_value, store_hash_t());
|
3368
4025
|
//Checks for some modes
|
3369
|
-
BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink ||
|
4026
|
+
BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || slist_node_algorithms::unique(n));
|
3370
4027
|
//Shortcut to optimize_multikey cases
|
3371
4028
|
group_functions_t::insert_in_group
|
3372
|
-
( next_is_in_group ?
|
4029
|
+
( next_is_in_group ? dcast_bucket_ptr<node>((++siterator(prev)).pointed_node()) : n
|
3373
4030
|
, n, optimize_multikey_t());
|
3374
4031
|
//Update cache and increment size if needed
|
3375
4032
|
this->priv_insertion_update_cache(bucket_num);
|
3376
|
-
this->
|
3377
|
-
|
3378
|
-
return
|
4033
|
+
this->priv_size_inc();
|
4034
|
+
slist_node_algorithms::link_after(prev.pointed_node(), n);
|
4035
|
+
return this->build_iterator(siterator(n), this->priv_bucket_ptr(bucket_num));
|
3379
4036
|
}
|
3380
4037
|
|
3381
4038
|
template<class KeyType, class KeyHasher, class KeyEqual>
|
3382
|
-
siterator priv_find //In case it is not found previt is
|
4039
|
+
siterator priv_find //In case it is not found previt is priv_end_sit()
|
3383
4040
|
( const KeyType &key, KeyHasher hash_func
|
3384
4041
|
, KeyEqual equal_func, size_type &bucket_number, std::size_t &h, siterator &previt) const
|
3385
4042
|
{
|
3386
4043
|
h = hash_func(key);
|
3387
|
-
return this->priv_find_with_hash(key, equal_func, bucket_number, h, previt);
|
3388
|
-
}
|
3389
4044
|
|
3390
|
-
|
3391
|
-
|
3392
|
-
|
3393
|
-
|
3394
|
-
|
3395
|
-
}
|
4045
|
+
bucket_number = this->priv_hash_to_nbucket(h);
|
4046
|
+
bucket_type& b = this->priv_bucket(bucket_number);
|
4047
|
+
siterator prev = this->sit_bbegin(b);
|
4048
|
+
siterator it = prev;
|
4049
|
+
siterator const endit = this->sit_end(b);
|
3396
4050
|
|
3397
|
-
|
3398
|
-
|
3399
|
-
|
3400
|
-
|
3401
|
-
|
3402
|
-
|
4051
|
+
while (++it != endit) {
|
4052
|
+
if (this->priv_is_value_equal_to_key
|
4053
|
+
(this->priv_value_from_siterator(it), h, key, equal_func, compare_hash_t())) {
|
4054
|
+
previt = prev;
|
4055
|
+
return it;
|
4056
|
+
}
|
4057
|
+
(priv_go_to_last_in_group)(it, optimize_multikey_t());
|
4058
|
+
prev = it;
|
4059
|
+
}
|
4060
|
+
previt = b.get_node_ptr();
|
4061
|
+
return this->priv_end_sit();
|
3403
4062
|
}
|
3404
4063
|
|
4064
|
+
|
3405
4065
|
template<class KeyType, class KeyEqual>
|
3406
|
-
siterator
|
3407
|
-
( const KeyType
|
4066
|
+
siterator priv_find_in_bucket //In case it is not found previt is priv_end_sit()
|
4067
|
+
(bucket_type &b, const KeyType& key, KeyEqual equal_func, const std::size_t h) const
|
3408
4068
|
{
|
3409
|
-
|
3410
|
-
|
3411
|
-
previt = b.before_begin();
|
3412
|
-
siterator it = previt;
|
3413
|
-
siterator const endit = b.end();
|
4069
|
+
siterator it(this->sit_begin(b));
|
4070
|
+
siterator const endit(this->sit_end(b));
|
3414
4071
|
|
3415
|
-
|
3416
|
-
if(this->priv_is_value_equal_to_key
|
4072
|
+
for (; it != endit; (priv_go_to_last_in_group)(it, optimize_multikey_t()), ++it) {
|
4073
|
+
if (BOOST_LIKELY(this->priv_is_value_equal_to_key
|
4074
|
+
(this->priv_value_from_siterator(it), h, key, equal_func, compare_hash_t()))) {
|
3417
4075
|
return it;
|
3418
4076
|
}
|
3419
|
-
previt = it = (priv_last_in_group)(it);
|
3420
4077
|
}
|
3421
|
-
|
3422
|
-
|
4078
|
+
return this->priv_end_sit();
|
4079
|
+
}
|
4080
|
+
|
4081
|
+
template<class KeyType, class KeyEqual>
|
4082
|
+
inline bool priv_is_value_equal_to_key
|
4083
|
+
(const value_type &v, const std::size_t h, const KeyType &key, KeyEqual equal_func, detail::true_) const //compare_hash
|
4084
|
+
{ return this->priv_stored_or_compute_hash(v, store_hash_t()) == h && equal_func(key, key_of_value()(v)); }
|
4085
|
+
|
4086
|
+
template<class KeyType, class KeyEqual>
|
4087
|
+
inline bool priv_is_value_equal_to_key
|
4088
|
+
(const value_type& v, const std::size_t , const KeyType& key, KeyEqual equal_func, detail::false_) const //compare_hash
|
4089
|
+
{ return equal_func(key, key_of_value()(v)); }
|
4090
|
+
|
4091
|
+
//return previous iterator to the next equal range group in case
|
4092
|
+
inline static void priv_go_to_last_in_group
|
4093
|
+
(siterator &it_first_in_group, detail::true_) BOOST_NOEXCEPT //optimize_multikey
|
4094
|
+
{
|
4095
|
+
it_first_in_group =
|
4096
|
+
(group_functions_t::get_last_in_group
|
4097
|
+
(dcast_bucket_ptr<node>(it_first_in_group.pointed_node()), optimize_multikey_t()));
|
3423
4098
|
}
|
3424
4099
|
|
4100
|
+
//return previous iterator to the next equal range group in case
|
4101
|
+
inline static void priv_go_to_last_in_group //!optimize_multikey
|
4102
|
+
(siterator /*&it_first_in_group*/, detail::false_) BOOST_NOEXCEPT
|
4103
|
+
{ }
|
4104
|
+
|
3425
4105
|
template<class KeyType, class KeyHasher, class KeyEqual>
|
3426
4106
|
std::pair<siterator, siterator> priv_local_equal_range
|
3427
4107
|
( const KeyType &key
|
@@ -3430,7 +4110,7 @@ class hashtable_impl
|
|
3430
4110
|
, size_type &found_bucket
|
3431
4111
|
, size_type &cnt) const
|
3432
4112
|
{
|
3433
|
-
|
4113
|
+
std::size_t internal_cnt = 0;
|
3434
4114
|
//Let's see if the element is present
|
3435
4115
|
|
3436
4116
|
siterator prev;
|
@@ -3438,34 +4118,47 @@ class hashtable_impl
|
|
3438
4118
|
std::size_t h;
|
3439
4119
|
std::pair<siterator, siterator> to_return
|
3440
4120
|
( this->priv_find(key, hash_func, equal_func, n_bucket, h, prev)
|
3441
|
-
, this->
|
4121
|
+
, this->priv_end_sit());
|
3442
4122
|
|
3443
4123
|
if(to_return.first != to_return.second){
|
3444
4124
|
found_bucket = n_bucket;
|
3445
4125
|
//If it's present, find the first that it's not equal in
|
3446
4126
|
//the same bucket
|
3447
|
-
bucket_type &b = this->priv_bucket_pointer()[n_bucket];
|
3448
4127
|
siterator it = to_return.first;
|
3449
|
-
|
3450
|
-
|
3451
|
-
|
3452
|
-
|
4128
|
+
siterator const bend = this->priv_bucket_lend(n_bucket);
|
4129
|
+
BOOST_IF_CONSTEXPR(optimize_multikey){
|
4130
|
+
siterator past_last_in_group_it = it;
|
4131
|
+
(priv_go_to_last_in_group)(past_last_in_group_it, optimize_multikey_t());
|
4132
|
+
++past_last_in_group_it;
|
4133
|
+
internal_cnt += boost::intrusive::iterator_udistance(++it, past_last_in_group_it) + 1u;
|
4134
|
+
if (past_last_in_group_it != bend)
|
4135
|
+
to_return.second = past_last_in_group_it;
|
3453
4136
|
}
|
3454
4137
|
else{
|
3455
|
-
|
3456
|
-
|
3457
|
-
|
3458
|
-
|
3459
|
-
|
3460
|
-
|
4138
|
+
do {
|
4139
|
+
++internal_cnt; //At least one is found
|
4140
|
+
++it;
|
4141
|
+
} while(it != bend &&
|
4142
|
+
this->priv_is_value_equal_to_key
|
4143
|
+
(this->priv_value_from_siterator(it), h, key, equal_func, compare_hash_t()));
|
4144
|
+
if (it != bend)
|
4145
|
+
to_return.second = it;
|
3461
4146
|
}
|
3462
4147
|
}
|
3463
|
-
cnt = internal_cnt;
|
4148
|
+
cnt = size_type(internal_cnt);
|
3464
4149
|
return to_return;
|
3465
4150
|
}
|
3466
4151
|
|
4152
|
+
struct priv_equal_range_result
|
4153
|
+
{
|
4154
|
+
siterator first;
|
4155
|
+
siterator second;
|
4156
|
+
bucket_ptr bucket_first;
|
4157
|
+
bucket_ptr bucket_second;
|
4158
|
+
};
|
4159
|
+
|
3467
4160
|
template<class KeyType, class KeyHasher, class KeyEqual>
|
3468
|
-
|
4161
|
+
priv_equal_range_result priv_equal_range
|
3469
4162
|
( const KeyType &key
|
3470
4163
|
, KeyHasher hash_func
|
3471
4164
|
, KeyEqual equal_func) const
|
@@ -3474,75 +4167,103 @@ class hashtable_impl
|
|
3474
4167
|
size_type cnt;
|
3475
4168
|
|
3476
4169
|
//Let's see if the element is present
|
3477
|
-
std::pair<siterator, siterator> to_return
|
4170
|
+
const std::pair<siterator, siterator> to_return
|
3478
4171
|
(this->priv_local_equal_range(key, hash_func, equal_func, n_bucket, cnt));
|
4172
|
+
priv_equal_range_result r;
|
4173
|
+
r.first = to_return.first;
|
4174
|
+
r.second = to_return.second;
|
4175
|
+
|
3479
4176
|
//If not, find the next element as ".second" if ".second" local iterator
|
3480
4177
|
//is not pointing to an element.
|
3481
|
-
|
3482
|
-
|
3483
|
-
|
3484
|
-
|
3485
|
-
|
3486
|
-
|
3487
|
-
|
3488
|
-
|
3489
|
-
|
3490
|
-
|
3491
|
-
|
3492
|
-
|
3493
|
-
|
4178
|
+
if(to_return.first == to_return.second) {
|
4179
|
+
r.bucket_first = r.bucket_second = this->priv_invalid_bucket_ptr();
|
4180
|
+
}
|
4181
|
+
else if (to_return.second != this->priv_end_sit()) {
|
4182
|
+
r.bucket_first = this->priv_bucket_ptr(n_bucket);
|
4183
|
+
}
|
4184
|
+
else{
|
4185
|
+
r.bucket_first = this->priv_bucket_ptr(n_bucket);
|
4186
|
+
const size_type max_bucket = this->bucket_count();
|
4187
|
+
do{
|
4188
|
+
++n_bucket;
|
4189
|
+
} while (n_bucket != max_bucket && this->priv_bucket_empty(n_bucket));
|
4190
|
+
|
4191
|
+
if (n_bucket == max_bucket){
|
4192
|
+
r.bucket_second = this->priv_invalid_bucket_ptr();
|
4193
|
+
}
|
4194
|
+
else{
|
4195
|
+
r.bucket_second = this->priv_bucket_ptr(n_bucket);
|
4196
|
+
r.second = siterator(r.bucket_second->begin_ptr());
|
3494
4197
|
}
|
3495
4198
|
}
|
3496
|
-
|
4199
|
+
|
4200
|
+
return r;
|
3497
4201
|
}
|
3498
4202
|
|
3499
|
-
|
3500
|
-
{ return this->
|
4203
|
+
inline size_type priv_get_bucket_num(const_iterator it) BOOST_NOEXCEPT
|
4204
|
+
{ return this->priv_get_bucket_num(it, linear_buckets_t()); }
|
3501
4205
|
|
3502
|
-
|
4206
|
+
inline size_type priv_get_bucket_num(const_iterator it, detail::true_) BOOST_NOEXCEPT //linear
|
4207
|
+
{ return size_type(it.get_bucket_ptr() - this->priv_bucket_pointer()); }
|
4208
|
+
|
4209
|
+
inline size_type priv_get_bucket_num(const_iterator it, detail::false_) BOOST_NOEXCEPT //!linear
|
4210
|
+
{ return this->priv_get_bucket_num_hash_dispatch(it.slist_it(), store_hash_t()); }
|
4211
|
+
|
4212
|
+
inline size_type priv_get_bucket_num_hash_dispatch(siterator it, detail::true_) BOOST_NOEXCEPT //store_hash
|
4213
|
+
{ return (size_type)this->priv_hash_to_nbucket(this->priv_stored_hash(it, store_hash_t())); }
|
4214
|
+
|
4215
|
+
size_type priv_get_bucket_num_hash_dispatch(siterator it, detail::false_) BOOST_NOEXCEPT //NO store_hash
|
3503
4216
|
{
|
3504
|
-
|
3505
|
-
|
4217
|
+
const bucket_type &f = this->priv_bucket(0u);
|
4218
|
+
slist_node_ptr bb = group_functions_t::get_bucket_before_begin
|
4219
|
+
( this->priv_bucket_lbbegin(0u).pointed_node()
|
4220
|
+
, this->priv_bucket_lbbegin(this->priv_usable_bucket_count() - 1u).pointed_node()
|
4221
|
+
, it.pointed_node()
|
4222
|
+
, optimize_multikey_t());
|
4223
|
+
|
4224
|
+
//Now get the bucket_impl from the iterator
|
4225
|
+
const bucket_type &b = static_cast<const bucket_type&>(*bb);
|
4226
|
+
//Now just calculate the index b has in the bucket array
|
4227
|
+
return static_cast<size_type>(&b - &f);
|
3506
4228
|
}
|
3507
4229
|
|
3508
|
-
std::size_t priv_get_bucket_num_hash_dispatch(siterator it, detail::false_) //NO store_hash
|
3509
|
-
{ return this->priv_get_bucket_num_no_hash_store(it, optimize_multikey_t()); }
|
3510
4230
|
|
3511
|
-
|
3512
|
-
{ return
|
4231
|
+
inline bucket_ptr priv_get_bucket_ptr(const_iterator it) BOOST_NOEXCEPT
|
4232
|
+
{ return this->priv_get_bucket_ptr(it, linear_buckets_t()); }
|
4233
|
+
|
4234
|
+
inline bucket_ptr priv_get_bucket_ptr(const_iterator it, detail::true_) BOOST_NOEXCEPT //linear
|
4235
|
+
{ return it.get_bucket_ptr(); }
|
4236
|
+
|
4237
|
+
inline bucket_ptr priv_get_bucket_ptr(const_iterator it, detail::false_) BOOST_NOEXCEPT //!linear
|
4238
|
+
{ return this->priv_bucket_ptr(this->priv_get_bucket_num_hash_dispatch(it.slist_it(), store_hash_t())); }
|
3513
4239
|
|
3514
4240
|
/// @endcond
|
3515
4241
|
};
|
3516
4242
|
|
3517
4243
|
/// @cond
|
3518
|
-
#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
|
3519
4244
|
template < class T
|
3520
|
-
, bool UniqueKeys
|
3521
4245
|
, class PackedOptions
|
3522
4246
|
>
|
3523
|
-
#else
|
3524
|
-
template <class T, bool UniqueKeys, class ...Options>
|
3525
|
-
#endif
|
3526
4247
|
struct make_bucket_traits
|
3527
4248
|
{
|
3528
4249
|
//Real value traits must be calculated from options
|
3529
4250
|
typedef typename detail::get_value_traits
|
3530
|
-
<T, typename PackedOptions::proto_value_traits>::type
|
4251
|
+
<T, typename PackedOptions::proto_value_traits>::type value_traits;
|
3531
4252
|
|
3532
4253
|
typedef typename PackedOptions::bucket_traits specified_bucket_traits;
|
3533
4254
|
|
3534
4255
|
//Real bucket traits must be calculated from options and calculated value_traits
|
3535
|
-
typedef
|
3536
|
-
<typename
|
3537
|
-
<
|
3538
|
-
|
4256
|
+
typedef bucket_traits_impl
|
4257
|
+
< typename unordered_bucket_ptr_impl
|
4258
|
+
<value_traits>::type
|
4259
|
+
, std::size_t> bucket_traits_t;
|
3539
4260
|
|
3540
4261
|
typedef typename
|
3541
4262
|
detail::if_c< detail::is_same
|
3542
4263
|
< specified_bucket_traits
|
3543
4264
|
, default_bucket_traits
|
3544
4265
|
>::value
|
3545
|
-
,
|
4266
|
+
, bucket_traits_t
|
3546
4267
|
, specified_bucket_traits
|
3547
4268
|
>::type type;
|
3548
4269
|
};
|
@@ -3558,6 +4279,7 @@ template<class T, class O1 = void, class O2 = void
|
|
3558
4279
|
, class O5 = void, class O6 = void
|
3559
4280
|
, class O7 = void, class O8 = void
|
3560
4281
|
, class O9 = void, class O10= void
|
4282
|
+
, class O11= void
|
3561
4283
|
>
|
3562
4284
|
#endif
|
3563
4285
|
struct make_hashtable
|
@@ -3566,7 +4288,7 @@ struct make_hashtable
|
|
3566
4288
|
typedef typename pack_options
|
3567
4289
|
< hashtable_defaults,
|
3568
4290
|
#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
|
3569
|
-
O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
|
4291
|
+
O1, O2, O3, O4, O5, O6, O7, O8, O9, O10, O11
|
3570
4292
|
#else
|
3571
4293
|
Options...
|
3572
4294
|
#endif
|
@@ -3576,7 +4298,7 @@ struct make_hashtable
|
|
3576
4298
|
<T, typename packed_options::proto_value_traits>::type value_traits;
|
3577
4299
|
|
3578
4300
|
typedef typename make_bucket_traits
|
3579
|
-
<T,
|
4301
|
+
<T, packed_options>::type bucket_traits;
|
3580
4302
|
|
3581
4303
|
typedef hashtable_impl
|
3582
4304
|
< value_traits
|
@@ -3591,6 +4313,8 @@ struct make_hashtable
|
|
3591
4313
|
|(std::size_t(packed_options::cache_begin)*hash_bool_flags::cache_begin_pos)
|
3592
4314
|
|(std::size_t(packed_options::compare_hash)*hash_bool_flags::compare_hash_pos)
|
3593
4315
|
|(std::size_t(packed_options::incremental)*hash_bool_flags::incremental_pos)
|
4316
|
+
|(std::size_t(packed_options::linear_buckets)*hash_bool_flags::linear_buckets_pos)
|
4317
|
+
|(std::size_t(packed_options::fastmod_buckets)*hash_bool_flags::fastmod_buckets_pos)
|
3594
4318
|
> implementation_defined;
|
3595
4319
|
|
3596
4320
|
/// @endcond
|
@@ -3633,28 +4357,28 @@ class hashtable
|
|
3633
4357
|
typedef typename Base::key_equal key_equal;
|
3634
4358
|
|
3635
4359
|
//Assert if passed value traits are compatible with the type
|
3636
|
-
|
4360
|
+
BOOST_INTRUSIVE_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
|
3637
4361
|
|
3638
|
-
|
4362
|
+
inline explicit hashtable ( const bucket_traits &b_traits
|
3639
4363
|
, const hasher & hash_func = hasher()
|
3640
4364
|
, const key_equal &equal_func = key_equal()
|
3641
4365
|
, const value_traits &v_traits = value_traits())
|
3642
4366
|
: Base(b_traits, hash_func, equal_func, v_traits)
|
3643
4367
|
{}
|
3644
4368
|
|
3645
|
-
|
4369
|
+
inline hashtable(BOOST_RV_REF(hashtable) x)
|
3646
4370
|
: Base(BOOST_MOVE_BASE(Base, x))
|
3647
4371
|
{}
|
3648
4372
|
|
3649
|
-
|
4373
|
+
inline hashtable& operator=(BOOST_RV_REF(hashtable) x)
|
3650
4374
|
{ return static_cast<hashtable&>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
|
3651
4375
|
|
3652
4376
|
template <class Cloner, class Disposer>
|
3653
|
-
|
4377
|
+
inline void clone_from(const hashtable &src, Cloner cloner, Disposer disposer)
|
3654
4378
|
{ Base::clone_from(src, cloner, disposer); }
|
3655
4379
|
|
3656
4380
|
template <class Cloner, class Disposer>
|
3657
|
-
|
4381
|
+
inline void clone_from(BOOST_RV_REF(hashtable) src, Cloner cloner, Disposer disposer)
|
3658
4382
|
{ Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
|
3659
4383
|
};
|
3660
4384
|
|