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,1475 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // (C) Copyright Ion Gaztanaga 2005-2012. 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
+ // See http://www.boost.org/libs/container for documentation.
8
+ //
9
+
10
+ #ifndef BOOST_CONTAINER_LIST_HPP
11
+ #define BOOST_CONTAINER_LIST_HPP
12
+
13
+ #if (defined _MSC_VER) && (_MSC_VER >= 1200)
14
+ # pragma once
15
+ #endif
16
+
17
+ #include <boost/container/detail/config_begin.hpp>
18
+ #include <boost/container/detail/workaround.hpp>
19
+ #include <boost/container/container_fwd.hpp>
20
+ #include <boost/container/detail/version_type.hpp>
21
+ #include <boost/container/throw_exception.hpp>
22
+ #include <boost/move/utility.hpp>
23
+ #include <boost/move/iterator.hpp>
24
+ #include <boost/move/detail/move_helpers.hpp>
25
+ #include <boost/intrusive/pointer_traits.hpp>
26
+ #include <boost/container/detail/utilities.hpp>
27
+ #include <boost/container/detail/algorithms.hpp>
28
+ #include <boost/type_traits/has_trivial_destructor.hpp>
29
+ #include <boost/container/detail/mpl.hpp>
30
+ #include <boost/intrusive/list.hpp>
31
+ #include <boost/assert.hpp>
32
+ #include <boost/container/detail/node_alloc_holder.hpp>
33
+
34
+ #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
35
+ #else
36
+ //Preprocessor library to emulate perfect forwarding
37
+ #include <boost/container/detail/preprocessor.hpp>
38
+ #endif
39
+
40
+ #include <iterator>
41
+ #include <utility>
42
+ #include <memory>
43
+ #include <functional>
44
+ #include <algorithm>
45
+
46
+ namespace boost {
47
+ namespace container {
48
+
49
+ /// @cond
50
+ namespace container_detail {
51
+
52
+ template<class VoidPointer>
53
+ struct list_hook
54
+ {
55
+ typedef typename container_detail::bi::make_list_base_hook
56
+ <container_detail::bi::void_pointer<VoidPointer>, container_detail::bi::link_mode<container_detail::bi::normal_link> >::type type;
57
+ };
58
+
59
+ template <class T, class VoidPointer>
60
+ struct list_node
61
+ : public list_hook<VoidPointer>::type
62
+ {
63
+ private:
64
+ list_node();
65
+
66
+ public:
67
+ typedef typename list_hook<VoidPointer>::type hook_type;
68
+ T m_data;
69
+ };
70
+
71
+ template<class Allocator>
72
+ struct intrusive_list_type
73
+ {
74
+ typedef boost::container::allocator_traits<Allocator> allocator_traits_type;
75
+ typedef typename allocator_traits_type::value_type value_type;
76
+ typedef typename boost::intrusive::pointer_traits
77
+ <typename allocator_traits_type::pointer>::template
78
+ rebind_pointer<void>::type
79
+ void_pointer;
80
+ typedef typename container_detail::list_node
81
+ <value_type, void_pointer> node_type;
82
+ typedef typename container_detail::bi::make_list
83
+ < node_type
84
+ , container_detail::bi::base_hook<typename list_hook<void_pointer>::type>
85
+ , container_detail::bi::constant_time_size<true>
86
+ , container_detail::bi::size_type
87
+ <typename allocator_traits_type::size_type>
88
+ >::type container_type;
89
+ typedef container_type type ;
90
+ };
91
+
92
+ template<class T, class IIterator>
93
+ class list_const_iterator
94
+ : public std::iterator< std::bidirectional_iterator_tag, T
95
+ , typename iiterator_types<T, IIterator>::difference_type
96
+ , typename iiterator_types<T, IIterator>::const_pointer
97
+ , typename iiterator_types<T, IIterator>::const_reference>
98
+ {
99
+ protected:
100
+
101
+ IIterator m_it;
102
+
103
+ public:
104
+ typedef typename iiterator_types<T, IIterator>::const_pointer const_pointer;
105
+ typedef typename iiterator_types<T, IIterator>::const_reference const_reference;
106
+
107
+ //Constructors
108
+ list_const_iterator()
109
+ : m_it()
110
+ {}
111
+
112
+ explicit list_const_iterator(const IIterator &it)
113
+ : m_it(it)
114
+ {}
115
+
116
+ //Pointer like operators
117
+ const_reference operator*() const
118
+ { return this->m_it->m_data; }
119
+
120
+ const_pointer operator->() const
121
+ { return ::boost::intrusive::pointer_traits<const_pointer>::pointer_to(this->m_it->m_data); }
122
+
123
+ //Increment / Decrement
124
+ list_const_iterator& operator++()
125
+ { ++this->m_it; return *this; }
126
+
127
+ list_const_iterator operator++(int)
128
+ { IIterator tmp = this->m_it; ++*this; return list_const_iterator(tmp); }
129
+
130
+ list_const_iterator& operator--()
131
+ { --this->m_it; return *this; }
132
+
133
+ list_const_iterator operator--(int)
134
+ { IIterator tmp = this->m_it; --*this; return list_const_iterator(tmp); }
135
+
136
+ //Comparison operators
137
+ friend bool operator== (const list_const_iterator& l, const list_const_iterator& r)
138
+ { return l.m_it == r.m_it; }
139
+
140
+ friend bool operator!= (const list_const_iterator& l, const list_const_iterator& r)
141
+ { return l.m_it != r.m_it; }
142
+
143
+ const IIterator &get() const
144
+ { return this->m_it; }
145
+ };
146
+
147
+ template<class T, class IIterator>
148
+ class list_iterator
149
+ : public list_const_iterator<T, IIterator>
150
+ {
151
+ private:
152
+ typedef list_const_iterator<T, IIterator> const_iterator;
153
+
154
+ public:
155
+ typedef typename iiterator_types<T, IIterator>::pointer pointer;
156
+ typedef typename iiterator_types<T, IIterator>::reference reference;
157
+
158
+ //Constructors
159
+ list_iterator()
160
+ : const_iterator()
161
+ {}
162
+
163
+ explicit list_iterator(const IIterator &it)
164
+ : const_iterator(it)
165
+ {}
166
+
167
+ //Pointer like operators
168
+ reference operator*() const
169
+ { return this->m_it->m_data; }
170
+
171
+ pointer operator->() const
172
+ { return ::boost::intrusive::pointer_traits<pointer>::pointer_to(this->m_it->m_data); }
173
+
174
+ //Increment / Decrement
175
+ list_iterator& operator++()
176
+ { ++this->m_it; return *this; }
177
+
178
+ list_iterator operator++(int)
179
+ { IIterator tmp = this->m_it; ++*this; return list_iterator(tmp); }
180
+
181
+ list_iterator& operator--()
182
+ { --this->m_it; return *this; }
183
+
184
+ list_iterator operator--(int)
185
+ { IIterator tmp = this->m_it; --*this; return list_iterator(tmp); }
186
+
187
+ const IIterator &get() const
188
+ { return this->m_it; }
189
+ };
190
+
191
+ } //namespace container_detail {
192
+ /// @endcond
193
+
194
+ //! A list is a doubly linked list. That is, it is a Sequence that supports both
195
+ //! forward and backward traversal, and (amortized) constant time insertion and
196
+ //! removal of elements at the beginning or the end, or in the middle. Lists have
197
+ //! the important property that insertion and splicing do not invalidate iterators
198
+ //! to list elements, and that even removal invalidates only the iterators that point
199
+ //! to the elements that are removed. The ordering of iterators may be changed
200
+ //! (that is, list<T>::iterator might have a different predecessor or successor
201
+ //! after a list operation than it did before), but the iterators themselves will
202
+ //! not be invalidated or made to point to different elements unless that invalidation
203
+ //! or mutation is explicit.
204
+ #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
205
+ template <class T, class Allocator = std::allocator<T> >
206
+ #else
207
+ template <class T, class Allocator>
208
+ #endif
209
+ class list
210
+ : protected container_detail::node_alloc_holder
211
+ <Allocator, typename container_detail::intrusive_list_type<Allocator>::type>
212
+ {
213
+ /// @cond
214
+ typedef typename
215
+ container_detail::intrusive_list_type<Allocator>::type Icont;
216
+ typedef container_detail::node_alloc_holder<Allocator, Icont> AllocHolder;
217
+ typedef typename AllocHolder::NodePtr NodePtr;
218
+ typedef typename AllocHolder::NodeAlloc NodeAlloc;
219
+ typedef typename AllocHolder::ValAlloc ValAlloc;
220
+ typedef typename AllocHolder::Node Node;
221
+ typedef container_detail::allocator_destroyer<NodeAlloc> Destroyer;
222
+ typedef typename AllocHolder::allocator_v1 allocator_v1;
223
+ typedef typename AllocHolder::allocator_v2 allocator_v2;
224
+ typedef typename AllocHolder::alloc_version alloc_version;
225
+ typedef boost::container::allocator_traits<Allocator> allocator_traits_type;
226
+
227
+ class equal_to_value
228
+ {
229
+ typedef typename AllocHolder::value_type value_type;
230
+ const value_type &t_;
231
+
232
+ public:
233
+ equal_to_value(const value_type &t)
234
+ : t_(t)
235
+ {}
236
+
237
+ bool operator()(const value_type &t)const
238
+ { return t_ == t; }
239
+ };
240
+
241
+ template<class Pred>
242
+ struct ValueCompareToNodeCompare
243
+ : Pred
244
+ {
245
+ ValueCompareToNodeCompare(Pred pred)
246
+ : Pred(pred)
247
+ {}
248
+
249
+ bool operator()(const Node &a, const Node &b) const
250
+ { return static_cast<const Pred&>(*this)(a.m_data, b.m_data); }
251
+
252
+ bool operator()(const Node &a) const
253
+ { return static_cast<const Pred&>(*this)(a.m_data); }
254
+ };
255
+
256
+ BOOST_COPYABLE_AND_MOVABLE(list)
257
+
258
+ typedef container_detail::list_iterator<T, typename Icont::iterator> iterator_impl;
259
+ typedef container_detail::list_const_iterator<T, typename Icont::iterator>const_iterator_impl;
260
+ /// @endcond
261
+
262
+ public:
263
+ //////////////////////////////////////////////
264
+ //
265
+ // types
266
+ //
267
+ //////////////////////////////////////////////
268
+
269
+ typedef T value_type;
270
+ typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
271
+ typedef typename ::boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
272
+ typedef typename ::boost::container::allocator_traits<Allocator>::reference reference;
273
+ typedef typename ::boost::container::allocator_traits<Allocator>::const_reference const_reference;
274
+ typedef typename ::boost::container::allocator_traits<Allocator>::size_type size_type;
275
+ typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
276
+ typedef Allocator allocator_type;
277
+ typedef BOOST_CONTAINER_IMPDEF(NodeAlloc) stored_allocator_type;
278
+ typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator;
279
+ typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator;
280
+ typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<iterator>) reverse_iterator;
281
+ typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<const_iterator>) const_reverse_iterator;
282
+
283
+ //////////////////////////////////////////////
284
+ //
285
+ // construct/copy/destroy
286
+ //
287
+ //////////////////////////////////////////////
288
+
289
+ //! <b>Effects</b>: Default constructs a list.
290
+ //!
291
+ //! <b>Throws</b>: If allocator_type's default constructor throws.
292
+ //!
293
+ //! <b>Complexity</b>: Constant.
294
+ list()
295
+ : AllocHolder()
296
+ {}
297
+
298
+ //! <b>Effects</b>: Constructs a list taking the allocator as parameter.
299
+ //!
300
+ //! <b>Throws</b>: Nothing
301
+ //!
302
+ //! <b>Complexity</b>: Constant.
303
+ explicit list(const allocator_type &a) BOOST_CONTAINER_NOEXCEPT
304
+ : AllocHolder(a)
305
+ {}
306
+
307
+ //! <b>Effects</b>: Constructs a list that will use a copy of allocator a
308
+ //! and inserts n copies of value.
309
+ //!
310
+ //! <b>Throws</b>: If allocator_type's default constructor or copy constructor
311
+ //! throws or T's default or copy constructor throws.
312
+ //!
313
+ //! <b>Complexity</b>: Linear to n.
314
+ explicit list(size_type n)
315
+ : AllocHolder(Allocator())
316
+ { this->resize(n); }
317
+
318
+ //! <b>Effects</b>: Constructs a list that will use a copy of allocator a
319
+ //! and inserts n copies of value.
320
+ //!
321
+ //! <b>Throws</b>: If allocator_type's default constructor or copy constructor
322
+ //! throws or T's default or copy constructor throws.
323
+ //!
324
+ //! <b>Complexity</b>: Linear to n.
325
+ list(size_type n, const T& value, const Allocator& a = Allocator())
326
+ : AllocHolder(a)
327
+ { this->insert(this->cbegin(), n, value); }
328
+
329
+ //! <b>Effects</b>: Copy constructs a list.
330
+ //!
331
+ //! <b>Postcondition</b>: x == *this.
332
+ //!
333
+ //! <b>Throws</b>: If allocator_type's default constructor or copy constructor throws.
334
+ //!
335
+ //! <b>Complexity</b>: Linear to the elements x contains.
336
+ list(const list& x)
337
+ : AllocHolder(x)
338
+ { this->insert(this->cbegin(), x.begin(), x.end()); }
339
+
340
+ //! <b>Effects</b>: Move constructor. Moves mx's resources to *this.
341
+ //!
342
+ //! <b>Throws</b>: If allocator_type's copy constructor throws.
343
+ //!
344
+ //! <b>Complexity</b>: Constant.
345
+ list(BOOST_RV_REF(list) x)
346
+ : AllocHolder(boost::move(static_cast<AllocHolder&>(x)))
347
+ {}
348
+
349
+ //! <b>Effects</b>: Copy constructs a list using the specified allocator.
350
+ //!
351
+ //! <b>Postcondition</b>: x == *this.
352
+ //!
353
+ //! <b>Throws</b>: If allocator_type's default constructor or copy constructor throws.
354
+ //!
355
+ //! <b>Complexity</b>: Linear to the elements x contains.
356
+ list(const list& x, const allocator_type &a)
357
+ : AllocHolder(a)
358
+ { this->insert(this->cbegin(), x.begin(), x.end()); }
359
+
360
+ //! <b>Effects</b>: Move constructor sing the specified allocator.
361
+ //! Moves mx's resources to *this.
362
+ //!
363
+ //! <b>Throws</b>: If allocation or value_type's copy constructor throws.
364
+ //!
365
+ //! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise.
366
+ list(BOOST_RV_REF(list) x, const allocator_type &a)
367
+ : AllocHolder(a)
368
+ {
369
+ if(this->node_alloc() == x.node_alloc()){
370
+ this->icont().swap(x.icont());
371
+ }
372
+ else{
373
+ this->insert(this->cbegin(), x.begin(), x.end());
374
+ }
375
+ }
376
+
377
+ //! <b>Effects</b>: Constructs a list that will use a copy of allocator a
378
+ //! and inserts a copy of the range [first, last) in the list.
379
+ //!
380
+ //! <b>Throws</b>: If allocator_type's default constructor or copy constructor
381
+ //! throws or T's constructor taking an dereferenced InIt throws.
382
+ //!
383
+ //! <b>Complexity</b>: Linear to the range [first, last).
384
+ template <class InpIt>
385
+ list(InpIt first, InpIt last, const Allocator &a = Allocator())
386
+ : AllocHolder(a)
387
+ { this->insert(this->cbegin(), first, last); }
388
+
389
+ //! <b>Effects</b>: Destroys the list. All stored values are destroyed
390
+ //! and used memory is deallocated.
391
+ //!
392
+ //! <b>Throws</b>: Nothing.
393
+ //!
394
+ //! <b>Complexity</b>: Linear to the number of elements.
395
+ ~list() BOOST_CONTAINER_NOEXCEPT
396
+ {} //AllocHolder clears the list
397
+
398
+ //! <b>Effects</b>: Makes *this contain the same elements as x.
399
+ //!
400
+ //! <b>Postcondition</b>: this->size() == x.size(). *this contains a copy
401
+ //! of each of x's elements.
402
+ //!
403
+ //! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
404
+ //!
405
+ //! <b>Complexity</b>: Linear to the number of elements in x.
406
+ list& operator=(BOOST_COPY_ASSIGN_REF(list) x)
407
+ {
408
+ if (&x != this){
409
+ NodeAlloc &this_alloc = this->node_alloc();
410
+ const NodeAlloc &x_alloc = x.node_alloc();
411
+ container_detail::bool_<allocator_traits_type::
412
+ propagate_on_container_copy_assignment::value> flag;
413
+ if(flag && this_alloc != x_alloc){
414
+ this->clear();
415
+ }
416
+ this->AllocHolder::copy_assign_alloc(x);
417
+ this->assign(x.begin(), x.end());
418
+ }
419
+ return *this;
420
+ }
421
+
422
+ //! <b>Effects</b>: Move assignment. All mx's values are transferred to *this.
423
+ //!
424
+ //! <b>Postcondition</b>: x.empty(). *this contains a the elements x had
425
+ //! before the function.
426
+ //!
427
+ //! <b>Throws</b>: If allocator_type's copy constructor throws.
428
+ //!
429
+ //! <b>Complexity</b>: Constant.
430
+ list& operator=(BOOST_RV_REF(list) x)
431
+ {
432
+ if (&x != this){
433
+ NodeAlloc &this_alloc = this->node_alloc();
434
+ NodeAlloc &x_alloc = x.node_alloc();
435
+ //If allocators are equal we can just swap pointers
436
+ if(this_alloc == x_alloc){
437
+ //Destroy and swap pointers
438
+ this->clear();
439
+ this->icont() = boost::move(x.icont());
440
+ //Move allocator if needed
441
+ this->AllocHolder::move_assign_alloc(x);
442
+ }
443
+ //If unequal allocators, then do a one by one move
444
+ else{
445
+ typedef typename std::iterator_traits<iterator>::iterator_category ItCat;
446
+ this->assign( boost::make_move_iterator(x.begin())
447
+ , boost::make_move_iterator(x.end()));
448
+ }
449
+ }
450
+ return *this;
451
+ }
452
+
453
+ //! <b>Effects</b>: Assigns the n copies of val to *this.
454
+ //!
455
+ //! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
456
+ //!
457
+ //! <b>Complexity</b>: Linear to n.
458
+ void assign(size_type n, const T& val)
459
+ {
460
+ typedef constant_iterator<value_type, difference_type> cvalue_iterator;
461
+ return this->assign(cvalue_iterator(val, n), cvalue_iterator());
462
+ }
463
+
464
+ //! <b>Effects</b>: Assigns the the range [first, last) to *this.
465
+ //!
466
+ //! <b>Throws</b>: If memory allocation throws or
467
+ //! T's constructor from dereferencing InpIt throws.
468
+ //!
469
+ //! <b>Complexity</b>: Linear to n.
470
+ template <class InpIt>
471
+ void assign(InpIt first, InpIt last
472
+ #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
473
+ , typename container_detail::enable_if_c
474
+ < !container_detail::is_convertible<InpIt, size_type>::value
475
+ >::type * = 0
476
+ #endif
477
+ )
478
+ {
479
+ iterator first1 = this->begin();
480
+ const iterator last1 = this->end();
481
+ for ( ; first1 != last1 && first != last; ++first1, ++first)
482
+ *first1 = *first;
483
+ if (first == last)
484
+ this->erase(first1, last1);
485
+ else{
486
+ this->insert(last1, first, last);
487
+ }
488
+ }
489
+
490
+ //! <b>Effects</b>: Returns a copy of the internal allocator.
491
+ //!
492
+ //! <b>Throws</b>: If allocator's copy constructor throws.
493
+ //!
494
+ //! <b>Complexity</b>: Constant.
495
+ allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT
496
+ { return allocator_type(this->node_alloc()); }
497
+
498
+ //! <b>Effects</b>: Returns a reference to the internal allocator.
499
+ //!
500
+ //! <b>Throws</b>: Nothing
501
+ //!
502
+ //! <b>Complexity</b>: Constant.
503
+ //!
504
+ //! <b>Note</b>: Non-standard extension.
505
+ stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT
506
+ { return this->node_alloc(); }
507
+
508
+ //! <b>Effects</b>: Returns a reference to the internal allocator.
509
+ //!
510
+ //! <b>Throws</b>: Nothing
511
+ //!
512
+ //! <b>Complexity</b>: Constant.
513
+ //!
514
+ //! <b>Note</b>: Non-standard extension.
515
+ const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT
516
+ { return this->node_alloc(); }
517
+
518
+ //////////////////////////////////////////////
519
+ //
520
+ // iterators
521
+ //
522
+ //////////////////////////////////////////////
523
+
524
+ //! <b>Effects</b>: Returns an iterator to the first element contained in the list.
525
+ //!
526
+ //! <b>Throws</b>: Nothing.
527
+ //!
528
+ //! <b>Complexity</b>: Constant.
529
+ iterator begin() BOOST_CONTAINER_NOEXCEPT
530
+ { return iterator(this->icont().begin()); }
531
+
532
+ //! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
533
+ //!
534
+ //! <b>Throws</b>: Nothing.
535
+ //!
536
+ //! <b>Complexity</b>: Constant.
537
+ const_iterator begin() const BOOST_CONTAINER_NOEXCEPT
538
+ { return this->cbegin(); }
539
+
540
+ //! <b>Effects</b>: Returns an iterator to the end of the list.
541
+ //!
542
+ //! <b>Throws</b>: Nothing.
543
+ //!
544
+ //! <b>Complexity</b>: Constant.
545
+ iterator end() BOOST_CONTAINER_NOEXCEPT
546
+ { return iterator(this->icont().end()); }
547
+
548
+ //! <b>Effects</b>: Returns a const_iterator to the end of the list.
549
+ //!
550
+ //! <b>Throws</b>: Nothing.
551
+ //!
552
+ //! <b>Complexity</b>: Constant.
553
+ const_iterator end() const BOOST_CONTAINER_NOEXCEPT
554
+ { return this->cend(); }
555
+
556
+ //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
557
+ //! of the reversed list.
558
+ //!
559
+ //! <b>Throws</b>: Nothing.
560
+ //!
561
+ //! <b>Complexity</b>: Constant.
562
+ reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT
563
+ { return reverse_iterator(end()); }
564
+
565
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
566
+ //! of the reversed list.
567
+ //!
568
+ //! <b>Throws</b>: Nothing.
569
+ //!
570
+ //! <b>Complexity</b>: Constant.
571
+ const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT
572
+ { return this->crbegin(); }
573
+
574
+ //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
575
+ //! of the reversed list.
576
+ //!
577
+ //! <b>Throws</b>: Nothing.
578
+ //!
579
+ //! <b>Complexity</b>: Constant.
580
+ reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT
581
+ { return reverse_iterator(begin()); }
582
+
583
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
584
+ //! of the reversed list.
585
+ //!
586
+ //! <b>Throws</b>: Nothing.
587
+ //!
588
+ //! <b>Complexity</b>: Constant.
589
+ const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT
590
+ { return this->crend(); }
591
+
592
+ //! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
593
+ //!
594
+ //! <b>Throws</b>: Nothing.
595
+ //!
596
+ //! <b>Complexity</b>: Constant.
597
+ const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT
598
+ { return const_iterator(this->non_const_icont().begin()); }
599
+
600
+ //! <b>Effects</b>: Returns a const_iterator to the end of the list.
601
+ //!
602
+ //! <b>Throws</b>: Nothing.
603
+ //!
604
+ //! <b>Complexity</b>: Constant.
605
+ const_iterator cend() const BOOST_CONTAINER_NOEXCEPT
606
+ { return const_iterator(this->non_const_icont().end()); }
607
+
608
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
609
+ //! of the reversed list.
610
+ //!
611
+ //! <b>Throws</b>: Nothing.
612
+ //!
613
+ //! <b>Complexity</b>: Constant.
614
+ const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT
615
+ { return const_reverse_iterator(this->cend()); }
616
+
617
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
618
+ //! of the reversed list.
619
+ //!
620
+ //! <b>Throws</b>: Nothing.
621
+ //!
622
+ //! <b>Complexity</b>: Constant.
623
+ const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT
624
+ { return const_reverse_iterator(this->cbegin()); }
625
+
626
+ //////////////////////////////////////////////
627
+ //
628
+ // capacity
629
+ //
630
+ //////////////////////////////////////////////
631
+
632
+ //! <b>Effects</b>: Returns true if the list contains no elements.
633
+ //!
634
+ //! <b>Throws</b>: Nothing.
635
+ //!
636
+ //! <b>Complexity</b>: Constant.
637
+ bool empty() const BOOST_CONTAINER_NOEXCEPT
638
+ { return !this->size(); }
639
+
640
+ //! <b>Effects</b>: Returns the number of the elements contained in the list.
641
+ //!
642
+ //! <b>Throws</b>: Nothing.
643
+ //!
644
+ //! <b>Complexity</b>: Constant.
645
+ size_type size() const BOOST_CONTAINER_NOEXCEPT
646
+ { return this->icont().size(); }
647
+
648
+ //! <b>Effects</b>: Returns the largest possible size of the list.
649
+ //!
650
+ //! <b>Throws</b>: Nothing.
651
+ //!
652
+ //! <b>Complexity</b>: Constant.
653
+ size_type max_size() const BOOST_CONTAINER_NOEXCEPT
654
+ { return AllocHolder::max_size(); }
655
+
656
+ //! <b>Effects</b>: Inserts or erases elements at the end such that
657
+ //! the size becomes n. New elements are default constructed.
658
+ //!
659
+ //! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
660
+ //!
661
+ //! <b>Complexity</b>: Linear to the difference between size() and new_size.
662
+ void resize(size_type new_size)
663
+ {
664
+ if(!priv_try_shrink(new_size)){
665
+ typedef default_construct_iterator<value_type, difference_type> default_iterator;
666
+ this->insert(this->cend(), default_iterator(new_size - this->size()), default_iterator());
667
+ }
668
+ }
669
+
670
+ //! <b>Effects</b>: Inserts or erases elements at the end such that
671
+ //! the size becomes n. New elements are copy constructed from x.
672
+ //!
673
+ //! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
674
+ //!
675
+ //! <b>Complexity</b>: Linear to the difference between size() and new_size.
676
+ void resize(size_type new_size, const T& x)
677
+ {
678
+ if(!priv_try_shrink(new_size)){
679
+ this->insert(this->cend(), new_size - this->size(), x);
680
+ }
681
+ }
682
+
683
+ //////////////////////////////////////////////
684
+ //
685
+ // element access
686
+ //
687
+ //////////////////////////////////////////////
688
+
689
+ //! <b>Requires</b>: !empty()
690
+ //!
691
+ //! <b>Effects</b>: Returns a reference to the first element
692
+ //! from the beginning of the container.
693
+ //!
694
+ //! <b>Throws</b>: Nothing.
695
+ //!
696
+ //! <b>Complexity</b>: Constant.
697
+ reference front() BOOST_CONTAINER_NOEXCEPT
698
+ { return *this->begin(); }
699
+
700
+ //! <b>Requires</b>: !empty()
701
+ //!
702
+ //! <b>Effects</b>: Returns a const reference to the first element
703
+ //! from the beginning of the container.
704
+ //!
705
+ //! <b>Throws</b>: Nothing.
706
+ //!
707
+ //! <b>Complexity</b>: Constant.
708
+ const_reference front() const BOOST_CONTAINER_NOEXCEPT
709
+ { return *this->begin(); }
710
+
711
+ //! <b>Requires</b>: !empty()
712
+ //!
713
+ //! <b>Effects</b>: Returns a reference to the first element
714
+ //! from the beginning of the container.
715
+ //!
716
+ //! <b>Throws</b>: Nothing.
717
+ //!
718
+ //! <b>Complexity</b>: Constant.
719
+ reference back() BOOST_CONTAINER_NOEXCEPT
720
+ { return *(--this->end()); }
721
+
722
+ //! <b>Requires</b>: !empty()
723
+ //!
724
+ //! <b>Effects</b>: Returns a const reference to the first element
725
+ //! from the beginning of the container.
726
+ //!
727
+ //! <b>Throws</b>: Nothing.
728
+ //!
729
+ //! <b>Complexity</b>: Constant.
730
+ const_reference back() const BOOST_CONTAINER_NOEXCEPT
731
+ { return *(--this->end()); }
732
+
733
+ //////////////////////////////////////////////
734
+ //
735
+ // modifiers
736
+ //
737
+ //////////////////////////////////////////////
738
+
739
+ #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
740
+
741
+ //! <b>Effects</b>: Inserts an object of type T constructed with
742
+ //! std::forward<Args>(args)... in the end of the list.
743
+ //!
744
+ //! <b>Throws</b>: If memory allocation throws or
745
+ //! T's in-place constructor throws.
746
+ //!
747
+ //! <b>Complexity</b>: Constant
748
+ template <class... Args>
749
+ void emplace_back(Args&&... args)
750
+ { this->emplace(this->cend(), boost::forward<Args>(args)...); }
751
+
752
+ //! <b>Effects</b>: Inserts an object of type T constructed with
753
+ //! std::forward<Args>(args)... in the beginning of the list.
754
+ //!
755
+ //! <b>Throws</b>: If memory allocation throws or
756
+ //! T's in-place constructor throws.
757
+ //!
758
+ //! <b>Complexity</b>: Constant
759
+ template <class... Args>
760
+ void emplace_front(Args&&... args)
761
+ { this->emplace(this->cbegin(), boost::forward<Args>(args)...); }
762
+
763
+ //! <b>Effects</b>: Inserts an object of type T constructed with
764
+ //! std::forward<Args>(args)... before p.
765
+ //!
766
+ //! <b>Throws</b>: If memory allocation throws or
767
+ //! T's in-place constructor throws.
768
+ //!
769
+ //! <b>Complexity</b>: Constant
770
+ template <class... Args>
771
+ iterator emplace(const_iterator p, Args&&... args)
772
+ {
773
+ NodePtr pnode(AllocHolder::create_node(boost::forward<Args>(args)...));
774
+ return iterator(this->icont().insert(p.get(), *pnode));
775
+ }
776
+
777
+ #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
778
+
779
+ #define BOOST_PP_LOCAL_MACRO(n) \
780
+ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
781
+ void emplace_back(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
782
+ { \
783
+ this->emplace(this->cend() \
784
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
785
+ } \
786
+ \
787
+ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
788
+ void emplace_front(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
789
+ { \
790
+ this->emplace(this->cbegin() \
791
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
792
+ } \
793
+ \
794
+ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
795
+ iterator emplace(const_iterator p \
796
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
797
+ { \
798
+ NodePtr pnode (AllocHolder::create_node \
799
+ (BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); \
800
+ return iterator(this->icont().insert(p.get(), *pnode)); \
801
+ } \
802
+ //!
803
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
804
+ #include BOOST_PP_LOCAL_ITERATE()
805
+
806
+ #endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
807
+
808
+ #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
809
+ //! <b>Effects</b>: Inserts a copy of x at the beginning of the list.
810
+ //!
811
+ //! <b>Throws</b>: If memory allocation throws or
812
+ //! T's copy constructor throws.
813
+ //!
814
+ //! <b>Complexity</b>: Amortized constant time.
815
+ void push_front(const T &x);
816
+
817
+ //! <b>Effects</b>: Constructs a new element in the beginning of the list
818
+ //! and moves the resources of mx to this new element.
819
+ //!
820
+ //! <b>Throws</b>: If memory allocation throws.
821
+ //!
822
+ //! <b>Complexity</b>: Amortized constant time.
823
+ void push_front(T &&x);
824
+ #else
825
+ BOOST_MOVE_CONVERSION_AWARE_CATCH(push_front, T, void, priv_push_front)
826
+ #endif
827
+
828
+ #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
829
+ //! <b>Effects</b>: Inserts a copy of x at the end of the list.
830
+ //!
831
+ //! <b>Throws</b>: If memory allocation throws or
832
+ //! T's copy constructor throws.
833
+ //!
834
+ //! <b>Complexity</b>: Amortized constant time.
835
+ void push_back(const T &x);
836
+
837
+ //! <b>Effects</b>: Constructs a new element in the end of the list
838
+ //! and moves the resources of mx to this new element.
839
+ //!
840
+ //! <b>Throws</b>: If memory allocation throws.
841
+ //!
842
+ //! <b>Complexity</b>: Amortized constant time.
843
+ void push_back(T &&x);
844
+ #else
845
+ BOOST_MOVE_CONVERSION_AWARE_CATCH(push_back, T, void, priv_push_back)
846
+ #endif
847
+
848
+ #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
849
+ //! <b>Requires</b>: position must be a valid iterator of *this.
850
+ //!
851
+ //! <b>Effects</b>: Insert a copy of x before position.
852
+ //!
853
+ //! <b>Returns</b>: an iterator to the inserted element.
854
+ //!
855
+ //! <b>Throws</b>: If memory allocation throws or x's copy constructor throws.
856
+ //!
857
+ //! <b>Complexity</b>: Amortized constant time.
858
+ iterator insert(const_iterator position, const T &x);
859
+
860
+ //! <b>Requires</b>: position must be a valid iterator of *this.
861
+ //!
862
+ //! <b>Effects</b>: Insert a new element before position with mx's resources.
863
+ //!
864
+ //! <b>Returns</b>: an iterator to the inserted element.
865
+ //!
866
+ //! <b>Throws</b>: If memory allocation throws.
867
+ //!
868
+ //! <b>Complexity</b>: Amortized constant time.
869
+ iterator insert(const_iterator position, T &&x);
870
+ #else
871
+ BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator)
872
+ #endif
873
+
874
+ //! <b>Requires</b>: p must be a valid iterator of *this.
875
+ //!
876
+ //! <b>Effects</b>: Inserts n copies of x before p.
877
+ //!
878
+ //! <b>Returns</b>: an iterator to the first inserted element or p if n is 0.
879
+ //!
880
+ //! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
881
+ //!
882
+ //! <b>Complexity</b>: Linear to n.
883
+ iterator insert(const_iterator p, size_type n, const T& x)
884
+ {
885
+ typedef constant_iterator<value_type, difference_type> cvalue_iterator;
886
+ return this->insert(p, cvalue_iterator(x, n), cvalue_iterator());
887
+ }
888
+
889
+ //! <b>Requires</b>: p must be a valid iterator of *this.
890
+ //!
891
+ //! <b>Effects</b>: Insert a copy of the [first, last) range before p.
892
+ //!
893
+ //! <b>Returns</b>: an iterator to the first inserted element or p if first == last.
894
+ //!
895
+ //! <b>Throws</b>: If memory allocation throws, T's constructor from a
896
+ //! dereferenced InpIt throws.
897
+ //!
898
+ //! <b>Complexity</b>: Linear to std::distance [first, last).
899
+ template <class InpIt>
900
+ iterator insert(const_iterator p, InpIt first, InpIt last
901
+ #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
902
+ , typename container_detail::enable_if_c
903
+ < !container_detail::is_convertible<InpIt, size_type>::value
904
+ && (container_detail::is_input_iterator<InpIt>::value
905
+ || container_detail::is_same<alloc_version, allocator_v1>::value
906
+ )
907
+ >::type * = 0
908
+ #endif
909
+ )
910
+ {
911
+ const typename Icont::iterator ipos(p.get());
912
+ iterator ret_it(ipos);
913
+ if(first != last){
914
+ ret_it = iterator(this->icont().insert(ipos, *this->create_node_from_it(first)));
915
+ ++first;
916
+ }
917
+ for (; first != last; ++first){
918
+ this->icont().insert(ipos, *this->create_node_from_it(first));
919
+ }
920
+ return ret_it;
921
+ }
922
+
923
+ #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
924
+ template <class FwdIt>
925
+ iterator insert(const_iterator p, FwdIt first, FwdIt last
926
+ , typename container_detail::enable_if_c
927
+ < !container_detail::is_convertible<FwdIt, size_type>::value
928
+ && !(container_detail::is_input_iterator<FwdIt>::value
929
+ || container_detail::is_same<alloc_version, allocator_v1>::value
930
+ )
931
+ >::type * = 0
932
+ )
933
+ {
934
+ //Optimized allocation and construction
935
+ insertion_functor func(this->icont(), p.get());
936
+ iterator before_p(p.get());
937
+ --before_p;
938
+ this->allocate_many_and_construct(first, std::distance(first, last), func);
939
+ return ++before_p;
940
+ }
941
+ #endif
942
+
943
+ //! <b>Effects</b>: Removes the first element from the list.
944
+ //!
945
+ //! <b>Throws</b>: Nothing.
946
+ //!
947
+ //! <b>Complexity</b>: Amortized constant time.
948
+ void pop_front() BOOST_CONTAINER_NOEXCEPT
949
+ { this->erase(this->cbegin()); }
950
+
951
+ //! <b>Effects</b>: Removes the last element from the list.
952
+ //!
953
+ //! <b>Throws</b>: Nothing.
954
+ //!
955
+ //! <b>Complexity</b>: Amortized constant time.
956
+ void pop_back() BOOST_CONTAINER_NOEXCEPT
957
+ { const_iterator tmp = this->cend(); this->erase(--tmp); }
958
+
959
+ //! <b>Requires</b>: p must be a valid iterator of *this.
960
+ //!
961
+ //! <b>Effects</b>: Erases the element at p p.
962
+ //!
963
+ //! <b>Throws</b>: Nothing.
964
+ //!
965
+ //! <b>Complexity</b>: Amortized constant time.
966
+ iterator erase(const_iterator p) BOOST_CONTAINER_NOEXCEPT
967
+ { return iterator(this->icont().erase_and_dispose(p.get(), Destroyer(this->node_alloc()))); }
968
+
969
+ //! <b>Requires</b>: first and last must be valid iterator to elements in *this.
970
+ //!
971
+ //! <b>Effects</b>: Erases the elements pointed by [first, last).
972
+ //!
973
+ //! <b>Throws</b>: Nothing.
974
+ //!
975
+ //! <b>Complexity</b>: Linear to the distance between first and last.
976
+ iterator erase(const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT
977
+ { return iterator(AllocHolder::erase_range(first.get(), last.get(), alloc_version())); }
978
+
979
+ //! <b>Effects</b>: Swaps the contents of *this and x.
980
+ //!
981
+ //! <b>Throws</b>: Nothing.
982
+ //!
983
+ //! <b>Complexity</b>: Constant.
984
+ void swap(list& x)
985
+ { AllocHolder::swap(x); }
986
+
987
+ //! <b>Effects</b>: Erases all the elements of the list.
988
+ //!
989
+ //! <b>Throws</b>: Nothing.
990
+ //!
991
+ //! <b>Complexity</b>: Linear to the number of elements in the list.
992
+ void clear() BOOST_CONTAINER_NOEXCEPT
993
+ { AllocHolder::clear(alloc_version()); }
994
+
995
+ //////////////////////////////////////////////
996
+ //
997
+ // slist operations
998
+ //
999
+ //////////////////////////////////////////////
1000
+
1001
+ //! <b>Requires</b>: p must point to an element contained
1002
+ //! by the list. x != *this. this' allocator and x's allocator shall compare equal
1003
+ //!
1004
+ //! <b>Effects</b>: Transfers all the elements of list x to this list, before the
1005
+ //! the element pointed by p. No destructors or copy constructors are called.
1006
+ //!
1007
+ //! <b>Throws</b>: Nothing
1008
+ //!
1009
+ //! <b>Complexity</b>: Constant.
1010
+ //!
1011
+ //! <b>Note</b>: Iterators of values obtained from list x now point to elements of
1012
+ //! this list. Iterators of this list and all the references are not invalidated.
1013
+ void splice(const_iterator p, list& x) BOOST_CONTAINER_NOEXCEPT
1014
+ {
1015
+ BOOST_ASSERT(this != &x);
1016
+ BOOST_ASSERT(this->node_alloc() == x.node_alloc());
1017
+ this->icont().splice(p.get(), x.icont());
1018
+ }
1019
+
1020
+ //! <b>Requires</b>: p must point to an element contained
1021
+ //! by the list. x != *this. this' allocator and x's allocator shall compare equal
1022
+ //!
1023
+ //! <b>Effects</b>: Transfers all the elements of list x to this list, before the
1024
+ //! the element pointed by p. No destructors or copy constructors are called.
1025
+ //!
1026
+ //! <b>Throws</b>: Nothing
1027
+ //!
1028
+ //! <b>Complexity</b>: Constant.
1029
+ //!
1030
+ //! <b>Note</b>: Iterators of values obtained from list x now point to elements of
1031
+ //! this list. Iterators of this list and all the references are not invalidated.
1032
+ void splice(const_iterator p, BOOST_RV_REF(list) x) BOOST_CONTAINER_NOEXCEPT
1033
+ { this->splice(p, static_cast<list&>(x)); }
1034
+
1035
+ //! <b>Requires</b>: p must point to an element contained
1036
+ //! by this list. i must point to an element contained in list x.
1037
+ //! this' allocator and x's allocator shall compare equal
1038
+ //!
1039
+ //! <b>Effects</b>: Transfers the value pointed by i, from list x to this list,
1040
+ //! before the the element pointed by p. No destructors or copy constructors are called.
1041
+ //! If p == i or p == ++i, this function is a null operation.
1042
+ //!
1043
+ //! <b>Throws</b>: Nothing
1044
+ //!
1045
+ //! <b>Complexity</b>: Constant.
1046
+ //!
1047
+ //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
1048
+ //! list. Iterators of this list and all the references are not invalidated.
1049
+ void splice(const_iterator p, list &x, const_iterator i) BOOST_CONTAINER_NOEXCEPT
1050
+ {
1051
+ //BOOST_ASSERT(this != &x);
1052
+ BOOST_ASSERT(this->node_alloc() == x.node_alloc());
1053
+ this->icont().splice(p.get(), x.icont(), i.get());
1054
+ }
1055
+
1056
+ //! <b>Requires</b>: p must point to an element contained
1057
+ //! by this list. i must point to an element contained in list x.
1058
+ //! this' allocator and x's allocator shall compare equal.
1059
+ //!
1060
+ //! <b>Effects</b>: Transfers the value pointed by i, from list x to this list,
1061
+ //! before the the element pointed by p. No destructors or copy constructors are called.
1062
+ //! If p == i or p == ++i, this function is a null operation.
1063
+ //!
1064
+ //! <b>Throws</b>: Nothing
1065
+ //!
1066
+ //! <b>Complexity</b>: Constant.
1067
+ //!
1068
+ //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
1069
+ //! list. Iterators of this list and all the references are not invalidated.
1070
+ void splice(const_iterator p, BOOST_RV_REF(list) x, const_iterator i) BOOST_CONTAINER_NOEXCEPT
1071
+ { this->splice(p, static_cast<list&>(x), i); }
1072
+
1073
+ //! <b>Requires</b>: p must point to an element contained
1074
+ //! by this list. first and last must point to elements contained in list x.
1075
+ //! this' allocator and x's allocator shall compare equal
1076
+ //!
1077
+ //! <b>Effects</b>: Transfers the range pointed by first and last from list x to this list,
1078
+ //! before the the element pointed by p. No destructors or copy constructors are called.
1079
+ //!
1080
+ //! <b>Throws</b>: Nothing
1081
+ //!
1082
+ //! <b>Complexity</b>: Linear to the number of elements transferred.
1083
+ //!
1084
+ //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
1085
+ //! list. Iterators of this list and all the references are not invalidated.
1086
+ void splice(const_iterator p, list &x, const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT
1087
+ {
1088
+ BOOST_ASSERT(this->node_alloc() == x.node_alloc());
1089
+ this->icont().splice(p.get(), x.icont(), first.get(), last.get());
1090
+ }
1091
+
1092
+ //! <b>Requires</b>: p must point to an element contained
1093
+ //! by this list. first and last must point to elements contained in list x.
1094
+ //! this' allocator and x's allocator shall compare equal.
1095
+ //!
1096
+ //! <b>Effects</b>: Transfers the range pointed by first and last from list x to this list,
1097
+ //! before the the element pointed by p. No destructors or copy constructors are called.
1098
+ //!
1099
+ //! <b>Throws</b>: Nothing
1100
+ //!
1101
+ //! <b>Complexity</b>: Linear to the number of elements transferred.
1102
+ //!
1103
+ //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
1104
+ //! list. Iterators of this list and all the references are not invalidated.
1105
+ void splice(const_iterator p, BOOST_RV_REF(list) x, const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT
1106
+ { this->splice(p, static_cast<list&>(x), first, last); }
1107
+
1108
+ //! <b>Requires</b>: p must point to an element contained
1109
+ //! by this list. first and last must point to elements contained in list x.
1110
+ //! n == std::distance(first, last). this' allocator and x's allocator shall compare equal
1111
+ //!
1112
+ //! <b>Effects</b>: Transfers the range pointed by first and last from list x to this list,
1113
+ //! before the the element pointed by p. No destructors or copy constructors are called.
1114
+ //!
1115
+ //! <b>Throws</b>: Nothing
1116
+ //!
1117
+ //! <b>Complexity</b>: Constant.
1118
+ //!
1119
+ //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
1120
+ //! list. Iterators of this list and all the references are not invalidated.
1121
+ //!
1122
+ //! <b>Note</b>: Non-standard extension
1123
+ void splice(const_iterator p, list &x, const_iterator first, const_iterator last, size_type n) BOOST_CONTAINER_NOEXCEPT
1124
+ {
1125
+ BOOST_ASSERT(this->node_alloc() == x.node_alloc());
1126
+ this->icont().splice(p.get(), x.icont(), first.get(), last.get(), n);
1127
+ }
1128
+
1129
+ //! <b>Requires</b>: p must point to an element contained
1130
+ //! by this list. first and last must point to elements contained in list x.
1131
+ //! n == std::distance(first, last). this' allocator and x's allocator shall compare equal
1132
+ //!
1133
+ //! <b>Effects</b>: Transfers the range pointed by first and last from list x to this list,
1134
+ //! before the the element pointed by p. No destructors or copy constructors are called.
1135
+ //!
1136
+ //! <b>Throws</b>: Nothing
1137
+ //!
1138
+ //! <b>Complexity</b>: Constant.
1139
+ //!
1140
+ //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
1141
+ //! list. Iterators of this list and all the references are not invalidated.
1142
+ //!
1143
+ //! <b>Note</b>: Non-standard extension
1144
+ void splice(const_iterator p, BOOST_RV_REF(list) x, const_iterator first, const_iterator last, size_type n) BOOST_CONTAINER_NOEXCEPT
1145
+ { this->splice(p, static_cast<list&>(x), first, last, n); }
1146
+
1147
+ //! <b>Effects</b>: Removes all the elements that compare equal to value.
1148
+ //!
1149
+ //! <b>Throws</b>: If comparison throws.
1150
+ //!
1151
+ //! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
1152
+ //!
1153
+ //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
1154
+ //! and iterators to elements that are not removed remain valid.
1155
+ void remove(const T& value)
1156
+ { this->remove_if(equal_to_value(value)); }
1157
+
1158
+ //! <b>Effects</b>: Removes all the elements for which a specified
1159
+ //! predicate is satisfied.
1160
+ //!
1161
+ //! <b>Throws</b>: If pred throws.
1162
+ //!
1163
+ //! <b>Complexity</b>: Linear time. It performs exactly size() calls to the predicate.
1164
+ //!
1165
+ //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
1166
+ //! and iterators to elements that are not removed remain valid.
1167
+ template <class Pred>
1168
+ void remove_if(Pred pred)
1169
+ {
1170
+ typedef ValueCompareToNodeCompare<Pred> Predicate;
1171
+ this->icont().remove_and_dispose_if(Predicate(pred), Destroyer(this->node_alloc()));
1172
+ }
1173
+
1174
+ //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
1175
+ //! elements that are equal from the list.
1176
+ //!
1177
+ //! <b>Throws</b>: If comparison throws.
1178
+ //!
1179
+ //! <b>Complexity</b>: Linear time (size()-1 comparisons equality comparisons).
1180
+ //!
1181
+ //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
1182
+ //! and iterators to elements that are not removed remain valid.
1183
+ void unique()
1184
+ { this->unique(value_equal()); }
1185
+
1186
+ //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
1187
+ //! elements that satisfy some binary predicate from the list.
1188
+ //!
1189
+ //! <b>Throws</b>: If pred throws.
1190
+ //!
1191
+ //! <b>Complexity</b>: Linear time (size()-1 comparisons calls to pred()).
1192
+ //!
1193
+ //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
1194
+ //! and iterators to elements that are not removed remain valid.
1195
+ template <class BinaryPredicate>
1196
+ void unique(BinaryPredicate binary_pred)
1197
+ {
1198
+ typedef ValueCompareToNodeCompare<BinaryPredicate> Predicate;
1199
+ this->icont().unique_and_dispose(Predicate(binary_pred), Destroyer(this->node_alloc()));
1200
+ }
1201
+
1202
+ //! <b>Requires</b>: The lists x and *this must be distinct.
1203
+ //!
1204
+ //! <b>Effects</b>: This function removes all of x's elements and inserts them
1205
+ //! in order into *this according to std::less<value_type>. The merge is stable;
1206
+ //! that is, if an element from *this is equivalent to one from x, then the element
1207
+ //! from *this will precede the one from x.
1208
+ //!
1209
+ //! <b>Throws</b>: If comparison throws.
1210
+ //!
1211
+ //! <b>Complexity</b>: This function is linear time: it performs at most
1212
+ //! size() + x.size() - 1 comparisons.
1213
+ void merge(list &x)
1214
+ { this->merge(x, value_less()); }
1215
+
1216
+ //! <b>Requires</b>: The lists x and *this must be distinct.
1217
+ //!
1218
+ //! <b>Effects</b>: This function removes all of x's elements and inserts them
1219
+ //! in order into *this according to std::less<value_type>. The merge is stable;
1220
+ //! that is, if an element from *this is equivalent to one from x, then the element
1221
+ //! from *this will precede the one from x.
1222
+ //!
1223
+ //! <b>Throws</b>: If comparison throws.
1224
+ //!
1225
+ //! <b>Complexity</b>: This function is linear time: it performs at most
1226
+ //! size() + x.size() - 1 comparisons.
1227
+ void merge(BOOST_RV_REF(list) x)
1228
+ { this->merge(static_cast<list&>(x)); }
1229
+
1230
+ //! <b>Requires</b>: p must be a comparison function that induces a strict weak
1231
+ //! ordering and both *this and x must be sorted according to that ordering
1232
+ //! The lists x and *this must be distinct.
1233
+ //!
1234
+ //! <b>Effects</b>: This function removes all of x's elements and inserts them
1235
+ //! in order into *this. The merge is stable; that is, if an element from *this is
1236
+ //! equivalent to one from x, then the element from *this will precede the one from x.
1237
+ //!
1238
+ //! <b>Throws</b>: If comp throws.
1239
+ //!
1240
+ //! <b>Complexity</b>: This function is linear time: it performs at most
1241
+ //! size() + x.size() - 1 comparisons.
1242
+ //!
1243
+ //! <b>Note</b>: Iterators and references to *this are not invalidated.
1244
+ template <class StrictWeakOrdering>
1245
+ void merge(list &x, const StrictWeakOrdering &comp)
1246
+ {
1247
+ BOOST_ASSERT(this->node_alloc() == x.node_alloc());
1248
+ this->icont().merge(x.icont(),
1249
+ ValueCompareToNodeCompare<StrictWeakOrdering>(comp));
1250
+ }
1251
+
1252
+ //! <b>Requires</b>: p must be a comparison function that induces a strict weak
1253
+ //! ordering and both *this and x must be sorted according to that ordering
1254
+ //! The lists x and *this must be distinct.
1255
+ //!
1256
+ //! <b>Effects</b>: This function removes all of x's elements and inserts them
1257
+ //! in order into *this. The merge is stable; that is, if an element from *this is
1258
+ //! equivalent to one from x, then the element from *this will precede the one from x.
1259
+ //!
1260
+ //! <b>Throws</b>: If comp throws.
1261
+ //!
1262
+ //! <b>Complexity</b>: This function is linear time: it performs at most
1263
+ //! size() + x.size() - 1 comparisons.
1264
+ //!
1265
+ //! <b>Note</b>: Iterators and references to *this are not invalidated.
1266
+ template <class StrictWeakOrdering>
1267
+ void merge(BOOST_RV_REF(list) x, StrictWeakOrdering comp)
1268
+ { this->merge(static_cast<list&>(x), comp); }
1269
+
1270
+ //! <b>Effects</b>: This function sorts the list *this according to std::less<value_type>.
1271
+ //! The sort is stable, that is, the relative order of equivalent elements is preserved.
1272
+ //!
1273
+ //! <b>Throws</b>: If comparison throws.
1274
+ //!
1275
+ //! <b>Notes</b>: Iterators and references are not invalidated.
1276
+ //!
1277
+ //! <b>Complexity</b>: The number of comparisons is approximately N log N, where N
1278
+ //! is the list's size.
1279
+ void sort()
1280
+ { this->sort(value_less()); }
1281
+
1282
+ //! <b>Effects</b>: This function sorts the list *this according to std::less<value_type>.
1283
+ //! The sort is stable, that is, the relative order of equivalent elements is preserved.
1284
+ //!
1285
+ //! <b>Throws</b>: If comp throws.
1286
+ //!
1287
+ //! <b>Notes</b>: Iterators and references are not invalidated.
1288
+ //!
1289
+ //! <b>Complexity</b>: The number of comparisons is approximately N log N, where N
1290
+ //! is the list's size.
1291
+ template <class StrictWeakOrdering>
1292
+ void sort(StrictWeakOrdering comp)
1293
+ {
1294
+ // nothing if the list has length 0 or 1.
1295
+ if (this->size() < 2)
1296
+ return;
1297
+ this->icont().sort(ValueCompareToNodeCompare<StrictWeakOrdering>(comp));
1298
+ }
1299
+
1300
+ //! <b>Effects</b>: Reverses the order of elements in the list.
1301
+ //!
1302
+ //! <b>Throws</b>: Nothing.
1303
+ //!
1304
+ //! <b>Complexity</b>: This function is linear time.
1305
+ //!
1306
+ //! <b>Note</b>: Iterators and references are not invalidated
1307
+ void reverse() BOOST_CONTAINER_NOEXCEPT
1308
+ { this->icont().reverse(); }
1309
+
1310
+ /// @cond
1311
+ private:
1312
+
1313
+ bool priv_try_shrink(size_type new_size)
1314
+ {
1315
+ const size_type len = this->size();
1316
+ if(len > new_size){
1317
+ const const_iterator iend = this->cend();
1318
+ size_type to_erase = len - new_size;
1319
+ const_iterator ifirst;
1320
+ if(to_erase < len/2u){
1321
+ ifirst = iend;
1322
+ while(to_erase--){
1323
+ --ifirst;
1324
+ }
1325
+ }
1326
+ else{
1327
+ ifirst = this->cbegin();
1328
+ size_type to_skip = len - to_erase;
1329
+ while(to_skip--){
1330
+ ++ifirst;
1331
+ }
1332
+ }
1333
+ this->erase(ifirst, iend);
1334
+ return true;
1335
+ }
1336
+ else{
1337
+ return false;
1338
+ }
1339
+ }
1340
+
1341
+ iterator priv_insert(const_iterator p, const T &x)
1342
+ {
1343
+ NodePtr tmp = AllocHolder::create_node(x);
1344
+ return iterator(this->icont().insert(p.get(), *tmp));
1345
+ }
1346
+
1347
+ iterator priv_insert(const_iterator p, BOOST_RV_REF(T) x)
1348
+ {
1349
+ NodePtr tmp = AllocHolder::create_node(boost::move(x));
1350
+ return iterator(this->icont().insert(p.get(), *tmp));
1351
+ }
1352
+
1353
+ void priv_push_back (const T &x)
1354
+ { this->insert(this->cend(), x); }
1355
+
1356
+ void priv_push_back (BOOST_RV_REF(T) x)
1357
+ { this->insert(this->cend(), boost::move(x)); }
1358
+
1359
+ void priv_push_front (const T &x)
1360
+ { this->insert(this->cbegin(), x); }
1361
+
1362
+ void priv_push_front (BOOST_RV_REF(T) x)
1363
+ { this->insert(this->cbegin(), boost::move(x)); }
1364
+
1365
+ class insertion_functor;
1366
+ friend class insertion_functor;
1367
+
1368
+ class insertion_functor
1369
+ {
1370
+ Icont &icont_;
1371
+ typedef typename Icont::const_iterator iconst_iterator;
1372
+ const iconst_iterator pos_;
1373
+
1374
+ public:
1375
+ insertion_functor(Icont &icont, typename Icont::const_iterator pos)
1376
+ : icont_(icont), pos_(pos)
1377
+ {}
1378
+
1379
+ void operator()(Node &n)
1380
+ {
1381
+ this->icont_.insert(pos_, n);
1382
+ }
1383
+ };
1384
+
1385
+ //Functors for member algorithm defaults
1386
+ struct value_less
1387
+ {
1388
+ bool operator()(const value_type &a, const value_type &b) const
1389
+ { return a < b; }
1390
+ };
1391
+
1392
+ struct value_equal
1393
+ {
1394
+ bool operator()(const value_type &a, const value_type &b) const
1395
+ { return a == b; }
1396
+ };
1397
+ /// @endcond
1398
+
1399
+ };
1400
+
1401
+ template <class T, class Allocator>
1402
+ inline bool operator==(const list<T,Allocator>& x, const list<T,Allocator>& y)
1403
+ {
1404
+ if(x.size() != y.size()){
1405
+ return false;
1406
+ }
1407
+ typedef typename list<T,Allocator>::const_iterator const_iterator;
1408
+ const_iterator end1 = x.end();
1409
+
1410
+ const_iterator i1 = x.begin();
1411
+ const_iterator i2 = y.begin();
1412
+ while (i1 != end1 && *i1 == *i2) {
1413
+ ++i1;
1414
+ ++i2;
1415
+ }
1416
+ return i1 == end1;
1417
+ }
1418
+
1419
+ template <class T, class Allocator>
1420
+ inline bool operator<(const list<T,Allocator>& x,
1421
+ const list<T,Allocator>& y)
1422
+ {
1423
+ return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end());
1424
+ }
1425
+
1426
+ template <class T, class Allocator>
1427
+ inline bool operator!=(const list<T,Allocator>& x, const list<T,Allocator>& y)
1428
+ {
1429
+ return !(x == y);
1430
+ }
1431
+
1432
+ template <class T, class Allocator>
1433
+ inline bool operator>(const list<T,Allocator>& x, const list<T,Allocator>& y)
1434
+ {
1435
+ return y < x;
1436
+ }
1437
+
1438
+ template <class T, class Allocator>
1439
+ inline bool operator<=(const list<T,Allocator>& x, const list<T,Allocator>& y)
1440
+ {
1441
+ return !(y < x);
1442
+ }
1443
+
1444
+ template <class T, class Allocator>
1445
+ inline bool operator>=(const list<T,Allocator>& x, const list<T,Allocator>& y)
1446
+ {
1447
+ return !(x < y);
1448
+ }
1449
+
1450
+ template <class T, class Allocator>
1451
+ inline void swap(list<T, Allocator>& x, list<T, Allocator>& y)
1452
+ {
1453
+ x.swap(y);
1454
+ }
1455
+
1456
+ /// @cond
1457
+
1458
+ } //namespace container {
1459
+
1460
+ //!has_trivial_destructor_after_move<> == true_type
1461
+ //!specialization for optimizations
1462
+ template <class T, class Allocator>
1463
+ struct has_trivial_destructor_after_move<boost::container::list<T, Allocator> >
1464
+ : public ::boost::has_trivial_destructor_after_move<Allocator>
1465
+ {};
1466
+
1467
+ namespace container {
1468
+
1469
+ /// @endcond
1470
+
1471
+ }}
1472
+
1473
+ #include <boost/container/detail/config_end.hpp>
1474
+
1475
+ #endif // BOOST_CONTAINER_LIST_HPP