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