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,83 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // (C) Copyright Ion Gaztanaga 2011-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
+
11
+ #ifndef BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_FWD_HPP
12
+ #define BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_FWD_HPP
13
+
14
+ #if (defined MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif
17
+
18
+ #include <boost/container/detail/config_begin.hpp>
19
+ #include <boost/container/detail/workaround.hpp>
20
+
21
+ #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
22
+ #include <boost/container/detail/preprocessor.hpp>
23
+ #include <boost/container/detail/type_traits.hpp>
24
+ #endif
25
+
26
+ namespace boost { namespace container {
27
+
28
+ ///@cond
29
+
30
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
31
+
32
+ #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST)
33
+
34
+ template <typename OuterAlloc, typename ...InnerAllocs>
35
+ class scoped_allocator_adaptor;
36
+
37
+ #else // #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST)
38
+
39
+ template <typename ...InnerAllocs>
40
+ class scoped_allocator_adaptor;
41
+
42
+ template <typename OuterAlloc, typename ...InnerAllocs>
43
+ class scoped_allocator_adaptor<OuterAlloc, InnerAllocs...>;
44
+
45
+ #endif // #if !defined(BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST)
46
+
47
+
48
+ #else // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
49
+
50
+ template <typename OuterAlloc
51
+ BOOST_PP_ENUM_TRAILING( BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
52
+ , BOOST_CONTAINER_PP_TEMPLATE_PARAM_WITH_DEFAULT, container_detail::nat)
53
+ >
54
+ class scoped_allocator_adaptor;
55
+
56
+ #endif
57
+
58
+ ///@endcond
59
+
60
+ //! The allocator_arg_t struct is an empty structure type used as a unique type to
61
+ //! disambiguate constructor and function overloading. Specifically, several types
62
+ //! have constructors with allocator_arg_t as the first argument, immediately followed
63
+ //! by an argument of a type that satisfies the Allocator requirements
64
+ struct allocator_arg_t{};
65
+
66
+ //! A instance of type allocator_arg_t
67
+ //!
68
+ static const allocator_arg_t allocator_arg = allocator_arg_t();
69
+
70
+ template <class T>
71
+ struct constructible_with_allocator_suffix;
72
+
73
+ template <class T>
74
+ struct constructible_with_allocator_prefix;
75
+
76
+ template <typename T, typename Alloc>
77
+ struct uses_allocator;
78
+
79
+ }} // namespace boost { namespace container {
80
+
81
+ #include <boost/container/detail/config_end.hpp>
82
+
83
+ #endif // BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_FWD_HPP
@@ -0,0 +1,1280 @@
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
+
11
+ #ifndef BOOST_CONTAINER_SET_HPP
12
+ #define BOOST_CONTAINER_SET_HPP
13
+
14
+ #if (defined _MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif
17
+
18
+ #include <boost/container/detail/config_begin.hpp>
19
+ #include <boost/container/detail/workaround.hpp>
20
+ #include <boost/container/container_fwd.hpp>
21
+
22
+ #include <utility>
23
+ #include <functional>
24
+ #include <memory>
25
+
26
+ #include <boost/move/utility.hpp>
27
+ #include <boost/move/detail/move_helpers.hpp>
28
+ #include <boost/container/detail/mpl.hpp>
29
+ #include <boost/container/detail/tree.hpp>
30
+ #include <boost/move/utility.hpp>
31
+ #ifndef BOOST_CONTAINER_PERFECT_FORWARDING
32
+ #include <boost/container/detail/preprocessor.hpp>
33
+ #endif
34
+
35
+ namespace boost {
36
+ namespace container {
37
+
38
+ /// @cond
39
+ // Forward declarations of operators < and ==, needed for friend declaration.
40
+ template <class Key, class Compare, class Allocator>
41
+ inline bool operator==(const set<Key,Compare,Allocator>& x,
42
+ const set<Key,Compare,Allocator>& y);
43
+
44
+ template <class Key, class Compare, class Allocator>
45
+ inline bool operator<(const set<Key,Compare,Allocator>& x,
46
+ const set<Key,Compare,Allocator>& y);
47
+ /// @endcond
48
+
49
+ //! A set is a kind of associative container that supports unique keys (contains at
50
+ //! most one of each key value) and provides for fast retrieval of the keys themselves.
51
+ //! Class set supports bidirectional iterators.
52
+ //!
53
+ //! A set satisfies all of the requirements of a container and of a reversible container
54
+ //! , and of an associative container. A set also provides most operations described in
55
+ //! for unique keys.
56
+ #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
57
+ template <class Key, class Compare = std::less<Key>, class Allocator = std::allocator<Key> >
58
+ #else
59
+ template <class Key, class Compare, class Allocator>
60
+ #endif
61
+ class set
62
+ {
63
+ /// @cond
64
+ private:
65
+ BOOST_COPYABLE_AND_MOVABLE(set)
66
+ typedef container_detail::rbtree<Key, Key,
67
+ container_detail::identity<Key>, Compare, Allocator> tree_t;
68
+ tree_t m_tree; // red-black tree representing set
69
+ /// @endcond
70
+
71
+ public:
72
+ //////////////////////////////////////////////
73
+ //
74
+ // types
75
+ //
76
+ //////////////////////////////////////////////
77
+ typedef Key key_type;
78
+ typedef Key value_type;
79
+ typedef Compare key_compare;
80
+ typedef Compare value_compare;
81
+ typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
82
+ typedef typename ::boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
83
+ typedef typename ::boost::container::allocator_traits<Allocator>::reference reference;
84
+ typedef typename ::boost::container::allocator_traits<Allocator>::const_reference const_reference;
85
+ typedef typename ::boost::container::allocator_traits<Allocator>::size_type size_type;
86
+ typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
87
+ typedef Allocator allocator_type;
88
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type;
89
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::iterator) iterator;
90
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_iterator) const_iterator;
91
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::reverse_iterator) reverse_iterator;
92
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_reverse_iterator) const_reverse_iterator;
93
+
94
+ //////////////////////////////////////////////
95
+ //
96
+ // construct/copy/destroy
97
+ //
98
+ //////////////////////////////////////////////
99
+
100
+ //! <b>Effects</b>: Default constructs an empty set.
101
+ //!
102
+ //! <b>Complexity</b>: Constant.
103
+ set()
104
+ : m_tree()
105
+ {}
106
+
107
+ //! <b>Effects</b>: Constructs an empty set using the specified comparison object
108
+ //! and allocator.
109
+ //!
110
+ //! <b>Complexity</b>: Constant.
111
+ explicit set(const Compare& comp,
112
+ const allocator_type& a = allocator_type())
113
+ : m_tree(comp, a)
114
+ {}
115
+
116
+ //! <b>Effects</b>: Constructs an empty set using the specified comparison object and
117
+ //! allocator, and inserts elements from the range [first ,last ).
118
+ //!
119
+ //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using
120
+ //! comp and otherwise N logN, where N is last - first.
121
+ template <class InputIterator>
122
+ set(InputIterator first, InputIterator last, const Compare& comp = Compare(),
123
+ const allocator_type& a = allocator_type())
124
+ : m_tree(true, first, last, comp, a)
125
+ {}
126
+
127
+ //! <b>Effects</b>: Constructs an empty set using the specified comparison object and
128
+ //! allocator, and inserts elements from the ordered unique range [first ,last). This function
129
+ //! is more efficient than the normal range creation for ordered ranges.
130
+ //!
131
+ //! <b>Requires</b>: [first ,last) must be ordered according to the predicate and must be
132
+ //! unique values.
133
+ //!
134
+ //! <b>Complexity</b>: Linear in N.
135
+ template <class InputIterator>
136
+ set( ordered_unique_range_t, InputIterator first, InputIterator last
137
+ , const Compare& comp = Compare(), const allocator_type& a = allocator_type())
138
+ : m_tree(ordered_range, first, last, comp, a)
139
+ {}
140
+
141
+ //! <b>Effects</b>: Copy constructs a set.
142
+ //!
143
+ //! <b>Complexity</b>: Linear in x.size().
144
+ set(const set& x)
145
+ : m_tree(x.m_tree)
146
+ {}
147
+
148
+ //! <b>Effects</b>: Move constructs a set. Constructs *this using x's resources.
149
+ //!
150
+ //! <b>Complexity</b>: Constant.
151
+ //!
152
+ //! <b>Postcondition</b>: x is emptied.
153
+ set(BOOST_RV_REF(set) x)
154
+ : m_tree(boost::move(x.m_tree))
155
+ {}
156
+
157
+ //! <b>Effects</b>: Copy constructs a set using the specified allocator.
158
+ //!
159
+ //! <b>Complexity</b>: Linear in x.size().
160
+ set(const set& x, const allocator_type &a)
161
+ : m_tree(x.m_tree, a)
162
+ {}
163
+
164
+ //! <b>Effects</b>: Move constructs a set using the specified allocator.
165
+ //! Constructs *this using x's resources.
166
+ //!
167
+ //! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise.
168
+ set(BOOST_RV_REF(set) x, const allocator_type &a)
169
+ : m_tree(boost::move(x.m_tree), a)
170
+ {}
171
+
172
+ //! <b>Effects</b>: Makes *this a copy of x.
173
+ //!
174
+ //! <b>Complexity</b>: Linear in x.size().
175
+ set& operator=(BOOST_COPY_ASSIGN_REF(set) x)
176
+ { m_tree = x.m_tree; return *this; }
177
+
178
+ //! <b>Effects</b>: this->swap(x.get()).
179
+ //!
180
+ //! <b>Complexity</b>: Constant.
181
+ set& operator=(BOOST_RV_REF(set) x)
182
+ { m_tree = boost::move(x.m_tree); return *this; }
183
+
184
+ //! <b>Effects</b>: Returns a copy of the Allocator that
185
+ //! was passed to the object's constructor.
186
+ //!
187
+ //! <b>Complexity</b>: Constant.
188
+ allocator_type get_allocator() const
189
+ { return m_tree.get_allocator(); }
190
+
191
+ //! <b>Effects</b>: Returns a reference to the internal allocator.
192
+ //!
193
+ //! <b>Throws</b>: Nothing
194
+ //!
195
+ //! <b>Complexity</b>: Constant.
196
+ //!
197
+ //! <b>Note</b>: Non-standard extension.
198
+ const stored_allocator_type &get_stored_allocator() const
199
+ { return m_tree.get_stored_allocator(); }
200
+
201
+ //! <b>Effects</b>: Returns a reference to the internal allocator.
202
+ //!
203
+ //! <b>Throws</b>: Nothing
204
+ //!
205
+ //! <b>Complexity</b>: Constant.
206
+ //!
207
+ //! <b>Note</b>: Non-standard extension.
208
+ stored_allocator_type &get_stored_allocator()
209
+ { return m_tree.get_stored_allocator(); }
210
+
211
+ //////////////////////////////////////////////
212
+ //
213
+ // capacity
214
+ //
215
+ //////////////////////////////////////////////
216
+
217
+ //! <b>Effects</b>: Returns an iterator to the first element contained in the container.
218
+ //!
219
+ //! <b>Throws</b>: Nothing.
220
+ //!
221
+ //! <b>Complexity</b>: Constant
222
+ iterator begin()
223
+ { return m_tree.begin(); }
224
+
225
+ //! <b>Effects</b>: Returns a const_iterator to the first element contained in the container.
226
+ //!
227
+ //! <b>Throws</b>: Nothing.
228
+ //!
229
+ //! <b>Complexity</b>: Constant.
230
+ const_iterator begin() const
231
+ { return m_tree.begin(); }
232
+
233
+ //! <b>Effects</b>: Returns an iterator to the end of the container.
234
+ //!
235
+ //! <b>Throws</b>: Nothing.
236
+ //!
237
+ //! <b>Complexity</b>: Constant.
238
+ iterator end()
239
+ { return m_tree.end(); }
240
+
241
+ //! <b>Effects</b>: Returns a const_iterator to the end of the container.
242
+ //!
243
+ //! <b>Throws</b>: Nothing.
244
+ //!
245
+ //! <b>Complexity</b>: Constant.
246
+ const_iterator end() const
247
+ { return m_tree.end(); }
248
+
249
+ //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
250
+ //! of the reversed container.
251
+ //!
252
+ //! <b>Throws</b>: Nothing.
253
+ //!
254
+ //! <b>Complexity</b>: Constant.
255
+ reverse_iterator rbegin()
256
+ { return m_tree.rbegin(); }
257
+
258
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
259
+ //! of the reversed container.
260
+ //!
261
+ //! <b>Throws</b>: Nothing.
262
+ //!
263
+ //! <b>Complexity</b>: Constant.
264
+ const_reverse_iterator rbegin() const
265
+ { return m_tree.rbegin(); }
266
+
267
+ //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
268
+ //! of the reversed container.
269
+ //!
270
+ //! <b>Throws</b>: Nothing.
271
+ //!
272
+ //! <b>Complexity</b>: Constant.
273
+ reverse_iterator rend()
274
+ { return m_tree.rend(); }
275
+
276
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
277
+ //! of the reversed container.
278
+ //!
279
+ //! <b>Throws</b>: Nothing.
280
+ //!
281
+ //! <b>Complexity</b>: Constant.
282
+ const_reverse_iterator rend() const
283
+ { return m_tree.rend(); }
284
+
285
+ //! <b>Effects</b>: Returns a const_iterator to the first element contained in the container.
286
+ //!
287
+ //! <b>Throws</b>: Nothing.
288
+ //!
289
+ //! <b>Complexity</b>: Constant.
290
+ const_iterator cbegin() const
291
+ { return m_tree.cbegin(); }
292
+
293
+ //! <b>Effects</b>: Returns a const_iterator to the end of the container.
294
+ //!
295
+ //! <b>Throws</b>: Nothing.
296
+ //!
297
+ //! <b>Complexity</b>: Constant.
298
+ const_iterator cend() const
299
+ { return m_tree.cend(); }
300
+
301
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
302
+ //! of the reversed container.
303
+ //!
304
+ //! <b>Throws</b>: Nothing.
305
+ //!
306
+ //! <b>Complexity</b>: Constant.
307
+ const_reverse_iterator crbegin() const
308
+ { return m_tree.crbegin(); }
309
+
310
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
311
+ //! of the reversed container.
312
+ //!
313
+ //! <b>Throws</b>: Nothing.
314
+ //!
315
+ //! <b>Complexity</b>: Constant.
316
+ const_reverse_iterator crend() const
317
+ { return m_tree.crend(); }
318
+
319
+ //////////////////////////////////////////////
320
+ //
321
+ // capacity
322
+ //
323
+ //////////////////////////////////////////////
324
+
325
+ //! <b>Effects</b>: Returns true if the container contains no elements.
326
+ //!
327
+ //! <b>Throws</b>: Nothing.
328
+ //!
329
+ //! <b>Complexity</b>: Constant.
330
+ bool empty() const
331
+ { return m_tree.empty(); }
332
+
333
+ //! <b>Effects</b>: Returns the number of the elements contained in the container.
334
+ //!
335
+ //! <b>Throws</b>: Nothing.
336
+ //!
337
+ //! <b>Complexity</b>: Constant.
338
+ size_type size() const
339
+ { return m_tree.size(); }
340
+
341
+ //! <b>Effects</b>: Returns the largest possible size of the container.
342
+ //!
343
+ //! <b>Throws</b>: Nothing.
344
+ //!
345
+ //! <b>Complexity</b>: Constant.
346
+ size_type max_size() const
347
+ { return m_tree.max_size(); }
348
+
349
+ //////////////////////////////////////////////
350
+ //
351
+ // modifiers
352
+ //
353
+ //////////////////////////////////////////////
354
+
355
+ #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
356
+
357
+ //! <b>Effects</b>: Inserts an object x of type Key constructed with
358
+ //! std::forward<Args>(args)... if and only if there is
359
+ //! no element in the container with equivalent value.
360
+ //! and returns the iterator pointing to the
361
+ //! newly inserted element.
362
+ //!
363
+ //! <b>Returns</b>: The bool component of the returned pair is true if and only
364
+ //! if the insertion takes place, and the iterator component of the pair
365
+ //! points to the element with key equivalent to the key of x.
366
+ //!
367
+ //! <b>Throws</b>: If memory allocation throws or
368
+ //! Key's in-place constructor throws.
369
+ //!
370
+ //! <b>Complexity</b>: Logarithmic.
371
+ template <class... Args>
372
+ std::pair<iterator,bool> emplace(Args&&... args)
373
+ { return m_tree.emplace_unique(boost::forward<Args>(args)...); }
374
+
375
+ //! <b>Effects</b>: Inserts an object of type Key constructed with
376
+ //! std::forward<Args>(args)... if and only if there is
377
+ //! no element in the container with equivalent value.
378
+ //! p is a hint pointing to where the insert
379
+ //! should start to search.
380
+ //!
381
+ //! <b>Returns</b>: An iterator pointing to the element with key equivalent to the key of x.
382
+ //!
383
+ //! <b>Complexity</b>: Logarithmic.
384
+ template <class... Args>
385
+ iterator emplace_hint(const_iterator hint, Args&&... args)
386
+ { return m_tree.emplace_hint_unique(hint, boost::forward<Args>(args)...); }
387
+
388
+ #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
389
+
390
+ #define BOOST_PP_LOCAL_MACRO(n) \
391
+ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
392
+ std::pair<iterator,bool> emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
393
+ { return m_tree.emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \
394
+ \
395
+ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
396
+ iterator emplace_hint(const_iterator hint \
397
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
398
+ { return m_tree.emplace_hint_unique(hint \
399
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));} \
400
+ //!
401
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
402
+ #include BOOST_PP_LOCAL_ITERATE()
403
+
404
+ #endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
405
+
406
+ #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
407
+ //! <b>Effects</b>: Inserts x if and only if there is no element in the container
408
+ //! with key equivalent to the key of x.
409
+ //!
410
+ //! <b>Returns</b>: The bool component of the returned pair is true if and only
411
+ //! if the insertion takes place, and the iterator component of the pair
412
+ //! points to the element with key equivalent to the key of x.
413
+ //!
414
+ //! <b>Complexity</b>: Logarithmic.
415
+ std::pair<iterator, bool> insert(const value_type &x);
416
+
417
+ //! <b>Effects</b>: Move constructs a new value from x if and only if there is
418
+ //! no element in the container with key equivalent to the key of x.
419
+ //!
420
+ //! <b>Returns</b>: The bool component of the returned pair is true if and only
421
+ //! if the insertion takes place, and the iterator component of the pair
422
+ //! points to the element with key equivalent to the key of x.
423
+ //!
424
+ //! <b>Complexity</b>: Logarithmic.
425
+ std::pair<iterator, bool> insert(value_type &&x);
426
+ #else
427
+ private:
428
+ typedef std::pair<iterator, bool> insert_return_pair;
429
+ public:
430
+ BOOST_MOVE_CONVERSION_AWARE_CATCH(insert, value_type, insert_return_pair, this->priv_insert)
431
+ #endif
432
+
433
+ #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
434
+ //! <b>Effects</b>: Inserts a copy of x in the container if and only if there is
435
+ //! no element in the container with key equivalent to the key of x.
436
+ //! p is a hint pointing to where the insert should start to search.
437
+ //!
438
+ //! <b>Returns</b>: An iterator pointing to the element with key equivalent
439
+ //! to the key of x.
440
+ //!
441
+ //! <b>Complexity</b>: Logarithmic in general, but amortized constant if t
442
+ //! is inserted right before p.
443
+ iterator insert(const_iterator p, const value_type &x);
444
+
445
+ //! <b>Effects</b>: Inserts an element move constructed from x in the container.
446
+ //! p is a hint pointing to where the insert should start to search.
447
+ //!
448
+ //! <b>Returns</b>: An iterator pointing to the element with key equivalent to the key of x.
449
+ //!
450
+ //! <b>Complexity</b>: Logarithmic.
451
+ iterator insert(const_iterator position, value_type &&x);
452
+ #else
453
+ BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator)
454
+ #endif
455
+
456
+ //! <b>Requires</b>: first, last are not iterators into *this.
457
+ //!
458
+ //! <b>Effects</b>: inserts each element from the range [first,last) if and only
459
+ //! if there is no element with key equivalent to the key of that element.
460
+ //!
461
+ //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
462
+ template <class InputIterator>
463
+ void insert(InputIterator first, InputIterator last)
464
+ { m_tree.insert_unique(first, last); }
465
+
466
+ //! <b>Effects</b>: Erases the element pointed to by p.
467
+ //!
468
+ //! <b>Returns</b>: Returns an iterator pointing to the element immediately
469
+ //! following q prior to the element being erased. If no such element exists,
470
+ //! returns end().
471
+ //!
472
+ //! <b>Complexity</b>: Amortized constant time
473
+ iterator erase(const_iterator p)
474
+ { return m_tree.erase(p); }
475
+
476
+ //! <b>Effects</b>: Erases all elements in the container with key equivalent to x.
477
+ //!
478
+ //! <b>Returns</b>: Returns the number of erased elements.
479
+ //!
480
+ //! <b>Complexity</b>: log(size()) + count(k)
481
+ size_type erase(const key_type& x)
482
+ { return m_tree.erase(x); }
483
+
484
+ //! <b>Effects</b>: Erases all the elements in the range [first, last).
485
+ //!
486
+ //! <b>Returns</b>: Returns last.
487
+ //!
488
+ //! <b>Complexity</b>: log(size())+N where N is the distance from first to last.
489
+ iterator erase(const_iterator first, const_iterator last)
490
+ { return m_tree.erase(first, last); }
491
+
492
+ //! <b>Effects</b>: Swaps the contents of *this and x.
493
+ //!
494
+ //! <b>Throws</b>: Nothing.
495
+ //!
496
+ //! <b>Complexity</b>: Constant.
497
+ void swap(set& x)
498
+ { m_tree.swap(x.m_tree); }
499
+
500
+ //! <b>Effects</b>: erase(a.begin(),a.end()).
501
+ //!
502
+ //! <b>Postcondition</b>: size() == 0.
503
+ //!
504
+ //! <b>Complexity</b>: linear in size().
505
+ void clear()
506
+ { m_tree.clear(); }
507
+
508
+ //////////////////////////////////////////////
509
+ //
510
+ // observers
511
+ //
512
+ //////////////////////////////////////////////
513
+
514
+ //! <b>Effects</b>: Returns the comparison object out
515
+ //! of which a was constructed.
516
+ //!
517
+ //! <b>Complexity</b>: Constant.
518
+ key_compare key_comp() const
519
+ { return m_tree.key_comp(); }
520
+
521
+ //! <b>Effects</b>: Returns an object of value_compare constructed out
522
+ //! of the comparison object.
523
+ //!
524
+ //! <b>Complexity</b>: Constant.
525
+ value_compare value_comp() const
526
+ { return m_tree.key_comp(); }
527
+
528
+ //////////////////////////////////////////////
529
+ //
530
+ // set operations
531
+ //
532
+ //////////////////////////////////////////////
533
+
534
+ //! <b>Returns</b>: An iterator pointing to an element with the key
535
+ //! equivalent to x, or end() if such an element is not found.
536
+ //!
537
+ //! <b>Complexity</b>: Logarithmic.
538
+ iterator find(const key_type& x)
539
+ { return m_tree.find(x); }
540
+
541
+ //! <b>Returns</b>: Allocator const_iterator pointing to an element with the key
542
+ //! equivalent to x, or end() if such an element is not found.
543
+ //!
544
+ //! <b>Complexity</b>: Logarithmic.
545
+ const_iterator find(const key_type& x) const
546
+ { return m_tree.find(x); }
547
+
548
+ //! <b>Returns</b>: The number of elements with key equivalent to x.
549
+ //!
550
+ //! <b>Complexity</b>: log(size())+count(k)
551
+ size_type count(const key_type& x) const
552
+ { return m_tree.find(x) == m_tree.end() ? 0 : 1; }
553
+
554
+ //! <b>Returns</b>: An iterator pointing to the first element with key not less
555
+ //! than k, or a.end() if such an element is not found.
556
+ //!
557
+ //! <b>Complexity</b>: Logarithmic
558
+ iterator lower_bound(const key_type& x)
559
+ { return m_tree.lower_bound(x); }
560
+
561
+ //! <b>Returns</b>: Allocator const iterator pointing to the first element with key not
562
+ //! less than k, or a.end() if such an element is not found.
563
+ //!
564
+ //! <b>Complexity</b>: Logarithmic
565
+ const_iterator lower_bound(const key_type& x) const
566
+ { return m_tree.lower_bound(x); }
567
+
568
+ //! <b>Returns</b>: An iterator pointing to the first element with key not less
569
+ //! than x, or end() if such an element is not found.
570
+ //!
571
+ //! <b>Complexity</b>: Logarithmic
572
+ iterator upper_bound(const key_type& x)
573
+ { return m_tree.upper_bound(x); }
574
+
575
+ //! <b>Returns</b>: Allocator const iterator pointing to the first element with key not
576
+ //! less than x, or end() if such an element is not found.
577
+ //!
578
+ //! <b>Complexity</b>: Logarithmic
579
+ const_iterator upper_bound(const key_type& x) const
580
+ { return m_tree.upper_bound(x); }
581
+
582
+ //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
583
+ //!
584
+ //! <b>Complexity</b>: Logarithmic
585
+ std::pair<iterator,iterator> equal_range(const key_type& x)
586
+ { return m_tree.equal_range(x); }
587
+
588
+ //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
589
+ //!
590
+ //! <b>Complexity</b>: Logarithmic
591
+ std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const
592
+ { return m_tree.equal_range(x); }
593
+
594
+ /// @cond
595
+ template <class K1, class C1, class A1>
596
+ friend bool operator== (const set<K1,C1,A1>&, const set<K1,C1,A1>&);
597
+
598
+ template <class K1, class C1, class A1>
599
+ friend bool operator< (const set<K1,C1,A1>&, const set<K1,C1,A1>&);
600
+
601
+ private:
602
+ template <class KeyType>
603
+ std::pair<iterator, bool> priv_insert(BOOST_FWD_REF(KeyType) x)
604
+ { return m_tree.insert_unique(::boost::forward<KeyType>(x)); }
605
+
606
+ template <class KeyType>
607
+ iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x)
608
+ { return m_tree.insert_unique(p, ::boost::forward<KeyType>(x)); }
609
+ /// @endcond
610
+ };
611
+
612
+ template <class Key, class Compare, class Allocator>
613
+ inline bool operator==(const set<Key,Compare,Allocator>& x,
614
+ const set<Key,Compare,Allocator>& y)
615
+ { return x.m_tree == y.m_tree; }
616
+
617
+ template <class Key, class Compare, class Allocator>
618
+ inline bool operator<(const set<Key,Compare,Allocator>& x,
619
+ const set<Key,Compare,Allocator>& y)
620
+ { return x.m_tree < y.m_tree; }
621
+
622
+ template <class Key, class Compare, class Allocator>
623
+ inline bool operator!=(const set<Key,Compare,Allocator>& x,
624
+ const set<Key,Compare,Allocator>& y)
625
+ { return !(x == y); }
626
+
627
+ template <class Key, class Compare, class Allocator>
628
+ inline bool operator>(const set<Key,Compare,Allocator>& x,
629
+ const set<Key,Compare,Allocator>& y)
630
+ { return y < x; }
631
+
632
+ template <class Key, class Compare, class Allocator>
633
+ inline bool operator<=(const set<Key,Compare,Allocator>& x,
634
+ const set<Key,Compare,Allocator>& y)
635
+ { return !(y < x); }
636
+
637
+ template <class Key, class Compare, class Allocator>
638
+ inline bool operator>=(const set<Key,Compare,Allocator>& x,
639
+ const set<Key,Compare,Allocator>& y)
640
+ { return !(x < y); }
641
+
642
+ template <class Key, class Compare, class Allocator>
643
+ inline void swap(set<Key,Compare,Allocator>& x, set<Key,Compare,Allocator>& y)
644
+ { x.swap(y); }
645
+
646
+ /// @cond
647
+
648
+ } //namespace container {
649
+
650
+ //!has_trivial_destructor_after_move<> == true_type
651
+ //!specialization for optimizations
652
+ template <class Key, class C, class Allocator>
653
+ struct has_trivial_destructor_after_move<boost::container::set<Key, C, Allocator> >
654
+ {
655
+ static const bool value = has_trivial_destructor_after_move<Allocator>::value && has_trivial_destructor_after_move<C>::value;
656
+ };
657
+
658
+ namespace container {
659
+
660
+ // Forward declaration of operators < and ==, needed for friend declaration.
661
+
662
+ template <class Key, class Compare, class Allocator>
663
+ inline bool operator==(const multiset<Key,Compare,Allocator>& x,
664
+ const multiset<Key,Compare,Allocator>& y);
665
+
666
+ template <class Key, class Compare, class Allocator>
667
+ inline bool operator<(const multiset<Key,Compare,Allocator>& x,
668
+ const multiset<Key,Compare,Allocator>& y);
669
+ /// @endcond
670
+
671
+ //! A multiset is a kind of associative container that supports equivalent keys
672
+ //! (possibly contains multiple copies of the same key value) and provides for
673
+ //! fast retrieval of the keys themselves. Class multiset supports bidirectional iterators.
674
+ //!
675
+ //! A multiset satisfies all of the requirements of a container and of a reversible
676
+ //! container, and of an associative container). multiset also provides most operations
677
+ //! described for duplicate keys.
678
+ #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
679
+ template <class Key, class Compare = std::less<Key>, class Allocator = std::allocator<Key> >
680
+ #else
681
+ template <class Key, class Compare, class Allocator>
682
+ #endif
683
+ class multiset
684
+ {
685
+ /// @cond
686
+ private:
687
+ BOOST_COPYABLE_AND_MOVABLE(multiset)
688
+ typedef container_detail::rbtree<Key, Key,
689
+ container_detail::identity<Key>, Compare, Allocator> tree_t;
690
+ tree_t m_tree; // red-black tree representing multiset
691
+ /// @endcond
692
+
693
+ public:
694
+
695
+ //////////////////////////////////////////////
696
+ //
697
+ // types
698
+ //
699
+ //////////////////////////////////////////////
700
+ typedef Key key_type;
701
+ typedef Key value_type;
702
+ typedef Compare key_compare;
703
+ typedef Compare value_compare;
704
+ typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
705
+ typedef typename ::boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
706
+ typedef typename ::boost::container::allocator_traits<Allocator>::reference reference;
707
+ typedef typename ::boost::container::allocator_traits<Allocator>::const_reference const_reference;
708
+ typedef typename ::boost::container::allocator_traits<Allocator>::size_type size_type;
709
+ typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
710
+ typedef Allocator allocator_type;
711
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type;
712
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::iterator) iterator;
713
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_iterator) const_iterator;
714
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::reverse_iterator) reverse_iterator;
715
+ typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_reverse_iterator) const_reverse_iterator;
716
+
717
+ //////////////////////////////////////////////
718
+ //
719
+ // construct/copy/destroy
720
+ //
721
+ //////////////////////////////////////////////
722
+
723
+ //! <b>Effects</b>: Constructs an empty multiset using the specified comparison
724
+ //! object and allocator.
725
+ //!
726
+ //! <b>Complexity</b>: Constant.
727
+ multiset()
728
+ : m_tree()
729
+ {}
730
+
731
+ //! <b>Effects</b>: Constructs an empty multiset using the specified comparison
732
+ //! object and allocator.
733
+ //!
734
+ //! <b>Complexity</b>: Constant.
735
+ explicit multiset(const Compare& comp,
736
+ const allocator_type& a = allocator_type())
737
+ : m_tree(comp, a)
738
+ {}
739
+
740
+ //! <b>Effects</b>: Constructs an empty multiset using the specified comparison object
741
+ //! and allocator, and inserts elements from the range [first ,last ).
742
+ //!
743
+ //! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using
744
+ //! comp and otherwise N logN, where N is last - first.
745
+ template <class InputIterator>
746
+ multiset(InputIterator first, InputIterator last,
747
+ const Compare& comp = Compare(),
748
+ const allocator_type& a = allocator_type())
749
+ : m_tree(false, first, last, comp, a)
750
+ {}
751
+
752
+ //! <b>Effects</b>: Constructs an empty multiset using the specified comparison object and
753
+ //! allocator, and inserts elements from the ordered range [first ,last ). This function
754
+ //! is more efficient than the normal range creation for ordered ranges.
755
+ //!
756
+ //! <b>Requires</b>: [first ,last) must be ordered according to the predicate.
757
+ //!
758
+ //! <b>Complexity</b>: Linear in N.
759
+ template <class InputIterator>
760
+ multiset( ordered_range_t, InputIterator first, InputIterator last
761
+ , const Compare& comp = Compare()
762
+ , const allocator_type& a = allocator_type())
763
+ : m_tree(ordered_range, first, last, comp, a)
764
+ {}
765
+
766
+ //! <b>Effects</b>: Copy constructs a multiset.
767
+ //!
768
+ //! <b>Complexity</b>: Linear in x.size().
769
+ multiset(const multiset& x)
770
+ : m_tree(x.m_tree)
771
+ {}
772
+
773
+ //! <b>Effects</b>: Move constructs a multiset. Constructs *this using x's resources.
774
+ //!
775
+ //! <b>Complexity</b>: Constant.
776
+ //!
777
+ //! <b>Postcondition</b>: x is emptied.
778
+ multiset(BOOST_RV_REF(multiset) x)
779
+ : m_tree(boost::move(x.m_tree))
780
+ {}
781
+
782
+ //! <b>Effects</b>: Copy constructs a multiset using the specified allocator.
783
+ //!
784
+ //! <b>Complexity</b>: Linear in x.size().
785
+ multiset(const multiset& x, const allocator_type &a)
786
+ : m_tree(x.m_tree, a)
787
+ {}
788
+
789
+ //! <b>Effects</b>: Move constructs a multiset using the specified allocator.
790
+ //! Constructs *this using x's resources.
791
+ //!
792
+ //! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise.
793
+ //!
794
+ //! <b>Postcondition</b>: x is emptied.
795
+ multiset(BOOST_RV_REF(multiset) x, const allocator_type &a)
796
+ : m_tree(boost::move(x.m_tree), a)
797
+ {}
798
+
799
+ //! <b>Effects</b>: Makes *this a copy of x.
800
+ //!
801
+ //! <b>Complexity</b>: Linear in x.size().
802
+ multiset& operator=(BOOST_COPY_ASSIGN_REF(multiset) x)
803
+ { m_tree = x.m_tree; return *this; }
804
+
805
+ //! <b>Effects</b>: this->swap(x.get()).
806
+ //!
807
+ //! <b>Complexity</b>: Constant.
808
+ multiset& operator=(BOOST_RV_REF(multiset) x)
809
+ { m_tree = boost::move(x.m_tree); return *this; }
810
+
811
+ //! <b>Effects</b>: Returns a copy of the Allocator that
812
+ //! was passed to the object's constructor.
813
+ //!
814
+ //! <b>Complexity</b>: Constant.
815
+ allocator_type get_allocator() const
816
+ { return m_tree.get_allocator(); }
817
+
818
+ //! <b>Effects</b>: Returns a reference to the internal allocator.
819
+ //!
820
+ //! <b>Throws</b>: Nothing
821
+ //!
822
+ //! <b>Complexity</b>: Constant.
823
+ //!
824
+ //! <b>Note</b>: Non-standard extension.
825
+ stored_allocator_type &get_stored_allocator()
826
+ { return m_tree.get_stored_allocator(); }
827
+
828
+ //! <b>Effects</b>: Returns a reference to the internal allocator.
829
+ //!
830
+ //! <b>Throws</b>: Nothing
831
+ //!
832
+ //! <b>Complexity</b>: Constant.
833
+ //!
834
+ //! <b>Note</b>: Non-standard extension.
835
+ const stored_allocator_type &get_stored_allocator() const
836
+ { return m_tree.get_stored_allocator(); }
837
+
838
+ //////////////////////////////////////////////
839
+ //
840
+ // iterators
841
+ //
842
+ //////////////////////////////////////////////
843
+
844
+ //! <b>Effects</b>: Returns an iterator to the first element contained in the container.
845
+ //!
846
+ //! <b>Throws</b>: Nothing.
847
+ //!
848
+ //! <b>Complexity</b>: Constant.
849
+ iterator begin()
850
+ { return m_tree.begin(); }
851
+
852
+ //! <b>Effects</b>: Returns a const_iterator to the first element contained in the container.
853
+ //!
854
+ //! <b>Throws</b>: Nothing.
855
+ //!
856
+ //! <b>Complexity</b>: Constant.
857
+ const_iterator begin() const
858
+ { return m_tree.begin(); }
859
+
860
+ //! <b>Effects</b>: Returns an iterator to the end of the container.
861
+ //!
862
+ //! <b>Throws</b>: Nothing.
863
+ //!
864
+ //! <b>Complexity</b>: Constant.
865
+ iterator end()
866
+ { return m_tree.end(); }
867
+
868
+ //! <b>Effects</b>: Returns a const_iterator to the end of the container.
869
+ //!
870
+ //! <b>Throws</b>: Nothing.
871
+ //!
872
+ //! <b>Complexity</b>: Constant.
873
+ const_iterator end() const
874
+ { return m_tree.end(); }
875
+
876
+ //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
877
+ //! of the reversed container.
878
+ //!
879
+ //! <b>Throws</b>: Nothing.
880
+ //!
881
+ //! <b>Complexity</b>: Constant.
882
+ reverse_iterator rbegin()
883
+ { return m_tree.rbegin(); }
884
+
885
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
886
+ //! of the reversed container.
887
+ //!
888
+ //! <b>Throws</b>: Nothing.
889
+ //!
890
+ //! <b>Complexity</b>: Constant.
891
+ const_reverse_iterator rbegin() const
892
+ { return m_tree.rbegin(); }
893
+
894
+ //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
895
+ //! of the reversed container.
896
+ //!
897
+ //! <b>Throws</b>: Nothing.
898
+ //!
899
+ //! <b>Complexity</b>: Constant.
900
+ reverse_iterator rend()
901
+ { return m_tree.rend(); }
902
+
903
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
904
+ //! of the reversed container.
905
+ //!
906
+ //! <b>Throws</b>: Nothing.
907
+ //!
908
+ //! <b>Complexity</b>: Constant.
909
+ const_reverse_iterator rend() const
910
+ { return m_tree.rend(); }
911
+
912
+ //! <b>Effects</b>: Returns a const_iterator to the first element contained in the container.
913
+ //!
914
+ //! <b>Throws</b>: Nothing.
915
+ //!
916
+ //! <b>Complexity</b>: Constant.
917
+ const_iterator cbegin() const
918
+ { return m_tree.cbegin(); }
919
+
920
+ //! <b>Effects</b>: Returns a const_iterator to the end of the container.
921
+ //!
922
+ //! <b>Throws</b>: Nothing.
923
+ //!
924
+ //! <b>Complexity</b>: Constant.
925
+ const_iterator cend() const
926
+ { return m_tree.cend(); }
927
+
928
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
929
+ //! of the reversed container.
930
+ //!
931
+ //! <b>Throws</b>: Nothing.
932
+ //!
933
+ //! <b>Complexity</b>: Constant.
934
+ const_reverse_iterator crbegin() const
935
+ { return m_tree.crbegin(); }
936
+
937
+ //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
938
+ //! of the reversed container.
939
+ //!
940
+ //! <b>Throws</b>: Nothing.
941
+ //!
942
+ //! <b>Complexity</b>: Constant.
943
+ const_reverse_iterator crend() const
944
+ { return m_tree.crend(); }
945
+
946
+ //////////////////////////////////////////////
947
+ //
948
+ // capacity
949
+ //
950
+ //////////////////////////////////////////////
951
+
952
+ //! <b>Effects</b>: Returns true if the container contains no elements.
953
+ //!
954
+ //! <b>Throws</b>: Nothing.
955
+ //!
956
+ //! <b>Complexity</b>: Constant.
957
+ bool empty() const
958
+ { return m_tree.empty(); }
959
+
960
+ //! <b>Effects</b>: Returns the number of the elements contained in the container.
961
+ //!
962
+ //! <b>Throws</b>: Nothing.
963
+ //!
964
+ //! <b>Complexity</b>: Constant.
965
+ size_type size() const
966
+ { return m_tree.size(); }
967
+
968
+ //! <b>Effects</b>: Returns the largest possible size of the container.
969
+ //!
970
+ //! <b>Throws</b>: Nothing.
971
+ //!
972
+ //! <b>Complexity</b>: Constant.
973
+ size_type max_size() const
974
+ { return m_tree.max_size(); }
975
+
976
+ //////////////////////////////////////////////
977
+ //
978
+ // modifiers
979
+ //
980
+ //////////////////////////////////////////////
981
+
982
+ #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
983
+
984
+ //! <b>Effects</b>: Inserts an object of type Key constructed with
985
+ //! std::forward<Args>(args)... and returns the iterator pointing to the
986
+ //! newly inserted element.
987
+ //!
988
+ //! <b>Complexity</b>: Logarithmic.
989
+ template <class... Args>
990
+ iterator emplace(Args&&... args)
991
+ { return m_tree.emplace_equal(boost::forward<Args>(args)...); }
992
+
993
+ //! <b>Effects</b>: Inserts an object of type Key constructed with
994
+ //! std::forward<Args>(args)...
995
+ //!
996
+ //! <b>Returns</b>: An iterator pointing to the element with key equivalent
997
+ //! to the key of x.
998
+ //!
999
+ //! <b>Complexity</b>: Logarithmic in general, but amortized constant if t
1000
+ //! is inserted right before p.
1001
+ template <class... Args>
1002
+ iterator emplace_hint(const_iterator hint, Args&&... args)
1003
+ { return m_tree.emplace_hint_equal(hint, boost::forward<Args>(args)...); }
1004
+
1005
+ #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
1006
+
1007
+ #define BOOST_PP_LOCAL_MACRO(n) \
1008
+ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
1009
+ iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
1010
+ { return m_tree.emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \
1011
+ \
1012
+ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
1013
+ iterator emplace_hint(const_iterator hint \
1014
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
1015
+ { return m_tree.emplace_hint_equal(hint \
1016
+ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));} \
1017
+ //!
1018
+ #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
1019
+ #include BOOST_PP_LOCAL_ITERATE()
1020
+
1021
+ #endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
1022
+
1023
+
1024
+
1025
+
1026
+ #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1027
+ //! <b>Effects</b>: Inserts x and returns the iterator pointing to the
1028
+ //! newly inserted element.
1029
+ //!
1030
+ //! <b>Complexity</b>: Logarithmic.
1031
+ iterator insert(const value_type &x);
1032
+
1033
+ //! <b>Effects</b>: Inserts a copy of x in the container.
1034
+ //!
1035
+ //! <b>Returns</b>: An iterator pointing to the element with key equivalent
1036
+ //! to the key of x.
1037
+ //!
1038
+ //! <b>Complexity</b>: Logarithmic in general, but amortized constant if t
1039
+ //! is inserted right before p.
1040
+ iterator insert(value_type &&x);
1041
+ #else
1042
+ BOOST_MOVE_CONVERSION_AWARE_CATCH(insert, value_type, iterator, this->priv_insert)
1043
+ #endif
1044
+
1045
+ #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1046
+ //! <b>Effects</b>: Inserts a copy of x in the container.
1047
+ //! p is a hint pointing to where the insert should start to search.
1048
+ //!
1049
+ //! <b>Returns</b>: An iterator pointing to the element with key equivalent
1050
+ //! to the key of x.
1051
+ //!
1052
+ //! <b>Complexity</b>: Logarithmic in general, but amortized constant if t
1053
+ //! is inserted right before p.
1054
+ iterator insert(const_iterator p, const value_type &x);
1055
+
1056
+ //! <b>Effects</b>: Inserts a value move constructed from x in the container.
1057
+ //! p is a hint pointing to where the insert should start to search.
1058
+ //!
1059
+ //! <b>Returns</b>: An iterator pointing to the element with key equivalent
1060
+ //! to the key of x.
1061
+ //!
1062
+ //! <b>Complexity</b>: Logarithmic in general, but amortized constant if t
1063
+ //! is inserted right before p.
1064
+ iterator insert(const_iterator position, value_type &&x);
1065
+ #else
1066
+ BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator)
1067
+ #endif
1068
+
1069
+ //! <b>Requires</b>: first, last are not iterators into *this.
1070
+ //!
1071
+ //! <b>Effects</b>: inserts each element from the range [first,last) .
1072
+ //!
1073
+ //! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
1074
+ template <class InputIterator>
1075
+ void insert(InputIterator first, InputIterator last)
1076
+ { m_tree.insert_equal(first, last); }
1077
+
1078
+ //! <b>Effects</b>: Erases the element pointed to by p.
1079
+ //!
1080
+ //! <b>Returns</b>: Returns an iterator pointing to the element immediately
1081
+ //! following q prior to the element being erased. If no such element exists,
1082
+ //! returns end().
1083
+ //!
1084
+ //! <b>Complexity</b>: Amortized constant time
1085
+ iterator erase(const_iterator p)
1086
+ { return m_tree.erase(p); }
1087
+
1088
+ //! <b>Effects</b>: Erases all elements in the container with key equivalent to x.
1089
+ //!
1090
+ //! <b>Returns</b>: Returns the number of erased elements.
1091
+ //!
1092
+ //! <b>Complexity</b>: log(size()) + count(k)
1093
+ size_type erase(const key_type& x)
1094
+ { return m_tree.erase(x); }
1095
+
1096
+ //! <b>Effects</b>: Erases all the elements in the range [first, last).
1097
+ //!
1098
+ //! <b>Returns</b>: Returns last.
1099
+ //!
1100
+ //! <b>Complexity</b>: log(size())+N where N is the distance from first to last.
1101
+ iterator erase(const_iterator first, const_iterator last)
1102
+ { return m_tree.erase(first, last); }
1103
+
1104
+ //! <b>Effects</b>: Swaps the contents of *this and x.
1105
+ //!
1106
+ //! <b>Throws</b>: Nothing.
1107
+ //!
1108
+ //! <b>Complexity</b>: Constant.
1109
+ void swap(multiset& x)
1110
+ { m_tree.swap(x.m_tree); }
1111
+
1112
+ //! <b>Effects</b>: erase(a.begin(),a.end()).
1113
+ //!
1114
+ //! <b>Postcondition</b>: size() == 0.
1115
+ //!
1116
+ //! <b>Complexity</b>: linear in size().
1117
+ void clear()
1118
+ { m_tree.clear(); }
1119
+
1120
+ //////////////////////////////////////////////
1121
+ //
1122
+ // observers
1123
+ //
1124
+ //////////////////////////////////////////////
1125
+
1126
+ //! <b>Effects</b>: Returns the comparison object out
1127
+ //! of which a was constructed.
1128
+ //!
1129
+ //! <b>Complexity</b>: Constant.
1130
+ key_compare key_comp() const
1131
+ { return m_tree.key_comp(); }
1132
+
1133
+ //! <b>Effects</b>: Returns an object of value_compare constructed out
1134
+ //! of the comparison object.
1135
+ //!
1136
+ //! <b>Complexity</b>: Constant.
1137
+ value_compare value_comp() const
1138
+ { return m_tree.key_comp(); }
1139
+
1140
+ //////////////////////////////////////////////
1141
+ //
1142
+ // set operations
1143
+ //
1144
+ //////////////////////////////////////////////
1145
+
1146
+ //! <b>Returns</b>: An iterator pointing to an element with the key
1147
+ //! equivalent to x, or end() if such an element is not found.
1148
+ //!
1149
+ //! <b>Complexity</b>: Logarithmic.
1150
+ iterator find(const key_type& x)
1151
+ { return m_tree.find(x); }
1152
+
1153
+ //! <b>Returns</b>: Allocator const iterator pointing to an element with the key
1154
+ //! equivalent to x, or end() if such an element is not found.
1155
+ //!
1156
+ //! <b>Complexity</b>: Logarithmic.
1157
+ const_iterator find(const key_type& x) const
1158
+ { return m_tree.find(x); }
1159
+
1160
+ //! <b>Returns</b>: The number of elements with key equivalent to x.
1161
+ //!
1162
+ //! <b>Complexity</b>: log(size())+count(k)
1163
+ size_type count(const key_type& x) const
1164
+ { return m_tree.count(x); }
1165
+
1166
+ //! <b>Returns</b>: An iterator pointing to the first element with key not less
1167
+ //! than k, or a.end() if such an element is not found.
1168
+ //!
1169
+ //! <b>Complexity</b>: Logarithmic
1170
+ iterator lower_bound(const key_type& x)
1171
+ { return m_tree.lower_bound(x); }
1172
+
1173
+ //! <b>Returns</b>: Allocator const iterator pointing to the first element with key not
1174
+ //! less than k, or a.end() if such an element is not found.
1175
+ //!
1176
+ //! <b>Complexity</b>: Logarithmic
1177
+ const_iterator lower_bound(const key_type& x) const
1178
+ { return m_tree.lower_bound(x); }
1179
+
1180
+ //! <b>Returns</b>: An iterator pointing to the first element with key not less
1181
+ //! than x, or end() if such an element is not found.
1182
+ //!
1183
+ //! <b>Complexity</b>: Logarithmic
1184
+ iterator upper_bound(const key_type& x)
1185
+ { return m_tree.upper_bound(x); }
1186
+
1187
+ //! <b>Returns</b>: Allocator const iterator pointing to the first element with key not
1188
+ //! less than x, or end() if such an element is not found.
1189
+ //!
1190
+ //! <b>Complexity</b>: Logarithmic
1191
+ const_iterator upper_bound(const key_type& x) const
1192
+ { return m_tree.upper_bound(x); }
1193
+
1194
+ //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
1195
+ //!
1196
+ //! <b>Complexity</b>: Logarithmic
1197
+ std::pair<iterator,iterator> equal_range(const key_type& x)
1198
+ { return m_tree.equal_range(x); }
1199
+
1200
+ //! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
1201
+ //!
1202
+ //! <b>Complexity</b>: Logarithmic
1203
+ std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const
1204
+ { return m_tree.equal_range(x); }
1205
+
1206
+ /// @cond
1207
+ template <class K1, class C1, class A1>
1208
+ friend bool operator== (const multiset<K1,C1,A1>&,
1209
+ const multiset<K1,C1,A1>&);
1210
+ template <class K1, class C1, class A1>
1211
+ friend bool operator< (const multiset<K1,C1,A1>&,
1212
+ const multiset<K1,C1,A1>&);
1213
+ private:
1214
+ template <class KeyType>
1215
+ iterator priv_insert(BOOST_FWD_REF(KeyType) x)
1216
+ { return m_tree.insert_equal(::boost::forward<KeyType>(x)); }
1217
+
1218
+ template <class KeyType>
1219
+ iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x)
1220
+ { return m_tree.insert_equal(p, ::boost::forward<KeyType>(x)); }
1221
+
1222
+ /// @endcond
1223
+ };
1224
+
1225
+ template <class Key, class Compare, class Allocator>
1226
+ inline bool operator==(const multiset<Key,Compare,Allocator>& x,
1227
+ const multiset<Key,Compare,Allocator>& y)
1228
+ { return x.m_tree == y.m_tree; }
1229
+
1230
+ template <class Key, class Compare, class Allocator>
1231
+ inline bool operator<(const multiset<Key,Compare,Allocator>& x,
1232
+ const multiset<Key,Compare,Allocator>& y)
1233
+ { return x.m_tree < y.m_tree; }
1234
+
1235
+ template <class Key, class Compare, class Allocator>
1236
+ inline bool operator!=(const multiset<Key,Compare,Allocator>& x,
1237
+ const multiset<Key,Compare,Allocator>& y)
1238
+ { return !(x == y); }
1239
+
1240
+ template <class Key, class Compare, class Allocator>
1241
+ inline bool operator>(const multiset<Key,Compare,Allocator>& x,
1242
+ const multiset<Key,Compare,Allocator>& y)
1243
+ { return y < x; }
1244
+
1245
+ template <class Key, class Compare, class Allocator>
1246
+ inline bool operator<=(const multiset<Key,Compare,Allocator>& x,
1247
+ const multiset<Key,Compare,Allocator>& y)
1248
+ { return !(y < x); }
1249
+
1250
+ template <class Key, class Compare, class Allocator>
1251
+ inline bool operator>=(const multiset<Key,Compare,Allocator>& x,
1252
+ const multiset<Key,Compare,Allocator>& y)
1253
+ { return !(x < y); }
1254
+
1255
+ template <class Key, class Compare, class Allocator>
1256
+ inline void swap(multiset<Key,Compare,Allocator>& x, multiset<Key,Compare,Allocator>& y)
1257
+ { x.swap(y); }
1258
+
1259
+ /// @cond
1260
+
1261
+ } //namespace container {
1262
+
1263
+ //!has_trivial_destructor_after_move<> == true_type
1264
+ //!specialization for optimizations
1265
+ template <class Key, class C, class Allocator>
1266
+ struct has_trivial_destructor_after_move<boost::container::multiset<Key, C, Allocator> >
1267
+ {
1268
+ static const bool value = has_trivial_destructor_after_move<Allocator>::value && has_trivial_destructor_after_move<C>::value;
1269
+ };
1270
+
1271
+ namespace container {
1272
+
1273
+ /// @endcond
1274
+
1275
+ }}
1276
+
1277
+ #include <boost/container/detail/config_end.hpp>
1278
+
1279
+ #endif /* BOOST_CONTAINER_SET_HPP */
1280
+