passenger 4.0.60 → 5.0.0.beta1

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 (1301) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.editorconfig +5 -0
  5. data/.travis.yml +3 -2
  6. data/CHANGELOG +31 -53
  7. data/CONTRIBUTING.md +4 -4
  8. data/CONTRIBUTORS +0 -1
  9. data/Gemfile +18 -0
  10. data/Gemfile.lock +41 -0
  11. data/Rakefile +16 -0
  12. data/bin/passenger +2 -2
  13. data/bin/passenger-install-apache2-module +12 -12
  14. data/bin/passenger-install-nginx-module +9 -14
  15. data/bin/passenger-status +125 -87
  16. data/build/agents.rb +112 -140
  17. data/build/apache2.rb +4 -9
  18. data/build/basics.rb +5 -3
  19. data/build/common_library.rb +1 -0
  20. data/build/cxx_tests.rb +69 -47
  21. data/build/debian.rb +4 -2
  22. data/build/documentation.rb +1 -0
  23. data/build/integration_tests.rb +28 -43
  24. data/build/misc.rb +0 -18
  25. data/build/nginx.rb +2 -6
  26. data/build/packaging.rb +33 -22
  27. data/build/preprocessor.rb +2 -4
  28. data/build/ruby_tests.rb +7 -26
  29. data/build/test_basics.rb +24 -25
  30. data/debian.template/control.template +2 -2
  31. data/debian.template/locations.ini.template +2 -3
  32. data/debian.template/passenger.install.template +2 -2
  33. data/debian.template/rules.template +1 -1
  34. data/dev/ci/run_jenkins.sh +0 -1
  35. data/dev/ci/run_rpm_tests.sh +3 -0
  36. data/dev/ci/run_travis.sh +63 -17
  37. data/dev/copy_boost_headers +22 -6
  38. data/dev/ruby_server.rb +244 -0
  39. data/dev/vagrant/provision.sh +3 -1
  40. data/doc/DebuggingAndStressTesting.md +3 -3
  41. data/doc/Design and Architecture.txt +5 -6
  42. data/doc/Packaging.txt.md +35 -6
  43. data/doc/ServerOptimizationGuide.txt.md +339 -0
  44. data/doc/Users guide Apache.idmap.txt +177 -187
  45. data/doc/Users guide Apache.txt +143 -219
  46. data/doc/Users guide Nginx.idmap.txt +166 -166
  47. data/doc/Users guide Nginx.txt +265 -223
  48. data/doc/Users guide Standalone.txt +3 -3
  49. data/doc/templates/markdown.html.erb +37 -6
  50. data/doc/users_guide_snippets/environment_variables.txt +1 -1
  51. data/doc/users_guide_snippets/support_information.txt +1 -1
  52. data/doc/users_guide_snippets/tips.txt +2 -2
  53. data/ext/apache2/Configuration.cpp +23 -81
  54. data/ext/apache2/Configuration.hpp +18 -92
  55. data/ext/apache2/ConfigurationCommands.cpp +64 -15
  56. data/ext/apache2/ConfigurationCommands.cpp.erb +8 -4
  57. data/ext/apache2/ConfigurationFields.hpp +12 -0
  58. data/ext/apache2/ConfigurationSetters.cpp +73 -1
  59. data/ext/apache2/ConfigurationSetters.cpp.erb +3 -2
  60. data/ext/apache2/CreateDirConfig.cpp +6 -0
  61. data/ext/apache2/DirectoryMapper.h +11 -6
  62. data/ext/apache2/Hooks.cpp +291 -408
  63. data/ext/apache2/MergeDirConfig.cpp +42 -0
  64. data/ext/apache2/SetHeaders.cpp +61 -16
  65. data/ext/apache2/SetHeaders.cpp.erb +9 -7
  66. data/ext/boost/container/allocator_traits.hpp +400 -0
  67. data/ext/boost/container/deque.hpp +2012 -0
  68. data/ext/boost/container/detail/adaptive_node_pool_impl.hpp +874 -0
  69. data/ext/boost/container/detail/advanced_insert_int.hpp +369 -0
  70. data/ext/boost/container/detail/algorithms.hpp +84 -0
  71. data/ext/boost/container/detail/allocation_type.hpp +54 -0
  72. data/ext/boost/container/detail/allocator_version_traits.hpp +163 -0
  73. data/ext/boost/container/detail/config_begin.hpp +49 -0
  74. data/ext/boost/container/detail/config_end.hpp +17 -0
  75. data/ext/boost/container/detail/destroyers.hpp +365 -0
  76. data/ext/boost/container/detail/flat_tree.hpp +1055 -0
  77. data/ext/boost/container/detail/function_detector.hpp +88 -0
  78. data/ext/boost/container/detail/iterators.hpp +611 -0
  79. data/ext/boost/container/detail/math_functions.hpp +113 -0
  80. data/ext/boost/container/detail/memory_util.hpp +83 -0
  81. data/ext/boost/container/detail/mpl.hpp +160 -0
  82. data/ext/boost/container/detail/multiallocation_chain.hpp +286 -0
  83. data/ext/boost/container/detail/node_alloc_holder.hpp +386 -0
  84. data/ext/boost/container/detail/node_pool_impl.hpp +365 -0
  85. data/ext/boost/container/detail/pair.hpp +354 -0
  86. data/ext/boost/container/detail/pool_common.hpp +52 -0
  87. data/ext/boost/container/detail/preprocessor.hpp +232 -0
  88. data/ext/boost/container/detail/transform_iterator.hpp +176 -0
  89. data/ext/boost/container/detail/tree.hpp +1134 -0
  90. data/ext/boost/container/detail/type_traits.hpp +210 -0
  91. data/ext/boost/container/detail/utilities.hpp +1141 -0
  92. data/ext/boost/container/detail/value_init.hpp +45 -0
  93. data/ext/boost/container/detail/variadic_templates_tools.hpp +153 -0
  94. data/ext/boost/container/detail/version_type.hpp +92 -0
  95. data/ext/boost/container/detail/workaround.hpp +44 -0
  96. data/ext/boost/container/flat_map.hpp +1674 -0
  97. data/ext/boost/container/flat_set.hpp +1408 -0
  98. data/ext/boost/container/list.hpp +1475 -0
  99. data/ext/boost/container/map.hpp +1508 -0
  100. data/ext/boost/container/scoped_allocator.hpp +1503 -0
  101. data/ext/boost/container/scoped_allocator_fwd.hpp +83 -0
  102. data/ext/boost/container/set.hpp +1280 -0
  103. data/ext/boost/container/slist.hpp +1706 -0
  104. data/ext/boost/container/stable_vector.hpp +1869 -0
  105. data/ext/boost/container/static_vector.hpp +1053 -0
  106. data/ext/boost/container/string.hpp +2856 -0
  107. data/ext/boost/container/throw_exception.hpp +110 -0
  108. data/ext/boost/container/vector.hpp +2671 -0
  109. data/ext/boost/detail/is_xxx.hpp +61 -0
  110. data/ext/boost/intrusive/any_hook.hpp +344 -0
  111. data/ext/boost/intrusive/avl_set.hpp +2528 -0
  112. data/ext/boost/intrusive/avl_set_hook.hpp +297 -0
  113. data/ext/boost/intrusive/avltree.hpp +1786 -0
  114. data/ext/boost/intrusive/avltree_algorithms.hpp +968 -0
  115. data/ext/boost/intrusive/bs_set_hook.hpp +296 -0
  116. data/ext/boost/intrusive/circular_list_algorithms.hpp +413 -0
  117. data/ext/boost/intrusive/circular_slist_algorithms.hpp +404 -0
  118. data/ext/boost/intrusive/derivation_value_traits.hpp +70 -0
  119. data/ext/boost/intrusive/detail/any_node_and_algorithms.hpp +297 -0
  120. data/ext/boost/intrusive/detail/assert.hpp +41 -0
  121. data/ext/boost/intrusive/detail/avltree_node.hpp +197 -0
  122. data/ext/boost/intrusive/detail/clear_on_destructor_base.hpp +36 -0
  123. data/ext/boost/intrusive/detail/common_slist_algorithms.hpp +102 -0
  124. data/ext/boost/intrusive/detail/config_begin.hpp +52 -0
  125. data/ext/boost/intrusive/detail/config_end.hpp +15 -0
  126. data/ext/boost/intrusive/detail/ebo_functor_holder.hpp +95 -0
  127. data/ext/boost/intrusive/detail/function_detector.hpp +88 -0
  128. data/ext/boost/intrusive/detail/generic_hook.hpp +209 -0
  129. data/ext/boost/intrusive/detail/has_member_function_callable_with.hpp +357 -0
  130. data/ext/boost/intrusive/detail/hashtable_node.hpp +249 -0
  131. data/ext/boost/intrusive/detail/is_stateful_value_traits.hpp +77 -0
  132. data/ext/boost/intrusive/detail/list_node.hpp +196 -0
  133. data/ext/boost/intrusive/detail/memory_util.hpp +288 -0
  134. data/ext/boost/intrusive/detail/mpl.hpp +383 -0
  135. data/ext/boost/intrusive/detail/parent_from_member.hpp +97 -0
  136. data/ext/boost/intrusive/detail/preprocessor.hpp +52 -0
  137. data/ext/boost/intrusive/detail/rbtree_node.hpp +201 -0
  138. data/ext/boost/intrusive/detail/slist_node.hpp +166 -0
  139. data/ext/boost/intrusive/detail/transform_iterator.hpp +173 -0
  140. data/ext/boost/intrusive/detail/tree_algorithms.hpp +1742 -0
  141. data/ext/boost/intrusive/detail/tree_node.hpp +199 -0
  142. data/ext/boost/intrusive/detail/utilities.hpp +858 -0
  143. data/ext/boost/intrusive/detail/workaround.hpp +22 -0
  144. data/ext/boost/intrusive/hashtable.hpp +3110 -0
  145. data/ext/boost/intrusive/intrusive_fwd.hpp +542 -0
  146. data/ext/boost/intrusive/linear_slist_algorithms.hpp +327 -0
  147. data/ext/boost/intrusive/link_mode.hpp +46 -0
  148. data/ext/boost/intrusive/list.hpp +1525 -0
  149. data/ext/boost/intrusive/list_hook.hpp +290 -0
  150. data/ext/boost/intrusive/member_value_traits.hpp +70 -0
  151. data/ext/boost/intrusive/options.hpp +810 -0
  152. data/ext/boost/intrusive/parent_from_member.hpp +42 -0
  153. data/ext/boost/intrusive/pointer_plus_bits.hpp +86 -0
  154. data/ext/boost/intrusive/pointer_traits.hpp +265 -0
  155. data/ext/boost/intrusive/priority_compare.hpp +39 -0
  156. data/ext/boost/intrusive/rbtree.hpp +1785 -0
  157. data/ext/boost/intrusive/rbtree_algorithms.hpp +934 -0
  158. data/ext/boost/intrusive/set.hpp +2554 -0
  159. data/ext/boost/intrusive/set_hook.hpp +300 -0
  160. data/ext/boost/intrusive/sg_set.hpp +2601 -0
  161. data/ext/boost/intrusive/sgtree.hpp +2009 -0
  162. data/ext/boost/intrusive/sgtree_algorithms.hpp +807 -0
  163. data/ext/boost/intrusive/slist.hpp +2219 -0
  164. data/ext/boost/intrusive/slist_hook.hpp +294 -0
  165. data/ext/boost/intrusive/splay_set.hpp +2575 -0
  166. data/ext/boost/intrusive/splay_set_hook.hpp +292 -0
  167. data/ext/boost/intrusive/splaytree.hpp +1784 -0
  168. data/ext/boost/intrusive/splaytree_algorithms.hpp +1008 -0
  169. data/ext/boost/intrusive/treap.hpp +1882 -0
  170. data/ext/boost/intrusive/treap_algorithms.hpp +919 -0
  171. data/ext/boost/intrusive/treap_set.hpp +2751 -0
  172. data/ext/boost/intrusive/trivial_value_traits.hpp +46 -0
  173. data/ext/boost/intrusive/unordered_set.hpp +2115 -0
  174. data/ext/boost/intrusive/unordered_set_hook.hpp +434 -0
  175. data/ext/boost/intrusive_ptr.hpp +18 -0
  176. data/ext/boost/math/common_factor_ct.hpp +180 -0
  177. data/ext/boost/math_fwd.hpp +108 -0
  178. data/ext/boost/move/detail/move_helpers.hpp +175 -0
  179. data/ext/boost/parameter.hpp +21 -0
  180. data/ext/boost/parameter/aux_/arg_list.hpp +459 -0
  181. data/ext/boost/parameter/aux_/cast.hpp +143 -0
  182. data/ext/boost/parameter/aux_/default.hpp +69 -0
  183. data/ext/boost/parameter/aux_/is_maybe.hpp +26 -0
  184. data/ext/boost/parameter/aux_/maybe.hpp +120 -0
  185. data/ext/boost/parameter/aux_/overloads.hpp +88 -0
  186. data/ext/boost/parameter/aux_/parameter_requirements.hpp +25 -0
  187. data/ext/boost/parameter/aux_/parenthesized_type.hpp +119 -0
  188. data/ext/boost/parameter/aux_/preprocessor/flatten.hpp +115 -0
  189. data/ext/boost/parameter/aux_/preprocessor/for_each.hpp +103 -0
  190. data/ext/boost/parameter/aux_/python/invoker.hpp +132 -0
  191. data/ext/boost/parameter/aux_/python/invoker_iterate.hpp +93 -0
  192. data/ext/boost/parameter/aux_/result_of0.hpp +36 -0
  193. data/ext/boost/parameter/aux_/set.hpp +67 -0
  194. data/ext/boost/parameter/aux_/tag.hpp +38 -0
  195. data/ext/boost/parameter/aux_/tagged_argument.hpp +188 -0
  196. data/ext/boost/parameter/aux_/template_keyword.hpp +47 -0
  197. data/ext/boost/parameter/aux_/unwrap_cv_reference.hpp +97 -0
  198. data/ext/boost/parameter/aux_/void.hpp +29 -0
  199. data/ext/boost/parameter/aux_/yesno.hpp +26 -0
  200. data/ext/boost/parameter/binding.hpp +106 -0
  201. data/ext/boost/parameter/config.hpp +14 -0
  202. data/ext/boost/parameter/keyword.hpp +152 -0
  203. data/ext/boost/parameter/macros.hpp +99 -0
  204. data/ext/boost/parameter/match.hpp +55 -0
  205. data/ext/boost/parameter/name.hpp +156 -0
  206. data/ext/boost/parameter/parameters.hpp +931 -0
  207. data/ext/boost/parameter/preprocessor.hpp +1178 -0
  208. data/ext/boost/parameter/python.hpp +735 -0
  209. data/ext/boost/parameter/value_type.hpp +108 -0
  210. data/ext/boost/pool/detail/for.m4 +107 -0
  211. data/ext/boost/pool/detail/guard.hpp +69 -0
  212. data/ext/boost/pool/detail/mutex.hpp +42 -0
  213. data/ext/boost/pool/detail/pool_construct.bat +24 -0
  214. data/ext/boost/pool/detail/pool_construct.ipp +852 -0
  215. data/ext/boost/pool/detail/pool_construct.m4 +84 -0
  216. data/ext/boost/pool/detail/pool_construct.sh +12 -0
  217. data/ext/boost/pool/detail/pool_construct_simple.bat +25 -0
  218. data/ext/boost/pool/detail/pool_construct_simple.ipp +43 -0
  219. data/ext/boost/pool/detail/pool_construct_simple.m4 +72 -0
  220. data/ext/boost/pool/detail/pool_construct_simple.sh +12 -0
  221. data/ext/boost/pool/object_pool.hpp +287 -0
  222. data/ext/boost/pool/pool.hpp +1024 -0
  223. data/ext/boost/pool/pool_alloc.hpp +488 -0
  224. data/ext/boost/pool/poolfwd.hpp +82 -0
  225. data/ext/boost/pool/simple_segregated_storage.hpp +377 -0
  226. data/ext/boost/pool/singleton_pool.hpp +251 -0
  227. data/ext/boost/preprocessor/arithmetic.hpp +25 -0
  228. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  229. data/ext/boost/preprocessor/arithmetic/div.hpp +39 -0
  230. data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
  231. data/ext/boost/preprocessor/arithmetic/mul.hpp +53 -0
  232. data/ext/boost/preprocessor/array.hpp +32 -0
  233. data/ext/boost/preprocessor/array/enum.hpp +33 -0
  234. data/ext/boost/preprocessor/array/insert.hpp +55 -0
  235. data/ext/boost/preprocessor/array/pop_back.hpp +37 -0
  236. data/ext/boost/preprocessor/array/pop_front.hpp +38 -0
  237. data/ext/boost/preprocessor/array/push_back.hpp +33 -0
  238. data/ext/boost/preprocessor/array/push_front.hpp +33 -0
  239. data/ext/boost/preprocessor/array/remove.hpp +54 -0
  240. data/ext/boost/preprocessor/array/replace.hpp +49 -0
  241. data/ext/boost/preprocessor/array/reverse.hpp +29 -0
  242. data/ext/boost/preprocessor/array/to_list.hpp +33 -0
  243. data/ext/boost/preprocessor/array/to_seq.hpp +33 -0
  244. data/ext/boost/preprocessor/array/to_tuple.hpp +22 -0
  245. data/ext/boost/preprocessor/assert_msg.hpp +17 -0
  246. data/ext/boost/preprocessor/comma.hpp +17 -0
  247. data/ext/boost/preprocessor/comparison.hpp +24 -0
  248. data/ext/boost/preprocessor/comparison/equal.hpp +34 -0
  249. data/ext/boost/preprocessor/comparison/greater.hpp +38 -0
  250. data/ext/boost/preprocessor/comparison/greater_equal.hpp +38 -0
  251. data/ext/boost/preprocessor/comparison/less.hpp +46 -0
  252. data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
  253. data/ext/boost/preprocessor/comparison/not_equal.hpp +814 -0
  254. data/ext/boost/preprocessor/config/limits.hpp +30 -0
  255. data/ext/boost/preprocessor/control.hpp +22 -0
  256. data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
  257. data/ext/boost/preprocessor/control/detail/dmc/while.hpp +536 -0
  258. data/ext/boost/preprocessor/control/detail/edg/while.hpp +534 -0
  259. data/ext/boost/preprocessor/control/detail/msvc/while.hpp +277 -0
  260. data/ext/boost/preprocessor/control/expr_if.hpp +30 -0
  261. data/ext/boost/preprocessor/debug.hpp +18 -0
  262. data/ext/boost/preprocessor/debug/assert.hpp +44 -0
  263. data/ext/boost/preprocessor/debug/line.hpp +35 -0
  264. data/ext/boost/preprocessor/detail/dmc/auto_rec.hpp +286 -0
  265. data/ext/boost/preprocessor/detail/is_nullary.hpp +30 -0
  266. data/ext/boost/preprocessor/detail/is_unary.hpp +30 -0
  267. data/ext/boost/preprocessor/detail/null.hpp +17 -0
  268. data/ext/boost/preprocessor/detail/split.hpp +35 -0
  269. data/ext/boost/preprocessor/enum_params_with_defaults.hpp +17 -0
  270. data/ext/boost/preprocessor/enum_shifted.hpp +17 -0
  271. data/ext/boost/preprocessor/expand.hpp +17 -0
  272. data/ext/boost/preprocessor/expr_if.hpp +17 -0
  273. data/ext/boost/preprocessor/facilities.hpp +23 -0
  274. data/ext/boost/preprocessor/facilities/apply.hpp +34 -0
  275. data/ext/boost/preprocessor/facilities/expand.hpp +28 -0
  276. data/ext/boost/preprocessor/facilities/is_1.hpp +23 -0
  277. data/ext/boost/preprocessor/facilities/is_empty.hpp +43 -0
  278. data/ext/boost/preprocessor/facilities/is_empty_or_1.hpp +30 -0
  279. data/ext/boost/preprocessor/for.hpp +17 -0
  280. data/ext/boost/preprocessor/if.hpp +17 -0
  281. data/ext/boost/preprocessor/iteration.hpp +19 -0
  282. data/ext/boost/preprocessor/iteration/detail/bounds/lower3.hpp +99 -0
  283. data/ext/boost/preprocessor/iteration/detail/bounds/lower4.hpp +99 -0
  284. data/ext/boost/preprocessor/iteration/detail/bounds/lower5.hpp +99 -0
  285. data/ext/boost/preprocessor/iteration/detail/bounds/upper3.hpp +99 -0
  286. data/ext/boost/preprocessor/iteration/detail/bounds/upper4.hpp +99 -0
  287. data/ext/boost/preprocessor/iteration/detail/bounds/upper5.hpp +99 -0
  288. data/ext/boost/preprocessor/iteration/detail/finish.hpp +99 -0
  289. data/ext/boost/preprocessor/iteration/detail/iter/forward3.hpp +1338 -0
  290. data/ext/boost/preprocessor/iteration/detail/iter/forward4.hpp +1338 -0
  291. data/ext/boost/preprocessor/iteration/detail/iter/forward5.hpp +1338 -0
  292. data/ext/boost/preprocessor/iteration/detail/iter/reverse2.hpp +1296 -0
  293. data/ext/boost/preprocessor/iteration/detail/iter/reverse3.hpp +1296 -0
  294. data/ext/boost/preprocessor/iteration/detail/iter/reverse4.hpp +1296 -0
  295. data/ext/boost/preprocessor/iteration/detail/iter/reverse5.hpp +1296 -0
  296. data/ext/boost/preprocessor/iteration/detail/local.hpp +812 -0
  297. data/ext/boost/preprocessor/iteration/detail/rlocal.hpp +782 -0
  298. data/ext/boost/preprocessor/iteration/detail/self.hpp +21 -0
  299. data/ext/boost/preprocessor/iteration/detail/start.hpp +99 -0
  300. data/ext/boost/preprocessor/iteration/local.hpp +26 -0
  301. data/ext/boost/preprocessor/iteration/self.hpp +19 -0
  302. data/ext/boost/preprocessor/library.hpp +36 -0
  303. data/ext/boost/preprocessor/limits.hpp +17 -0
  304. data/ext/boost/preprocessor/list.hpp +37 -0
  305. data/ext/boost/preprocessor/list/at.hpp +39 -0
  306. data/ext/boost/preprocessor/list/cat.hpp +42 -0
  307. data/ext/boost/preprocessor/list/detail/dmc/fold_left.hpp +279 -0
  308. data/ext/boost/preprocessor/list/detail/edg/fold_left.hpp +536 -0
  309. data/ext/boost/preprocessor/list/detail/edg/fold_right.hpp +794 -0
  310. data/ext/boost/preprocessor/list/enum.hpp +41 -0
  311. data/ext/boost/preprocessor/list/filter.hpp +54 -0
  312. data/ext/boost/preprocessor/list/first_n.hpp +58 -0
  313. data/ext/boost/preprocessor/list/for_each.hpp +49 -0
  314. data/ext/boost/preprocessor/list/for_each_product.hpp +141 -0
  315. data/ext/boost/preprocessor/list/rest_n.hpp +55 -0
  316. data/ext/boost/preprocessor/list/size.hpp +58 -0
  317. data/ext/boost/preprocessor/list/to_array.hpp +123 -0
  318. data/ext/boost/preprocessor/list/to_seq.hpp +32 -0
  319. data/ext/boost/preprocessor/list/to_tuple.hpp +38 -0
  320. data/ext/boost/preprocessor/logical.hpp +29 -0
  321. data/ext/boost/preprocessor/logical/bitnor.hpp +38 -0
  322. data/ext/boost/preprocessor/logical/bitor.hpp +38 -0
  323. data/ext/boost/preprocessor/logical/bitxor.hpp +38 -0
  324. data/ext/boost/preprocessor/logical/nor.hpp +30 -0
  325. data/ext/boost/preprocessor/logical/not.hpp +30 -0
  326. data/ext/boost/preprocessor/logical/or.hpp +30 -0
  327. data/ext/boost/preprocessor/logical/xor.hpp +30 -0
  328. data/ext/boost/preprocessor/max.hpp +17 -0
  329. data/ext/boost/preprocessor/min.hpp +17 -0
  330. data/ext/boost/preprocessor/punctuation.hpp +20 -0
  331. data/ext/boost/preprocessor/punctuation/paren_if.hpp +38 -0
  332. data/ext/boost/preprocessor/repeat_3rd.hpp +17 -0
  333. data/ext/boost/preprocessor/repeat_from_to.hpp +17 -0
  334. data/ext/boost/preprocessor/repeat_from_to_2nd.hpp +17 -0
  335. data/ext/boost/preprocessor/repeat_from_to_3rd.hpp +17 -0
  336. data/ext/boost/preprocessor/repetition.hpp +32 -0
  337. data/ext/boost/preprocessor/repetition/deduce_r.hpp +22 -0
  338. data/ext/boost/preprocessor/repetition/deduce_z.hpp +22 -0
  339. data/ext/boost/preprocessor/repetition/detail/dmc/for.hpp +536 -0
  340. data/ext/boost/preprocessor/repetition/detail/edg/for.hpp +534 -0
  341. data/ext/boost/preprocessor/repetition/detail/msvc/for.hpp +277 -0
  342. data/ext/boost/preprocessor/repetition/enum_params_with_defaults.hpp +24 -0
  343. data/ext/boost/preprocessor/repetition/enum_shifted.hpp +68 -0
  344. data/ext/boost/preprocessor/repetition/enum_shifted_binary_params.hpp +51 -0
  345. data/ext/boost/preprocessor/repetition/enum_trailing.hpp +63 -0
  346. data/ext/boost/preprocessor/repetition/enum_trailing_binary_params.hpp +53 -0
  347. data/ext/boost/preprocessor/selection.hpp +18 -0
  348. data/ext/boost/preprocessor/selection/max.hpp +39 -0
  349. data/ext/boost/preprocessor/selection/min.hpp +39 -0
  350. data/ext/boost/preprocessor/seq.hpp +43 -0
  351. data/ext/boost/preprocessor/seq/cat.hpp +49 -0
  352. data/ext/boost/preprocessor/seq/detail/binary_transform.hpp +40 -0
  353. data/ext/boost/preprocessor/seq/detail/split.hpp +284 -0
  354. data/ext/boost/preprocessor/seq/filter.hpp +54 -0
  355. data/ext/boost/preprocessor/seq/first_n.hpp +30 -0
  356. data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
  357. data/ext/boost/preprocessor/seq/fold_right.hpp +288 -0
  358. data/ext/boost/preprocessor/seq/for_each.hpp +60 -0
  359. data/ext/boost/preprocessor/seq/for_each_product.hpp +126 -0
  360. data/ext/boost/preprocessor/seq/insert.hpp +28 -0
  361. data/ext/boost/preprocessor/seq/pop_back.hpp +29 -0
  362. data/ext/boost/preprocessor/seq/pop_front.hpp +27 -0
  363. data/ext/boost/preprocessor/seq/push_back.hpp +19 -0
  364. data/ext/boost/preprocessor/seq/push_front.hpp +19 -0
  365. data/ext/boost/preprocessor/seq/remove.hpp +29 -0
  366. data/ext/boost/preprocessor/seq/replace.hpp +29 -0
  367. data/ext/boost/preprocessor/seq/rest_n.hpp +30 -0
  368. data/ext/boost/preprocessor/seq/reverse.hpp +39 -0
  369. data/ext/boost/preprocessor/seq/subseq.hpp +28 -0
  370. data/ext/boost/preprocessor/seq/to_array.hpp +28 -0
  371. data/ext/boost/preprocessor/seq/to_list.hpp +29 -0
  372. data/ext/boost/preprocessor/seq/to_tuple.hpp +27 -0
  373. data/ext/boost/preprocessor/seq/transform.hpp +48 -0
  374. data/ext/boost/preprocessor/slot.hpp +17 -0
  375. data/ext/boost/preprocessor/slot/counter.hpp +25 -0
  376. data/ext/boost/preprocessor/slot/detail/counter.hpp +269 -0
  377. data/ext/boost/preprocessor/slot/detail/slot1.hpp +267 -0
  378. data/ext/boost/preprocessor/slot/detail/slot2.hpp +267 -0
  379. data/ext/boost/preprocessor/slot/detail/slot3.hpp +267 -0
  380. data/ext/boost/preprocessor/slot/detail/slot4.hpp +267 -0
  381. data/ext/boost/preprocessor/slot/detail/slot5.hpp +267 -0
  382. data/ext/boost/preprocessor/tuple.hpp +28 -0
  383. data/ext/boost/preprocessor/tuple/enum.hpp +22 -0
  384. data/ext/boost/preprocessor/tuple/reverse.hpp +114 -0
  385. data/ext/boost/preprocessor/tuple/size.hpp +28 -0
  386. data/ext/boost/preprocessor/tuple/to_array.hpp +37 -0
  387. data/ext/boost/preprocessor/tuple/to_seq.hpp +114 -0
  388. data/ext/boost/preprocessor/variadic.hpp +23 -0
  389. data/ext/boost/preprocessor/variadic/to_array.hpp +32 -0
  390. data/ext/boost/preprocessor/variadic/to_list.hpp +25 -0
  391. data/ext/boost/preprocessor/variadic/to_seq.hpp +25 -0
  392. data/ext/boost/preprocessor/variadic/to_tuple.hpp +24 -0
  393. data/ext/boost/preprocessor/while.hpp +17 -0
  394. data/ext/boost/preprocessor/wstringize.hpp +29 -0
  395. data/ext/boost/smart_ptr/intrusive_ptr.hpp +324 -0
  396. data/ext/common/AccountsDatabase.h +3 -4
  397. data/ext/common/AgentsStarter.cpp +12 -15
  398. data/ext/common/AgentsStarter.h +54 -120
  399. data/ext/common/ApplicationPool2/AppTypes.cpp +12 -5
  400. data/ext/common/ApplicationPool2/AppTypes.h +21 -14
  401. data/ext/common/ApplicationPool2/Common.h +36 -19
  402. data/ext/common/ApplicationPool2/DirectSpawner.h +15 -16
  403. data/ext/common/ApplicationPool2/DummySpawner.h +9 -8
  404. data/ext/common/ApplicationPool2/ErrorRenderer.h +1 -1
  405. data/ext/common/ApplicationPool2/Group.h +304 -171
  406. data/ext/common/ApplicationPool2/Implementation.cpp +234 -125
  407. data/ext/common/ApplicationPool2/Options.h +50 -62
  408. data/ext/common/ApplicationPool2/Pool.h +285 -189
  409. data/ext/common/ApplicationPool2/Process.h +126 -115
  410. data/ext/common/ApplicationPool2/Session.h +70 -30
  411. data/ext/common/ApplicationPool2/SmartSpawner.h +19 -18
  412. data/ext/common/ApplicationPool2/Socket.h +57 -43
  413. data/ext/common/ApplicationPool2/SpawnObject.h +83 -0
  414. data/ext/common/ApplicationPool2/Spawner.h +59 -38
  415. data/ext/common/ApplicationPool2/SpawnerFactory.h +8 -14
  416. data/ext/common/ApplicationPool2/SuperGroup.h +69 -40
  417. data/ext/common/BackgroundEventLoop.cpp +48 -1
  418. data/ext/common/BackgroundEventLoop.h +3 -1
  419. data/ext/common/Constants.h +30 -8
  420. data/ext/common/DataStructures/HashedStaticString.h +103 -0
  421. data/ext/common/DataStructures/LString.h +396 -0
  422. data/ext/common/DataStructures/StringKeyTable.h +588 -0
  423. data/ext/common/EventedMessageServer.h +1 -0
  424. data/ext/common/FileDescriptor.h +5 -0
  425. data/ext/common/InstanceDirectory.h +240 -0
  426. data/ext/common/Logging.cpp +38 -13
  427. data/ext/common/Logging.h +53 -22
  428. data/ext/common/MemoryKit/mbuf.cpp +413 -0
  429. data/ext/common/MemoryKit/mbuf.h +266 -0
  430. data/ext/common/MemoryKit/palloc.cpp +337 -0
  431. data/ext/common/MemoryKit/palloc.h +121 -0
  432. data/ext/common/ResourceLocator.h +62 -6
  433. data/ext/common/SafeLibev.h +4 -4
  434. data/ext/common/ServerKit/AcceptLoadBalancer.h +275 -0
  435. data/ext/common/ServerKit/Channel.h +747 -0
  436. data/ext/common/ServerKit/Client.h +166 -0
  437. data/ext/common/ServerKit/ClientRef.h +130 -0
  438. data/ext/common/ServerKit/Context.h +129 -0
  439. data/ext/common/ServerKit/Errors.h +103 -0
  440. data/ext/common/ServerKit/FdSinkChannel.h +206 -0
  441. data/ext/common/ServerKit/FdSourceChannel.h +230 -0
  442. data/ext/common/ServerKit/FileBufferedChannel.h +1399 -0
  443. data/ext/common/ServerKit/FileBufferedFdSinkChannel.h +228 -0
  444. data/ext/common/ServerKit/HeaderTable.h +472 -0
  445. data/ext/common/ServerKit/Hooks.h +79 -0
  446. data/ext/common/ServerKit/HttpChunkedBodyParser.h +289 -0
  447. data/ext/common/ServerKit/HttpChunkedBodyParserState.h +70 -0
  448. data/ext/common/ServerKit/HttpClient.h +94 -0
  449. data/ext/common/ServerKit/HttpHeaderParser.h +477 -0
  450. data/ext/common/ServerKit/HttpHeaderParserState.h +60 -0
  451. data/ext/common/ServerKit/HttpRequest.h +276 -0
  452. data/ext/common/ServerKit/HttpRequestRef.h +130 -0
  453. data/ext/common/ServerKit/HttpServer.h +1152 -0
  454. data/ext/common/ServerKit/Implementation.cpp +47 -0
  455. data/ext/common/ServerKit/Server.h +1040 -0
  456. data/ext/common/ServerKit/http_parser.cpp +2259 -0
  457. data/ext/common/ServerKit/http_parser.h +330 -0
  458. data/ext/common/StaticString.h +8 -0
  459. data/ext/common/Utils.cpp +14 -12
  460. data/ext/common/Utils.h +9 -103
  461. data/ext/common/Utils/BufferedIO.h +1 -0
  462. data/ext/common/Utils/CachedFileStat.hpp +1 -7
  463. data/ext/common/Utils/DateParsing.h +379 -0
  464. data/ext/common/Utils/FileChangeChecker.h +3 -9
  465. data/ext/common/Utils/Hasher.cpp +52 -0
  466. data/ext/common/Utils/Hasher.h +58 -0
  467. data/ext/common/Utils/IOUtils.cpp +62 -62
  468. data/ext/common/Utils/JsonUtils.h +21 -0
  469. data/ext/common/Utils/OptionParsing.h +75 -0
  470. data/ext/common/Utils/StrIntUtils.cpp +112 -19
  471. data/ext/common/Utils/StrIntUtils.h +52 -12
  472. data/ext/common/Utils/StrIntUtilsNoStrictAliasing.cpp +174 -0
  473. data/ext/common/Utils/VariantMap.h +18 -7
  474. data/ext/common/Utils/modp_b64.cpp +290 -0
  475. data/ext/common/Utils/modp_b64.h +241 -0
  476. data/ext/common/Utils/modp_b64_data.h +479 -0
  477. data/ext/common/Utils/sysqueue.h +811 -0
  478. data/ext/common/agents/Base.cpp +71 -98
  479. data/ext/common/agents/Base.h +11 -3
  480. data/ext/common/agents/HelperAgent/AdminServer.h +690 -0
  481. data/ext/common/agents/HelperAgent/Main.cpp +899 -487
  482. data/ext/common/agents/HelperAgent/OptionParser.h +311 -0
  483. data/ext/common/agents/HelperAgent/RequestHandler.h +315 -2548
  484. data/ext/common/agents/HelperAgent/RequestHandler/AppResponse.h +225 -0
  485. data/ext/common/agents/HelperAgent/RequestHandler/BufferBody.cpp +93 -0
  486. data/ext/common/agents/HelperAgent/RequestHandler/CheckoutSession.cpp +346 -0
  487. data/ext/common/agents/HelperAgent/RequestHandler/Client.h +54 -0
  488. data/ext/common/agents/HelperAgent/RequestHandler/ForwardResponse.cpp +846 -0
  489. data/ext/common/agents/HelperAgent/RequestHandler/Hooks.cpp +231 -0
  490. data/ext/common/agents/HelperAgent/RequestHandler/InitRequest.cpp +434 -0
  491. data/ext/common/agents/HelperAgent/RequestHandler/Request.h +149 -0
  492. data/ext/common/agents/HelperAgent/RequestHandler/SendRequest.cpp +887 -0
  493. data/ext/common/agents/HelperAgent/RequestHandler/TurboCaching.h +293 -0
  494. data/ext/common/agents/HelperAgent/RequestHandler/Utils.cpp +301 -0
  495. data/ext/common/agents/HelperAgent/ResponseCache.h +624 -0
  496. data/ext/common/agents/HelperAgent/SystemMetricsTool.cpp +21 -23
  497. data/ext/common/agents/LoggingAgent/AdminServer.h +369 -0
  498. data/ext/common/agents/LoggingAgent/LoggingServer.h +1 -0
  499. data/ext/common/agents/LoggingAgent/Main.cpp +422 -215
  500. data/ext/common/agents/LoggingAgent/OptionParser.h +167 -0
  501. data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
  502. data/ext/common/agents/Main.cpp +107 -0
  503. data/ext/common/agents/SpawnPreparer/Main.cpp +207 -0
  504. data/ext/common/agents/TempDirToucher/Main.cpp +429 -0
  505. data/ext/common/agents/Watchdog/AdminServer.h +390 -0
  506. data/ext/common/agents/Watchdog/AgentWatcher.cpp +7 -5
  507. data/ext/common/agents/Watchdog/HelperAgentWatcher.cpp +18 -39
  508. data/ext/common/agents/Watchdog/InstanceDirToucher.cpp +116 -0
  509. data/ext/common/agents/Watchdog/LoggingAgentWatcher.cpp +13 -17
  510. data/ext/common/agents/Watchdog/Main.cpp +743 -202
  511. data/ext/libeio/eio.c +17 -0
  512. data/ext/libeio/eio.h +2 -0
  513. data/ext/nginx/CacheLocationConfig.c +177 -198
  514. data/ext/nginx/CacheLocationConfig.c.erb +35 -22
  515. data/ext/nginx/Configuration.c +402 -236
  516. data/ext/nginx/Configuration.h +12 -5
  517. data/ext/nginx/ConfigurationCommands.c +35 -15
  518. data/ext/nginx/ConfigurationCommands.c.erb +4 -4
  519. data/ext/nginx/ConfigurationFields.h +9 -5
  520. data/ext/nginx/ConfigurationFields.h.erb +3 -1
  521. data/ext/nginx/ContentHandler.c +393 -362
  522. data/ext/nginx/CreateLocationConfig.c +8 -4
  523. data/ext/nginx/CreateLocationConfig.c.erb +8 -3
  524. data/ext/nginx/MergeLocationConfig.c +36 -6
  525. data/ext/nginx/MergeLocationConfig.c.erb +42 -1
  526. data/ext/nginx/ngx_http_passenger_module.c +28 -15
  527. data/ext/oxt/detail/backtrace_disabled.hpp +2 -1
  528. data/ext/oxt/detail/backtrace_enabled.hpp +15 -2
  529. data/ext/oxt/implementation.cpp +92 -20
  530. data/ext/oxt/thread.hpp +5 -0
  531. data/ext/ruby/extconf.rb +3 -6
  532. data/ext/ruby/passenger_native_support.c +13 -40
  533. data/helper-scripts/download_binaries/extconf.rb +4 -4
  534. data/helper-scripts/meteor-loader.rb +12 -112
  535. data/helper-scripts/node-loader.js +3 -91
  536. data/helper-scripts/rack-loader.rb +13 -14
  537. data/helper-scripts/rack-preloader.rb +16 -17
  538. data/helper-scripts/wsgi-loader.py +11 -7
  539. data/lib/phusion_passenger.rb +100 -79
  540. data/lib/phusion_passenger/abstract_installer.rb +28 -3
  541. data/lib/phusion_passenger/admin_tools.rb +3 -3
  542. data/lib/phusion_passenger/admin_tools/instance.rb +207 -0
  543. data/lib/phusion_passenger/admin_tools/instance_registry.rb +98 -0
  544. data/lib/phusion_passenger/apache2/config_options.rb +72 -22
  545. data/lib/phusion_passenger/common_library.rb +79 -14
  546. data/lib/phusion_passenger/config/about_command.rb +17 -23
  547. data/lib/phusion_passenger/config/admin_command_command.rb +175 -0
  548. data/lib/phusion_passenger/config/agent_compiler.rb +170 -0
  549. data/lib/phusion_passenger/config/command.rb +1 -4
  550. data/lib/phusion_passenger/config/compile_agent_command.rb +102 -0
  551. data/lib/phusion_passenger/config/compile_nginx_engine_command.rb +112 -0
  552. data/lib/phusion_passenger/config/detach_process_command.rb +32 -10
  553. data/lib/phusion_passenger/config/download_agent_command.rb +285 -0
  554. data/lib/phusion_passenger/config/download_nginx_engine_command.rb +281 -0
  555. data/lib/phusion_passenger/config/install_agent_command.rb +174 -0
  556. data/lib/phusion_passenger/config/install_standalone_runtime_command.rb +231 -0
  557. data/lib/phusion_passenger/config/installation_utils.rb +241 -0
  558. data/lib/phusion_passenger/config/list_instances_command.rb +13 -25
  559. data/lib/phusion_passenger/config/main.rb +43 -14
  560. data/lib/phusion_passenger/config/nginx_engine_compiler.rb +337 -0
  561. data/lib/phusion_passenger/config/reopen_logs_command.rb +110 -0
  562. data/lib/phusion_passenger/config/restart_app_command.rb +61 -14
  563. data/lib/phusion_passenger/config/system_metrics_command.rb +2 -1
  564. data/lib/phusion_passenger/config/utils.rb +64 -39
  565. data/lib/phusion_passenger/config/validate_install_command.rb +2 -2
  566. data/lib/phusion_passenger/constants.rb +27 -6
  567. data/lib/phusion_passenger/debug_logging.rb +32 -15
  568. data/lib/phusion_passenger/loader_shared_helpers.rb +2 -5
  569. data/lib/phusion_passenger/message_client.rb +21 -22
  570. data/lib/phusion_passenger/native_support.rb +26 -31
  571. data/lib/phusion_passenger/nginx/config_options.rb +32 -19
  572. data/lib/phusion_passenger/packaging.rb +7 -3
  573. data/lib/phusion_passenger/platform_info/cxx_portability.rb +1 -2
  574. data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +3 -4
  575. data/lib/phusion_passenger/platform_info/operating_system.rb +6 -6
  576. data/lib/phusion_passenger/preloader_shared_helpers.rb +2 -2
  577. data/lib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
  578. data/lib/phusion_passenger/rack/thread_handler_extension.rb +168 -65
  579. data/lib/phusion_passenger/request_handler.rb +47 -82
  580. data/lib/phusion_passenger/request_handler/thread_handler.rb +46 -10
  581. data/lib/phusion_passenger/ruby_core_enhancements.rb +25 -77
  582. data/lib/phusion_passenger/ruby_core_io_enhancements.rb +108 -0
  583. data/lib/phusion_passenger/standalone/app_finder.rb +39 -59
  584. data/lib/phusion_passenger/standalone/command.rb +27 -275
  585. data/lib/phusion_passenger/standalone/command2.rb +292 -0
  586. data/lib/phusion_passenger/standalone/config_utils.rb +87 -0
  587. data/lib/phusion_passenger/standalone/control_utils.rb +88 -0
  588. data/lib/phusion_passenger/standalone/main.rb +69 -71
  589. data/lib/phusion_passenger/standalone/start2_command.rb +799 -0
  590. data/lib/phusion_passenger/standalone/start_command.rb +406 -467
  591. data/lib/phusion_passenger/standalone/start_command/builtin_engine.rb +167 -0
  592. data/lib/phusion_passenger/standalone/start_command/nginx_engine.rb +165 -0
  593. data/lib/phusion_passenger/standalone/status_command.rb +64 -23
  594. data/lib/phusion_passenger/standalone/stop_command.rb +69 -32
  595. data/lib/phusion_passenger/standalone/version_command.rb +1 -5
  596. data/lib/phusion_passenger/utils.rb +0 -4
  597. data/lib/phusion_passenger/utils/json.rb +70 -4
  598. data/lib/phusion_passenger/utils/progress_bar.rb +56 -0
  599. data/lib/phusion_passenger/utils/tee_input.rb +3 -3
  600. data/lib/phusion_passenger/utils/unseekable_socket.rb +30 -0
  601. data/packaging/rpm/nginx_spec/nginx.spec.template +4 -3
  602. data/packaging/rpm/passenger_spec/passenger.spec.template +6 -10
  603. data/packaging/rpm/setup-system +2 -1
  604. data/resources/oss-binaries.phusionpassenger.com.crt +208 -0
  605. data/resources/templates/config/agent_compiler/confirm_enable_optimizations.txt.erb +5 -0
  606. data/resources/templates/config/installation_utils/cannot_create_user_support_binaries_dir.txt.erb +15 -0
  607. data/resources/templates/config/installation_utils/download_tool_missing.txt.erb +7 -0
  608. data/resources/templates/config/installation_utils/passenger_not_installed_as_root.txt.erb +12 -0
  609. data/resources/templates/config/installation_utils/support_binaries_dir_not_writable_despite_running_as_root.txt.erb +13 -0
  610. data/resources/templates/config/installation_utils/unexpected_filesystem_problem.txt.erb +16 -0
  611. data/{packaging/debian/debian_specs/passenger/patches/series → resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb} +0 -0
  612. data/resources/templates/nginx/nginx_module_sources_not_available.txt.erb +2 -2
  613. data/resources/templates/standalone/config.erb +14 -16
  614. data/resources/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +1 -1
  615. data/test/.rspec +1 -0
  616. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +20 -17
  617. data/test/cxx/ApplicationPool2/OptionsTest.cpp +0 -14
  618. data/test/cxx/ApplicationPool2/PoolTest.cpp +113 -90
  619. data/test/cxx/ApplicationPool2/ProcessTest.cpp +18 -27
  620. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +51 -53
  621. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +55 -57
  622. data/test/cxx/BufferedIOTest.cpp +40 -40
  623. data/test/cxx/CxxTestMain.cpp +4 -22
  624. data/test/cxx/DataStructures/LStringTest.cpp +275 -0
  625. data/test/cxx/DataStructures/StringKeyTableTest.cpp +199 -0
  626. data/test/cxx/MemoryKit/MbufTest.cpp +213 -0
  627. data/test/cxx/MessageServerTest.cpp +62 -55
  628. data/test/cxx/RequestHandlerTest.cpp +26 -27
  629. data/test/cxx/ServerKit/ChannelTest.cpp +1467 -0
  630. data/test/cxx/ServerKit/FileBufferedChannelTest.cpp +817 -0
  631. data/test/cxx/ServerKit/HeaderTableTest.cpp +171 -0
  632. data/test/cxx/ServerKit/HttpServerTest.cpp +1503 -0
  633. data/test/cxx/ServerKit/ServerTest.cpp +408 -0
  634. data/test/cxx/TestSupport.cpp +51 -15
  635. data/test/cxx/TestSupport.h +31 -21
  636. data/test/cxx/UnionStationTest.cpp +121 -122
  637. data/test/cxx/UtilsTest.cpp +9 -33
  638. data/test/integration_tests/apache2_tests.rb +65 -27
  639. data/test/integration_tests/downloaded_binaries_tests.rb +30 -6
  640. data/test/integration_tests/native_packaging_spec.rb +32 -17
  641. data/test/integration_tests/nginx_tests.rb +28 -10
  642. data/test/integration_tests/shared/example_webapp_tests.rb +40 -27
  643. data/test/integration_tests/standalone_tests.rb +232 -169
  644. data/test/ruby/debug_logging_spec.rb +44 -40
  645. data/test/ruby/rails3.0/preloader_spec.rb +1 -1
  646. data/test/ruby/rails3.1/preloader_spec.rb +1 -1
  647. data/test/ruby/rails3.2/preloader_spec.rb +1 -1
  648. data/test/ruby/rails4.0/preloader_spec.rb +1 -1
  649. data/test/ruby/rails4.1/preloader_spec.rb +1 -1
  650. data/test/ruby/request_handler_spec.rb +62 -24
  651. data/test/ruby/shared/loader_sharedspec.rb +10 -9
  652. data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +23 -22
  653. data/test/ruby/spec_helper.rb +2 -11
  654. data/test/ruby/standalone/runtime_installer_spec.rb +15 -13
  655. data/test/ruby/union_station_spec.rb +45 -40
  656. data/test/ruby/utils/tee_input_spec.rb +5 -5
  657. data/test/ruby/utils_spec.rb +3 -39
  658. data/test/stub/apache2/httpd.conf.erb +5 -2
  659. data/test/stub/nginx/nginx.conf.erb +3 -1
  660. data/test/support/apache2_controller.rb +25 -25
  661. data/test/support/nginx_controller.rb +14 -14
  662. data/test/support/test_helper.rb +74 -75
  663. metadata +439 -643
  664. metadata.gz.asc +7 -7
  665. data/ext/common/MultiLibeio.cpp +0 -204
  666. data/ext/common/MultiLibeio.h +0 -67
  667. data/ext/common/ServerInstanceDir.h +0 -402
  668. data/ext/common/Utils/Base64.cpp +0 -143
  669. data/ext/common/Utils/Base64.h +0 -83
  670. data/ext/common/Utils/HttpHeaderBufferer.h +0 -184
  671. data/ext/common/Utils/PriorityQueue.h +0 -54
  672. data/ext/common/Utils/StreamBoyerMooreHorspool.h +0 -512
  673. data/ext/common/Utils/fib.c +0 -699
  674. data/ext/common/Utils/fib.h +0 -101
  675. data/ext/common/Utils/fibpriv.h +0 -67
  676. data/ext/common/agents/EnvPrinter.c +0 -16
  677. data/ext/common/agents/HelperAgent/AgentOptions.h +0 -109
  678. data/ext/common/agents/HelperAgent/FileBackedPipe.h +0 -732
  679. data/ext/common/agents/HelperAgent/RequestHandler.cpp +0 -294
  680. data/ext/common/agents/HelperAgent/ScgiRequestParser.h +0 -457
  681. data/ext/common/agents/LoggingAgent/AdminController.h +0 -96
  682. data/ext/common/agents/SpawnPreparer.cpp +0 -206
  683. data/ext/common/agents/TempDirToucher.c +0 -383
  684. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +0 -116
  685. data/helper-scripts/classic-rails-loader.rb +0 -166
  686. data/helper-scripts/classic-rails-preloader.rb +0 -193
  687. data/lib/phusion_passenger/admin_tools/server_instance.rb +0 -339
  688. data/lib/phusion_passenger/classic_rails/cgi_fixed.rb +0 -68
  689. data/lib/phusion_passenger/classic_rails/thread_handler_extension.rb +0 -40
  690. data/lib/phusion_passenger/platform_info/openssl.rb +0 -61
  691. data/lib/phusion_passenger/standalone/config_file.rb +0 -119
  692. data/lib/phusion_passenger/standalone/help_command.rb +0 -57
  693. data/lib/phusion_passenger/standalone/runtime_installer.rb +0 -712
  694. data/lib/phusion_passenger/standalone/runtime_locator.rb +0 -170
  695. data/lib/phusion_passenger/standalone/utils.rb +0 -58
  696. data/lib/phusion_passenger/utils/tmpdir.rb +0 -69
  697. data/packaging/debian/LICENSE.md +0 -19
  698. data/packaging/debian/README.md +0 -320
  699. data/packaging/debian/Vagrantfile +0 -25
  700. data/packaging/debian/build +0 -210
  701. data/packaging/debian/debian_specs/nginx/changelog +0 -1989
  702. data/packaging/debian/debian_specs/nginx/compat.erb +0 -5
  703. data/packaging/debian/debian_specs/nginx/conf/fastcgi.conf +0 -25
  704. data/packaging/debian/debian_specs/nginx/conf/fastcgi_params +0 -24
  705. data/packaging/debian/debian_specs/nginx/conf/koi-utf +0 -109
  706. data/packaging/debian/debian_specs/nginx/conf/koi-win +0 -103
  707. data/packaging/debian/debian_specs/nginx/conf/mime.types +0 -89
  708. data/packaging/debian/debian_specs/nginx/conf/nginx.conf.erb +0 -97
  709. data/packaging/debian/debian_specs/nginx/conf/proxy_params +0 -4
  710. data/packaging/debian/debian_specs/nginx/conf/scgi_params +0 -16
  711. data/packaging/debian/debian_specs/nginx/conf/sites-available/default.erb +0 -93
  712. data/packaging/debian/debian_specs/nginx/conf/snippets/fastcgi-php.conf +0 -13
  713. data/packaging/debian/debian_specs/nginx/conf/snippets/snakeoil.conf +0 -5
  714. data/packaging/debian/debian_specs/nginx/conf/uwsgi_params +0 -16
  715. data/packaging/debian/debian_specs/nginx/conf/win-utf +0 -125
  716. data/packaging/debian/debian_specs/nginx/control.erb +0 -226
  717. data/packaging/debian/debian_specs/nginx/copyright +0 -196
  718. data/packaging/debian/debian_specs/nginx/debian-full.lintian-overrides +0 -1
  719. data/packaging/debian/debian_specs/nginx/gbp.conf +0 -2
  720. data/packaging/debian/debian_specs/nginx/help/docs/fcgiwrap +0 -14
  721. data/packaging/debian/debian_specs/nginx/help/docs/php +0 -119
  722. data/packaging/debian/debian_specs/nginx/help/docs/support-irc +0 -28
  723. data/packaging/debian/debian_specs/nginx/help/docs/upstream +0 -51
  724. data/packaging/debian/debian_specs/nginx/help/examples/drupal +0 -114
  725. data/packaging/debian/debian_specs/nginx/help/examples/http +0 -59
  726. data/packaging/debian/debian_specs/nginx/help/examples/mail +0 -30
  727. data/packaging/debian/debian_specs/nginx/help/examples/mailman +0 -59
  728. data/packaging/debian/debian_specs/nginx/help/examples/nginx.conf +0 -34
  729. data/packaging/debian/debian_specs/nginx/help/examples/nginx_modsite +0 -162
  730. data/packaging/debian/debian_specs/nginx/help/examples/virtual_hosts +0 -155
  731. data/packaging/debian/debian_specs/nginx/help/examples/wordpress +0 -74
  732. data/packaging/debian/debian_specs/nginx/helpers.rb +0 -41
  733. data/packaging/debian/debian_specs/nginx/index-debian.html.in +0 -32
  734. data/packaging/debian/debian_specs/nginx/index-ubuntu.html.in +0 -32
  735. data/packaging/debian/debian_specs/nginx/index.html.erb +0 -10
  736. data/packaging/debian/debian_specs/nginx/modules/README.Modules-versions +0 -65
  737. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/README.markdown +0 -510
  738. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/config +0 -5
  739. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/doc/HttpHeadersMoreModule.wiki +0 -395
  740. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ddebug.h +0 -119
  741. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.c +0 -348
  742. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.h +0 -80
  743. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.c +0 -826
  744. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.h +0 -26
  745. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.c +0 -716
  746. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.h +0 -26
  747. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.c +0 -380
  748. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.h +0 -52
  749. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/util/build.sh +0 -32
  750. data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/valgrind.suppress +0 -215
  751. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ChangeLog +0 -35
  752. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/LICENSE +0 -25
  753. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/README.md +0 -93
  754. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/config +0 -4
  755. data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ngx_http_auth_pam_module.c +0 -462
  756. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/CHANGES +0 -66
  757. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/LICENSE +0 -26
  758. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/README.md +0 -171
  759. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/TODO.md +0 -7
  760. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/config +0 -21
  761. data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/ngx_cache_purge_module.c +0 -1803
  762. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/README +0 -29
  763. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/config +0 -9
  764. data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/ngx_http_dav_ext_module.c +0 -824
  765. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README +0 -139
  766. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README_AUTO_LIB +0 -395
  767. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/TODO +0 -1
  768. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/array +0 -10
  769. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/palloc +0 -8
  770. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/build +0 -597
  771. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_replacements +0 -5
  772. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_types +0 -12
  773. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_args +0 -22
  774. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_locs +0 -25
  775. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_macros +0 -35
  776. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/contexts +0 -22
  777. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/header_files +0 -3
  778. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/headers +0 -4
  779. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/module_dependencies +0 -5
  780. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/modules_optional +0 -15
  781. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/prefixes +0 -2
  782. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/array.h +0 -7
  783. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_cmd_basic.h +0 -43
  784. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_merge.h +0 -78
  785. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/palloc.h +0 -6
  786. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/text/autogen +0 -12
  787. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/config +0 -49
  788. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/action_macros +0 -63
  789. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/conf_cmds +0 -62
  790. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/modules/set_var +0 -124
  791. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/patches/more_logging_info +0 -48
  792. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/upstream/list +0 -45
  793. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/README +0 -12
  794. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/config +0 -4
  795. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/ngx_http_set_var_examples_module.c +0 -136
  796. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/ngx_auto_lib_core +0 -797
  797. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/CHANGES +0 -17
  798. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/LICENSE +0 -24
  799. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_array.h +0 -113
  800. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_basic.h +0 -2203
  801. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_extra.h +0 -5423
  802. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_merge.h +0 -227
  803. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.c +0 -72
  804. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.h +0 -98
  805. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_includes.h +0 -66
  806. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_palloc.h +0 -112
  807. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/auto_config +0 -16
  808. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/expose_rewrite_functions +0 -291
  809. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/rewrite_phase_handler +0 -19
  810. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/md5.h +0 -117
  811. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/murmurhash2.c +0 -77
  812. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/sha.h +0 -200
  813. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.c +0 -155
  814. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.h +0 -58
  815. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.c +0 -43
  816. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.h +0 -5
  817. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.c +0 -129
  818. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.h +0 -30
  819. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.c +0 -192
  820. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.h +0 -21
  821. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.c +0 -396
  822. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.h +0 -44
  823. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.c +0 -72
  824. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.h +0 -171
  825. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.c +0 -57
  826. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.h +0 -12
  827. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.c +0 -82
  828. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.h +0 -45
  829. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.c +0 -138
  830. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.h +0 -3
  831. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http_headers.h +0 -35
  832. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.c +0 -3
  833. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.h +0 -165
  834. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_parse.h +0 -67
  835. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.c +0 -583
  836. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.h +0 -22
  837. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.c +0 -20
  838. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.h +0 -12
  839. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.c +0 -215
  840. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.h +0 -7
  841. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.c +0 -103
  842. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.h +0 -26
  843. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.c +0 -602
  844. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.h +0 -44
  845. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.c +0 -434
  846. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.h +0 -37
  847. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string_util.h +0 -14
  848. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.c +0 -205
  849. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.h +0 -27
  850. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.c +0 -45
  851. data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.h +0 -6
  852. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/LICENSE +0 -25
  853. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/README.markdown +0 -1850
  854. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/config +0 -5
  855. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/doc/HttpEchoModule.wiki +0 -1558
  856. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ddebug.h +0 -109
  857. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.c +0 -344
  858. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.h +0 -25
  859. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.c +0 -282
  860. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.h +0 -15
  861. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.c +0 -183
  862. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.h +0 -16
  863. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.c +0 -429
  864. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.h +0 -18
  865. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.c +0 -178
  866. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.h +0 -13
  867. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.c +0 -667
  868. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.h +0 -137
  869. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.c +0 -452
  870. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.h +0 -31
  871. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.c +0 -208
  872. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.h +0 -16
  873. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.c +0 -788
  874. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.h +0 -19
  875. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.c +0 -96
  876. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.h +0 -13
  877. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.c +0 -298
  878. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.h +0 -58
  879. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.c +0 -110
  880. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.h +0 -9
  881. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/build.sh +0 -45
  882. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/releng +0 -8
  883. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/wiki2pod.pl +0 -131
  884. data/packaging/debian/debian_specs/nginx/modules/nginx-echo/valgrind.suppress +0 -38
  885. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/LICENCE +0 -24
  886. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/README +0 -206
  887. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/changelog.txt +0 -54
  888. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/config +0 -26
  889. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/protocol.txt +0 -191
  890. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.c +0 -59
  891. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.h +0 -73
  892. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.c +0 -783
  893. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.h +0 -31
  894. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module_setup.c +0 -361
  895. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_types.h +0 -120
  896. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.c +0 -1180
  897. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.h +0 -1
  898. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.c +0 -146
  899. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.h +0 -5
  900. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_store.h +0 -51
  901. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.c +0 -178
  902. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.h +0 -5
  903. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.c +0 -246
  904. data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.h +0 -9
  905. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/Changes +0 -51
  906. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/README.markdown +0 -6954
  907. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/config +0 -363
  908. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/doc/HttpLuaModule.wiki +0 -5898
  909. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/dtrace/ngx_lua_provider.d +0 -61
  910. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/Makefile +0 -3
  911. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/lib/RecvUntil.pm +0 -138
  912. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/t/sanity.t +0 -140
  913. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/api/ngx_http_lua_api.h +0 -52
  914. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ddebug.h +0 -82
  915. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.c +0 -377
  916. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.h +0 -22
  917. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_api.c +0 -77
  918. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.c +0 -537
  919. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.h +0 -20
  920. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.c +0 -632
  921. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.h +0 -31
  922. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.c +0 -296
  923. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.h +0 -24
  924. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.c +0 -175
  925. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.h +0 -20
  926. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.c +0 -887
  927. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.h +0 -22
  928. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_common.h +0 -478
  929. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.c +0 -67
  930. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.h +0 -19
  931. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.c +0 -148
  932. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.h +0 -20
  933. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.c +0 -369
  934. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.h +0 -26
  935. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.c +0 -483
  936. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.h +0 -20
  937. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.c +0 -379
  938. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.h +0 -23
  939. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.c +0 -216
  940. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.h +0 -23
  941. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.c +0 -1081
  942. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.h +0 -56
  943. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.c +0 -58
  944. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.h +0 -33
  945. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.c +0 -302
  946. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.h +0 -29
  947. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.c +0 -1370
  948. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.h +0 -22
  949. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.c +0 -782
  950. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.h +0 -22
  951. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.c +0 -625
  952. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.h +0 -23
  953. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.c +0 -42
  954. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.h +0 -23
  955. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.c +0 -320
  956. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.h +0 -25
  957. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.c +0 -300
  958. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.h +0 -20
  959. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.c +0 -227
  960. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.h +0 -22
  961. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.c +0 -252
  962. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.h +0 -20
  963. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_module.c +0 -924
  964. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.c +0 -184
  965. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.h +0 -21
  966. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.c +0 -794
  967. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.h +0 -28
  968. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.c +0 -106
  969. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.h +0 -23
  970. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.c +0 -94
  971. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.h +0 -13
  972. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_probe.h +0 -85
  973. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.c +0 -2468
  974. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.h +0 -22
  975. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.c +0 -1169
  976. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.h +0 -20
  977. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.c +0 -252
  978. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.h +0 -19
  979. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.c +0 -351
  980. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.h +0 -22
  981. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.c +0 -538
  982. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.h +0 -86
  983. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.c +0 -216
  984. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.h +0 -15
  985. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.c +0 -1844
  986. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.h +0 -52
  987. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.c +0 -191
  988. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.h +0 -20
  989. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.c +0 -5314
  990. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.h +0 -156
  991. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.c +0 -1624
  992. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.h +0 -56
  993. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.c +0 -704
  994. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.h +0 -20
  995. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.c +0 -1741
  996. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.h +0 -46
  997. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.c +0 -278
  998. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.h +0 -21
  999. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.c +0 -661
  1000. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.h +0 -20
  1001. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.c +0 -110
  1002. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.h +0 -20
  1003. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.c +0 -283
  1004. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.h +0 -36
  1005. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.c +0 -3972
  1006. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.h +0 -423
  1007. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.c +0 -499
  1008. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.h +0 -20
  1009. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.c +0 -64
  1010. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.h +0 -17
  1011. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/tapset/ngx_lua.stp +0 -5
  1012. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build.sh +0 -39
  1013. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build2.sh +0 -55
  1014. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/fix-comments +0 -27
  1015. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/gdbinit +0 -415
  1016. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/ngx-links +0 -62
  1017. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/reindex +0 -64
  1018. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/releng +0 -8
  1019. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/retab +0 -8
  1020. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/revim +0 -102
  1021. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/run_test.sh +0 -10
  1022. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/update-readme.sh +0 -4
  1023. data/packaging/debian/debian_specs/nginx/modules/nginx-lua/valgrind.suppress +0 -144
  1024. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/CHANGES +0 -107
  1025. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/LICENSE +0 -25
  1026. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/Makefile +0 -8
  1027. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/README +0 -329
  1028. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/config +0 -3
  1029. data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/ngx_http_uploadprogress_module.c +0 -1774
  1030. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/README +0 -53
  1031. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/config +0 -3
  1032. data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/ngx_http_upstream_fair_module.c +0 -1356
  1033. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/CHANGELOG.md +0 -37
  1034. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/HACKING.md +0 -24
  1035. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/LICENSE +0 -20
  1036. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/README.rst +0 -182
  1037. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/config +0 -8
  1038. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/nginx-0.6-support.patch +0 -23
  1039. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/ngx_http_fancyindex_module.c +0 -1305
  1040. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.awk +0 -52
  1041. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.h +0 -103
  1042. data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.html +0 -102
  1043. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/CHANGES +0 -37
  1044. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/README +0 -141
  1045. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/config +0 -3
  1046. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.google_code_home_page.wiki +0 -120
  1047. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.html +0 -199
  1048. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.wiki +0 -123
  1049. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/ngx_http_subs_filter_module.c +0 -1298
  1050. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/README +0 -275
  1051. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/AutoInstall.pm +0 -820
  1052. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install.pm +0 -470
  1053. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/AutoInstall.pm +0 -82
  1054. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Base.pm +0 -83
  1055. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Can.pm +0 -81
  1056. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Fetch.pm +0 -93
  1057. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Include.pm +0 -34
  1058. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Makefile.pm +0 -415
  1059. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Metadata.pm +0 -716
  1060. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/TestBase.pm +0 -29
  1061. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Win32.pm +0 -64
  1062. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/WriteAll.pm +0 -63
  1063. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Spiffy.pm +0 -539
  1064. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base.pm +0 -682
  1065. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base/Filter.pm +0 -341
  1066. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder.pm +0 -1413
  1067. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder/Module.pm +0 -81
  1068. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/More.pm +0 -735
  1069. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx.pm +0 -315
  1070. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/LWP.pm +0 -524
  1071. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Socket.pm +0 -1749
  1072. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Util.pm +0 -874
  1073. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs.t +0 -136
  1074. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_capture.t +0 -32
  1075. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_fix_string.t +0 -32
  1076. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_regex.t +0 -108
  1077. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_types.t +0 -59
  1078. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/test.sh +0 -5
  1079. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/update-readme.sh +0 -7
  1080. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2google_code_homepage.pl +0 -29
  1081. data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2pod.pl +0 -129
  1082. data/packaging/debian/debian_specs/nginx/nginx-common.NEWS +0 -135
  1083. data/packaging/debian/debian_specs/nginx/nginx-common.README.Debian +0 -45
  1084. data/packaging/debian/debian_specs/nginx/nginx-common.dirs.erb +0 -32
  1085. data/packaging/debian/debian_specs/nginx/nginx-common.install +0 -3
  1086. data/packaging/debian/debian_specs/nginx/nginx-common.lintian-overrides +0 -2
  1087. data/packaging/debian/debian_specs/nginx/nginx-common.manpages +0 -1
  1088. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.default +0 -10
  1089. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.init.erb +0 -214
  1090. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.logrotate +0 -18
  1091. data/packaging/debian/debian_specs/nginx/nginx-common.nginx.service.erb +0 -37
  1092. data/packaging/debian/debian_specs/nginx/nginx-common.postinst.erb +0 -66
  1093. data/packaging/debian/debian_specs/nginx/nginx-common.postrm.erb +0 -46
  1094. data/packaging/debian/debian_specs/nginx/nginx-common.preinst +0 -47
  1095. data/packaging/debian/debian_specs/nginx/nginx-common.prerm.erb +0 -28
  1096. data/packaging/debian/debian_specs/nginx/nginx-doc.docs +0 -2
  1097. data/packaging/debian/debian_specs/nginx/nginx-doc.examples +0 -1
  1098. data/packaging/debian/debian_specs/nginx/nginx-extras.install.erb +0 -17
  1099. data/packaging/debian/debian_specs/nginx/nginx-extras.lintian-overrides +0 -1
  1100. data/packaging/debian/debian_specs/nginx/nginx-extras.postinst.erb +0 -44
  1101. data/packaging/debian/debian_specs/nginx/nginx-extras.prerm +0 -22
  1102. data/packaging/debian/debian_specs/nginx/nginx.1 +0 -47
  1103. data/packaging/debian/debian_specs/nginx/patches/perl-use-dpkg-buildflags.patch +0 -23
  1104. data/packaging/debian/debian_specs/nginx/patches/series +0 -1
  1105. data/packaging/debian/debian_specs/nginx/rules.erb +0 -185
  1106. data/packaging/debian/debian_specs/nginx/source/format +0 -1
  1107. data/packaging/debian/debian_specs/nginx/tests/control +0 -4
  1108. data/packaging/debian/debian_specs/nginx/ufw/nginx +0 -14
  1109. data/packaging/debian/debian_specs/nginx/upstream/signing-key.asc +0 -34
  1110. data/packaging/debian/debian_specs/nginx/watch +0 -3
  1111. data/packaging/debian/debian_specs/passenger/README.Debian +0 -12
  1112. data/packaging/debian/debian_specs/passenger/changelog +0 -316
  1113. data/packaging/debian/debian_specs/passenger/compat +0 -1
  1114. data/packaging/debian/debian_specs/passenger/control.erb +0 -123
  1115. data/packaging/debian/debian_specs/passenger/copyright +0 -385
  1116. data/packaging/debian/debian_specs/passenger/helpers.rb +0 -24
  1117. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.install +0 -3
  1118. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.postinst +0 -36
  1119. data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.prerm +0 -15
  1120. data/packaging/debian/debian_specs/passenger/locations.ini.erb +0 -14
  1121. data/packaging/debian/debian_specs/passenger/passenger-dev.install.erb +0 -3
  1122. data/packaging/debian/debian_specs/passenger/passenger-doc.install.erb +0 -2
  1123. data/packaging/debian/debian_specs/passenger/passenger.conf +0 -6
  1124. data/packaging/debian/debian_specs/passenger/passenger.docs +0 -4
  1125. data/packaging/debian/debian_specs/passenger/passenger.install.erb +0 -16
  1126. data/packaging/debian/debian_specs/passenger/passenger.load +0 -3
  1127. data/packaging/debian/debian_specs/passenger/passenger.manpages +0 -3
  1128. data/packaging/debian/debian_specs/passenger/passenger_free_ruby.c +0 -29
  1129. data/packaging/debian/debian_specs/passenger/passenger_ruby_utils.c +0 -54
  1130. data/packaging/debian/debian_specs/passenger/passenger_system_ruby.c.erb +0 -37
  1131. data/packaging/debian/debian_specs/passenger/rules.erb +0 -84
  1132. data/packaging/debian/debian_specs/passenger/source/format +0 -1
  1133. data/packaging/debian/debian_specs/passenger_enterprise/README.Debian +0 -12
  1134. data/packaging/debian/debian_specs/passenger_enterprise/changelog +0 -316
  1135. data/packaging/debian/debian_specs/passenger_enterprise/compat +0 -1
  1136. data/packaging/debian/debian_specs/passenger_enterprise/control.erb +0 -123
  1137. data/packaging/debian/debian_specs/passenger_enterprise/copyright +0 -385
  1138. data/packaging/debian/debian_specs/passenger_enterprise/helpers.rb +0 -2
  1139. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.install +0 -3
  1140. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.postinst +0 -36
  1141. data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.prerm +0 -15
  1142. data/packaging/debian/debian_specs/passenger_enterprise/locations.ini.erb +0 -14
  1143. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-dev.install.erb +0 -3
  1144. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-doc.install.erb +0 -2
  1145. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.docs +0 -4
  1146. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.install.erb +0 -14
  1147. data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.manpages +0 -3
  1148. data/packaging/debian/debian_specs/passenger_enterprise/passenger.conf +0 -6
  1149. data/packaging/debian/debian_specs/passenger_enterprise/passenger.load +0 -3
  1150. data/packaging/debian/debian_specs/passenger_enterprise/passenger_free_ruby.c.erb +0 -1
  1151. data/packaging/debian/debian_specs/passenger_enterprise/passenger_ruby_utils.c.erb +0 -1
  1152. data/packaging/debian/debian_specs/passenger_enterprise/passenger_system_ruby.c.erb +0 -1
  1153. data/packaging/debian/debian_specs/passenger_enterprise/patches/series +0 -0
  1154. data/packaging/debian/debian_specs/passenger_enterprise/rules.erb +0 -84
  1155. data/packaging/debian/debian_specs/passenger_enterprise/source/format +0 -1
  1156. data/packaging/debian/docker_images/Makefile +0 -38
  1157. data/packaging/debian/docker_images/buildbox/CONTAINER_VERSION.txt +0 -0
  1158. data/packaging/debian/docker_images/buildbox/Dockerfile +0 -3
  1159. data/packaging/debian/docker_images/buildbox/Gemfile +0 -9
  1160. data/packaging/debian/docker_images/buildbox/Gemfile.lock +0 -42
  1161. data/packaging/debian/docker_images/buildbox/install.sh +0 -85
  1162. data/packaging/debian/docker_images/buildbox/pbuilderrc +0 -4
  1163. data/packaging/debian/docker_images/buildbox/sudoers.conf +0 -6
  1164. data/packaging/debian/docker_images/setup-buildbox-docker-image +0 -7
  1165. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-6 +0 -7
  1166. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-7 +0 -7
  1167. data/packaging/debian/docker_images/setup-testbox-docker-image-debian-8 +0 -7
  1168. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-12.04 +0 -7
  1169. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-14.04 +0 -7
  1170. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.04 +0 -7
  1171. data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.10 +0 -7
  1172. data/packaging/debian/docker_images/testbox-debian-6/Dockerfile +0 -3
  1173. data/packaging/debian/docker_images/testbox-debian-6/Gemfile +0 -2
  1174. data/packaging/debian/docker_images/testbox-debian-6/Gemfile.lock +0 -23
  1175. data/packaging/debian/docker_images/testbox-debian-6/argparse.py +0 -2374
  1176. data/packaging/debian/docker_images/testbox-debian-6/install.sh +0 -78
  1177. data/packaging/debian/docker_images/testbox-debian-7/Dockerfile +0 -3
  1178. data/packaging/debian/docker_images/testbox-debian-7/Gemfile +0 -2
  1179. data/packaging/debian/docker_images/testbox-debian-7/Gemfile.lock +0 -23
  1180. data/packaging/debian/docker_images/testbox-debian-7/install.sh +0 -71
  1181. data/packaging/debian/docker_images/testbox-debian-8/Dockerfile +0 -3
  1182. data/packaging/debian/docker_images/testbox-debian-8/Gemfile +0 -2
  1183. data/packaging/debian/docker_images/testbox-debian-8/Gemfile.lock +0 -23
  1184. data/packaging/debian/docker_images/testbox-debian-8/install.sh +0 -70
  1185. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Dockerfile +0 -3
  1186. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile +0 -2
  1187. data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile.lock +0 -23
  1188. data/packaging/debian/docker_images/testbox-ubuntu-12.04/install.sh +0 -69
  1189. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Dockerfile +0 -3
  1190. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile +0 -2
  1191. data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile.lock +0 -23
  1192. data/packaging/debian/docker_images/testbox-ubuntu-14.04/install.sh +0 -69
  1193. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Dockerfile +0 -3
  1194. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile +0 -2
  1195. data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile.lock +0 -23
  1196. data/packaging/debian/docker_images/testbox-ubuntu-15.04/install.sh +0 -69
  1197. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Dockerfile +0 -3
  1198. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile +0 -2
  1199. data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile.lock +0 -23
  1200. data/packaging/debian/docker_images/testbox-ubuntu-15.10/install.sh +0 -69
  1201. data/packaging/debian/internal/build/Rakefile +0 -235
  1202. data/packaging/debian/internal/build/build-passenger-orig-tarball.sh +0 -76
  1203. data/packaging/debian/internal/build/build-source-package.rb +0 -121
  1204. data/packaging/debian/internal/build/download-nginx-orig-tarball.sh +0 -17
  1205. data/packaging/debian/internal/build/rakefile_support.rb +0 -96
  1206. data/packaging/debian/internal/build/setup-environment-essentials.sh +0 -15
  1207. data/packaging/debian/internal/build/setup-environment.sh +0 -29
  1208. data/packaging/debian/internal/lib/distro_info.rb +0 -82
  1209. data/packaging/debian/internal/lib/distro_info.sh +0 -303
  1210. data/packaging/debian/internal/lib/distro_info.sh.erb +0 -65
  1211. data/packaging/debian/internal/lib/library.sh +0 -83
  1212. data/packaging/debian/internal/lib/preprocessor.rb +0 -173
  1213. data/packaging/debian/internal/lib/tracking.rb +0 -95
  1214. data/packaging/debian/internal/lib/tracking_category.rb +0 -45
  1215. data/packaging/debian/internal/lib/tracking_database.rb +0 -132
  1216. data/packaging/debian/internal/lib/tracking_task.rb +0 -148
  1217. data/packaging/debian/internal/lib/utils.rb +0 -78
  1218. data/packaging/debian/internal/publish/Rakefile +0 -97
  1219. data/packaging/debian/internal/publish/oss-binaries.phusionpassenger.com-fingerprint.txt +0 -1
  1220. data/packaging/debian/internal/publish/packagecloud_fingerprint.txt +0 -1
  1221. data/packaging/debian/internal/publish/passenger_website_fingerprint.txt +0 -1
  1222. data/packaging/debian/internal/publish/preinit.sh +0 -7
  1223. data/packaging/debian/internal/publish/rakefile_support.rb +0 -183
  1224. data/packaging/debian/internal/scripts/gpg_noninteractive/gpg +0 -11
  1225. data/packaging/debian/internal/scripts/initccache.sh +0 -35
  1226. data/packaging/debian/internal/scripts/inituidgid.sh +0 -19
  1227. data/packaging/debian/internal/scripts/my_init +0 -340
  1228. data/packaging/debian/internal/scripts/pin_certificates +0 -34
  1229. data/packaging/debian/internal/scripts/regen_distro_info_script.sh +0 -3
  1230. data/packaging/debian/internal/scripts/setup-vagrant.sh +0 -12
  1231. data/packaging/debian/internal/scripts/setuser +0 -31
  1232. data/packaging/debian/internal/shell/initpbuilder.sh +0 -3
  1233. data/packaging/debian/internal/shell/preinit.sh +0 -28
  1234. data/packaging/debian/internal/shell/sudoers.conf +0 -1
  1235. data/packaging/debian/internal/test/apache/apache-24.conf +0 -5
  1236. data/packaging/debian/internal/test/apache/apache-pre-24.conf +0 -4
  1237. data/packaging/debian/internal/test/apache/vhost.conf +0 -17
  1238. data/packaging/debian/internal/test/misc/config.json +0 -15
  1239. data/packaging/debian/internal/test/misc/hosts.conf +0 -4
  1240. data/packaging/debian/internal/test/misc/init.sh +0 -25
  1241. data/packaging/debian/internal/test/misc/nodejs_test_app.js +0 -6
  1242. data/packaging/debian/internal/test/misc/python_test_app.py +0 -3
  1243. data/packaging/debian/internal/test/misc/ruby_test_app.rb +0 -5
  1244. data/packaging/debian/internal/test/misc/test_support.rb +0 -61
  1245. data/packaging/debian/internal/test/nginx/vhost.conf +0 -23
  1246. data/packaging/debian/internal/test/system_web_server_test.rb +0 -126
  1247. data/packaging/debian/internal/test/test.sh +0 -141
  1248. data/packaging/debian/jenkins/publish/clear_caches.rb +0 -48
  1249. data/packaging/debian/jenkins/publish/publish.sh +0 -69
  1250. data/packaging/debian/jenkins/test/test.sh +0 -63
  1251. data/packaging/debian/passenger_apt_automation.sublime-project +0 -14
  1252. data/packaging/debian/publish +0 -172
  1253. data/packaging/debian/shell +0 -116
  1254. data/packaging/debian/test +0 -142
  1255. data/packaging/rpm/passenger_spec/rubygem-passenger-4.0.18-gcc47-include-sys_types.patch +0 -45
  1256. data/test/cxx/Base64Test.cpp +0 -50
  1257. data/test/cxx/FileBackedPipeTest.cpp +0 -626
  1258. data/test/cxx/HttpHeaderBuffererTest.cpp +0 -257
  1259. data/test/cxx/ScgiRequestParserTest.cpp +0 -423
  1260. data/test/cxx/ServerInstanceDirTest.cpp +0 -175
  1261. data/test/ruby/admin_tools_spec.rb +0 -360
  1262. data/test/ruby/classic_rails/loader_spec.rb +0 -46
  1263. data/test/ruby/classic_rails/preloader_spec.rb +0 -52
  1264. data/test/ruby/standalone/runtime_locator_spec.rb +0 -214
  1265. data/test/stub/rails2.3/Rakefile +0 -10
  1266. data/test/stub/rails2.3/app/controllers/application_controller.rb +0 -10
  1267. data/test/stub/rails2.3/app/controllers/bar_controller_1.rb +0 -5
  1268. data/test/stub/rails2.3/app/controllers/bar_controller_2.rb +0 -5
  1269. data/test/stub/rails2.3/app/controllers/foo_controller.rb +0 -21
  1270. data/test/stub/rails2.3/app/helpers/application_helper.rb +0 -3
  1271. data/test/stub/rails2.3/app/helpers/bar_helper.rb +0 -2
  1272. data/test/stub/rails2.3/app/helpers/foo_helper.rb +0 -2
  1273. data/test/stub/rails2.3/config/boot.rb +0 -110
  1274. data/test/stub/rails2.3/config/database.yml +0 -19
  1275. data/test/stub/rails2.3/config/environment.rb +0 -62
  1276. data/test/stub/rails2.3/config/environments/development.rb +0 -17
  1277. data/test/stub/rails2.3/config/environments/production.rb +0 -18
  1278. data/test/stub/rails2.3/config/environments/staging.rb +0 -18
  1279. data/test/stub/rails2.3/config/initializers/inflections.rb +0 -10
  1280. data/test/stub/rails2.3/config/initializers/mime_types.rb +0 -5
  1281. data/test/stub/rails2.3/config/routes.rb +0 -35
  1282. data/test/stub/rails2.3/log/.gitignore +0 -1
  1283. data/test/stub/rails2.3/public/.gitignore +0 -1
  1284. data/test/stub/rails2.3/script/about +0 -3
  1285. data/test/stub/rails2.3/script/console +0 -3
  1286. data/test/stub/rails2.3/script/dbconsole +0 -3
  1287. data/test/stub/rails2.3/script/destroy +0 -3
  1288. data/test/stub/rails2.3/script/generate +0 -3
  1289. data/test/stub/rails2.3/script/performance/benchmarker +0 -3
  1290. data/test/stub/rails2.3/script/performance/profiler +0 -3
  1291. data/test/stub/rails2.3/script/performance/request +0 -3
  1292. data/test/stub/rails2.3/script/plugin +0 -3
  1293. data/test/stub/rails2.3/script/process/inspector +0 -3
  1294. data/test/stub/rails2.3/script/process/reaper +0 -3
  1295. data/test/stub/rails2.3/script/process/spawner +0 -3
  1296. data/test/stub/rails2.3/script/runner +0 -3
  1297. data/test/stub/rails2.3/script/server +0 -3
  1298. data/test/stub/rails2.3/tmp/cache/.gitignore +0 -1
  1299. data/test/stub/rails2.3/tmp/pids/.gitignore +0 -1
  1300. data/test/stub/rails2.3/tmp/sessions/.gitignore +0 -1
  1301. data/test/stub/rails2.3/tmp/sockets/.gitignore +0 -1
@@ -0,0 +1,1503 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // (C) Copyright Pablo Halpern 2009. Distributed under the Boost
4
+ // Software License, Version 1.0. (See accompanying file
5
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
+ //
7
+ //////////////////////////////////////////////////////////////////////////////
8
+ //
9
+ // (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost
10
+ // Software License, Version 1.0. (See accompanying file
11
+ // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
12
+ //
13
+ // See http://www.boost.org/libs/container for documentation.
14
+ //
15
+ //////////////////////////////////////////////////////////////////////////////
16
+
17
+ #ifndef BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_HPP
18
+ #define BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_HPP
19
+
20
+ #if (defined MSC_VER) && (_MSC_VER >= 1200)
21
+ # pragma once
22
+ #endif
23
+
24
+ #include <boost/container/detail/config_begin.hpp>
25
+ #include <boost/container/detail/workaround.hpp>
26
+ #include <boost/container/scoped_allocator_fwd.hpp>
27
+ #include <boost/type_traits/integral_constant.hpp>
28
+ #include <boost/container/allocator_traits.hpp>
29
+ #include <boost/container/detail/type_traits.hpp>
30
+ #include <boost/container/detail/utilities.hpp>
31
+ #include <utility>
32
+ #include <boost/container/detail/pair.hpp>
33
+ #include <boost/move/utility.hpp>
34
+ #include <boost/detail/no_exceptions_support.hpp>
35
+
36
+ namespace boost { namespace container {
37
+
38
+ //! <b>Remark</b>: if a specialization is derived from true_type, indicates that T may be constructed
39
+ //! with an allocator as its last constructor argument. Ideally, all constructors of T (including the
40
+ //! copy and move constructors) should have a variant that accepts a final argument of
41
+ //! allocator_type.
42
+ //!
43
+ //! <b>Requires</b>: if a specialization is derived from true_type, T must have a nested type,
44
+ //! allocator_type and at least one constructor for which allocator_type is the last
45
+ //! parameter. If not all constructors of T can be called with a final allocator_type argument,
46
+ //! and if T is used in a context where a container must call such a constructor, then the program is
47
+ //! ill-formed.
48
+ //!
49
+ //! [Example:
50
+ //! template <class T, class Allocator = allocator<T> >
51
+ //! class Z {
52
+ //! public:
53
+ //! typedef Allocator allocator_type;
54
+ //!
55
+ //! // Default constructor with optional allocator suffix
56
+ //! Z(const allocator_type& a = allocator_type());
57
+ //!
58
+ //! // Copy constructor and allocator-extended copy constructor
59
+ //! Z(const Z& zz);
60
+ //! Z(const Z& zz, const allocator_type& a);
61
+ //! };
62
+ //!
63
+ //! // Specialize trait for class template Z
64
+ //! template <class T, class Allocator = allocator<T> >
65
+ //! struct constructible_with_allocator_suffix<Z<T,Allocator> >
66
+ //! : ::boost::true_type { };
67
+ //! -- end example]
68
+ //!
69
+ //! <b>Note</b>: This trait is a workaround inspired by "N2554: The Scoped Allocator Model (Rev 2)"
70
+ //! (Pablo Halpern, 2008-02-29) to backport the scoped allocator model to C++03, as
71
+ //! in C++03 there is no mechanism to detect if a type can be constructed from arbitrary arguments.
72
+ //! Applications aiming portability with several compilers should always define this trait.
73
+ //!
74
+ //! In conforming C++11 compilers or compilers supporting SFINAE expressions
75
+ //! (when BOOST_NO_SFINAE_EXPR is NOT defined), this trait is ignored and C++11 rules will be used
76
+ //! to detect if a type should be constructed with suffix or prefix allocator arguments.
77
+ template <class T>
78
+ struct constructible_with_allocator_suffix
79
+ : ::boost::false_type
80
+ {};
81
+
82
+ //! <b>Remark</b>: if a specialization is derived from true_type, indicates that T may be constructed
83
+ //! with allocator_arg and T::allocator_type as its first two constructor arguments.
84
+ //! Ideally, all constructors of T (including the copy and move constructors) should have a variant
85
+ //! that accepts these two initial arguments.
86
+ //!
87
+ //! <b>Requires</b>: if a specialization is derived from true_type, T must have a nested type,
88
+ //! allocator_type and at least one constructor for which allocator_arg_t is the first
89
+ //! parameter and allocator_type is the second parameter. If not all constructors of T can be
90
+ //! called with these initial arguments, and if T is used in a context where a container must call such
91
+ //! a constructor, then the program is ill-formed.
92
+ //!
93
+ //! [Example:
94
+ //! template <class T, class Allocator = allocator<T> >
95
+ //! class Y {
96
+ //! public:
97
+ //! typedef Allocator allocator_type;
98
+ //!
99
+ //! // Default constructor with and allocator-extended default constructor
100
+ //! Y();
101
+ //! Y(allocator_arg_t, const allocator_type& a);
102
+ //!
103
+ //! // Copy constructor and allocator-extended copy constructor
104
+ //! Y(const Y& yy);
105
+ //! Y(allocator_arg_t, const allocator_type& a, const Y& yy);
106
+ //!
107
+ //! // Variadic constructor and allocator-extended variadic constructor
108
+ //! template<class ...Args> Y(Args&& args...);
109
+ //! template<class ...Args>
110
+ //! Y(allocator_arg_t, const allocator_type& a, Args&&... args);
111
+ //! };
112
+ //!
113
+ //! // Specialize trait for class template Y
114
+ //! template <class T, class Allocator = allocator<T> >
115
+ //! struct constructible_with_allocator_prefix<Y<T,Allocator> >
116
+ //! : ::boost::true_type { };
117
+ //!
118
+ //! -- end example]
119
+ //!
120
+ //! <b>Note</b>: This trait is a workaround inspired by "N2554: The Scoped Allocator Model (Rev 2)"
121
+ //! (Pablo Halpern, 2008-02-29) to backport the scoped allocator model to C++03, as
122
+ //! in C++03 there is no mechanism to detect if a type can be constructed from arbitrary arguments.
123
+ //! Applications aiming portability with several compilers should always define this trait.
124
+ //!
125
+ //! In conforming C++11 compilers or compilers supporting SFINAE expressions
126
+ //! (when BOOST_NO_SFINAE_EXPR is NOT defined), this trait is ignored and C++11 rules will be used
127
+ //! to detect if a type should be constructed with suffix or prefix allocator arguments.
128
+ template <class T>
129
+ struct constructible_with_allocator_prefix
130
+ : ::boost::false_type
131
+ {};
132
+
133
+ ///@cond
134
+
135
+ namespace container_detail {
136
+
137
+ template<typename T, typename Alloc>
138
+ struct uses_allocator_imp
139
+ {
140
+ // Use SFINAE (Substitution Failure Is Not An Error) to detect the
141
+ // presence of an 'allocator_type' nested type convertilble from Alloc.
142
+
143
+ private:
144
+ // Match this function if TypeT::allocator_type exists and is
145
+ // implicitly convertible from Alloc
146
+ template <typename U>
147
+ static char test(int, typename U::allocator_type);
148
+
149
+ // Match this function if TypeT::allocator_type does not exist or is
150
+ // not convertible from Alloc.
151
+ template <typename U>
152
+ static int test(LowPriorityConversion<int>, LowPriorityConversion<Alloc>);
153
+
154
+ static Alloc alloc; // Declared but not defined
155
+
156
+ public:
157
+ enum { value = sizeof(test<T>(0, alloc)) == sizeof(char) };
158
+ };
159
+
160
+ } //namespace container_detail {
161
+
162
+ ///@endcond
163
+
164
+ //! <b>Remark</b>: Automatically detects if T has a nested allocator_type that is convertible from
165
+ //! Alloc. Meets the BinaryTypeTrait requirements ([meta.rqmts] 20.4.1). A program may
166
+ //! specialize this type to derive from true_type for a T of user-defined type if T does not
167
+ //! have a nested allocator_type but is nonetheless constructible using the specified Alloc.
168
+ //!
169
+ //! <b>Result</b>: derived from true_type if Convertible<Alloc,T::allocator_type> and
170
+ //! derived from false_type otherwise.
171
+ template <typename T, typename Alloc>
172
+ struct uses_allocator
173
+ : boost::integral_constant<bool, container_detail::uses_allocator_imp<T, Alloc>::value>
174
+ {};
175
+
176
+ ///@cond
177
+
178
+ namespace container_detail {
179
+
180
+ template <typename Alloc>
181
+ struct is_scoped_allocator_imp
182
+ {
183
+ template <typename T>
184
+ static char test(int, typename T::outer_allocator_type*);
185
+
186
+ template <typename T>
187
+ static int test(LowPriorityConversion<int>, void*);
188
+
189
+ static const bool value = (sizeof(char) == sizeof(test<Alloc>(0, 0)));
190
+ };
191
+
192
+ template<class MaybeScopedAlloc, bool = is_scoped_allocator_imp<MaybeScopedAlloc>::value >
193
+ struct outermost_allocator_type_impl
194
+ {
195
+ typedef typename MaybeScopedAlloc::outer_allocator_type outer_type;
196
+ typedef typename outermost_allocator_type_impl<outer_type>::type type;
197
+ };
198
+
199
+ template<class MaybeScopedAlloc>
200
+ struct outermost_allocator_type_impl<MaybeScopedAlloc, false>
201
+ {
202
+ typedef MaybeScopedAlloc type;
203
+ };
204
+
205
+ template<class MaybeScopedAlloc, bool = is_scoped_allocator_imp<MaybeScopedAlloc>::value >
206
+ struct outermost_allocator_imp
207
+ {
208
+ typedef MaybeScopedAlloc type;
209
+
210
+ static type &get(MaybeScopedAlloc &a)
211
+ { return a; }
212
+
213
+ static const type &get(const MaybeScopedAlloc &a)
214
+ { return a; }
215
+ };
216
+
217
+ template<class MaybeScopedAlloc>
218
+ struct outermost_allocator_imp<MaybeScopedAlloc, true>
219
+ {
220
+ typedef typename MaybeScopedAlloc::outer_allocator_type outer_type;
221
+ typedef typename outermost_allocator_type_impl<outer_type>::type type;
222
+
223
+ static type &get(MaybeScopedAlloc &a)
224
+ { return outermost_allocator_imp<outer_type>::get(a.outer_allocator()); }
225
+
226
+ static const type &get(const MaybeScopedAlloc &a)
227
+ { return outermost_allocator_imp<outer_type>::get(a.outer_allocator()); }
228
+ };
229
+
230
+ } //namespace container_detail {
231
+
232
+ template <typename Alloc>
233
+ struct is_scoped_allocator
234
+ : boost::integral_constant<bool, container_detail::is_scoped_allocator_imp<Alloc>::value>
235
+ {};
236
+
237
+ template <typename Alloc>
238
+ struct outermost_allocator
239
+ : container_detail::outermost_allocator_imp<Alloc>
240
+ {};
241
+
242
+ template <typename Alloc>
243
+ typename container_detail::outermost_allocator_imp<Alloc>::type &
244
+ get_outermost_allocator(Alloc &a)
245
+ { return container_detail::outermost_allocator_imp<Alloc>::get(a); }
246
+
247
+ template <typename Alloc>
248
+ const typename container_detail::outermost_allocator_imp<Alloc>::type &
249
+ get_outermost_allocator(const Alloc &a)
250
+ { return container_detail::outermost_allocator_imp<Alloc>::get(a); }
251
+
252
+ namespace container_detail {
253
+
254
+ // Check if we can detect is_convertible using advanced SFINAE expressions
255
+ #if !defined(BOOST_NO_SFINAE_EXPR)
256
+
257
+ //! Code inspired by Mathias Gaunard's is_convertible.cpp found in the Boost mailing list
258
+ //! http://boost.2283326.n4.nabble.com/type-traits-is-constructible-when-decltype-is-supported-td3575452.html
259
+ //! Thanks Mathias!
260
+
261
+ //With variadic templates, we need a single class to implement the trait
262
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
263
+
264
+ template<class T, class ...Args>
265
+ struct is_constructible_impl
266
+ {
267
+ typedef char yes_type;
268
+ struct no_type
269
+ { char padding[2]; };
270
+
271
+ template<std::size_t N>
272
+ struct dummy;
273
+
274
+ template<class X>
275
+ static yes_type test(dummy<sizeof(X(boost::move_detail::declval<Args>()...))>*);
276
+
277
+ template<class X>
278
+ static no_type test(...);
279
+
280
+ static const bool value = sizeof(test<T>(0)) == sizeof(yes_type);
281
+ };
282
+
283
+ template<class T, class ...Args>
284
+ struct is_constructible
285
+ : boost::integral_constant<bool, is_constructible_impl<T, Args...>::value>
286
+ {};
287
+
288
+ template <class T, class InnerAlloc, class ...Args>
289
+ struct is_constructible_with_allocator_prefix
290
+ : is_constructible<T, allocator_arg_t, InnerAlloc, Args...>
291
+ {};
292
+
293
+ #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
294
+
295
+ //Without variadic templates, we need to use de preprocessor to generate
296
+ //some specializations.
297
+
298
+ #define BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS \
299
+ BOOST_PP_ADD(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, 3)
300
+ //!
301
+
302
+ //Generate N+1 template parameters so that we can specialize N
303
+ template<class T
304
+ BOOST_PP_ENUM_TRAILING( BOOST_PP_ADD(BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS, 1)
305
+ , BOOST_CONTAINER_PP_TEMPLATE_PARAM_WITH_DEFAULT
306
+ , void)
307
+ >
308
+ struct is_constructible_impl;
309
+
310
+ //Generate N specializations, from 0 to
311
+ //BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS parameters
312
+ #define BOOST_PP_LOCAL_MACRO(n) \
313
+ template<class T BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)> \
314
+ struct is_constructible_impl \
315
+ <T BOOST_PP_ENUM_TRAILING_PARAMS(n, P) \
316
+ BOOST_PP_ENUM_TRAILING \
317
+ ( BOOST_PP_SUB(BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS, n) \
318
+ , BOOST_CONTAINER_PP_IDENTITY, void) \
319
+ , void> \
320
+ { \
321
+ typedef char yes_type; \
322
+ struct no_type \
323
+ { char padding[2]; }; \
324
+ \
325
+ template<std::size_t N> \
326
+ struct dummy; \
327
+ \
328
+ template<class X> \
329
+ static yes_type test(dummy<sizeof(X(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_DECLVAL, ~)))>*); \
330
+ \
331
+ template<class X> \
332
+ static no_type test(...); \
333
+ \
334
+ static const bool value = sizeof(test<T>(0)) == sizeof(yes_type); \
335
+ }; \
336
+ //!
337
+
338
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS)
339
+ #include BOOST_PP_LOCAL_ITERATE()
340
+
341
+ //Finally just inherit from the implementation to define he trait
342
+ template< class T
343
+ BOOST_PP_ENUM_TRAILING( BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS
344
+ , BOOST_CONTAINER_PP_TEMPLATE_PARAM_WITH_DEFAULT
345
+ , void)
346
+ >
347
+ struct is_constructible
348
+ : boost::integral_constant
349
+ < bool
350
+ , is_constructible_impl
351
+ < T
352
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS, P)
353
+ , void>::value
354
+ >
355
+ {};
356
+
357
+ //Finally just inherit from the implementation to define he trait
358
+ template <class T
359
+ ,class InnerAlloc
360
+ BOOST_PP_ENUM_TRAILING( BOOST_PP_SUB(BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS, 2)
361
+ , BOOST_CONTAINER_PP_TEMPLATE_PARAM_WITH_DEFAULT
362
+ , void)
363
+ >
364
+ struct is_constructible_with_allocator_prefix
365
+ : is_constructible
366
+ < T, allocator_arg_t, InnerAlloc
367
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SUB(BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS, 2), P)
368
+ >
369
+ {};
370
+ /*
371
+ template <class T
372
+ ,class InnerAlloc
373
+ BOOST_PP_ENUM_TRAILING( BOOST_PP_SUB(BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS, 1)
374
+ , BOOST_CONTAINER_PP_TEMPLATE_PARAM_WITH_DEFAULT
375
+ , void)
376
+ >
377
+ struct is_constructible_with_allocator_suffix
378
+ : is_constructible
379
+ < T
380
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SUB(BOOST_CONTAINER_MAX_IS_CONSTRUCTIBLE_PARAMETERS, 1), P)
381
+ , InnerAlloc
382
+ >
383
+ {};*/
384
+
385
+ #endif // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
386
+
387
+ #else // #if !defined(BOOST_NO_SFINAE_EXPR)
388
+
389
+ //Without advanced SFINAE expressions, we can't use is_constructible
390
+ //so backup to constructible_with_allocator_xxx
391
+
392
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
393
+
394
+ template < class T, class InnerAlloc, class ...Args>
395
+ struct is_constructible_with_allocator_prefix
396
+ : constructible_with_allocator_prefix<T>
397
+ {};
398
+ /*
399
+ template < class T, class InnerAlloc, class ...Args>
400
+ struct is_constructible_with_allocator_suffix
401
+ : constructible_with_allocator_suffix<T>
402
+ {};*/
403
+
404
+ #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
405
+
406
+ template < class T
407
+ , class InnerAlloc
408
+ BOOST_PP_ENUM_TRAILING( BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
409
+ , BOOST_CONTAINER_PP_TEMPLATE_PARAM_WITH_DEFAULT
410
+ , void)
411
+ >
412
+ struct is_constructible_with_allocator_prefix
413
+ : constructible_with_allocator_prefix<T>
414
+ {};
415
+ /*
416
+ template < class T
417
+ , class InnerAlloc
418
+ BOOST_PP_ENUM_TRAILING( BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
419
+ , BOOST_CONTAINER_PP_TEMPLATE_PARAM_WITH_DEFAULT
420
+ , void)
421
+ >
422
+ struct is_constructible_with_allocator_suffix
423
+ : constructible_with_allocator_suffix<T>
424
+ {};*/
425
+
426
+ #endif // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
427
+
428
+ #endif // #if !defined(BOOST_NO_SFINAE_EXPR)
429
+
430
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
431
+
432
+ template < typename OutermostAlloc
433
+ , typename InnerAlloc
434
+ , typename T
435
+ , class ...Args
436
+ >
437
+ inline void dispatch_allocator_prefix_suffix
438
+ ( boost::true_type use_alloc_prefix, OutermostAlloc& outermost_alloc
439
+ , InnerAlloc& inner_alloc, T* p, BOOST_FWD_REF(Args) ...args)
440
+ {
441
+ (void)use_alloc_prefix;
442
+ allocator_traits<OutermostAlloc>::construct
443
+ ( outermost_alloc, p, allocator_arg, inner_alloc, ::boost::forward<Args>(args)...);
444
+ }
445
+
446
+ template < typename OutermostAlloc
447
+ , typename InnerAlloc
448
+ , typename T
449
+ , class ...Args
450
+ >
451
+ inline void dispatch_allocator_prefix_suffix
452
+ ( boost::false_type use_alloc_prefix, OutermostAlloc& outermost_alloc
453
+ , InnerAlloc &inner_alloc, T* p, BOOST_FWD_REF(Args)...args)
454
+ {
455
+ (void)use_alloc_prefix;
456
+ allocator_traits<OutermostAlloc>::construct
457
+ (outermost_alloc, p, ::boost::forward<Args>(args)..., inner_alloc);
458
+ }
459
+
460
+ template < typename OutermostAlloc
461
+ , typename InnerAlloc
462
+ , typename T
463
+ , class ...Args
464
+ >
465
+ inline void dispatch_uses_allocator
466
+ ( boost::true_type uses_allocator, OutermostAlloc& outermost_alloc
467
+ , InnerAlloc& inner_alloc, T* p, BOOST_FWD_REF(Args)...args)
468
+ {
469
+ (void)uses_allocator;
470
+ //BOOST_STATIC_ASSERT((is_constructible_with_allocator_prefix<T, InnerAlloc, Args...>::value ||
471
+ // is_constructible_with_allocator_suffix<T, InnerAlloc, Args...>::value ));
472
+ dispatch_allocator_prefix_suffix
473
+ ( is_constructible_with_allocator_prefix<T, InnerAlloc, Args...>()
474
+ , outermost_alloc, inner_alloc, p, ::boost::forward<Args>(args)...);
475
+ }
476
+
477
+ template < typename OutermostAlloc
478
+ , typename InnerAlloc
479
+ , typename T
480
+ , class ...Args
481
+ >
482
+ inline void dispatch_uses_allocator
483
+ ( boost::false_type uses_allocator, OutermostAlloc & outermost_alloc
484
+ , InnerAlloc & inner_alloc
485
+ ,T* p, BOOST_FWD_REF(Args)...args)
486
+ {
487
+ (void)uses_allocator; (void)inner_alloc;
488
+ allocator_traits<OutermostAlloc>::construct
489
+ (outermost_alloc, p, ::boost::forward<Args>(args)...);
490
+ }
491
+
492
+ #else //#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
493
+
494
+ #define BOOST_PP_LOCAL_MACRO(n) \
495
+ template < typename OutermostAlloc \
496
+ , typename InnerAlloc \
497
+ , typename T \
498
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, class P) \
499
+ > \
500
+ inline void dispatch_allocator_prefix_suffix( \
501
+ boost::true_type use_alloc_prefix, \
502
+ OutermostAlloc& outermost_alloc, \
503
+ InnerAlloc& inner_alloc, \
504
+ T* p \
505
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
506
+ { \
507
+ (void)use_alloc_prefix, \
508
+ allocator_traits<OutermostAlloc>::construct \
509
+ (outermost_alloc, p, allocator_arg, inner_alloc \
510
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
511
+ } \
512
+ \
513
+ template < typename OutermostAlloc \
514
+ , typename InnerAlloc \
515
+ , typename T \
516
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, class P) \
517
+ > \
518
+ inline void dispatch_allocator_prefix_suffix( \
519
+ boost::false_type use_alloc_prefix, \
520
+ OutermostAlloc& outermost_alloc, \
521
+ InnerAlloc& inner_alloc, \
522
+ T* p BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
523
+ { \
524
+ (void)use_alloc_prefix; \
525
+ allocator_traits<OutermostAlloc>::construct \
526
+ (outermost_alloc, p \
527
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) \
528
+ , inner_alloc); \
529
+ } \
530
+ \
531
+ template < typename OutermostAlloc \
532
+ , typename InnerAlloc \
533
+ , typename T \
534
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, class P) \
535
+ > \
536
+ inline void dispatch_uses_allocator(boost::true_type uses_allocator, \
537
+ OutermostAlloc& outermost_alloc, \
538
+ InnerAlloc& inner_alloc, \
539
+ T* p BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
540
+ { \
541
+ (void)uses_allocator; \
542
+ dispatch_allocator_prefix_suffix \
543
+ (is_constructible_with_allocator_prefix \
544
+ < T, InnerAlloc BOOST_PP_ENUM_TRAILING_PARAMS(n, P)>() \
545
+ , outermost_alloc, inner_alloc, p \
546
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
547
+ } \
548
+ \
549
+ template < typename OutermostAlloc \
550
+ , typename InnerAlloc \
551
+ , typename T \
552
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, class P) \
553
+ > \
554
+ inline void dispatch_uses_allocator(boost::false_type uses_allocator \
555
+ ,OutermostAlloc & outermost_alloc \
556
+ ,InnerAlloc & inner_alloc \
557
+ ,T* p BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
558
+ { \
559
+ (void)uses_allocator; (void)inner_alloc; \
560
+ allocator_traits<OutermostAlloc>::construct \
561
+ (outermost_alloc, p BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
562
+ } \
563
+ //!
564
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
565
+ #include BOOST_PP_LOCAL_ITERATE()
566
+
567
+ #endif //#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
568
+
569
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
570
+
571
+ template <typename OuterAlloc, class ...InnerAllocs>
572
+ class scoped_allocator_adaptor_base
573
+ : public OuterAlloc
574
+ {
575
+ typedef allocator_traits<OuterAlloc> outer_traits_type;
576
+ BOOST_COPYABLE_AND_MOVABLE(scoped_allocator_adaptor_base)
577
+
578
+ public:
579
+ template <class OuterA2>
580
+ struct rebind_base
581
+ {
582
+ typedef scoped_allocator_adaptor_base<OuterA2, InnerAllocs...> other;
583
+ };
584
+
585
+ typedef OuterAlloc outer_allocator_type;
586
+ typedef scoped_allocator_adaptor<InnerAllocs...> inner_allocator_type;
587
+ typedef allocator_traits<inner_allocator_type> inner_traits_type;
588
+ typedef boost::integral_constant<
589
+ bool,
590
+ outer_traits_type::propagate_on_container_copy_assignment::value ||
591
+ inner_allocator_type::propagate_on_container_copy_assignment::value
592
+ > propagate_on_container_copy_assignment;
593
+ typedef boost::integral_constant<
594
+ bool,
595
+ outer_traits_type::propagate_on_container_move_assignment::value ||
596
+ inner_allocator_type::propagate_on_container_move_assignment::value
597
+ > propagate_on_container_move_assignment;
598
+ typedef boost::integral_constant<
599
+ bool,
600
+ outer_traits_type::propagate_on_container_swap::value ||
601
+ inner_allocator_type::propagate_on_container_swap::value
602
+ > propagate_on_container_swap;
603
+
604
+ scoped_allocator_adaptor_base()
605
+ {}
606
+
607
+ template <class OuterA2>
608
+ scoped_allocator_adaptor_base(BOOST_FWD_REF(OuterA2) outerAlloc, const InnerAllocs &...args)
609
+ : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc))
610
+ , m_inner(args...)
611
+ {}
612
+
613
+ scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base& other)
614
+ : outer_allocator_type(other.outer_allocator())
615
+ , m_inner(other.inner_allocator())
616
+ {}
617
+
618
+ scoped_allocator_adaptor_base(BOOST_RV_REF(scoped_allocator_adaptor_base) other)
619
+ : outer_allocator_type(::boost::move(other.outer_allocator()))
620
+ , m_inner(::boost::move(other.inner_allocator()))
621
+ {}
622
+
623
+ template <class OuterA2>
624
+ scoped_allocator_adaptor_base
625
+ (const scoped_allocator_adaptor_base<OuterA2, InnerAllocs...>& other)
626
+ : outer_allocator_type(other.outer_allocator())
627
+ , m_inner(other.inner_allocator())
628
+ {}
629
+
630
+ template <class OuterA2>
631
+ scoped_allocator_adaptor_base
632
+ (BOOST_RV_REF_BEG scoped_allocator_adaptor_base
633
+ <OuterA2, InnerAllocs...> BOOST_RV_REF_END other)
634
+ : outer_allocator_type(other.outer_allocator())
635
+ , m_inner(other.inner_allocator())
636
+ {}
637
+
638
+ protected:
639
+ struct internal_type_t{};
640
+
641
+ template <class OuterA2>
642
+ scoped_allocator_adaptor_base
643
+ ( internal_type_t
644
+ , BOOST_FWD_REF(OuterA2) outerAlloc
645
+ , const inner_allocator_type &inner)
646
+ : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc))
647
+ , m_inner(inner)
648
+ {}
649
+
650
+ public:
651
+
652
+ scoped_allocator_adaptor_base &operator=
653
+ (BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor_base) other)
654
+ {
655
+ outer_allocator_type::operator=(other.outer_allocator());
656
+ m_inner = other.inner_allocator();
657
+ return *this;
658
+ }
659
+
660
+ scoped_allocator_adaptor_base &operator=(BOOST_RV_REF(scoped_allocator_adaptor_base) other)
661
+ {
662
+ outer_allocator_type::operator=(boost::move(other.outer_allocator()));
663
+ m_inner = ::boost::move(other.inner_allocator());
664
+ return *this;
665
+ }
666
+
667
+ void swap(scoped_allocator_adaptor_base &r)
668
+ {
669
+ boost::container::swap_dispatch(this->outer_allocator(), r.outer_allocator());
670
+ boost::container::swap_dispatch(this->m_inner, r.inner_allocator());
671
+ }
672
+
673
+ inner_allocator_type& inner_allocator()
674
+ { return m_inner; }
675
+
676
+ inner_allocator_type const& inner_allocator() const
677
+ { return m_inner; }
678
+
679
+ outer_allocator_type & outer_allocator()
680
+ { return static_cast<outer_allocator_type&>(*this); }
681
+
682
+ const outer_allocator_type &outer_allocator() const
683
+ { return static_cast<const outer_allocator_type&>(*this); }
684
+
685
+ private:
686
+ inner_allocator_type m_inner;
687
+ };
688
+
689
+ #else //#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
690
+
691
+ //Let's add a dummy first template parameter to allow creating
692
+ //specializations up to maximum InnerAlloc count
693
+ template <
694
+ typename OuterAlloc
695
+ , bool Dummy
696
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, class Q)
697
+ >
698
+ class scoped_allocator_adaptor_base;
699
+
700
+ //Specializations for the adaptor with InnerAlloc allocators
701
+
702
+ #define BOOST_PP_LOCAL_MACRO(n) \
703
+ template <typename OuterAlloc \
704
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, class Q) \
705
+ > \
706
+ class scoped_allocator_adaptor_base<OuterAlloc, true \
707
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, Q) \
708
+ BOOST_PP_ENUM_TRAILING( BOOST_PP_SUB(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, n) \
709
+ , BOOST_CONTAINER_PP_IDENTITY, nat) \
710
+ > \
711
+ : public OuterAlloc \
712
+ { \
713
+ typedef allocator_traits<OuterAlloc> outer_traits_type; \
714
+ BOOST_COPYABLE_AND_MOVABLE(scoped_allocator_adaptor_base) \
715
+ \
716
+ public: \
717
+ template <class OuterA2> \
718
+ struct rebind_base \
719
+ { \
720
+ typedef scoped_allocator_adaptor_base<OuterA2, true BOOST_PP_ENUM_TRAILING_PARAMS(n, Q) \
721
+ BOOST_PP_ENUM_TRAILING \
722
+ ( BOOST_PP_SUB(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, n) \
723
+ , BOOST_CONTAINER_PP_IDENTITY, nat) \
724
+ > other; \
725
+ }; \
726
+ \
727
+ typedef OuterAlloc outer_allocator_type; \
728
+ typedef scoped_allocator_adaptor<BOOST_PP_ENUM_PARAMS(n, Q) \
729
+ BOOST_PP_ENUM_TRAILING \
730
+ ( BOOST_PP_SUB(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, n) \
731
+ , BOOST_CONTAINER_PP_IDENTITY, nat) \
732
+ > inner_allocator_type; \
733
+ typedef allocator_traits<inner_allocator_type> inner_traits_type; \
734
+ typedef boost::integral_constant< \
735
+ bool, \
736
+ outer_traits_type::propagate_on_container_copy_assignment::value || \
737
+ inner_allocator_type::propagate_on_container_copy_assignment::value \
738
+ > propagate_on_container_copy_assignment; \
739
+ typedef boost::integral_constant< \
740
+ bool, \
741
+ outer_traits_type::propagate_on_container_move_assignment::value || \
742
+ inner_allocator_type::propagate_on_container_move_assignment::value \
743
+ > propagate_on_container_move_assignment; \
744
+ typedef boost::integral_constant< \
745
+ bool, \
746
+ outer_traits_type::propagate_on_container_swap::value || \
747
+ inner_allocator_type::propagate_on_container_swap::value \
748
+ > propagate_on_container_swap; \
749
+ \
750
+ scoped_allocator_adaptor_base() \
751
+ {} \
752
+ \
753
+ template <class OuterA2> \
754
+ scoped_allocator_adaptor_base(BOOST_FWD_REF(OuterA2) outerAlloc \
755
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_CONST_REF_PARAM_LIST_Q, _)) \
756
+ : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc)) \
757
+ , m_inner(BOOST_PP_ENUM_PARAMS(n, q)) \
758
+ {} \
759
+ \
760
+ scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base& other) \
761
+ : outer_allocator_type(other.outer_allocator()) \
762
+ , m_inner(other.inner_allocator()) \
763
+ {} \
764
+ \
765
+ scoped_allocator_adaptor_base(BOOST_RV_REF(scoped_allocator_adaptor_base) other) \
766
+ : outer_allocator_type(::boost::move(other.outer_allocator())) \
767
+ , m_inner(::boost::move(other.inner_allocator())) \
768
+ {} \
769
+ \
770
+ template <class OuterA2> \
771
+ scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base<OuterA2, true \
772
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, Q) \
773
+ BOOST_PP_ENUM_TRAILING \
774
+ ( BOOST_PP_SUB(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, n) \
775
+ , BOOST_CONTAINER_PP_IDENTITY, nat) \
776
+ >& other) \
777
+ : outer_allocator_type(other.outer_allocator()) \
778
+ , m_inner(other.inner_allocator()) \
779
+ {} \
780
+ \
781
+ template <class OuterA2> \
782
+ scoped_allocator_adaptor_base \
783
+ (BOOST_RV_REF_BEG scoped_allocator_adaptor_base<OuterA2, true \
784
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, Q) \
785
+ BOOST_PP_ENUM_TRAILING \
786
+ ( BOOST_PP_SUB(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, n) \
787
+ , BOOST_CONTAINER_PP_IDENTITY, nat) \
788
+ > BOOST_RV_REF_END other) \
789
+ : outer_allocator_type(other.outer_allocator()) \
790
+ , m_inner(other.inner_allocator()) \
791
+ {} \
792
+ \
793
+ protected: \
794
+ struct internal_type_t{}; \
795
+ \
796
+ template <class OuterA2> \
797
+ scoped_allocator_adaptor_base \
798
+ ( internal_type_t \
799
+ , BOOST_FWD_REF(OuterA2) outerAlloc \
800
+ , const inner_allocator_type &inner) \
801
+ : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc)) \
802
+ , m_inner(inner) \
803
+ {} \
804
+ \
805
+ public: \
806
+ scoped_allocator_adaptor_base &operator= \
807
+ (BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor_base) other) \
808
+ { \
809
+ outer_allocator_type::operator=(other.outer_allocator()); \
810
+ m_inner = other.inner_allocator(); \
811
+ return *this; \
812
+ } \
813
+ \
814
+ scoped_allocator_adaptor_base &operator=(BOOST_RV_REF(scoped_allocator_adaptor_base) other) \
815
+ { \
816
+ outer_allocator_type::operator=(boost::move(other.outer_allocator())); \
817
+ m_inner = ::boost::move(other.inner_allocator()); \
818
+ return *this; \
819
+ } \
820
+ \
821
+ void swap(scoped_allocator_adaptor_base &r) \
822
+ { \
823
+ boost::container::swap_dispatch(this->outer_allocator(), r.outer_allocator()); \
824
+ boost::container::swap_dispatch(this->m_inner, r.inner_allocator()); \
825
+ } \
826
+ \
827
+ inner_allocator_type& inner_allocator() \
828
+ { return m_inner; } \
829
+ \
830
+ inner_allocator_type const& inner_allocator() const \
831
+ { return m_inner; } \
832
+ \
833
+ outer_allocator_type & outer_allocator() \
834
+ { return static_cast<outer_allocator_type&>(*this); } \
835
+ \
836
+ const outer_allocator_type &outer_allocator() const \
837
+ { return static_cast<const outer_allocator_type&>(*this); } \
838
+ \
839
+ private: \
840
+ inner_allocator_type m_inner; \
841
+ }; \
842
+ //!
843
+ #define BOOST_PP_LOCAL_LIMITS (1, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
844
+ #include BOOST_PP_LOCAL_ITERATE()
845
+
846
+ #endif //#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
847
+
848
+ //Specialization for adaptor without any InnerAlloc
849
+ template <typename OuterAlloc>
850
+ class scoped_allocator_adaptor_base
851
+ < OuterAlloc
852
+ #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
853
+ , true
854
+ BOOST_PP_ENUM_TRAILING(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, BOOST_CONTAINER_PP_IDENTITY, nat)
855
+ #endif
856
+ >
857
+ : public OuterAlloc
858
+ {
859
+ BOOST_COPYABLE_AND_MOVABLE(scoped_allocator_adaptor_base)
860
+ public:
861
+
862
+ template <class U>
863
+ struct rebind_base
864
+ {
865
+ typedef scoped_allocator_adaptor_base
866
+ <typename allocator_traits<OuterAlloc>::template portable_rebind_alloc<U>::type
867
+ #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
868
+ , true
869
+ BOOST_PP_ENUM_TRAILING(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, BOOST_CONTAINER_PP_IDENTITY, container_detail::nat)
870
+ #endif
871
+ > other;
872
+ };
873
+
874
+ typedef OuterAlloc outer_allocator_type;
875
+ typedef allocator_traits<OuterAlloc> outer_traits_type;
876
+ typedef scoped_allocator_adaptor<OuterAlloc> inner_allocator_type;
877
+ typedef allocator_traits<inner_allocator_type> inner_traits_type;
878
+ typedef typename outer_traits_type::
879
+ propagate_on_container_copy_assignment propagate_on_container_copy_assignment;
880
+ typedef typename outer_traits_type::
881
+ propagate_on_container_move_assignment propagate_on_container_move_assignment;
882
+ typedef typename outer_traits_type::
883
+ propagate_on_container_swap propagate_on_container_swap;
884
+
885
+ scoped_allocator_adaptor_base()
886
+ {}
887
+
888
+ template <class OuterA2>
889
+ scoped_allocator_adaptor_base(BOOST_FWD_REF(OuterA2) outerAlloc)
890
+ : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc))
891
+ {}
892
+
893
+ scoped_allocator_adaptor_base(const scoped_allocator_adaptor_base& other)
894
+ : outer_allocator_type(other.outer_allocator())
895
+ {}
896
+
897
+ scoped_allocator_adaptor_base(BOOST_RV_REF(scoped_allocator_adaptor_base) other)
898
+ : outer_allocator_type(::boost::move(other.outer_allocator()))
899
+ {}
900
+
901
+ template <class OuterA2>
902
+ scoped_allocator_adaptor_base
903
+ (const scoped_allocator_adaptor_base<
904
+ OuterA2
905
+ #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
906
+ , true
907
+ BOOST_PP_ENUM_TRAILING(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, BOOST_CONTAINER_PP_IDENTITY, container_detail::nat)
908
+ #endif
909
+ >& other)
910
+ : outer_allocator_type(other.outer_allocator())
911
+ {}
912
+
913
+ template <class OuterA2>
914
+ scoped_allocator_adaptor_base
915
+ (BOOST_RV_REF_BEG scoped_allocator_adaptor_base<
916
+ OuterA2
917
+ #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
918
+ , true
919
+ BOOST_PP_ENUM_TRAILING(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, BOOST_CONTAINER_PP_IDENTITY, container_detail::nat)
920
+ #endif
921
+ > BOOST_RV_REF_END other)
922
+ : outer_allocator_type(other.outer_allocator())
923
+ {}
924
+
925
+ protected:
926
+ struct internal_type_t{};
927
+
928
+ template <class OuterA2>
929
+ scoped_allocator_adaptor_base(internal_type_t, BOOST_FWD_REF(OuterA2) outerAlloc, const inner_allocator_type &)
930
+ : outer_allocator_type(::boost::forward<OuterA2>(outerAlloc))
931
+ {}
932
+
933
+ public:
934
+ scoped_allocator_adaptor_base &operator=(BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor_base) other)
935
+ {
936
+ outer_allocator_type::operator=(other.outer_allocator());
937
+ return *this;
938
+ }
939
+
940
+ scoped_allocator_adaptor_base &operator=(BOOST_RV_REF(scoped_allocator_adaptor_base) other)
941
+ {
942
+ outer_allocator_type::operator=(boost::move(other.outer_allocator()));
943
+ return *this;
944
+ }
945
+
946
+ void swap(scoped_allocator_adaptor_base &r)
947
+ {
948
+ boost::container::swap_dispatch(this->outer_allocator(), r.outer_allocator());
949
+ }
950
+
951
+ inner_allocator_type& inner_allocator()
952
+ { return static_cast<inner_allocator_type&>(*this); }
953
+
954
+ inner_allocator_type const& inner_allocator() const
955
+ { return static_cast<const inner_allocator_type&>(*this); }
956
+
957
+ outer_allocator_type & outer_allocator()
958
+ { return static_cast<outer_allocator_type&>(*this); }
959
+
960
+ const outer_allocator_type &outer_allocator() const
961
+ { return static_cast<const outer_allocator_type&>(*this); }
962
+ };
963
+
964
+ } //namespace container_detail {
965
+
966
+ ///@endcond
967
+
968
+ //Scoped allocator
969
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
970
+
971
+ #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST)
972
+
973
+ //! This class is a C++03-compatible implementation of std::scoped_allocator_adaptor.
974
+ //! The class template scoped_allocator_adaptor is an allocator template that specifies
975
+ //! the memory resource (the outer allocator) to be used by a container (as any other
976
+ //! allocator does) and also specifies an inner allocator resource to be passed to
977
+ //! the constructor of every element within the container.
978
+ //!
979
+ //! This adaptor is
980
+ //! instantiated with one outer and zero or more inner allocator types. If
981
+ //! instantiated with only one allocator type, the inner allocator becomes the
982
+ //! scoped_allocator_adaptor itself, thus using the same allocator resource for the
983
+ //! container and every element within the container and, if the elements themselves
984
+ //! are containers, each of their elements recursively. If instantiated with more than
985
+ //! one allocator, the first allocator is the outer allocator for use by the container,
986
+ //! the second allocator is passed to the constructors of the container's elements,
987
+ //! and, if the elements themselves are containers, the third allocator is passed to
988
+ //! the elements' elements, and so on. If containers are nested to a depth greater
989
+ //! than the number of allocators, the last allocator is used repeatedly, as in the
990
+ //! single-allocator case, for any remaining recursions.
991
+ //!
992
+ //! [<b>Note</b>: The
993
+ //! scoped_allocator_adaptor is derived from the outer allocator type so it can be
994
+ //! substituted for the outer allocator type in most expressions. -end note]
995
+ //!
996
+ //! In the construct member functions, `OUTERMOST(x)` is x if x does not have
997
+ //! an `outer_allocator()` member function and
998
+ //! `OUTERMOST(x.outer_allocator())` otherwise; `OUTERMOST_ALLOC_TRAITS(x)` is
999
+ //! `allocator_traits<decltype(OUTERMOST(x))>`.
1000
+ //!
1001
+ //! [<b>Note</b>: `OUTERMOST(x)` and
1002
+ //! `OUTERMOST_ALLOC_TRAITS(x)` are recursive operations. It is incumbent upon
1003
+ //! the definition of `outer_allocator()` to ensure that the recursion terminates.
1004
+ //! It will terminate for all instantiations of scoped_allocator_adaptor. -end note]
1005
+ template <typename OuterAlloc, typename ...InnerAllocs>
1006
+ class scoped_allocator_adaptor
1007
+
1008
+ #else // #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST)
1009
+
1010
+ template <typename OuterAlloc, typename ...InnerAllocs>
1011
+ class scoped_allocator_adaptor<OuterAlloc, InnerAllocs...>
1012
+
1013
+ #endif // #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST)
1014
+
1015
+ #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1016
+
1017
+ template <typename OuterAlloc
1018
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, class Q)
1019
+ >
1020
+ class scoped_allocator_adaptor
1021
+ #endif
1022
+ : public container_detail::scoped_allocator_adaptor_base
1023
+ <OuterAlloc
1024
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1025
+ , InnerAllocs...
1026
+ #else
1027
+ , true BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, Q)
1028
+ #endif
1029
+ >
1030
+ {
1031
+ BOOST_COPYABLE_AND_MOVABLE(scoped_allocator_adaptor)
1032
+
1033
+ public:
1034
+ /// @cond
1035
+ typedef container_detail::scoped_allocator_adaptor_base
1036
+ <OuterAlloc
1037
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1038
+ , InnerAllocs...
1039
+ #else
1040
+ , true BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, Q)
1041
+ #endif
1042
+ > base_type;
1043
+ typedef typename base_type::internal_type_t internal_type_t;
1044
+ /// @endcond
1045
+ typedef OuterAlloc outer_allocator_type;
1046
+ //! Type: For exposition only
1047
+ //!
1048
+ typedef allocator_traits<OuterAlloc> outer_traits_type;
1049
+ //! Type: `scoped_allocator_adaptor<OuterAlloc>` if `sizeof...(InnerAllocs)` is zero; otherwise,
1050
+ //! `scoped_allocator_adaptor<InnerAllocs...>`.
1051
+ typedef typename base_type::inner_allocator_type inner_allocator_type;
1052
+ typedef allocator_traits<inner_allocator_type> inner_traits_type;
1053
+ typedef typename outer_traits_type::value_type value_type;
1054
+ typedef typename outer_traits_type::size_type size_type;
1055
+ typedef typename outer_traits_type::difference_type difference_type;
1056
+ typedef typename outer_traits_type::pointer pointer;
1057
+ typedef typename outer_traits_type::const_pointer const_pointer;
1058
+ typedef typename outer_traits_type::void_pointer void_pointer;
1059
+ typedef typename outer_traits_type::const_void_pointer const_void_pointer;
1060
+ //! Type: `true_type` if `allocator_traits<Allocator>::propagate_on_container_copy_assignment::value` is
1061
+ //! true for any `Allocator` in the set of `OuterAlloc` and `InnerAllocs...`; otherwise, false_type.
1062
+ typedef typename base_type::
1063
+ propagate_on_container_copy_assignment propagate_on_container_copy_assignment;
1064
+ //! Type: `true_type` if `allocator_traits<Allocator>::propagate_on_container_move_assignment::value` is
1065
+ //! true for any `Allocator` in the set of `OuterAlloc` and `InnerAllocs...`; otherwise, false_type.
1066
+ typedef typename base_type::
1067
+ propagate_on_container_move_assignment propagate_on_container_move_assignment;
1068
+ //! Type: `true_type` if `allocator_traits<Allocator>::propagate_on_container_swap::value` is true for any
1069
+ //! `Allocator` in the set of `OuterAlloc` and `InnerAllocs...`; otherwise, false_type.
1070
+ typedef typename base_type::
1071
+ propagate_on_container_swap propagate_on_container_swap;
1072
+
1073
+ //! Type: Rebinds scoped allocator to
1074
+ //! `typedef scoped_allocator_adaptor
1075
+ //! < typename outer_traits_type::template portable_rebind_alloc<U>::type
1076
+ //! , InnerAllocs... >`
1077
+ template <class U>
1078
+ struct rebind
1079
+ {
1080
+ typedef scoped_allocator_adaptor
1081
+ < typename outer_traits_type::template portable_rebind_alloc<U>::type
1082
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1083
+ , InnerAllocs...
1084
+ #else
1085
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, Q)
1086
+ #endif
1087
+ > other;
1088
+ };
1089
+
1090
+ //! <b>Effects</b>: value-initializes the OuterAlloc base class
1091
+ //! and the inner allocator object.
1092
+ scoped_allocator_adaptor()
1093
+ {}
1094
+
1095
+ ~scoped_allocator_adaptor()
1096
+ {}
1097
+
1098
+ //! <b>Effects</b>: initializes each allocator within the adaptor with
1099
+ //! the corresponding allocator from other.
1100
+ scoped_allocator_adaptor(const scoped_allocator_adaptor& other)
1101
+ : base_type(other.base())
1102
+ {}
1103
+
1104
+ //! <b>Effects</b>: move constructs each allocator within the adaptor with
1105
+ //! the corresponding allocator from other.
1106
+ scoped_allocator_adaptor(BOOST_RV_REF(scoped_allocator_adaptor) other)
1107
+ : base_type(::boost::move(other.base()))
1108
+ {}
1109
+
1110
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1111
+
1112
+ //! <b>Requires</b>: OuterAlloc shall be constructible from OuterA2.
1113
+ //!
1114
+ //! <b>Effects</b>: initializes the OuterAlloc base class with boost::forward<OuterA2>(outerAlloc) and inner
1115
+ //! with innerAllocs...(hence recursively initializing each allocator within the adaptor with the
1116
+ //! corresponding allocator from the argument list).
1117
+ template <class OuterA2>
1118
+ scoped_allocator_adaptor(BOOST_FWD_REF(OuterA2) outerAlloc, const InnerAllocs & ...innerAllocs)
1119
+ : base_type(::boost::forward<OuterA2>(outerAlloc), innerAllocs...)
1120
+ {}
1121
+ #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1122
+
1123
+ #define BOOST_PP_LOCAL_MACRO(n) \
1124
+ template <class OuterA2> \
1125
+ scoped_allocator_adaptor(BOOST_FWD_REF(OuterA2) outerAlloc \
1126
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_CONST_REF_PARAM_LIST_Q, _)) \
1127
+ : base_type(::boost::forward<OuterA2>(outerAlloc) \
1128
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, q) \
1129
+ ) \
1130
+ {} \
1131
+ //!
1132
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
1133
+ #include BOOST_PP_LOCAL_ITERATE()
1134
+
1135
+ #endif // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1136
+
1137
+ //! <b>Requires</b>: OuterAlloc shall be constructible from OuterA2.
1138
+ //!
1139
+ //! <b>Effects</b>: initializes each allocator within the adaptor with the corresponding allocator from other.
1140
+ template <class OuterA2>
1141
+ scoped_allocator_adaptor(const scoped_allocator_adaptor<OuterA2
1142
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1143
+ , InnerAllocs...
1144
+ #else
1145
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, Q)
1146
+ #endif
1147
+ > &other)
1148
+ : base_type(other.base())
1149
+ {}
1150
+
1151
+ //! <b>Requires</b>: OuterAlloc shall be constructible from OuterA2.
1152
+ //!
1153
+ //! <b>Effects</b>: initializes each allocator within the adaptor with the corresponding allocator
1154
+ //! rvalue from other.
1155
+ template <class OuterA2>
1156
+ scoped_allocator_adaptor(BOOST_RV_REF_BEG scoped_allocator_adaptor<OuterA2
1157
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1158
+ , InnerAllocs...
1159
+ #else
1160
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, Q)
1161
+ #endif
1162
+ > BOOST_RV_REF_END other)
1163
+ : base_type(::boost::move(other.base()))
1164
+ {}
1165
+
1166
+ scoped_allocator_adaptor &operator=(BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor) other)
1167
+ {
1168
+ base_type::operator=(static_cast<const base_type &>(other));
1169
+ return *this;
1170
+ }
1171
+
1172
+ scoped_allocator_adaptor &operator=(BOOST_RV_REF(scoped_allocator_adaptor) other)
1173
+ {
1174
+ base_type::operator=(boost::move(static_cast<scoped_allocator_adaptor&>(other)));
1175
+ return *this;
1176
+ }
1177
+
1178
+ //! <b>Effects</b>: swaps *this with r.
1179
+ //!
1180
+ void swap(scoped_allocator_adaptor &r)
1181
+ {
1182
+ base_type::swap(r);
1183
+ }
1184
+
1185
+ //! <b>Effects</b>: swaps *this with r.
1186
+ //!
1187
+ friend void swap(scoped_allocator_adaptor &l, scoped_allocator_adaptor &r)
1188
+ { l.swap(r); }
1189
+
1190
+ //! <b>Returns</b>:
1191
+ //! `static_cast<OuterAlloc&>(*this)`.
1192
+ outer_allocator_type & outer_allocator()
1193
+ { return *this; }
1194
+
1195
+ //! <b>Returns</b>:
1196
+ //! `static_cast<const OuterAlloc&>(*this)`.
1197
+ const outer_allocator_type &outer_allocator() const
1198
+ { return *this; }
1199
+
1200
+ //! <b>Returns</b>:
1201
+ //! *this if `sizeof...(InnerAllocs)` is zero; otherwise, inner.
1202
+ inner_allocator_type& inner_allocator()
1203
+ { return base_type::inner_allocator(); }
1204
+
1205
+ //! <b>Returns</b>:
1206
+ //! *this if `sizeof...(InnerAllocs)` is zero; otherwise, inner.
1207
+ inner_allocator_type const& inner_allocator() const
1208
+ { return base_type::inner_allocator(); }
1209
+
1210
+ //! <b>Returns</b>:
1211
+ //! `allocator_traits<OuterAlloc>::max_size(outer_allocator())`.
1212
+ size_type max_size() const
1213
+ {
1214
+ return outer_traits_type::max_size(this->outer_allocator());
1215
+ }
1216
+
1217
+ //! <b>Effects</b>:
1218
+ //! calls `OUTERMOST_ALLOC_TRAITS(*this)::destroy(OUTERMOST(*this), p)`.
1219
+ template <class T>
1220
+ void destroy(T* p)
1221
+ {
1222
+ allocator_traits<typename outermost_allocator<OuterAlloc>::type>
1223
+ ::destroy(get_outermost_allocator(this->outer_allocator()), p);
1224
+ }
1225
+
1226
+ //! <b>Returns</b>:
1227
+ //! `allocator_traits<OuterAlloc>::allocate(outer_allocator(), n)`.
1228
+ pointer allocate(size_type n)
1229
+ {
1230
+ return outer_traits_type::allocate(this->outer_allocator(), n);
1231
+ }
1232
+
1233
+ //! <b>Returns</b>:
1234
+ //! `allocator_traits<OuterAlloc>::allocate(outer_allocator(), n, hint)`.
1235
+ pointer allocate(size_type n, const_void_pointer hint)
1236
+ {
1237
+ return outer_traits_type::allocate(this->outer_allocator(), n, hint);
1238
+ }
1239
+
1240
+ //! <b>Effects</b>:
1241
+ //! `allocator_traits<OuterAlloc>::deallocate(outer_allocator(), p, n)`.
1242
+ void deallocate(pointer p, size_type n)
1243
+ {
1244
+ outer_traits_type::deallocate(this->outer_allocator(), p, n);
1245
+ }
1246
+
1247
+ //! <b>Returns</b>: Allocator new scoped_allocator_adaptor object where each allocator
1248
+ //! A in the adaptor is initialized from the result of calling
1249
+ //! `allocator_traits<Allocator>::select_on_container_copy_construction()` on
1250
+ //! the corresponding allocator in *this.
1251
+ scoped_allocator_adaptor select_on_container_copy_construction() const
1252
+ {
1253
+ return scoped_allocator_adaptor
1254
+ (internal_type_t()
1255
+ ,outer_traits_type::select_on_container_copy_construction(this->outer_allocator())
1256
+ ,inner_traits_type::select_on_container_copy_construction(this->inner_allocator())
1257
+ );
1258
+ }
1259
+ /// @cond
1260
+ base_type &base() { return *this; }
1261
+
1262
+ const base_type &base() const { return *this; }
1263
+ /// @endcond
1264
+
1265
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1266
+
1267
+ //! <b>Effects</b>:
1268
+ //! 1) If `uses_allocator<T, inner_allocator_type>::value` is false calls
1269
+ //! `OUTERMOST_ALLOC_TRAITS(*this)::construct
1270
+ //! (OUTERMOST(*this), p, std::forward<Args>(args)...)`.
1271
+ //!
1272
+ //! 2) Otherwise, if `uses_allocator<T, inner_allocator_type>::value` is true and
1273
+ //! `is_constructible<T, allocator_arg_t, inner_allocator_type, Args...>::value` is true, calls
1274
+ //! `OUTERMOST_ALLOC_TRAITS(*this)::construct(OUTERMOST(*this), p, allocator_arg,
1275
+ //! inner_allocator(), std::forward<Args>(args)...)`.
1276
+ //!
1277
+ //! [<b>Note</b>: In compilers without advanced decltype SFINAE support, `is_constructible` can't
1278
+ //! be implemented so that condition will be replaced by
1279
+ //! constructible_with_allocator_prefix<T>::value. -end note]
1280
+ //!
1281
+ //! 3) Otherwise, if uses_allocator<T, inner_allocator_type>::value is true and
1282
+ //! `is_constructible<T, Args..., inner_allocator_type>::value` is true, calls
1283
+ //! `OUTERMOST_ALLOC_TRAITS(*this)::construct(OUTERMOST(*this), p,
1284
+ //! std::forward<Args>(args)..., inner_allocator())`.
1285
+ //!
1286
+ //! [<b>Note</b>: In compilers without advanced decltype SFINAE support, `is_constructible` can't be
1287
+ //! implemented so that condition will be replaced by
1288
+ //! `constructible_with_allocator_suffix<T>::value`. -end note]
1289
+ //!
1290
+ //! 4) Otherwise, the program is ill-formed.
1291
+ //!
1292
+ //! [<b>Note</b>: An error will result if `uses_allocator` evaluates
1293
+ //! to true but the specific constructor does not take an allocator. This definition prevents a silent
1294
+ //! failure to pass an inner allocator to a contained element. -end note]
1295
+ template < typename T, class ...Args>
1296
+ #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1297
+ void
1298
+ #else
1299
+ typename container_detail::enable_if_c<!container_detail::is_pair<T>::value, void>::type
1300
+ #endif
1301
+ construct(T* p, BOOST_FWD_REF(Args)...args)
1302
+ {
1303
+ container_detail::dispatch_uses_allocator
1304
+ ( uses_allocator<T, inner_allocator_type>()
1305
+ , get_outermost_allocator(this->outer_allocator())
1306
+ , this->inner_allocator()
1307
+ , p, ::boost::forward<Args>(args)...);
1308
+ }
1309
+
1310
+ #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1311
+
1312
+ //Disable this overload if the first argument is pair as some compilers have
1313
+ //overload selection problems when the first parameter is a pair.
1314
+ #define BOOST_PP_LOCAL_MACRO(n) \
1315
+ template < typename T \
1316
+ BOOST_PP_ENUM_TRAILING_PARAMS(n, class P) \
1317
+ > \
1318
+ typename container_detail::enable_if_c<!container_detail::is_pair<T>::value, void>::type \
1319
+ construct(T* p BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
1320
+ { \
1321
+ container_detail::dispatch_uses_allocator \
1322
+ ( uses_allocator<T, inner_allocator_type>() \
1323
+ , get_outermost_allocator(this->outer_allocator()) \
1324
+ , this->inner_allocator() \
1325
+ , p BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
1326
+ } \
1327
+ //!
1328
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
1329
+ #include BOOST_PP_LOCAL_ITERATE()
1330
+
1331
+ #endif // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1332
+
1333
+ template <class T1, class T2>
1334
+ void construct(std::pair<T1,T2>* p)
1335
+ { this->construct_pair(p); }
1336
+
1337
+ template <class T1, class T2>
1338
+ void construct(container_detail::pair<T1,T2>* p)
1339
+ { this->construct_pair(p); }
1340
+
1341
+ template <class T1, class T2, class U, class V>
1342
+ void construct(std::pair<T1, T2>* p, BOOST_FWD_REF(U) x, BOOST_FWD_REF(V) y)
1343
+ { this->construct_pair(p, ::boost::forward<U>(x), ::boost::forward<V>(y)); }
1344
+
1345
+ template <class T1, class T2, class U, class V>
1346
+ void construct(container_detail::pair<T1, T2>* p, BOOST_FWD_REF(U) x, BOOST_FWD_REF(V) y)
1347
+ { this->construct_pair(p, ::boost::forward<U>(x), ::boost::forward<V>(y)); }
1348
+
1349
+ template <class T1, class T2, class U, class V>
1350
+ void construct(std::pair<T1, T2>* p, const std::pair<U, V>& x)
1351
+ { this->construct_pair(p, x); }
1352
+
1353
+ template <class T1, class T2, class U, class V>
1354
+ void construct( container_detail::pair<T1, T2>* p
1355
+ , const container_detail::pair<U, V>& x)
1356
+ { this->construct_pair(p, x); }
1357
+
1358
+ template <class T1, class T2, class U, class V>
1359
+ void construct( std::pair<T1, T2>* p
1360
+ , BOOST_RV_REF_BEG std::pair<U, V> BOOST_RV_REF_END x)
1361
+ { this->construct_pair(p, x); }
1362
+
1363
+ template <class T1, class T2, class U, class V>
1364
+ void construct( container_detail::pair<T1, T2>* p
1365
+ , BOOST_RV_REF_BEG container_detail::pair<U, V> BOOST_RV_REF_END x)
1366
+ { this->construct_pair(p, x); }
1367
+
1368
+ /// @cond
1369
+ private:
1370
+ template <class Pair>
1371
+ void construct_pair(Pair* p)
1372
+ {
1373
+ this->construct(container_detail::addressof(p->first));
1374
+ BOOST_TRY{
1375
+ this->construct(container_detail::addressof(p->second));
1376
+ }
1377
+ BOOST_CATCH(...){
1378
+ this->destroy(container_detail::addressof(p->first));
1379
+ BOOST_RETHROW
1380
+ }
1381
+ BOOST_CATCH_END
1382
+ }
1383
+
1384
+ template <class Pair, class U, class V>
1385
+ void construct_pair(Pair* p, BOOST_FWD_REF(U) x, BOOST_FWD_REF(V) y)
1386
+ {
1387
+ this->construct(container_detail::addressof(p->first), ::boost::forward<U>(x));
1388
+ BOOST_TRY{
1389
+ this->construct(container_detail::addressof(p->second), ::boost::forward<V>(y));
1390
+ }
1391
+ BOOST_CATCH(...){
1392
+ this->destroy(container_detail::addressof(p->first));
1393
+ BOOST_RETHROW
1394
+ }
1395
+ BOOST_CATCH_END
1396
+ }
1397
+
1398
+ template <class Pair, class Pair2>
1399
+ void construct_pair(Pair* p, const Pair2& pr)
1400
+ {
1401
+ this->construct(container_detail::addressof(p->first), pr.first);
1402
+ BOOST_TRY{
1403
+ this->construct(container_detail::addressof(p->second), pr.second);
1404
+ }
1405
+ BOOST_CATCH(...){
1406
+ this->destroy(container_detail::addressof(p->first));
1407
+ BOOST_RETHROW
1408
+ }
1409
+ BOOST_CATCH_END
1410
+ }
1411
+
1412
+ template <class Pair, class Pair2>
1413
+ void construct_pair(Pair* p, BOOST_RV_REF(Pair2) pr)
1414
+ {
1415
+ this->construct(container_detail::addressof(p->first), ::boost::move(pr.first));
1416
+ BOOST_TRY{
1417
+ this->construct(container_detail::addressof(p->second), ::boost::move(pr.second));
1418
+ }
1419
+ BOOST_CATCH(...){
1420
+ this->destroy(container_detail::addressof(p->first));
1421
+ BOOST_RETHROW
1422
+ }
1423
+ BOOST_CATCH_END
1424
+ }
1425
+
1426
+ //template <class T1, class T2, class... Args1, class... Args2>
1427
+ //void construct(pair<T1, T2>* p, piecewise_construct_t, tuple<Args1...> x, tuple<Args2...> y);
1428
+
1429
+ private:
1430
+ template <class OuterA2>
1431
+ scoped_allocator_adaptor(internal_type_t, BOOST_FWD_REF(OuterA2) outer, const inner_allocator_type& inner)
1432
+ : base_type(internal_type_t(), ::boost::forward<OuterA2>(outer), inner)
1433
+ {}
1434
+
1435
+ /// @endcond
1436
+ };
1437
+
1438
+ template <typename OuterA1, typename OuterA2
1439
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1440
+ , typename... InnerAllocs
1441
+ #else
1442
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, class Q)
1443
+ #endif
1444
+ >
1445
+ inline bool operator==(
1446
+ const scoped_allocator_adaptor<OuterA1
1447
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1448
+ ,InnerAllocs...
1449
+ #else
1450
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, Q)
1451
+ #endif
1452
+ >& a,
1453
+ const scoped_allocator_adaptor<OuterA2
1454
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1455
+ ,InnerAllocs...
1456
+ #else
1457
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, Q)
1458
+ #endif
1459
+ >& b)
1460
+ {
1461
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1462
+ const bool has_zero_inner = sizeof...(InnerAllocs) == 0u;
1463
+ #else
1464
+ const bool has_zero_inner =
1465
+ boost::container::container_detail::is_same
1466
+ <Q0, container_detail::nat>::value;
1467
+ #endif
1468
+
1469
+ return a.outer_allocator() == b.outer_allocator()
1470
+ && (has_zero_inner || a.inner_allocator() == b.inner_allocator());
1471
+ }
1472
+
1473
+ template <typename OuterA1, typename OuterA2
1474
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1475
+ , typename... InnerAllocs
1476
+ #else
1477
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, class Q)
1478
+ #endif
1479
+ >
1480
+ inline bool operator!=(
1481
+ const scoped_allocator_adaptor<OuterA1
1482
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1483
+ ,InnerAllocs...
1484
+ #else
1485
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, Q)
1486
+ #endif
1487
+ >& a,
1488
+ const scoped_allocator_adaptor<OuterA2
1489
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1490
+ ,InnerAllocs...
1491
+ #else
1492
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS, Q)
1493
+ #endif
1494
+ >& b)
1495
+ {
1496
+ return ! (a == b);
1497
+ }
1498
+
1499
+ }} // namespace boost { namespace container {
1500
+
1501
+ #include <boost/container/detail/config_end.hpp>
1502
+
1503
+ #endif // BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_HPP