passenger 5.1.12 → 5.2.0

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

Potentially problematic release.


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

Files changed (824) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +18 -1
  3. data/Rakefile +4 -1
  4. data/build/agent.rb +2 -2
  5. data/build/apache2.rb +17 -10
  6. data/build/basics.rb +18 -4
  7. data/build/common_library.rb +7 -3
  8. data/build/cxx_tests.rb +2 -7
  9. data/build/misc.rb +3 -1
  10. data/build/nginx.rb +11 -5
  11. data/build/oxt_tests.rb +0 -3
  12. data/build/packaging.rb +3 -2
  13. data/build/schema_printer.rb +103 -0
  14. data/build/support/cplusplus.rb +2 -2
  15. data/build/support/cxx_dependency_map.rb +2575 -868
  16. data/dev/ci/lib/functions.sh +1 -1
  17. data/dev/ci/lib/set-container-envvars.sh +1 -1
  18. data/dev/ci/lib/setup-container.sh +1 -1
  19. data/dev/ci/run-tests-natively +1 -1
  20. data/dev/ci/run-tests-with-docker +1 -1
  21. data/dev/ci/scripts/debug-console-wrapper.sh +1 -1
  22. data/dev/ci/scripts/docker-entrypoint-stage2.sh +1 -1
  23. data/dev/ci/scripts/docker-entrypoint.sh +1 -1
  24. data/dev/ci/scripts/inituidgid +1 -1
  25. data/dev/ci/scripts/run-tests-natively-stage2.sh +1 -1
  26. data/dev/ci/scripts/setup-host-natively.sh +1 -1
  27. data/dev/ci/setup-host +1 -1
  28. data/dev/ci/tests/apache2/run +1 -1
  29. data/dev/ci/tests/apache2/setup +1 -1
  30. data/dev/ci/tests/cxx/run +1 -1
  31. data/dev/ci/tests/cxx/setup +1 -1
  32. data/dev/ci/tests/debian/Jenkinsfile +0 -1
  33. data/dev/ci/tests/debian/run +1 -1
  34. data/dev/ci/tests/nginx-dynamic/run +1 -1
  35. data/dev/ci/tests/nginx-dynamic/setup +1 -1
  36. data/dev/ci/tests/nginx/run +1 -1
  37. data/dev/ci/tests/nginx/setup +1 -1
  38. data/dev/ci/tests/nodejs/run +1 -1
  39. data/dev/ci/tests/nodejs/setup +1 -1
  40. data/dev/ci/tests/rpm/run +1 -1
  41. data/dev/ci/tests/ruby/run +1 -1
  42. data/dev/ci/tests/ruby/setup +1 -1
  43. data/dev/ci/tests/source-packaging/run +1 -1
  44. data/dev/ci/tests/source-packaging/setup +1 -1
  45. data/dev/ci/tests/standalone/run +1 -1
  46. data/dev/ci/tests/standalone/setup +1 -1
  47. data/dev/configkit-schemas/index.json +1708 -0
  48. data/dev/configkit-schemas/update_schema_inline_comments.rb +118 -0
  49. data/dev/copy_boost_headers +13 -1
  50. data/dev/index_cxx_dependencies.rb +20 -7
  51. data/dev/vagrant/provision.sh +1 -1
  52. data/resources/mime.types +1 -0
  53. data/resources/templates/standalone/http.erb +1 -6
  54. data/src/agent/Core/AdminPanelConnector.h +550 -0
  55. data/src/agent/Core/ApiServer.h +159 -97
  56. data/src/agent/Core/ApplicationPool/Group.h +2 -0
  57. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +3 -2
  58. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +109 -0
  59. data/src/agent/Core/ApplicationPool/Implementation.cpp +5 -3
  60. data/src/agent/Core/ApplicationPool/Options.h +5 -6
  61. data/src/agent/Core/ApplicationPool/Pool.h +59 -2
  62. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +3 -3
  63. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
  64. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +6 -0
  65. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +129 -0
  66. data/src/agent/Core/Config.h +475 -0
  67. data/src/agent/Core/ConfigChange.cpp +349 -0
  68. data/src/agent/Core/ConfigChange.h +54 -0
  69. data/src/agent/Core/Controller.h +35 -3
  70. data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
  71. data/src/agent/Core/Controller/Config.cpp +0 -2
  72. data/src/agent/Core/Controller/Config.h +168 -104
  73. data/src/agent/Core/Controller/ForwardResponse.cpp +1 -1
  74. data/src/agent/Core/Controller/InitRequest.cpp +14 -15
  75. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +34 -44
  76. data/src/agent/Core/Controller/Request.h +0 -1
  77. data/src/agent/Core/CoreMain.cpp +236 -349
  78. data/src/agent/Core/OptionParser.h +75 -89
  79. data/src/agent/Core/SecurityUpdateChecker.h +263 -100
  80. data/src/agent/Core/SpawningKit/Config.h +6 -2
  81. data/src/agent/Core/SpawningKit/Spawner.h +0 -45
  82. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +1 -0
  83. data/src/agent/Shared/ApiAccountUtils.h +318 -0
  84. data/src/agent/Shared/ApiServerUtils.h +3 -104
  85. data/src/agent/Shared/Fundamentals/Initialization.cpp +81 -44
  86. data/src/agent/Shared/Fundamentals/Initialization.h +12 -7
  87. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +21 -0
  88. data/src/agent/Watchdog/AgentWatcher.cpp +1 -1
  89. data/src/agent/Watchdog/ApiServer.h +100 -14
  90. data/src/agent/Watchdog/Config.h +340 -0
  91. data/src/agent/Watchdog/CoreWatcher.cpp +27 -13
  92. data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -1
  93. data/src/agent/Watchdog/WatchdogMain.cpp +190 -206
  94. data/src/apache2_module/Bucket.cpp +4 -0
  95. data/src/apache2_module/Bucket.h +7 -3
  96. data/src/apache2_module/CBindings.cpp +49 -0
  97. data/src/apache2_module/Config.cpp +242 -0
  98. data/src/apache2_module/Config.h +109 -0
  99. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +485 -0
  100. data/src/apache2_module/{ConfigurationCommands.cpp.cxxcodebuilder → ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder} +29 -15
  101. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +298 -0
  102. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +171 -0
  103. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +854 -0
  104. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +188 -0
  105. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +610 -0
  106. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +65 -0
  107. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +174 -0
  108. data/src/apache2_module/{MergeDirConfig.cpp.cxxcodebuilder → DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder} +54 -32
  109. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +113 -0
  110. data/src/apache2_module/{SetHeaders.cpp.cxxcodebuilder → DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder} +34 -23
  111. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +426 -0
  112. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +165 -0
  113. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +269 -0
  114. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +148 -0
  115. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +534 -0
  116. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +230 -0
  117. data/src/apache2_module/DirectoryMapper.h +19 -16
  118. data/src/apache2_module/Hooks.cpp +124 -138
  119. data/src/apache2_module/Hooks.h +9 -14
  120. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +263 -0
  121. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +152 -0
  122. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +299 -0
  123. data/src/apache2_module/{ConfigurationFields.hpp.cxxcodebuilder → ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder} +105 -18
  124. data/src/apache2_module/Utils.h +215 -0
  125. data/src/apache2_module/mod_passenger.c +16 -8
  126. data/src/cxx_supportlib/AppTypes.h +2 -0
  127. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +1 -1
  128. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +8 -8
  129. data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +7 -41
  130. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +12 -66
  131. data/src/cxx_supportlib/ConfigKit/Schema.h +62 -11
  132. data/src/cxx_supportlib/ConfigKit/{ValidationUtils.h → SchemaUtils.h} +12 -3
  133. data/src/cxx_supportlib/ConfigKit/Store.h +17 -9
  134. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -1
  135. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +13 -70
  136. data/src/cxx_supportlib/ConfigKit/Translator.h +125 -0
  137. data/src/cxx_supportlib/Constants.h +1 -3
  138. data/src/cxx_supportlib/FileTools/FileManip.cpp +297 -0
  139. data/src/cxx_supportlib/FileTools/FileManip.h +162 -0
  140. data/src/cxx_supportlib/{Utils → FileTools}/LargeFiles.cpp +6 -3
  141. data/src/cxx_supportlib/{Utils → FileTools}/LargeFiles.h +7 -5
  142. data/src/cxx_supportlib/FileTools/PathManip.cpp +240 -0
  143. data/src/cxx_supportlib/FileTools/PathManip.h +91 -0
  144. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +62 -0
  145. data/src/{apache2_module/Configuration.h → cxx_supportlib/FileTools/PathManipCBindings.h} +12 -19
  146. data/src/cxx_supportlib/Hooks.h +19 -16
  147. data/src/cxx_supportlib/InstanceDirectory.h +11 -0
  148. data/src/cxx_supportlib/JsonTools/Autocast.h +79 -0
  149. data/src/cxx_supportlib/JsonTools/CBindings.cpp +364 -0
  150. data/src/cxx_supportlib/JsonTools/CBindings.h +101 -0
  151. data/src/cxx_supportlib/LoggingKit/Config.h +13 -0
  152. data/src/cxx_supportlib/LoggingKit/Context.h +5 -2
  153. data/src/cxx_supportlib/LoggingKit/Forward.h +0 -1
  154. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +12 -4
  155. data/src/cxx_supportlib/ResourceLocator.h +15 -0
  156. data/src/cxx_supportlib/ServerKit/Config.h +156 -0
  157. data/src/cxx_supportlib/ServerKit/Context.h +59 -38
  158. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -2
  159. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +2 -2
  160. data/src/cxx_supportlib/ServerKit/HttpServer.h +16 -2
  161. data/src/cxx_supportlib/ServerKit/Server.h +32 -15
  162. data/src/cxx_supportlib/Utils.cpp +0 -441
  163. data/src/cxx_supportlib/Utils.h +0 -158
  164. data/src/cxx_supportlib/Utils/Curl.h +1 -0
  165. data/src/cxx_supportlib/Utils/ProcessMetricsCollector.h +1 -0
  166. data/src/cxx_supportlib/Utils/StrIntUtilsNoStrictAliasing.cpp +2 -0
  167. data/src/cxx_supportlib/Utils/VariantMap.h +31 -0
  168. data/src/cxx_supportlib/WatchdogLauncher.cpp +7 -79
  169. data/src/cxx_supportlib/WatchdogLauncher.h +50 -53
  170. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +981 -0
  171. data/src/cxx_supportlib/oxt/macros.hpp +9 -0
  172. data/src/cxx_supportlib/vendor-copy/websocketpp/COPYING +145 -0
  173. data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +342 -0
  174. data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +49 -0
  175. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/base64/base64.hpp +178 -0
  176. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/client.hpp +33 -0
  177. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +342 -0
  178. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +131 -0
  179. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio_ssl.hpp +39 -0
  180. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/chrono.hpp +68 -0
  181. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/connection_hdl.hpp +52 -0
  182. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/cpp11.hpp +162 -0
  183. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/functional.hpp +105 -0
  184. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/md5.hpp +448 -0
  185. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +89 -0
  186. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/network.hpp +106 -0
  187. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/platforms.hpp +46 -0
  188. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/random.hpp +82 -0
  189. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/regex.hpp +59 -0
  190. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/stdint.hpp +73 -0
  191. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/system_error.hpp +84 -0
  192. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +84 -0
  193. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/time.hpp +56 -0
  194. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/type_traits.hpp +65 -0
  195. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/concurrency/basic.hpp +46 -0
  196. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/concurrency/none.hpp +80 -0
  197. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio.hpp +77 -0
  198. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_client.hpp +77 -0
  199. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_no_tls.hpp +73 -0
  200. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_no_tls_client.hpp +73 -0
  201. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/boost_config.hpp +72 -0
  202. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +285 -0
  203. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core_client.hpp +294 -0
  204. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug.hpp +286 -0
  205. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug_asio.hpp +77 -0
  206. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +73 -0
  207. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/minimal_client.hpp +72 -0
  208. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/minimal_server.hpp +312 -0
  209. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +1651 -0
  210. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection_base.hpp +38 -0
  211. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +700 -0
  212. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint_base.hpp +38 -0
  213. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/error.hpp +277 -0
  214. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/extension.hpp +102 -0
  215. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +128 -0
  216. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +752 -0
  217. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +861 -0
  218. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/constants.hpp +308 -0
  219. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +196 -0
  220. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/request.hpp +191 -0
  221. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/response.hpp +266 -0
  222. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +619 -0
  223. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/request.hpp +124 -0
  224. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/response.hpp +188 -0
  225. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +2372 -0
  226. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +269 -0
  227. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/utilities_impl.hpp +87 -0
  228. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/basic.hpp +199 -0
  229. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/levels.hpp +203 -0
  230. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/stub.hpp +119 -0
  231. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/syslog.hpp +146 -0
  232. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/alloc.hpp +105 -0
  233. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/message.hpp +340 -0
  234. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/pool.hpp +229 -0
  235. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +299 -0
  236. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi00.hpp +462 -0
  237. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi07.hpp +78 -0
  238. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi08.hpp +83 -0
  239. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +1056 -0
  240. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/processor.hpp +407 -0
  241. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/random/none.hpp +60 -0
  242. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/random/random_device.hpp +80 -0
  243. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +173 -0
  244. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +190 -0
  245. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/server.hpp +33 -0
  246. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +189 -0
  247. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/base.hpp +232 -0
  248. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +1204 -0
  249. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +1147 -0
  250. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/base.hpp +159 -0
  251. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +370 -0
  252. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +484 -0
  253. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/connection.hpp +238 -0
  254. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +77 -0
  255. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/base.hpp +104 -0
  256. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +412 -0
  257. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +140 -0
  258. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/base.hpp +133 -0
  259. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +714 -0
  260. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +222 -0
  261. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/base.hpp +95 -0
  262. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +286 -0
  263. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/endpoint.hpp +140 -0
  264. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +355 -0
  265. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utf8_validator.hpp +154 -0
  266. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +182 -0
  267. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +61 -0
  268. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +121 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +96 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +951 -0
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +520 -0
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +258 -0
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +942 -0
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +567 -0
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +697 -0
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +386 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +1519 -0
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +1137 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +288 -0
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +569 -0
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +854 -0
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +371 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +35 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +521 -0
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2241 -0
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +246 -0
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +27 -0
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +260 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +27 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +238 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +27 -0
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +483 -0
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +220 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +825 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +330 -0
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +438 -0
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +40 -0
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +173 -0
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +40 -0
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +40 -0
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +34 -0
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +32 -0
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +47 -0
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +70 -0
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +491 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +68 -0
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +385 -0
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +128 -0
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +127 -0
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +192 -0
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +83 -0
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +1050 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +294 -0
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +48 -0
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +34 -0
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +229 -0
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +38 -0
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +119 -0
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +121 -0
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +121 -0
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +208 -0
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +244 -0
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +50 -0
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +85 -0
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +41 -0
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +82 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/function.hpp +40 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +91 -0
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +68 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +65 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +99 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +82 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +45 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +57 -0
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +161 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +480 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +333 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +120 -0
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +453 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +80 -0
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +432 -0
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +78 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +688 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +167 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +307 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +82 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +498 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +126 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +49 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +48 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +76 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +48 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +210 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +153 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +269 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +132 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +89 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +315 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +90 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +190 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +649 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +3470 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +178 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +120 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +178 -0
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +80 -0
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.ipp +476 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +47 -0
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +86 -0
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +103 -0
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +136 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +72 -0
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +222 -0
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +26 -0
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +61 -0
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +63 -0
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +31 -0
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +50 -0
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +45 -0
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +90 -0
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +47 -0
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +66 -0
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +69 -0
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +71 -0
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +500 -0
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +62 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +63 -0
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +70 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +148 -0
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +216 -0
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +158 -0
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +40 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +91 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +131 -0
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +128 -0
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +120 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +78 -0
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +87 -0
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +66 -0
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +107 -0
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +81 -0
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +166 -0
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +324 -0
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +90 -0
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +236 -0
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +138 -0
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +108 -0
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +125 -0
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +135 -0
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +127 -0
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +122 -0
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +125 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +460 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +452 -0
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +32 -0
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +42 -0
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +63 -0
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +170 -0
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +35 -0
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +123 -0
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +133 -0
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +131 -0
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +131 -0
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +103 -0
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +81 -0
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +48 -0
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +221 -0
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +146 -0
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +40 -0
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +46 -0
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +84 -0
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +49 -0
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +51 -0
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +218 -0
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +100 -0
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +336 -0
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +318 -0
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +93 -0
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +410 -0
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +63 -0
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +54 -0
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +178 -0
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +64 -0
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +75 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +83 -0
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +67 -0
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +144 -0
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service.hpp +203 -0
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service_operation.hpp +78 -0
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service_thread_info.hpp +42 -0
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +58 -0
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +93 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +55 -0
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +53 -0
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +333 -0
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +70 -0
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +95 -0
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +68 -0
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +35 -0
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +42 -0
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +71 -0
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +60 -0
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +63 -0
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +85 -0
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +47 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +40 -0
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +230 -0
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +130 -0
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +293 -0
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +345 -0
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +195 -0
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +125 -0
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +135 -0
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +111 -0
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +123 -0
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +124 -0
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +129 -0
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +83 -0
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +56 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +87 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +114 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +65 -0
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +360 -0
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +340 -0
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +432 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +130 -0
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +79 -0
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +156 -0
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +157 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +755 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +812 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +1149 -0
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +61 -0
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +556 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +355 -0
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +25 -0
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +73 -0
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +179 -0
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +767 -0
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +827 -0
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +772 -0
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +202 -0
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +243 -0
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +248 -0
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +265 -0
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +270 -0
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +96 -0
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +262 -0
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +246 -0
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +141 -0
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +206 -0
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +571 -0
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +44 -0
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +117 -0
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +55 -0
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +228 -0
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +55 -0
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +180 -0
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +55 -0
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +300 -0
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +57 -0
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +56 -0
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +193 -0
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +132 -0
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +178 -0
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +157 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +113 -0
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +72 -0
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +71 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +61 -0
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +61 -0
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +241 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +106 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +82 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +135 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +130 -0
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +92 -0
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +125 -0
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +492 -0
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +364 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +99 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +39 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +262 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +438 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +633 -0
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +666 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +925 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +386 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +38 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +169 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +255 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +30 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +136 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +308 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +522 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +267 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +30 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +42 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +789 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +194 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +42 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +112 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +166 -0
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +70 -0
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +327 -0
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +166 -0
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +351 -0
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +103 -0
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +30 -0
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +74 -0
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +75 -0
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +62 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +128 -0
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +70 -0
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +75 -0
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +115 -0
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +73 -0
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +1177 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +102 -0
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +168 -0
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +28 -0
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +436 -0
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +176 -0
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +396 -0
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +526 -0
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +573 -0
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +503 -0
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +186 -0
  589. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +102 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +758 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +54 -0
  592. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +42 -0
  593. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +75 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +65 -0
  595. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +63 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +254 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +382 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +35 -0
  599. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +59 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +88 -0
  601. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +21 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +94 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +23 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +43 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +170 -0
  606. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +283 -0
  607. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +180 -0
  608. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +378 -0
  609. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +361 -0
  610. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +40 -0
  611. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +179 -0
  612. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +118 -0
  613. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +39 -0
  614. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +222 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +39 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +220 -0
  617. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +620 -0
  618. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +672 -0
  619. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +23 -0
  620. data/src/cxx_supportlib/vendor-modified/boost/chrono.hpp +20 -0
  621. data/src/cxx_supportlib/vendor-modified/boost/chrono/chrono.hpp +15 -0
  622. data/src/cxx_supportlib/vendor-modified/boost/chrono/chrono_io.hpp +34 -0
  623. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/chrono.hpp +46 -0
  624. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +242 -0
  625. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +356 -0
  626. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +92 -0
  627. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +121 -0
  628. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +354 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +92 -0
  630. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/process_cpu_clocks.hpp +46 -0
  631. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/thread_clock.hpp +46 -0
  632. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/no_warning/signed_unsigned_cmp.hpp +54 -0
  633. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +163 -0
  634. data/src/cxx_supportlib/vendor-modified/boost/chrono/floor.hpp +36 -0
  635. data/src/cxx_supportlib/vendor-modified/boost/chrono/include.hpp +23 -0
  636. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +593 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +295 -0
  638. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +317 -0
  639. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +35 -0
  640. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +1003 -0
  641. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/ios_base_state.hpp +152 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_get.hpp +330 -0
  643. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1243 -0
  644. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_put.hpp +261 -0
  645. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +260 -0
  646. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +30 -0
  647. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +437 -0
  648. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/manip_base.hpp +101 -0
  649. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/to_string.hpp +50 -0
  650. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +637 -0
  651. data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +525 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/chrono/round.hpp +59 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/chrono/thread_clock.hpp +75 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/chrono/typeof/boost/chrono/chrono.hpp +32 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/chrono/typeof/boost/ratio.hpp +24 -0
  656. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +21 -0
  657. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor.hpp +16 -0
  658. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +460 -0
  659. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +112 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +126 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +51 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +15 -0
  663. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +18 -0
  664. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +19 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +250 -0
  666. data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +121 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +91 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/random/additive_combine.hpp +283 -0
  669. data/src/cxx_supportlib/vendor-modified/boost/random/bernoulli_distribution.hpp +197 -0
  670. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +184 -0
  671. data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +434 -0
  672. data/src/cxx_supportlib/vendor-modified/boost/random/cauchy_distribution.hpp +214 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/random/chi_squared_distribution.hpp +209 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/random/detail/auto_link.hpp +40 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +18 -0
  676. data/src/cxx_supportlib/vendor-modified/boost/random/detail/const_mod.hpp +216 -0
  677. data/src/cxx_supportlib/vendor-modified/boost/random/detail/disable_warnings.hpp +29 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/random/detail/enable_warnings.hpp +22 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/random/detail/generator_bits.hpp +36 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/random/detail/generator_seed_seq.hpp +40 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/random/detail/int_float_pair.hpp +121 -0
  682. data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +84 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/random/detail/iterator_mixin.hpp +45 -0
  684. data/src/cxx_supportlib/vendor-modified/boost/random/detail/large_arithmetic.hpp +122 -0
  685. data/src/cxx_supportlib/vendor-modified/boost/random/detail/operators.hpp +84 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/random/detail/polynomial.hpp +384 -0
  687. data/src/cxx_supportlib/vendor-modified/boost/random/detail/ptr_helper.hpp +67 -0
  688. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed.hpp +115 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed_impl.hpp +398 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/random/detail/signed_unsigned_tools.hpp +89 -0
  691. data/src/cxx_supportlib/vendor-modified/boost/random/detail/uniform_int_float.hpp +76 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +75 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/random/discard_block.hpp +241 -0
  694. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +636 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/random/exponential_distribution.hpp +386 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/random/extreme_value_distribution.hpp +177 -0
  697. data/src/cxx_supportlib/vendor-modified/boost/random/fisher_f_distribution.hpp +183 -0
  698. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +292 -0
  699. data/src/cxx_supportlib/vendor-modified/boost/random/generate_canonical.hpp +96 -0
  700. data/src/cxx_supportlib/vendor-modified/boost/random/geometric_distribution.hpp +267 -0
  701. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +883 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +271 -0
  703. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +267 -0
  704. data/src/cxx_supportlib/vendor-modified/boost/random/lagged_fibonacci.hpp +537 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/random/laplace_distribution.hpp +175 -0
  706. data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +466 -0
  707. data/src/cxx_supportlib/vendor-modified/boost/random/linear_feedback_shift.hpp +217 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/random/lognormal_distribution.hpp +254 -0
  709. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +682 -0
  710. data/src/cxx_supportlib/vendor-modified/boost/random/negative_binomial_distribution.hpp +220 -0
  711. data/src/cxx_supportlib/vendor-modified/boost/random/non_central_chi_squared_distribution.hpp +221 -0
  712. data/src/cxx_supportlib/vendor-modified/boost/random/normal_distribution.hpp +374 -0
  713. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +466 -0
  714. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +531 -0
  715. data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +360 -0
  716. data/src/cxx_supportlib/vendor-modified/boost/random/random_device.hpp +143 -0
  717. data/src/cxx_supportlib/vendor-modified/boost/random/random_number_generator.hpp +73 -0
  718. data/src/cxx_supportlib/vendor-modified/boost/random/ranlux.hpp +99 -0
  719. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +118 -0
  720. data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_order.hpp +269 -0
  721. data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_output.hpp +51 -0
  722. data/src/cxx_supportlib/vendor-modified/boost/random/student_t_distribution.hpp +180 -0
  723. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +613 -0
  724. data/src/cxx_supportlib/vendor-modified/boost/random/taus88.hpp +45 -0
  725. data/src/cxx_supportlib/vendor-modified/boost/random/traits.hpp +107 -0
  726. data/src/cxx_supportlib/vendor-modified/boost/random/triangle_distribution.hpp +232 -0
  727. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_01.hpp +257 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int.hpp +99 -0
  729. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +419 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +284 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real.hpp +82 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +241 -0
  733. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_smallint.hpp +307 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/random/variate_generator.hpp +122 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/random/weibull_distribution.hpp +177 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/random/xor_combine.hpp +208 -0
  737. data/src/cxx_supportlib/vendor-modified/boost/ratio.hpp +14 -0
  738. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +1342 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +16 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +30 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +22 -0
  742. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +19 -0
  743. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +30 -0
  744. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +30 -0
  745. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +30 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +30 -0
  747. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +30 -0
  748. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +30 -0
  749. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +30 -0
  750. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +30 -0
  751. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +30 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +30 -0
  753. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +30 -0
  754. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +31 -0
  755. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +30 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +25 -0
  757. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +15 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +30 -0
  759. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +30 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +1076 -0
  761. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1002 -0
  762. data/src/cxx_supportlib/vendor-modified/modp_b64.cpp +11 -0
  763. data/src/helper-scripts/rack-preloader.rb +1 -1
  764. data/src/nginx_module/{ConfigurationCommands.c → ConfigGeneral/AutoGeneratedDefinitions.c} +351 -134
  765. data/src/nginx_module/{ConfigurationCommands.c.cxxcodebuilder → ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder} +14 -25
  766. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +396 -0
  767. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +160 -0
  768. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +831 -0
  769. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +168 -0
  770. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +887 -0
  771. data/src/nginx_module/ConfigGeneral/ManifestGeneration.h +100 -0
  772. data/src/nginx_module/Configuration.c +165 -621
  773. data/src/nginx_module/Configuration.h +43 -33
  774. data/src/nginx_module/ContentHandler.c +46 -40
  775. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +282 -0
  776. data/src/nginx_module/{CreateLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder} +43 -17
  777. data/src/nginx_module/{CacheLocationConfig.c → LocationConfig/AutoGeneratedHeaderSerialization.c} +148 -180
  778. data/src/nginx_module/{CacheLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder} +13 -11
  779. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +595 -0
  780. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +190 -0
  781. data/src/nginx_module/{MergeLocationConfig.c → LocationConfig/AutoGeneratedMergeFunction.c} +32 -42
  782. data/src/nginx_module/{MergeLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder} +18 -11
  783. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +220 -0
  784. data/src/nginx_module/{LocationConfig.h.cxxcodebuilder → LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder} +70 -48
  785. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +163 -0
  786. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +125 -0
  787. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +303 -0
  788. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +173 -0
  789. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +133 -0
  790. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +154 -0
  791. data/src/nginx_module/config +13 -4
  792. data/src/nginx_module/ngx_http_passenger_module.c +154 -84
  793. data/src/ruby_supportlib/phusion_passenger.rb +2 -2
  794. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +613 -131
  795. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +52 -0
  796. data/src/ruby_supportlib/phusion_passenger/common_library.rb +18 -4
  797. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -0
  798. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +104 -0
  799. data/src/ruby_supportlib/phusion_passenger/constants.rb +0 -2
  800. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +470 -138
  801. data/src/ruby_supportlib/phusion_passenger/packaging.rb +1 -0
  802. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +17 -0
  803. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +11 -1
  804. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +7 -7
  805. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +293 -0
  806. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +8 -54
  807. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -5
  808. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +4 -7
  809. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
  810. data/src/schema_printer/SchemaPrinterMain.cpp +78 -0
  811. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +116 -0
  812. metadata +671 -30
  813. data/src/apache2_module/Configuration.cpp +0 -737
  814. data/src/apache2_module/Configuration.hpp +0 -274
  815. data/src/apache2_module/ConfigurationCommands.cpp +0 -199
  816. data/src/apache2_module/ConfigurationFields.hpp +0 -187
  817. data/src/apache2_module/ConfigurationSetters.cpp +0 -436
  818. data/src/apache2_module/ConfigurationSetters.cpp.cxxcodebuilder +0 -144
  819. data/src/apache2_module/CreateDirConfig.cpp +0 -68
  820. data/src/apache2_module/CreateDirConfig.cpp.cxxcodebuilder +0 -81
  821. data/src/apache2_module/MergeDirConfig.cpp +0 -155
  822. data/src/apache2_module/SetHeaders.cpp +0 -111
  823. data/src/nginx_module/CreateLocationConfig.c +0 -100
  824. data/src/nginx_module/LocationConfig.h +0 -95
@@ -0,0 +1,35 @@
1
+ // (C) Copyright Howard Hinnant
2
+ // (C) Copyright 2011 Vicente J. Botet Escriba
3
+ // Use, modification and distribution are subject to the Boost Software License,
4
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5
+ // http://www.boost.org/LICENSE_1_0.txt).
6
+ //
7
+ // This code was adapted by Vicente from Howard Hinnant's experimental work
8
+ // on chrono i/o to Boost
9
+
10
+ #ifndef BOOST_CHRONO_IO_DURATION_STYLE_HPP
11
+ #define BOOST_CHRONO_IO_DURATION_STYLE_HPP
12
+
13
+ #include <boost/detail/scoped_enum_emulation.hpp>
14
+
15
+ namespace boost
16
+ {
17
+ namespace chrono
18
+ {
19
+ /**
20
+ * Scoped enumeration emulation stating whether the duration I/O style is long or short.
21
+ * prefix means duration::rep with whatever stream/locale settings are set for it followed by a long name representing the unit
22
+ * symbol means duration::rep with whatever stream/locale settings are set for it followed by a SI unit abbreviation
23
+ */
24
+ BOOST_SCOPED_ENUM_DECLARE_BEGIN(duration_style)
25
+ {
26
+ prefix, symbol
27
+ }
28
+ BOOST_SCOPED_ENUM_DECLARE_END(duration_style)
29
+
30
+
31
+ } // chrono
32
+
33
+ }
34
+
35
+ #endif // header
@@ -0,0 +1,1003 @@
1
+ // (C) Copyright Howard Hinnant
2
+ // (C) Copyright 2011 Vicente J. Botet Escriba
3
+ // Use, modification and distribution are subject to the Boost Software License,
4
+ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5
+ // http://www.boost.org/LICENSE_1_0.txt).
6
+ //
7
+
8
+ #ifndef BOOST_CHRONO_IO_DURATION_UNITS_HPP
9
+ #define BOOST_CHRONO_IO_DURATION_UNITS_HPP
10
+
11
+ #include <boost/chrono/config.hpp>
12
+ #include <boost/ratio/ratio_io.hpp>
13
+ #include <boost/chrono/duration.hpp>
14
+ #include <boost/chrono/io/duration_style.hpp>
15
+ #include <boost/chrono/io/ios_base_state.hpp>
16
+ #include <boost/assert.hpp>
17
+ #include <string>
18
+ #include <ios>
19
+ #include <locale>
20
+ #include <algorithm>
21
+
22
+ namespace boost
23
+ {
24
+ namespace chrono
25
+ {
26
+ class rt_ratio
27
+ {
28
+ public:
29
+ template <typename Period>
30
+ rt_ratio(Period const&) :
31
+ num(Period::type::num), den(Period::type::den)
32
+ {
33
+ }
34
+
35
+ rt_ratio(intmax_t n = 0, intmax_t d = 0) :
36
+ num(n), den(d)
37
+ {
38
+ }
39
+
40
+ intmax_t num;
41
+ intmax_t den;
42
+ };
43
+
44
+ /**
45
+ * @c duration_units facet gives useful information about the duration units,
46
+ * as the number of plural forms, the plural form associated to a duration,
47
+ * the text associated to a plural form and a duration's period,
48
+ */
49
+ template <typename CharT = char>
50
+ class duration_units: public std::locale::facet
51
+ {
52
+ public:
53
+ /**
54
+ * Type of character the facet is instantiated on.
55
+ */
56
+ typedef CharT char_type;
57
+ /**
58
+ * Type of character string passed to member functions.
59
+ */
60
+ typedef std::basic_string<CharT> string_type;
61
+
62
+ /**
63
+ * Unique identifier for this type of facet.
64
+ */
65
+ static std::locale::id id;
66
+
67
+ /**
68
+ * Construct a @c duration_units facet.
69
+ * @param refs
70
+ * @Effects Construct a @c duration_units facet.
71
+ * If the @c refs argument is @c 0 then destruction of the object is
72
+ * delegated to the @c locale, or locales, containing it. This allows
73
+ * the user to ignore lifetime management issues. On the other had,
74
+ * if @c refs is @c 1 then the object must be explicitly deleted;
75
+ * the @c locale will not do so. In this case, the object can be
76
+ * maintained across the lifetime of multiple locales.
77
+ */
78
+ explicit duration_units(size_t refs = 0) :
79
+ std::locale::facet(refs)
80
+ {
81
+ }
82
+
83
+ /**
84
+ * @return pointer to the start of valid [N/D] units.
85
+ */
86
+ virtual const string_type* get_n_d_valid_units_start() const =0;
87
+ /**
88
+ * @effect calls the do_...
89
+ * @return pointer to the end of valid [N/D] units.
90
+ */
91
+ virtual const string_type* get_n_d_valid_units_end() const=0;
92
+
93
+ /**
94
+ * @return pointer to the start of valid units, symbol or prefix with its different plural forms.
95
+ */
96
+ virtual const string_type* get_valid_units_start() const=0;
97
+ /**
98
+ * @return pointer to the end of valid units.
99
+ */
100
+ virtual const string_type* get_valid_units_end() const=0;
101
+
102
+ /**
103
+ * @param k the found pointer to the [N/D] unit.
104
+ * @return true if @c k matches a valid unit.
105
+ */
106
+ virtual bool match_n_d_valid_unit(const string_type* k) const = 0;
107
+ /**
108
+ * @param k the found pointer to the unit.
109
+ * @Effects @c rt is set to the valid Period when the @c k matches a valid unit.
110
+ * @return true if @c k matches a valid unit.
111
+ */
112
+ virtual bool match_valid_unit(const string_type* k, rt_ratio& rt) const = 0;
113
+
114
+ /**
115
+ * @effect calls the do_...
116
+ * @return the pattern to be used by default.
117
+ */
118
+ virtual string_type get_pattern() const=0;
119
+
120
+ /**
121
+ * @effect calls the do_...
122
+ * @return the unit associated to this duration.
123
+ */
124
+ template <typename Rep, typename Period>
125
+ string_type get_unit(duration_style style, duration<Rep, Period> const& d) const
126
+ {
127
+ return do_get_unit(style, rt_ratio(Period()), static_cast<intmax_t>(d.count()));
128
+ }
129
+ /**
130
+ * @effect calls the do_...
131
+ * @return the [N/D] suffix unit associated to this duration.
132
+ */
133
+ template <typename Rep, typename Period>
134
+ string_type get_n_d_unit(duration_style style, duration<Rep, Period> const& d) const
135
+ {
136
+ return do_get_n_d_unit(style, rt_ratio(Period()), static_cast<intmax_t>(d.count()));
137
+ }
138
+
139
+ /**
140
+ * @effect calls the do_...
141
+ * @return true if the unit associated to the given Period is named, false otherwise.
142
+ */
143
+ template <typename Period>
144
+ bool is_named_unit() const
145
+ {
146
+ return do_is_named_unit(rt_ratio(Period()));
147
+ }
148
+
149
+
150
+ protected:
151
+
152
+ /**
153
+ * @Effects Destroys the facet
154
+ */
155
+ virtual ~duration_units()
156
+ {
157
+ }
158
+ /**
159
+ * @return the [N/D] suffix unit associated to this duration.
160
+ */
161
+ virtual string_type do_get_n_d_unit(duration_style style, rt_ratio rt, intmax_t v) const = 0;
162
+ /**
163
+ * @return the unit associated to this duration.
164
+ */
165
+ virtual string_type do_get_unit(duration_style style,rt_ratio rt, intmax_t v) const = 0;
166
+ /**
167
+ * @return true if the unit associated to the given Period is named, false otherwise.
168
+ */
169
+ virtual bool do_is_named_unit(rt_ratio rt) const =0;
170
+
171
+ };
172
+
173
+ template <typename CharT>
174
+ std::locale::id duration_units<CharT>::id;
175
+
176
+ namespace detail
177
+ {
178
+ template<typename CharT>
179
+ struct duration_units_default_holder
180
+ {
181
+ typedef std::basic_string<CharT> string_type;
182
+ static string_type* n_d_valid_units_;
183
+ static string_type* valid_units_;
184
+ static bool initialized_;
185
+ };
186
+ template <typename CharT>
187
+ typename duration_units_default_holder<CharT>::string_type* duration_units_default_holder<CharT>::n_d_valid_units_=0;
188
+ template <typename CharT>
189
+ typename duration_units_default_holder<CharT>::string_type* duration_units_default_holder<CharT>::valid_units_=0;
190
+ template<typename CharT>
191
+ bool duration_units_default_holder<CharT>::initialized_ = false;
192
+ }
193
+
194
+ /**
195
+ * This class is used to define the strings for the default English
196
+ */
197
+ template <typename CharT = char>
198
+ class duration_units_default: public duration_units<CharT>
199
+ {
200
+ protected:
201
+ static const std::size_t pfs_ = 2;
202
+
203
+ public:
204
+ /**
205
+ * Type of character the facet is instantiated on.
206
+ */
207
+ typedef CharT char_type;
208
+ /**
209
+ * Type of character string passed to member functions.
210
+ */
211
+ typedef std::basic_string<CharT> string_type;
212
+
213
+ /**
214
+ * Construct a @c duration_units_default facet.
215
+ * @param refs
216
+ * @Effects Construct a @c duration_units_default facet.
217
+ * If the @c refs argument is @c 0 then destruction of the object is
218
+ * delegated to the @c locale, or locales, containing it. This allows
219
+ * the user to ignore lifetime management issues. On the other had,
220
+ * if @c refs is @c 1 then the object must be explicitly deleted;
221
+ * the @c locale will not do so. In this case, the object can be
222
+ * maintained across the lifetime of multiple locales.
223
+ */
224
+ explicit duration_units_default(size_t refs = 0) :
225
+ duration_units<CharT> (refs)
226
+ {
227
+ }
228
+
229
+ /**
230
+ * Destroys the facet.
231
+ */
232
+ ~duration_units_default()
233
+ {
234
+ }
235
+
236
+ public:
237
+
238
+ /**
239
+ * @param k the found pointer to the [N/D] unit.
240
+ * @return true if @c k matches a valid unit.
241
+ */
242
+ bool match_n_d_valid_unit(const string_type* k) const
243
+ {
244
+ std::size_t index = (k - get_n_d_valid_units_start()) / (pfs_ + 1);
245
+ switch (index)
246
+ {
247
+ case 0:
248
+ break;
249
+ default:
250
+ return false;
251
+ }
252
+ return true;
253
+ }
254
+ /**
255
+ * @param k the found pointer to the unit.
256
+ * @Effects @c rt is set to the valid Period when the @c k matches a valid unit.
257
+ * @return true if @c k matches a valid unit.
258
+ */
259
+ bool match_valid_unit(const string_type* k, rt_ratio& rt) const
260
+ {
261
+ std::size_t index = (k - get_valid_units_start()) / (pfs_ + 1);
262
+ switch (index)
263
+ {
264
+ case 0:
265
+ rt = rt_ratio(atto());
266
+ break;
267
+ case 1:
268
+ rt = rt_ratio(femto());
269
+ break;
270
+ case 2:
271
+ rt = rt_ratio(pico());
272
+ break;
273
+ case 3:
274
+ rt = rt_ratio(nano());
275
+ break;
276
+ case 4:
277
+ rt = rt_ratio(micro());
278
+ break;
279
+ case 5:
280
+ rt = rt_ratio(milli());
281
+ break;
282
+ case 6:
283
+ rt = rt_ratio(centi());
284
+ break;
285
+ case 7:
286
+ rt = rt_ratio(deci());
287
+ break;
288
+ case 8:
289
+ rt = rt_ratio(deca());
290
+ break;
291
+ case 9:
292
+ rt = rt_ratio(hecto());
293
+ break;
294
+ case 10:
295
+ rt = rt_ratio(kilo());
296
+ break;
297
+ case 11:
298
+ rt = rt_ratio(mega());
299
+ break;
300
+ case 12:
301
+ rt = rt_ratio(giga());
302
+ break;
303
+ case 13:
304
+ rt = rt_ratio(tera());
305
+ break;
306
+ case 14:
307
+ rt = rt_ratio(peta());
308
+ break;
309
+ case 15:
310
+ rt = rt_ratio(exa());
311
+ break;
312
+ case 16:
313
+ rt = rt_ratio(ratio<1> ());
314
+ break;
315
+ case 17:
316
+ rt = rt_ratio(ratio<60> ());
317
+ break;
318
+ case 18:
319
+ rt = rt_ratio(ratio<3600> ());
320
+ break;
321
+ default:
322
+ return false;
323
+ }
324
+ return true;
325
+ }
326
+
327
+ /**
328
+ * @return pointer to the start of valid [N/D] units.
329
+ */
330
+ virtual const string_type* get_n_d_valid_units_start()const
331
+ {
332
+ return detail::duration_units_default_holder<CharT>::n_d_valid_units_;
333
+ }
334
+ /**
335
+ * @return pointer to the end of valid [N/D] units.
336
+ */
337
+ virtual const string_type* get_n_d_valid_units_end()const
338
+ {
339
+ return detail::duration_units_default_holder<CharT>::n_d_valid_units_ + (pfs_ + 1);
340
+ }
341
+
342
+ /**
343
+ * @return pointer to the start of valid units.
344
+ */
345
+ virtual const string_type* get_valid_units_start() const
346
+ {
347
+ return detail::duration_units_default_holder<CharT>::valid_units_;
348
+ }
349
+ /**
350
+ * @return pointer to the end of valid units.
351
+ */
352
+ virtual const string_type* get_valid_units_end() const
353
+ {
354
+ return detail::duration_units_default_holder<CharT>::valid_units_ + 19 * (pfs_ + 1);
355
+ }
356
+
357
+ string_type get_pattern() const
358
+ {
359
+ static const CharT t[] =
360
+ { '%', 'v', ' ', '%', 'u' };
361
+ static const string_type pattern(t, t + sizeof (t) / sizeof (t[0]));
362
+
363
+ return pattern;
364
+ }
365
+
366
+ protected:
367
+ /**
368
+ *
369
+ * This facet names the units associated to the following periods:
370
+ * atto,femto,pico,nano,micro,milli,centi,deci,ratio<1>,deca,hecto,kilo,mega,giga,tera,peta,exa,ratio<60> and ratio<3600>.
371
+ * @return true if the unit associated to the given Period is named, false otherwise.
372
+ */
373
+ bool do_is_named_unit(rt_ratio rt) const
374
+ {
375
+ if (rt.num==1) {
376
+ switch (rt.den)
377
+ {
378
+ case BOOST_RATIO_INTMAX_C(1):
379
+ case BOOST_RATIO_INTMAX_C(10):
380
+ case BOOST_RATIO_INTMAX_C(100):
381
+ case BOOST_RATIO_INTMAX_C(1000):
382
+ case BOOST_RATIO_INTMAX_C(1000000):
383
+ case BOOST_RATIO_INTMAX_C(1000000000):
384
+ case BOOST_RATIO_INTMAX_C(1000000000000):
385
+ case BOOST_RATIO_INTMAX_C(1000000000000000):
386
+ case BOOST_RATIO_INTMAX_C(1000000000000000000):
387
+ return true;
388
+ default:
389
+ return false;
390
+ }
391
+ } else if (rt.den==1) {
392
+ switch (rt.num)
393
+ {
394
+ case BOOST_RATIO_INTMAX_C(10):
395
+ case BOOST_RATIO_INTMAX_C(60):
396
+ case BOOST_RATIO_INTMAX_C(100):
397
+ case BOOST_RATIO_INTMAX_C(1000):
398
+ case BOOST_RATIO_INTMAX_C(3600):
399
+ case BOOST_RATIO_INTMAX_C(1000000):
400
+ case BOOST_RATIO_INTMAX_C(1000000000):
401
+ case BOOST_RATIO_INTMAX_C(1000000000000):
402
+ case BOOST_RATIO_INTMAX_C(1000000000000000):
403
+ case BOOST_RATIO_INTMAX_C(1000000000000000000):
404
+ return true;
405
+ default:
406
+ return false;
407
+ }
408
+ }
409
+ return false;
410
+
411
+ }
412
+
413
+ /**
414
+ * In English the suffix used after [N/D] is the one associated to the period ratio<1>.
415
+ * @return the [N/D] suffix unit associated to this duration.
416
+ */
417
+ string_type do_get_n_d_unit(duration_style style, rt_ratio, intmax_t v) const
418
+ {
419
+ return do_get_unit(style, ratio<1>(), do_get_plural_form(v));
420
+ }
421
+
422
+ /**
423
+ * @return the unit associated to this duration if it is named, "" otherwise.
424
+ */
425
+ string_type do_get_unit(duration_style style, rt_ratio rt, intmax_t v) const
426
+ {
427
+ if (rt.num==1) {
428
+ switch (rt.den)
429
+ {
430
+ case BOOST_RATIO_INTMAX_C(1):
431
+ return do_get_unit(style, ratio<1>(), do_get_plural_form(v));
432
+ case BOOST_RATIO_INTMAX_C(10):
433
+ return do_get_unit(style, deci(), do_get_plural_form(v));
434
+ case BOOST_RATIO_INTMAX_C(100):
435
+ return do_get_unit(style, centi(), do_get_plural_form(v));
436
+ case BOOST_RATIO_INTMAX_C(1000):
437
+ return do_get_unit(style, milli(), do_get_plural_form(v));
438
+ case BOOST_RATIO_INTMAX_C(1000000):
439
+ return do_get_unit(style, micro(), do_get_plural_form(v));
440
+ case BOOST_RATIO_INTMAX_C(1000000000):
441
+ return do_get_unit(style, nano(), do_get_plural_form(v));
442
+ case BOOST_RATIO_INTMAX_C(1000000000000):
443
+ return do_get_unit(style, pico(), do_get_plural_form(v));
444
+ case BOOST_RATIO_INTMAX_C(1000000000000000):
445
+ return do_get_unit(style, femto(), do_get_plural_form(v));
446
+ case BOOST_RATIO_INTMAX_C(1000000000000000000):
447
+ return do_get_unit(style, atto(), do_get_plural_form(v));
448
+ default:
449
+ ;
450
+ }
451
+ } else if (rt.den==1) {
452
+ switch (rt.num)
453
+ {
454
+ case BOOST_RATIO_INTMAX_C(10):
455
+ return do_get_unit(style, deca(), do_get_plural_form(v));
456
+ case BOOST_RATIO_INTMAX_C(60):
457
+ return do_get_unit(style, ratio<60>(), do_get_plural_form(v));
458
+ case BOOST_RATIO_INTMAX_C(100):
459
+ return do_get_unit(style, hecto(), do_get_plural_form(v));
460
+ case BOOST_RATIO_INTMAX_C(1000):
461
+ return do_get_unit(style, kilo(), do_get_plural_form(v));
462
+ case BOOST_RATIO_INTMAX_C(3600):
463
+ return do_get_unit(style, ratio<3600>(), do_get_plural_form(v));
464
+ case BOOST_RATIO_INTMAX_C(1000000):
465
+ return do_get_unit(style, mega(), do_get_plural_form(v));
466
+ case BOOST_RATIO_INTMAX_C(1000000000):
467
+ return do_get_unit(style, giga(), do_get_plural_form(v));
468
+ case BOOST_RATIO_INTMAX_C(1000000000000):
469
+ return do_get_unit(style, tera(), do_get_plural_form(v));
470
+ case BOOST_RATIO_INTMAX_C(1000000000000000):
471
+ return do_get_unit(style, peta(), do_get_plural_form(v));
472
+ case BOOST_RATIO_INTMAX_C(1000000000000000000):
473
+ return do_get_unit(style, exa(), do_get_plural_form(v));
474
+ default:
475
+ ;
476
+ }
477
+ }
478
+ BOOST_ASSERT(false&&"ratio parameter can not be translated");
479
+ //throw "exception";
480
+ return string_type();
481
+ }
482
+
483
+ protected:
484
+ /**
485
+ * @return the number of associated plural forms this facet manages.
486
+ */
487
+ virtual std::size_t do_get_plural_forms() const
488
+ {
489
+ return static_get_plural_forms();
490
+ }
491
+ static std::size_t static_get_plural_forms()
492
+ {
493
+ return pfs_;
494
+ }
495
+ /**
496
+ * Gets the associated plural form.
497
+ * @param value the duration representation
498
+ * @return the plural form associated to the @c value parameter. In English there are 2 plural forms
499
+ * 0 singular (-1 or 1)
500
+ * 1 plural for all others
501
+ */
502
+ virtual std::size_t do_get_plural_form(int_least64_t value) const
503
+ {
504
+ return static_get_plural_form(value);
505
+ }
506
+ static std::size_t static_get_plural_form(int_least64_t value)
507
+ {
508
+ return (value == -1 || value == 1) ? 0 : 1;
509
+ }
510
+
511
+ /**
512
+ * @param style the duration style.
513
+ * @param period the period associated to the duration seconds.
514
+ * @param pf the requested plural form.
515
+ * @return if style is symbol returns "s", otherwise if pf is 0 return "second", if pf is 1 "seconds"
516
+ */
517
+ virtual string_type do_get_unit(duration_style style, ratio<1> u, std::size_t pf) const
518
+ {
519
+ return static_get_unit(style,u,pf);
520
+ }
521
+ static string_type static_get_unit(duration_style style, ratio<1> , std::size_t pf)
522
+ {
523
+ static const CharT t[] =
524
+ { 's' };
525
+ static const string_type symbol(t, t + sizeof (t) / sizeof (t[0]));
526
+ static const CharT u[] =
527
+ { 's', 'e', 'c', 'o', 'n', 'd' };
528
+ static const string_type singular(u, u + sizeof (u) / sizeof (u[0]));
529
+ static const CharT v[] =
530
+ { 's', 'e', 'c', 'o', 'n', 'd', 's' };
531
+ static const string_type plural(v, v + sizeof (v) / sizeof (v[0]));
532
+
533
+ if (style == duration_style::symbol)
534
+ {
535
+ return symbol;
536
+ }
537
+ if (pf == 0)
538
+ {
539
+ return singular;
540
+ }
541
+ if (pf == 1)
542
+ {
543
+ return plural;
544
+ }
545
+ BOOST_ASSERT(false&&"style/pf parameters not valid");
546
+ //throw "exception";
547
+ return string_type();
548
+ }
549
+
550
+ /**
551
+ * @param style the duration style.
552
+ * @param period the period associated to the duration minutes.
553
+ * @param pf the requested plural form.
554
+ * @return if style is symbol returns "min", otherwise if pf is 0 return "minute", if pf is 1 "minutes"
555
+ */
556
+ virtual string_type do_get_unit(duration_style style, ratio<60> u, std::size_t pf) const
557
+ {
558
+ return static_get_unit(style,u,pf);
559
+ }
560
+ static string_type static_get_unit(duration_style style, ratio<60> , std::size_t pf)
561
+ {
562
+ static const CharT t[] =
563
+ { 'm', 'i', 'n' };
564
+ static const string_type symbol(t, t + sizeof (t) / sizeof (t[0]));
565
+
566
+ static const CharT u[] =
567
+ { 'm', 'i', 'n', 'u', 't', 'e' };
568
+ static const string_type singular(u, u + sizeof (u) / sizeof (u[0]));
569
+ static const CharT v[] =
570
+ { 'm', 'i', 'n', 'u', 't', 'e', 's' };
571
+ static const string_type plural(v, v + sizeof (v) / sizeof (v[0]));
572
+
573
+ if (style == duration_style::symbol) return symbol;
574
+ if (pf == 0) return singular;
575
+ if (pf == 1) return plural;
576
+ BOOST_ASSERT(false&&"style/pf parameters not valid");
577
+ //throw "exception";
578
+ return string_type();
579
+
580
+ }
581
+
582
+ /**
583
+ * @param style the duration style.
584
+ * @param period the period associated to the duration hours.
585
+ * @param pf the requested plural form.
586
+ * @return if style is symbol returns "h", otherwise if pf is 0 return "hour", if pf is 1 "hours"
587
+ */
588
+ virtual string_type do_get_unit(duration_style style, ratio<3600> u, std::size_t pf) const
589
+ {
590
+ return static_get_unit(style,u,pf);
591
+ }
592
+ static string_type static_get_unit(duration_style style, ratio<3600> , std::size_t pf)
593
+ {
594
+ static const CharT t[] =
595
+ { 'h' };
596
+ static const string_type symbol(t, t + sizeof (t) / sizeof (t[0]));
597
+ static const CharT u[] =
598
+ { 'h', 'o', 'u', 'r' };
599
+ static const string_type singular(u, u + sizeof (u) / sizeof (u[0]));
600
+ static const CharT v[] =
601
+ { 'h', 'o', 'u', 'r', 's' };
602
+ static const string_type plural(v, v + sizeof (v) / sizeof (v[0]));
603
+
604
+ if (style == duration_style::symbol) return symbol;
605
+ if (pf == 0) return singular;
606
+ if (pf == 1) return plural;
607
+ BOOST_ASSERT(false&&"style/pf parameters not valid");
608
+ //throw "exception";
609
+ return string_type();
610
+
611
+ }
612
+ /**
613
+ * @param style the duration style.
614
+ * @param u the period tag atto.
615
+ * @param pf the requested plural form.
616
+ * @return the concatenation of the prefix associated to @c period + the one associated to seconds.
617
+ */
618
+ virtual string_type do_get_unit(duration_style style, atto u, std::size_t pf) const
619
+ {
620
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
621
+ }
622
+ static string_type static_get_unit(duration_style style, atto u, std::size_t pf)
623
+ {
624
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
625
+ }
626
+ /**
627
+ * @param style the duration style.
628
+ * @param u the period tag femto.
629
+ * @param pf the requested plural form.
630
+ * @return the concatenation of the prefix associated to period @c u + the one associated to seconds.
631
+ */
632
+ virtual string_type do_get_unit(duration_style style, femto u, std::size_t pf) const
633
+ {
634
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
635
+ }
636
+ static string_type static_get_unit(duration_style style, femto u, std::size_t pf)
637
+ {
638
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
639
+ }
640
+ /**
641
+ * @param style the duration style.
642
+ * @param u the period tag femto.
643
+ * @param pf the requested plural form.
644
+ * @return the concatenation of the prefix associated to period @c u + the one associated to seconds.
645
+ */
646
+ virtual string_type do_get_unit(duration_style style, pico u, std::size_t pf) const
647
+ {
648
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
649
+ }
650
+ static string_type static_get_unit(duration_style style, pico u, std::size_t pf)
651
+ {
652
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
653
+ }
654
+ virtual string_type do_get_unit(duration_style style, nano u, std::size_t pf) const
655
+ {
656
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
657
+ }
658
+ static string_type static_get_unit(duration_style style, nano u, std::size_t pf)
659
+ {
660
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
661
+ }
662
+ virtual string_type do_get_unit(duration_style style, micro u, std::size_t pf) const
663
+ {
664
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
665
+ }
666
+ static string_type static_get_unit(duration_style style, micro u, std::size_t pf)
667
+ {
668
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
669
+ }
670
+ virtual string_type do_get_unit(duration_style style, milli u, std::size_t pf) const
671
+ {
672
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
673
+ }
674
+ static string_type static_get_unit(duration_style style, milli u, std::size_t pf)
675
+ {
676
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
677
+ }
678
+ virtual string_type do_get_unit(duration_style style, centi u, std::size_t pf) const
679
+ {
680
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
681
+ }
682
+ static string_type static_get_unit(duration_style style, centi u, std::size_t pf)
683
+ {
684
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
685
+ }
686
+ virtual string_type do_get_unit(duration_style style, deci u, std::size_t pf) const
687
+ {
688
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
689
+ }
690
+ static string_type static_get_unit(duration_style style, deci u, std::size_t pf)
691
+ {
692
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
693
+ }
694
+ virtual string_type do_get_unit(duration_style style, deca u, std::size_t pf) const
695
+ {
696
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
697
+ }
698
+ static string_type static_get_unit(duration_style style, deca u, std::size_t pf)
699
+ {
700
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
701
+ }
702
+ virtual string_type do_get_unit(duration_style style, hecto u, std::size_t pf) const
703
+ {
704
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
705
+ }
706
+ static string_type static_get_unit(duration_style style, hecto u, std::size_t pf)
707
+ {
708
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
709
+ }
710
+ virtual string_type do_get_unit(duration_style style, kilo u, std::size_t pf) const
711
+ {
712
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
713
+ }
714
+ static string_type static_get_unit(duration_style style, kilo u, std::size_t pf)
715
+ {
716
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
717
+ }
718
+ virtual string_type do_get_unit(duration_style style, mega u, std::size_t pf) const
719
+ {
720
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
721
+ }
722
+ static string_type static_get_unit(duration_style style, mega u, std::size_t pf)
723
+ {
724
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
725
+ }
726
+ virtual string_type do_get_unit(duration_style style, giga u, std::size_t pf) const
727
+ {
728
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
729
+ }
730
+ static string_type static_get_unit(duration_style style, giga u, std::size_t pf)
731
+ {
732
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
733
+ }
734
+ virtual string_type do_get_unit(duration_style style, tera u, std::size_t pf) const
735
+ {
736
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
737
+ }
738
+ static string_type static_get_unit(duration_style style, tera u, std::size_t pf)
739
+ {
740
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
741
+ }
742
+ virtual string_type do_get_unit(duration_style style, peta u, std::size_t pf) const
743
+ {
744
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
745
+ }
746
+ static string_type static_get_unit(duration_style style, peta u, std::size_t pf)
747
+ {
748
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
749
+ }
750
+ virtual string_type do_get_unit(duration_style style, exa u, std::size_t pf) const
751
+ {
752
+ return do_get_ratio_prefix(style, u) + do_get_unit(style, ratio<1> (), pf);
753
+ }
754
+ static string_type static_get_unit(duration_style style, exa u, std::size_t pf)
755
+ {
756
+ return static_get_ratio_prefix(style, u) + static_get_unit(style, ratio<1> (), pf);
757
+ }
758
+
759
+ protected:
760
+
761
+ /**
762
+ * @param style the duration style.
763
+ * @param u the period tag atto.
764
+ * @return depending on the value of @c style return the ratio_string symbol or prefix.
765
+ */
766
+ virtual string_type do_get_ratio_prefix(duration_style style, atto u) const
767
+ {
768
+ return static_get_ratio_prefix(style, u);
769
+ }
770
+ static string_type static_get_ratio_prefix(duration_style style, atto)
771
+ {
772
+ if (style == duration_style::symbol) return ratio_string<atto, CharT>::symbol();
773
+ return ratio_string<atto, CharT>::prefix();
774
+ }
775
+ virtual string_type do_get_ratio_prefix(duration_style style, femto u) const
776
+ {
777
+ return static_get_ratio_prefix(style, u);
778
+ }
779
+ static string_type static_get_ratio_prefix(duration_style style, femto)
780
+ {
781
+ if (style == duration_style::symbol) return ratio_string<femto, CharT>::symbol();
782
+ return ratio_string<femto, CharT>::prefix();
783
+ }
784
+ virtual string_type do_get_ratio_prefix(duration_style style, pico u) const
785
+ {
786
+ return static_get_ratio_prefix(style, u);
787
+ }
788
+ static string_type static_get_ratio_prefix(duration_style style, pico)
789
+ {
790
+ if (style == duration_style::symbol) return ratio_string<pico, CharT>::symbol();
791
+ return ratio_string<pico, CharT>::prefix();
792
+ }
793
+ virtual string_type do_get_ratio_prefix(duration_style style, nano u) const
794
+ {
795
+ return static_get_ratio_prefix(style, u);
796
+ }
797
+ static string_type static_get_ratio_prefix(duration_style style, nano)
798
+ {
799
+ if (style == duration_style::symbol) return ratio_string<nano, CharT>::symbol();
800
+ return ratio_string<nano, CharT>::prefix();
801
+ }
802
+ virtual string_type do_get_ratio_prefix(duration_style style, micro u) const
803
+ {
804
+ return static_get_ratio_prefix(style, u);
805
+ }
806
+ static string_type static_get_ratio_prefix(duration_style style, micro)
807
+ {
808
+ if (style == duration_style::symbol) return ratio_string<micro, CharT>::symbol();
809
+ return ratio_string<micro, CharT>::prefix();
810
+ }
811
+ virtual string_type do_get_ratio_prefix(duration_style style, milli u) const
812
+ {
813
+ return static_get_ratio_prefix(style, u);
814
+ }
815
+ static string_type static_get_ratio_prefix(duration_style style, milli)
816
+ {
817
+ if (style == duration_style::symbol) return ratio_string<milli, CharT>::symbol();
818
+ return ratio_string<milli, CharT>::prefix();
819
+ }
820
+ virtual string_type do_get_ratio_prefix(duration_style style, centi u) const
821
+ {
822
+ return static_get_ratio_prefix(style, u);
823
+ }
824
+ static string_type static_get_ratio_prefix(duration_style style, centi)
825
+ {
826
+ if (style == duration_style::symbol) return ratio_string<centi, CharT>::symbol();
827
+ return ratio_string<centi, CharT>::prefix();
828
+ }
829
+ virtual string_type do_get_ratio_prefix(duration_style style, deci u) const
830
+ {
831
+ return static_get_ratio_prefix(style, u);
832
+ }
833
+ static string_type static_get_ratio_prefix(duration_style style, deci)
834
+ {
835
+ if (style == duration_style::symbol) return ratio_string<deci, CharT>::symbol();
836
+ return ratio_string<deci, CharT>::prefix();
837
+ }
838
+ virtual string_type do_get_ratio_prefix(duration_style style, deca u) const
839
+ {
840
+ return static_get_ratio_prefix(style, u);
841
+ }
842
+ static string_type static_get_ratio_prefix(duration_style style, deca)
843
+ {
844
+ if (style == duration_style::symbol) return ratio_string<deca, CharT>::symbol();
845
+ return ratio_string<deca, CharT>::prefix();
846
+ }
847
+ virtual string_type do_get_ratio_prefix(duration_style style, hecto u) const
848
+ {
849
+ return static_get_ratio_prefix(style, u);
850
+ }
851
+ static string_type static_get_ratio_prefix(duration_style style, hecto)
852
+ {
853
+ if (style == duration_style::symbol) return ratio_string<hecto, CharT>::symbol();
854
+ return ratio_string<hecto, CharT>::prefix();
855
+ }
856
+ virtual string_type do_get_ratio_prefix(duration_style style, kilo u) const
857
+ {
858
+ return static_get_ratio_prefix(style, u);
859
+ }
860
+ static string_type static_get_ratio_prefix(duration_style style, kilo)
861
+ {
862
+ if (style == duration_style::symbol) return ratio_string<kilo, CharT>::symbol();
863
+ return ratio_string<kilo, CharT>::prefix();
864
+ }
865
+ virtual string_type do_get_ratio_prefix(duration_style style, mega u) const
866
+ {
867
+ return static_get_ratio_prefix(style, u);
868
+ }
869
+ static string_type static_get_ratio_prefix(duration_style style, mega)
870
+ {
871
+ if (style == duration_style::symbol) return ratio_string<mega, CharT>::symbol();
872
+ return ratio_string<mega, CharT>::prefix();
873
+ }
874
+ virtual string_type do_get_ratio_prefix(duration_style style, giga u) const
875
+ {
876
+ return static_get_ratio_prefix(style, u);
877
+ }
878
+ static string_type static_get_ratio_prefix(duration_style style, giga)
879
+ {
880
+ if (style == duration_style::symbol) return ratio_string<giga, CharT>::symbol();
881
+ return ratio_string<giga, CharT>::prefix();
882
+ }
883
+ virtual string_type do_get_ratio_prefix(duration_style style, tera u) const
884
+ {
885
+ return static_get_ratio_prefix(style, u);
886
+ }
887
+ static string_type static_get_ratio_prefix(duration_style style, tera)
888
+ {
889
+ if (style == duration_style::symbol) return ratio_string<tera, CharT>::symbol();
890
+ return ratio_string<tera, CharT>::prefix();
891
+ }
892
+ virtual string_type do_get_ratio_prefix(duration_style style, peta u) const
893
+ {
894
+ return static_get_ratio_prefix(style, u);
895
+ }
896
+ static string_type static_get_ratio_prefix(duration_style style, peta)
897
+ {
898
+ if (style == duration_style::symbol) return ratio_string<peta, CharT>::symbol();
899
+ return ratio_string<peta, CharT>::prefix();
900
+ }
901
+ virtual string_type do_get_ratio_prefix(duration_style style, exa u) const
902
+ {
903
+ return static_get_ratio_prefix(style, u);
904
+ }
905
+ static string_type static_get_ratio_prefix(duration_style style, exa)
906
+ {
907
+ if (style == duration_style::symbol) return ratio_string<exa, CharT>::symbol();
908
+ return ratio_string<exa, CharT>::prefix();
909
+ }
910
+
911
+ protected:
912
+ template <typename Period>
913
+ string_type* fill_units(string_type* it, Period) const
914
+ {
915
+ std::size_t pfs = do_get_plural_forms();
916
+ for (std::size_t pf = 0; pf < pfs; ++pf)
917
+ {
918
+ *it++ = do_get_unit(duration_style::prefix, Period(), pf);
919
+ }
920
+ *it++ = do_get_unit(duration_style::symbol, Period(), 0);
921
+ return it;
922
+ }
923
+ public:
924
+ template <typename Period>
925
+ static string_type* static_fill_units(string_type* it, Period)
926
+ {
927
+ std::size_t pfs = static_get_plural_forms();
928
+ for (std::size_t pf = 0; pf < pfs; ++pf)
929
+ {
930
+ *it++ = static_get_unit(duration_style::prefix, Period(), pf);
931
+ }
932
+ *it++ = static_get_unit(duration_style::symbol, Period(), 0);
933
+ return it;
934
+ }
935
+ static string_type* static_init_valid_units(string_type* it)
936
+ {
937
+ it = static_fill_units(it, atto());
938
+ it = static_fill_units(it, femto());
939
+ it = static_fill_units(it, pico());
940
+ it = static_fill_units(it, nano());
941
+ it = static_fill_units(it, micro());
942
+ it = static_fill_units(it, milli());
943
+ it = static_fill_units(it, centi());
944
+ it = static_fill_units(it, deci());
945
+ it = static_fill_units(it, deca());
946
+ it = static_fill_units(it, hecto());
947
+ it = static_fill_units(it, kilo());
948
+ it = static_fill_units(it, mega());
949
+ it = static_fill_units(it, giga());
950
+ it = static_fill_units(it, tera());
951
+ it = static_fill_units(it, peta());
952
+ it = static_fill_units(it, exa());
953
+ it = static_fill_units(it, ratio<1> ());
954
+ it = static_fill_units(it, ratio<60> ());
955
+ it = static_fill_units(it, ratio<3600> ());
956
+ return it;
957
+ }
958
+ };
959
+
960
+ namespace detail
961
+ {
962
+
963
+ template<typename CharT>
964
+ struct duration_units_default_initializer_t
965
+ {
966
+ duration_units_default_initializer_t()
967
+ {
968
+ if (!duration_units_default_holder<CharT>::initialized_)
969
+ {
970
+ typedef typename duration_units_default_holder<CharT>::string_type string_type;
971
+ duration_units_default_holder<CharT>::n_d_valid_units_ = new string_type[3];
972
+ duration_units_default_holder<CharT>::valid_units_ = new string_type[19 * 3];
973
+
974
+ string_type* it = duration_units_default_holder<CharT>::n_d_valid_units_;
975
+ it = duration_units_default<CharT>::static_fill_units(it, ratio<1> ());
976
+ it = duration_units_default<CharT>::static_init_valid_units(duration_units_default_holder<CharT>::valid_units_);
977
+
978
+ duration_units_default_holder<CharT>::initialized_ = true;
979
+ }
980
+ }
981
+ ~duration_units_default_initializer_t()
982
+ {
983
+ if (duration_units_default_holder<CharT>::initialized_)
984
+ {
985
+ delete[] duration_units_default_holder<CharT>::n_d_valid_units_;
986
+ duration_units_default_holder<CharT>::n_d_valid_units_ = 0;
987
+ delete[] duration_units_default_holder<CharT>::valid_units_;
988
+ duration_units_default_holder<CharT>::valid_units_ = 0;
989
+ duration_units_default_holder<CharT>::initialized_ = false;
990
+ }
991
+ }
992
+ };
993
+ namespace /**/
994
+ {
995
+ duration_units_default_initializer_t<char> duration_units_default_initializer;
996
+ duration_units_default_initializer_t<wchar_t> wduration_units_default_initializer;
997
+ } // namespace
998
+ }
999
+ } // chrono
1000
+
1001
+ } // boost
1002
+
1003
+ #endif // header