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.
- checksums.yaml +8 -8
- checksums.yaml.gz.asc +7 -7
- data.tar.gz.asc +7 -7
- data/.editorconfig +5 -0
- data/.travis.yml +3 -2
- data/CHANGELOG +31 -53
- data/CONTRIBUTING.md +4 -4
- data/CONTRIBUTORS +0 -1
- data/Gemfile +18 -0
- data/Gemfile.lock +41 -0
- data/Rakefile +16 -0
- data/bin/passenger +2 -2
- data/bin/passenger-install-apache2-module +12 -12
- data/bin/passenger-install-nginx-module +9 -14
- data/bin/passenger-status +125 -87
- data/build/agents.rb +112 -140
- data/build/apache2.rb +4 -9
- data/build/basics.rb +5 -3
- data/build/common_library.rb +1 -0
- data/build/cxx_tests.rb +69 -47
- data/build/debian.rb +4 -2
- data/build/documentation.rb +1 -0
- data/build/integration_tests.rb +28 -43
- data/build/misc.rb +0 -18
- data/build/nginx.rb +2 -6
- data/build/packaging.rb +33 -22
- data/build/preprocessor.rb +2 -4
- data/build/ruby_tests.rb +7 -26
- data/build/test_basics.rb +24 -25
- data/debian.template/control.template +2 -2
- data/debian.template/locations.ini.template +2 -3
- data/debian.template/passenger.install.template +2 -2
- data/debian.template/rules.template +1 -1
- data/dev/ci/run_jenkins.sh +0 -1
- data/dev/ci/run_rpm_tests.sh +3 -0
- data/dev/ci/run_travis.sh +63 -17
- data/dev/copy_boost_headers +22 -6
- data/dev/ruby_server.rb +244 -0
- data/dev/vagrant/provision.sh +3 -1
- data/doc/DebuggingAndStressTesting.md +3 -3
- data/doc/Design and Architecture.txt +5 -6
- data/doc/Packaging.txt.md +35 -6
- data/doc/ServerOptimizationGuide.txt.md +339 -0
- data/doc/Users guide Apache.idmap.txt +177 -187
- data/doc/Users guide Apache.txt +143 -219
- data/doc/Users guide Nginx.idmap.txt +166 -166
- data/doc/Users guide Nginx.txt +265 -223
- data/doc/Users guide Standalone.txt +3 -3
- data/doc/templates/markdown.html.erb +37 -6
- data/doc/users_guide_snippets/environment_variables.txt +1 -1
- data/doc/users_guide_snippets/support_information.txt +1 -1
- data/doc/users_guide_snippets/tips.txt +2 -2
- data/ext/apache2/Configuration.cpp +23 -81
- data/ext/apache2/Configuration.hpp +18 -92
- data/ext/apache2/ConfigurationCommands.cpp +64 -15
- data/ext/apache2/ConfigurationCommands.cpp.erb +8 -4
- data/ext/apache2/ConfigurationFields.hpp +12 -0
- data/ext/apache2/ConfigurationSetters.cpp +73 -1
- data/ext/apache2/ConfigurationSetters.cpp.erb +3 -2
- data/ext/apache2/CreateDirConfig.cpp +6 -0
- data/ext/apache2/DirectoryMapper.h +11 -6
- data/ext/apache2/Hooks.cpp +291 -408
- data/ext/apache2/MergeDirConfig.cpp +42 -0
- data/ext/apache2/SetHeaders.cpp +61 -16
- data/ext/apache2/SetHeaders.cpp.erb +9 -7
- data/ext/boost/container/allocator_traits.hpp +400 -0
- data/ext/boost/container/deque.hpp +2012 -0
- data/ext/boost/container/detail/adaptive_node_pool_impl.hpp +874 -0
- data/ext/boost/container/detail/advanced_insert_int.hpp +369 -0
- data/ext/boost/container/detail/algorithms.hpp +84 -0
- data/ext/boost/container/detail/allocation_type.hpp +54 -0
- data/ext/boost/container/detail/allocator_version_traits.hpp +163 -0
- data/ext/boost/container/detail/config_begin.hpp +49 -0
- data/ext/boost/container/detail/config_end.hpp +17 -0
- data/ext/boost/container/detail/destroyers.hpp +365 -0
- data/ext/boost/container/detail/flat_tree.hpp +1055 -0
- data/ext/boost/container/detail/function_detector.hpp +88 -0
- data/ext/boost/container/detail/iterators.hpp +611 -0
- data/ext/boost/container/detail/math_functions.hpp +113 -0
- data/ext/boost/container/detail/memory_util.hpp +83 -0
- data/ext/boost/container/detail/mpl.hpp +160 -0
- data/ext/boost/container/detail/multiallocation_chain.hpp +286 -0
- data/ext/boost/container/detail/node_alloc_holder.hpp +386 -0
- data/ext/boost/container/detail/node_pool_impl.hpp +365 -0
- data/ext/boost/container/detail/pair.hpp +354 -0
- data/ext/boost/container/detail/pool_common.hpp +52 -0
- data/ext/boost/container/detail/preprocessor.hpp +232 -0
- data/ext/boost/container/detail/transform_iterator.hpp +176 -0
- data/ext/boost/container/detail/tree.hpp +1134 -0
- data/ext/boost/container/detail/type_traits.hpp +210 -0
- data/ext/boost/container/detail/utilities.hpp +1141 -0
- data/ext/boost/container/detail/value_init.hpp +45 -0
- data/ext/boost/container/detail/variadic_templates_tools.hpp +153 -0
- data/ext/boost/container/detail/version_type.hpp +92 -0
- data/ext/boost/container/detail/workaround.hpp +44 -0
- data/ext/boost/container/flat_map.hpp +1674 -0
- data/ext/boost/container/flat_set.hpp +1408 -0
- data/ext/boost/container/list.hpp +1475 -0
- data/ext/boost/container/map.hpp +1508 -0
- data/ext/boost/container/scoped_allocator.hpp +1503 -0
- data/ext/boost/container/scoped_allocator_fwd.hpp +83 -0
- data/ext/boost/container/set.hpp +1280 -0
- data/ext/boost/container/slist.hpp +1706 -0
- data/ext/boost/container/stable_vector.hpp +1869 -0
- data/ext/boost/container/static_vector.hpp +1053 -0
- data/ext/boost/container/string.hpp +2856 -0
- data/ext/boost/container/throw_exception.hpp +110 -0
- data/ext/boost/container/vector.hpp +2671 -0
- data/ext/boost/detail/is_xxx.hpp +61 -0
- data/ext/boost/intrusive/any_hook.hpp +344 -0
- data/ext/boost/intrusive/avl_set.hpp +2528 -0
- data/ext/boost/intrusive/avl_set_hook.hpp +297 -0
- data/ext/boost/intrusive/avltree.hpp +1786 -0
- data/ext/boost/intrusive/avltree_algorithms.hpp +968 -0
- data/ext/boost/intrusive/bs_set_hook.hpp +296 -0
- data/ext/boost/intrusive/circular_list_algorithms.hpp +413 -0
- data/ext/boost/intrusive/circular_slist_algorithms.hpp +404 -0
- data/ext/boost/intrusive/derivation_value_traits.hpp +70 -0
- data/ext/boost/intrusive/detail/any_node_and_algorithms.hpp +297 -0
- data/ext/boost/intrusive/detail/assert.hpp +41 -0
- data/ext/boost/intrusive/detail/avltree_node.hpp +197 -0
- data/ext/boost/intrusive/detail/clear_on_destructor_base.hpp +36 -0
- data/ext/boost/intrusive/detail/common_slist_algorithms.hpp +102 -0
- data/ext/boost/intrusive/detail/config_begin.hpp +52 -0
- data/ext/boost/intrusive/detail/config_end.hpp +15 -0
- data/ext/boost/intrusive/detail/ebo_functor_holder.hpp +95 -0
- data/ext/boost/intrusive/detail/function_detector.hpp +88 -0
- data/ext/boost/intrusive/detail/generic_hook.hpp +209 -0
- data/ext/boost/intrusive/detail/has_member_function_callable_with.hpp +357 -0
- data/ext/boost/intrusive/detail/hashtable_node.hpp +249 -0
- data/ext/boost/intrusive/detail/is_stateful_value_traits.hpp +77 -0
- data/ext/boost/intrusive/detail/list_node.hpp +196 -0
- data/ext/boost/intrusive/detail/memory_util.hpp +288 -0
- data/ext/boost/intrusive/detail/mpl.hpp +383 -0
- data/ext/boost/intrusive/detail/parent_from_member.hpp +97 -0
- data/ext/boost/intrusive/detail/preprocessor.hpp +52 -0
- data/ext/boost/intrusive/detail/rbtree_node.hpp +201 -0
- data/ext/boost/intrusive/detail/slist_node.hpp +166 -0
- data/ext/boost/intrusive/detail/transform_iterator.hpp +173 -0
- data/ext/boost/intrusive/detail/tree_algorithms.hpp +1742 -0
- data/ext/boost/intrusive/detail/tree_node.hpp +199 -0
- data/ext/boost/intrusive/detail/utilities.hpp +858 -0
- data/ext/boost/intrusive/detail/workaround.hpp +22 -0
- data/ext/boost/intrusive/hashtable.hpp +3110 -0
- data/ext/boost/intrusive/intrusive_fwd.hpp +542 -0
- data/ext/boost/intrusive/linear_slist_algorithms.hpp +327 -0
- data/ext/boost/intrusive/link_mode.hpp +46 -0
- data/ext/boost/intrusive/list.hpp +1525 -0
- data/ext/boost/intrusive/list_hook.hpp +290 -0
- data/ext/boost/intrusive/member_value_traits.hpp +70 -0
- data/ext/boost/intrusive/options.hpp +810 -0
- data/ext/boost/intrusive/parent_from_member.hpp +42 -0
- data/ext/boost/intrusive/pointer_plus_bits.hpp +86 -0
- data/ext/boost/intrusive/pointer_traits.hpp +265 -0
- data/ext/boost/intrusive/priority_compare.hpp +39 -0
- data/ext/boost/intrusive/rbtree.hpp +1785 -0
- data/ext/boost/intrusive/rbtree_algorithms.hpp +934 -0
- data/ext/boost/intrusive/set.hpp +2554 -0
- data/ext/boost/intrusive/set_hook.hpp +300 -0
- data/ext/boost/intrusive/sg_set.hpp +2601 -0
- data/ext/boost/intrusive/sgtree.hpp +2009 -0
- data/ext/boost/intrusive/sgtree_algorithms.hpp +807 -0
- data/ext/boost/intrusive/slist.hpp +2219 -0
- data/ext/boost/intrusive/slist_hook.hpp +294 -0
- data/ext/boost/intrusive/splay_set.hpp +2575 -0
- data/ext/boost/intrusive/splay_set_hook.hpp +292 -0
- data/ext/boost/intrusive/splaytree.hpp +1784 -0
- data/ext/boost/intrusive/splaytree_algorithms.hpp +1008 -0
- data/ext/boost/intrusive/treap.hpp +1882 -0
- data/ext/boost/intrusive/treap_algorithms.hpp +919 -0
- data/ext/boost/intrusive/treap_set.hpp +2751 -0
- data/ext/boost/intrusive/trivial_value_traits.hpp +46 -0
- data/ext/boost/intrusive/unordered_set.hpp +2115 -0
- data/ext/boost/intrusive/unordered_set_hook.hpp +434 -0
- data/ext/boost/intrusive_ptr.hpp +18 -0
- data/ext/boost/math/common_factor_ct.hpp +180 -0
- data/ext/boost/math_fwd.hpp +108 -0
- data/ext/boost/move/detail/move_helpers.hpp +175 -0
- data/ext/boost/parameter.hpp +21 -0
- data/ext/boost/parameter/aux_/arg_list.hpp +459 -0
- data/ext/boost/parameter/aux_/cast.hpp +143 -0
- data/ext/boost/parameter/aux_/default.hpp +69 -0
- data/ext/boost/parameter/aux_/is_maybe.hpp +26 -0
- data/ext/boost/parameter/aux_/maybe.hpp +120 -0
- data/ext/boost/parameter/aux_/overloads.hpp +88 -0
- data/ext/boost/parameter/aux_/parameter_requirements.hpp +25 -0
- data/ext/boost/parameter/aux_/parenthesized_type.hpp +119 -0
- data/ext/boost/parameter/aux_/preprocessor/flatten.hpp +115 -0
- data/ext/boost/parameter/aux_/preprocessor/for_each.hpp +103 -0
- data/ext/boost/parameter/aux_/python/invoker.hpp +132 -0
- data/ext/boost/parameter/aux_/python/invoker_iterate.hpp +93 -0
- data/ext/boost/parameter/aux_/result_of0.hpp +36 -0
- data/ext/boost/parameter/aux_/set.hpp +67 -0
- data/ext/boost/parameter/aux_/tag.hpp +38 -0
- data/ext/boost/parameter/aux_/tagged_argument.hpp +188 -0
- data/ext/boost/parameter/aux_/template_keyword.hpp +47 -0
- data/ext/boost/parameter/aux_/unwrap_cv_reference.hpp +97 -0
- data/ext/boost/parameter/aux_/void.hpp +29 -0
- data/ext/boost/parameter/aux_/yesno.hpp +26 -0
- data/ext/boost/parameter/binding.hpp +106 -0
- data/ext/boost/parameter/config.hpp +14 -0
- data/ext/boost/parameter/keyword.hpp +152 -0
- data/ext/boost/parameter/macros.hpp +99 -0
- data/ext/boost/parameter/match.hpp +55 -0
- data/ext/boost/parameter/name.hpp +156 -0
- data/ext/boost/parameter/parameters.hpp +931 -0
- data/ext/boost/parameter/preprocessor.hpp +1178 -0
- data/ext/boost/parameter/python.hpp +735 -0
- data/ext/boost/parameter/value_type.hpp +108 -0
- data/ext/boost/pool/detail/for.m4 +107 -0
- data/ext/boost/pool/detail/guard.hpp +69 -0
- data/ext/boost/pool/detail/mutex.hpp +42 -0
- data/ext/boost/pool/detail/pool_construct.bat +24 -0
- data/ext/boost/pool/detail/pool_construct.ipp +852 -0
- data/ext/boost/pool/detail/pool_construct.m4 +84 -0
- data/ext/boost/pool/detail/pool_construct.sh +12 -0
- data/ext/boost/pool/detail/pool_construct_simple.bat +25 -0
- data/ext/boost/pool/detail/pool_construct_simple.ipp +43 -0
- data/ext/boost/pool/detail/pool_construct_simple.m4 +72 -0
- data/ext/boost/pool/detail/pool_construct_simple.sh +12 -0
- data/ext/boost/pool/object_pool.hpp +287 -0
- data/ext/boost/pool/pool.hpp +1024 -0
- data/ext/boost/pool/pool_alloc.hpp +488 -0
- data/ext/boost/pool/poolfwd.hpp +82 -0
- data/ext/boost/pool/simple_segregated_storage.hpp +377 -0
- data/ext/boost/pool/singleton_pool.hpp +251 -0
- data/ext/boost/preprocessor/arithmetic.hpp +25 -0
- data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
- data/ext/boost/preprocessor/arithmetic/div.hpp +39 -0
- data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
- data/ext/boost/preprocessor/arithmetic/mul.hpp +53 -0
- data/ext/boost/preprocessor/array.hpp +32 -0
- data/ext/boost/preprocessor/array/enum.hpp +33 -0
- data/ext/boost/preprocessor/array/insert.hpp +55 -0
- data/ext/boost/preprocessor/array/pop_back.hpp +37 -0
- data/ext/boost/preprocessor/array/pop_front.hpp +38 -0
- data/ext/boost/preprocessor/array/push_back.hpp +33 -0
- data/ext/boost/preprocessor/array/push_front.hpp +33 -0
- data/ext/boost/preprocessor/array/remove.hpp +54 -0
- data/ext/boost/preprocessor/array/replace.hpp +49 -0
- data/ext/boost/preprocessor/array/reverse.hpp +29 -0
- data/ext/boost/preprocessor/array/to_list.hpp +33 -0
- data/ext/boost/preprocessor/array/to_seq.hpp +33 -0
- data/ext/boost/preprocessor/array/to_tuple.hpp +22 -0
- data/ext/boost/preprocessor/assert_msg.hpp +17 -0
- data/ext/boost/preprocessor/comma.hpp +17 -0
- data/ext/boost/preprocessor/comparison.hpp +24 -0
- data/ext/boost/preprocessor/comparison/equal.hpp +34 -0
- data/ext/boost/preprocessor/comparison/greater.hpp +38 -0
- data/ext/boost/preprocessor/comparison/greater_equal.hpp +38 -0
- data/ext/boost/preprocessor/comparison/less.hpp +46 -0
- data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
- data/ext/boost/preprocessor/comparison/not_equal.hpp +814 -0
- data/ext/boost/preprocessor/config/limits.hpp +30 -0
- data/ext/boost/preprocessor/control.hpp +22 -0
- data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
- data/ext/boost/preprocessor/control/detail/dmc/while.hpp +536 -0
- data/ext/boost/preprocessor/control/detail/edg/while.hpp +534 -0
- data/ext/boost/preprocessor/control/detail/msvc/while.hpp +277 -0
- data/ext/boost/preprocessor/control/expr_if.hpp +30 -0
- data/ext/boost/preprocessor/debug.hpp +18 -0
- data/ext/boost/preprocessor/debug/assert.hpp +44 -0
- data/ext/boost/preprocessor/debug/line.hpp +35 -0
- data/ext/boost/preprocessor/detail/dmc/auto_rec.hpp +286 -0
- data/ext/boost/preprocessor/detail/is_nullary.hpp +30 -0
- data/ext/boost/preprocessor/detail/is_unary.hpp +30 -0
- data/ext/boost/preprocessor/detail/null.hpp +17 -0
- data/ext/boost/preprocessor/detail/split.hpp +35 -0
- data/ext/boost/preprocessor/enum_params_with_defaults.hpp +17 -0
- data/ext/boost/preprocessor/enum_shifted.hpp +17 -0
- data/ext/boost/preprocessor/expand.hpp +17 -0
- data/ext/boost/preprocessor/expr_if.hpp +17 -0
- data/ext/boost/preprocessor/facilities.hpp +23 -0
- data/ext/boost/preprocessor/facilities/apply.hpp +34 -0
- data/ext/boost/preprocessor/facilities/expand.hpp +28 -0
- data/ext/boost/preprocessor/facilities/is_1.hpp +23 -0
- data/ext/boost/preprocessor/facilities/is_empty.hpp +43 -0
- data/ext/boost/preprocessor/facilities/is_empty_or_1.hpp +30 -0
- data/ext/boost/preprocessor/for.hpp +17 -0
- data/ext/boost/preprocessor/if.hpp +17 -0
- data/ext/boost/preprocessor/iteration.hpp +19 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower3.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower4.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower5.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper3.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper4.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper5.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/finish.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward3.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward4.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward5.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse2.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse3.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse4.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse5.hpp +1296 -0
- data/ext/boost/preprocessor/iteration/detail/local.hpp +812 -0
- data/ext/boost/preprocessor/iteration/detail/rlocal.hpp +782 -0
- data/ext/boost/preprocessor/iteration/detail/self.hpp +21 -0
- data/ext/boost/preprocessor/iteration/detail/start.hpp +99 -0
- data/ext/boost/preprocessor/iteration/local.hpp +26 -0
- data/ext/boost/preprocessor/iteration/self.hpp +19 -0
- data/ext/boost/preprocessor/library.hpp +36 -0
- data/ext/boost/preprocessor/limits.hpp +17 -0
- data/ext/boost/preprocessor/list.hpp +37 -0
- data/ext/boost/preprocessor/list/at.hpp +39 -0
- data/ext/boost/preprocessor/list/cat.hpp +42 -0
- data/ext/boost/preprocessor/list/detail/dmc/fold_left.hpp +279 -0
- data/ext/boost/preprocessor/list/detail/edg/fold_left.hpp +536 -0
- data/ext/boost/preprocessor/list/detail/edg/fold_right.hpp +794 -0
- data/ext/boost/preprocessor/list/enum.hpp +41 -0
- data/ext/boost/preprocessor/list/filter.hpp +54 -0
- data/ext/boost/preprocessor/list/first_n.hpp +58 -0
- data/ext/boost/preprocessor/list/for_each.hpp +49 -0
- data/ext/boost/preprocessor/list/for_each_product.hpp +141 -0
- data/ext/boost/preprocessor/list/rest_n.hpp +55 -0
- data/ext/boost/preprocessor/list/size.hpp +58 -0
- data/ext/boost/preprocessor/list/to_array.hpp +123 -0
- data/ext/boost/preprocessor/list/to_seq.hpp +32 -0
- data/ext/boost/preprocessor/list/to_tuple.hpp +38 -0
- data/ext/boost/preprocessor/logical.hpp +29 -0
- data/ext/boost/preprocessor/logical/bitnor.hpp +38 -0
- data/ext/boost/preprocessor/logical/bitor.hpp +38 -0
- data/ext/boost/preprocessor/logical/bitxor.hpp +38 -0
- data/ext/boost/preprocessor/logical/nor.hpp +30 -0
- data/ext/boost/preprocessor/logical/not.hpp +30 -0
- data/ext/boost/preprocessor/logical/or.hpp +30 -0
- data/ext/boost/preprocessor/logical/xor.hpp +30 -0
- data/ext/boost/preprocessor/max.hpp +17 -0
- data/ext/boost/preprocessor/min.hpp +17 -0
- data/ext/boost/preprocessor/punctuation.hpp +20 -0
- data/ext/boost/preprocessor/punctuation/paren_if.hpp +38 -0
- data/ext/boost/preprocessor/repeat_3rd.hpp +17 -0
- data/ext/boost/preprocessor/repeat_from_to.hpp +17 -0
- data/ext/boost/preprocessor/repeat_from_to_2nd.hpp +17 -0
- data/ext/boost/preprocessor/repeat_from_to_3rd.hpp +17 -0
- data/ext/boost/preprocessor/repetition.hpp +32 -0
- data/ext/boost/preprocessor/repetition/deduce_r.hpp +22 -0
- data/ext/boost/preprocessor/repetition/deduce_z.hpp +22 -0
- data/ext/boost/preprocessor/repetition/detail/dmc/for.hpp +536 -0
- data/ext/boost/preprocessor/repetition/detail/edg/for.hpp +534 -0
- data/ext/boost/preprocessor/repetition/detail/msvc/for.hpp +277 -0
- data/ext/boost/preprocessor/repetition/enum_params_with_defaults.hpp +24 -0
- data/ext/boost/preprocessor/repetition/enum_shifted.hpp +68 -0
- data/ext/boost/preprocessor/repetition/enum_shifted_binary_params.hpp +51 -0
- data/ext/boost/preprocessor/repetition/enum_trailing.hpp +63 -0
- data/ext/boost/preprocessor/repetition/enum_trailing_binary_params.hpp +53 -0
- data/ext/boost/preprocessor/selection.hpp +18 -0
- data/ext/boost/preprocessor/selection/max.hpp +39 -0
- data/ext/boost/preprocessor/selection/min.hpp +39 -0
- data/ext/boost/preprocessor/seq.hpp +43 -0
- data/ext/boost/preprocessor/seq/cat.hpp +49 -0
- data/ext/boost/preprocessor/seq/detail/binary_transform.hpp +40 -0
- data/ext/boost/preprocessor/seq/detail/split.hpp +284 -0
- data/ext/boost/preprocessor/seq/filter.hpp +54 -0
- data/ext/boost/preprocessor/seq/first_n.hpp +30 -0
- data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
- data/ext/boost/preprocessor/seq/fold_right.hpp +288 -0
- data/ext/boost/preprocessor/seq/for_each.hpp +60 -0
- data/ext/boost/preprocessor/seq/for_each_product.hpp +126 -0
- data/ext/boost/preprocessor/seq/insert.hpp +28 -0
- data/ext/boost/preprocessor/seq/pop_back.hpp +29 -0
- data/ext/boost/preprocessor/seq/pop_front.hpp +27 -0
- data/ext/boost/preprocessor/seq/push_back.hpp +19 -0
- data/ext/boost/preprocessor/seq/push_front.hpp +19 -0
- data/ext/boost/preprocessor/seq/remove.hpp +29 -0
- data/ext/boost/preprocessor/seq/replace.hpp +29 -0
- data/ext/boost/preprocessor/seq/rest_n.hpp +30 -0
- data/ext/boost/preprocessor/seq/reverse.hpp +39 -0
- data/ext/boost/preprocessor/seq/subseq.hpp +28 -0
- data/ext/boost/preprocessor/seq/to_array.hpp +28 -0
- data/ext/boost/preprocessor/seq/to_list.hpp +29 -0
- data/ext/boost/preprocessor/seq/to_tuple.hpp +27 -0
- data/ext/boost/preprocessor/seq/transform.hpp +48 -0
- data/ext/boost/preprocessor/slot.hpp +17 -0
- data/ext/boost/preprocessor/slot/counter.hpp +25 -0
- data/ext/boost/preprocessor/slot/detail/counter.hpp +269 -0
- data/ext/boost/preprocessor/slot/detail/slot1.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot2.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot3.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot4.hpp +267 -0
- data/ext/boost/preprocessor/slot/detail/slot5.hpp +267 -0
- data/ext/boost/preprocessor/tuple.hpp +28 -0
- data/ext/boost/preprocessor/tuple/enum.hpp +22 -0
- data/ext/boost/preprocessor/tuple/reverse.hpp +114 -0
- data/ext/boost/preprocessor/tuple/size.hpp +28 -0
- data/ext/boost/preprocessor/tuple/to_array.hpp +37 -0
- data/ext/boost/preprocessor/tuple/to_seq.hpp +114 -0
- data/ext/boost/preprocessor/variadic.hpp +23 -0
- data/ext/boost/preprocessor/variadic/to_array.hpp +32 -0
- data/ext/boost/preprocessor/variadic/to_list.hpp +25 -0
- data/ext/boost/preprocessor/variadic/to_seq.hpp +25 -0
- data/ext/boost/preprocessor/variadic/to_tuple.hpp +24 -0
- data/ext/boost/preprocessor/while.hpp +17 -0
- data/ext/boost/preprocessor/wstringize.hpp +29 -0
- data/ext/boost/smart_ptr/intrusive_ptr.hpp +324 -0
- data/ext/common/AccountsDatabase.h +3 -4
- data/ext/common/AgentsStarter.cpp +12 -15
- data/ext/common/AgentsStarter.h +54 -120
- data/ext/common/ApplicationPool2/AppTypes.cpp +12 -5
- data/ext/common/ApplicationPool2/AppTypes.h +21 -14
- data/ext/common/ApplicationPool2/Common.h +36 -19
- data/ext/common/ApplicationPool2/DirectSpawner.h +15 -16
- data/ext/common/ApplicationPool2/DummySpawner.h +9 -8
- data/ext/common/ApplicationPool2/ErrorRenderer.h +1 -1
- data/ext/common/ApplicationPool2/Group.h +304 -171
- data/ext/common/ApplicationPool2/Implementation.cpp +234 -125
- data/ext/common/ApplicationPool2/Options.h +50 -62
- data/ext/common/ApplicationPool2/Pool.h +285 -189
- data/ext/common/ApplicationPool2/Process.h +126 -115
- data/ext/common/ApplicationPool2/Session.h +70 -30
- data/ext/common/ApplicationPool2/SmartSpawner.h +19 -18
- data/ext/common/ApplicationPool2/Socket.h +57 -43
- data/ext/common/ApplicationPool2/SpawnObject.h +83 -0
- data/ext/common/ApplicationPool2/Spawner.h +59 -38
- data/ext/common/ApplicationPool2/SpawnerFactory.h +8 -14
- data/ext/common/ApplicationPool2/SuperGroup.h +69 -40
- data/ext/common/BackgroundEventLoop.cpp +48 -1
- data/ext/common/BackgroundEventLoop.h +3 -1
- data/ext/common/Constants.h +30 -8
- data/ext/common/DataStructures/HashedStaticString.h +103 -0
- data/ext/common/DataStructures/LString.h +396 -0
- data/ext/common/DataStructures/StringKeyTable.h +588 -0
- data/ext/common/EventedMessageServer.h +1 -0
- data/ext/common/FileDescriptor.h +5 -0
- data/ext/common/InstanceDirectory.h +240 -0
- data/ext/common/Logging.cpp +38 -13
- data/ext/common/Logging.h +53 -22
- data/ext/common/MemoryKit/mbuf.cpp +413 -0
- data/ext/common/MemoryKit/mbuf.h +266 -0
- data/ext/common/MemoryKit/palloc.cpp +337 -0
- data/ext/common/MemoryKit/palloc.h +121 -0
- data/ext/common/ResourceLocator.h +62 -6
- data/ext/common/SafeLibev.h +4 -4
- data/ext/common/ServerKit/AcceptLoadBalancer.h +275 -0
- data/ext/common/ServerKit/Channel.h +747 -0
- data/ext/common/ServerKit/Client.h +166 -0
- data/ext/common/ServerKit/ClientRef.h +130 -0
- data/ext/common/ServerKit/Context.h +129 -0
- data/ext/common/ServerKit/Errors.h +103 -0
- data/ext/common/ServerKit/FdSinkChannel.h +206 -0
- data/ext/common/ServerKit/FdSourceChannel.h +230 -0
- data/ext/common/ServerKit/FileBufferedChannel.h +1399 -0
- data/ext/common/ServerKit/FileBufferedFdSinkChannel.h +228 -0
- data/ext/common/ServerKit/HeaderTable.h +472 -0
- data/ext/common/ServerKit/Hooks.h +79 -0
- data/ext/common/ServerKit/HttpChunkedBodyParser.h +289 -0
- data/ext/common/ServerKit/HttpChunkedBodyParserState.h +70 -0
- data/ext/common/ServerKit/HttpClient.h +94 -0
- data/ext/common/ServerKit/HttpHeaderParser.h +477 -0
- data/ext/common/ServerKit/HttpHeaderParserState.h +60 -0
- data/ext/common/ServerKit/HttpRequest.h +276 -0
- data/ext/common/ServerKit/HttpRequestRef.h +130 -0
- data/ext/common/ServerKit/HttpServer.h +1152 -0
- data/ext/common/ServerKit/Implementation.cpp +47 -0
- data/ext/common/ServerKit/Server.h +1040 -0
- data/ext/common/ServerKit/http_parser.cpp +2259 -0
- data/ext/common/ServerKit/http_parser.h +330 -0
- data/ext/common/StaticString.h +8 -0
- data/ext/common/Utils.cpp +14 -12
- data/ext/common/Utils.h +9 -103
- data/ext/common/Utils/BufferedIO.h +1 -0
- data/ext/common/Utils/CachedFileStat.hpp +1 -7
- data/ext/common/Utils/DateParsing.h +379 -0
- data/ext/common/Utils/FileChangeChecker.h +3 -9
- data/ext/common/Utils/Hasher.cpp +52 -0
- data/ext/common/Utils/Hasher.h +58 -0
- data/ext/common/Utils/IOUtils.cpp +62 -62
- data/ext/common/Utils/JsonUtils.h +21 -0
- data/ext/common/Utils/OptionParsing.h +75 -0
- data/ext/common/Utils/StrIntUtils.cpp +112 -19
- data/ext/common/Utils/StrIntUtils.h +52 -12
- data/ext/common/Utils/StrIntUtilsNoStrictAliasing.cpp +174 -0
- data/ext/common/Utils/VariantMap.h +18 -7
- data/ext/common/Utils/modp_b64.cpp +290 -0
- data/ext/common/Utils/modp_b64.h +241 -0
- data/ext/common/Utils/modp_b64_data.h +479 -0
- data/ext/common/Utils/sysqueue.h +811 -0
- data/ext/common/agents/Base.cpp +71 -98
- data/ext/common/agents/Base.h +11 -3
- data/ext/common/agents/HelperAgent/AdminServer.h +690 -0
- data/ext/common/agents/HelperAgent/Main.cpp +899 -487
- data/ext/common/agents/HelperAgent/OptionParser.h +311 -0
- data/ext/common/agents/HelperAgent/RequestHandler.h +315 -2548
- data/ext/common/agents/HelperAgent/RequestHandler/AppResponse.h +225 -0
- data/ext/common/agents/HelperAgent/RequestHandler/BufferBody.cpp +93 -0
- data/ext/common/agents/HelperAgent/RequestHandler/CheckoutSession.cpp +346 -0
- data/ext/common/agents/HelperAgent/RequestHandler/Client.h +54 -0
- data/ext/common/agents/HelperAgent/RequestHandler/ForwardResponse.cpp +846 -0
- data/ext/common/agents/HelperAgent/RequestHandler/Hooks.cpp +231 -0
- data/ext/common/agents/HelperAgent/RequestHandler/InitRequest.cpp +434 -0
- data/ext/common/agents/HelperAgent/RequestHandler/Request.h +149 -0
- data/ext/common/agents/HelperAgent/RequestHandler/SendRequest.cpp +887 -0
- data/ext/common/agents/HelperAgent/RequestHandler/TurboCaching.h +293 -0
- data/ext/common/agents/HelperAgent/RequestHandler/Utils.cpp +301 -0
- data/ext/common/agents/HelperAgent/ResponseCache.h +624 -0
- data/ext/common/agents/HelperAgent/SystemMetricsTool.cpp +21 -23
- data/ext/common/agents/LoggingAgent/AdminServer.h +369 -0
- data/ext/common/agents/LoggingAgent/LoggingServer.h +1 -0
- data/ext/common/agents/LoggingAgent/Main.cpp +422 -215
- data/ext/common/agents/LoggingAgent/OptionParser.h +167 -0
- data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
- data/ext/common/agents/Main.cpp +107 -0
- data/ext/common/agents/SpawnPreparer/Main.cpp +207 -0
- data/ext/common/agents/TempDirToucher/Main.cpp +429 -0
- data/ext/common/agents/Watchdog/AdminServer.h +390 -0
- data/ext/common/agents/Watchdog/AgentWatcher.cpp +7 -5
- data/ext/common/agents/Watchdog/HelperAgentWatcher.cpp +18 -39
- data/ext/common/agents/Watchdog/InstanceDirToucher.cpp +116 -0
- data/ext/common/agents/Watchdog/LoggingAgentWatcher.cpp +13 -17
- data/ext/common/agents/Watchdog/Main.cpp +743 -202
- data/ext/libeio/eio.c +17 -0
- data/ext/libeio/eio.h +2 -0
- data/ext/nginx/CacheLocationConfig.c +177 -198
- data/ext/nginx/CacheLocationConfig.c.erb +35 -22
- data/ext/nginx/Configuration.c +402 -236
- data/ext/nginx/Configuration.h +12 -5
- data/ext/nginx/ConfigurationCommands.c +35 -15
- data/ext/nginx/ConfigurationCommands.c.erb +4 -4
- data/ext/nginx/ConfigurationFields.h +9 -5
- data/ext/nginx/ConfigurationFields.h.erb +3 -1
- data/ext/nginx/ContentHandler.c +393 -362
- data/ext/nginx/CreateLocationConfig.c +8 -4
- data/ext/nginx/CreateLocationConfig.c.erb +8 -3
- data/ext/nginx/MergeLocationConfig.c +36 -6
- data/ext/nginx/MergeLocationConfig.c.erb +42 -1
- data/ext/nginx/ngx_http_passenger_module.c +28 -15
- data/ext/oxt/detail/backtrace_disabled.hpp +2 -1
- data/ext/oxt/detail/backtrace_enabled.hpp +15 -2
- data/ext/oxt/implementation.cpp +92 -20
- data/ext/oxt/thread.hpp +5 -0
- data/ext/ruby/extconf.rb +3 -6
- data/ext/ruby/passenger_native_support.c +13 -40
- data/helper-scripts/download_binaries/extconf.rb +4 -4
- data/helper-scripts/meteor-loader.rb +12 -112
- data/helper-scripts/node-loader.js +3 -91
- data/helper-scripts/rack-loader.rb +13 -14
- data/helper-scripts/rack-preloader.rb +16 -17
- data/helper-scripts/wsgi-loader.py +11 -7
- data/lib/phusion_passenger.rb +100 -79
- data/lib/phusion_passenger/abstract_installer.rb +28 -3
- data/lib/phusion_passenger/admin_tools.rb +3 -3
- data/lib/phusion_passenger/admin_tools/instance.rb +207 -0
- data/lib/phusion_passenger/admin_tools/instance_registry.rb +98 -0
- data/lib/phusion_passenger/apache2/config_options.rb +72 -22
- data/lib/phusion_passenger/common_library.rb +79 -14
- data/lib/phusion_passenger/config/about_command.rb +17 -23
- data/lib/phusion_passenger/config/admin_command_command.rb +175 -0
- data/lib/phusion_passenger/config/agent_compiler.rb +170 -0
- data/lib/phusion_passenger/config/command.rb +1 -4
- data/lib/phusion_passenger/config/compile_agent_command.rb +102 -0
- data/lib/phusion_passenger/config/compile_nginx_engine_command.rb +112 -0
- data/lib/phusion_passenger/config/detach_process_command.rb +32 -10
- data/lib/phusion_passenger/config/download_agent_command.rb +285 -0
- data/lib/phusion_passenger/config/download_nginx_engine_command.rb +281 -0
- data/lib/phusion_passenger/config/install_agent_command.rb +174 -0
- data/lib/phusion_passenger/config/install_standalone_runtime_command.rb +231 -0
- data/lib/phusion_passenger/config/installation_utils.rb +241 -0
- data/lib/phusion_passenger/config/list_instances_command.rb +13 -25
- data/lib/phusion_passenger/config/main.rb +43 -14
- data/lib/phusion_passenger/config/nginx_engine_compiler.rb +337 -0
- data/lib/phusion_passenger/config/reopen_logs_command.rb +110 -0
- data/lib/phusion_passenger/config/restart_app_command.rb +61 -14
- data/lib/phusion_passenger/config/system_metrics_command.rb +2 -1
- data/lib/phusion_passenger/config/utils.rb +64 -39
- data/lib/phusion_passenger/config/validate_install_command.rb +2 -2
- data/lib/phusion_passenger/constants.rb +27 -6
- data/lib/phusion_passenger/debug_logging.rb +32 -15
- data/lib/phusion_passenger/loader_shared_helpers.rb +2 -5
- data/lib/phusion_passenger/message_client.rb +21 -22
- data/lib/phusion_passenger/native_support.rb +26 -31
- data/lib/phusion_passenger/nginx/config_options.rb +32 -19
- data/lib/phusion_passenger/packaging.rb +7 -3
- data/lib/phusion_passenger/platform_info/cxx_portability.rb +1 -2
- data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +3 -4
- data/lib/phusion_passenger/platform_info/operating_system.rb +6 -6
- data/lib/phusion_passenger/preloader_shared_helpers.rb +2 -2
- data/lib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
- data/lib/phusion_passenger/rack/thread_handler_extension.rb +168 -65
- data/lib/phusion_passenger/request_handler.rb +47 -82
- data/lib/phusion_passenger/request_handler/thread_handler.rb +46 -10
- data/lib/phusion_passenger/ruby_core_enhancements.rb +25 -77
- data/lib/phusion_passenger/ruby_core_io_enhancements.rb +108 -0
- data/lib/phusion_passenger/standalone/app_finder.rb +39 -59
- data/lib/phusion_passenger/standalone/command.rb +27 -275
- data/lib/phusion_passenger/standalone/command2.rb +292 -0
- data/lib/phusion_passenger/standalone/config_utils.rb +87 -0
- data/lib/phusion_passenger/standalone/control_utils.rb +88 -0
- data/lib/phusion_passenger/standalone/main.rb +69 -71
- data/lib/phusion_passenger/standalone/start2_command.rb +799 -0
- data/lib/phusion_passenger/standalone/start_command.rb +406 -467
- data/lib/phusion_passenger/standalone/start_command/builtin_engine.rb +167 -0
- data/lib/phusion_passenger/standalone/start_command/nginx_engine.rb +165 -0
- data/lib/phusion_passenger/standalone/status_command.rb +64 -23
- data/lib/phusion_passenger/standalone/stop_command.rb +69 -32
- data/lib/phusion_passenger/standalone/version_command.rb +1 -5
- data/lib/phusion_passenger/utils.rb +0 -4
- data/lib/phusion_passenger/utils/json.rb +70 -4
- data/lib/phusion_passenger/utils/progress_bar.rb +56 -0
- data/lib/phusion_passenger/utils/tee_input.rb +3 -3
- data/lib/phusion_passenger/utils/unseekable_socket.rb +30 -0
- data/packaging/rpm/nginx_spec/nginx.spec.template +4 -3
- data/packaging/rpm/passenger_spec/passenger.spec.template +6 -10
- data/packaging/rpm/setup-system +2 -1
- data/resources/oss-binaries.phusionpassenger.com.crt +208 -0
- data/resources/templates/config/agent_compiler/confirm_enable_optimizations.txt.erb +5 -0
- data/resources/templates/config/installation_utils/cannot_create_user_support_binaries_dir.txt.erb +15 -0
- data/resources/templates/config/installation_utils/download_tool_missing.txt.erb +7 -0
- data/resources/templates/config/installation_utils/passenger_not_installed_as_root.txt.erb +12 -0
- data/resources/templates/config/installation_utils/support_binaries_dir_not_writable_despite_running_as_root.txt.erb +13 -0
- data/resources/templates/config/installation_utils/unexpected_filesystem_problem.txt.erb +16 -0
- data/{packaging/debian/debian_specs/passenger/patches/series → resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb} +0 -0
- data/resources/templates/nginx/nginx_module_sources_not_available.txt.erb +2 -2
- data/resources/templates/standalone/config.erb +14 -16
- data/resources/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +1 -1
- data/test/.rspec +1 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +20 -17
- data/test/cxx/ApplicationPool2/OptionsTest.cpp +0 -14
- data/test/cxx/ApplicationPool2/PoolTest.cpp +113 -90
- data/test/cxx/ApplicationPool2/ProcessTest.cpp +18 -27
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +51 -53
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +55 -57
- data/test/cxx/BufferedIOTest.cpp +40 -40
- data/test/cxx/CxxTestMain.cpp +4 -22
- data/test/cxx/DataStructures/LStringTest.cpp +275 -0
- data/test/cxx/DataStructures/StringKeyTableTest.cpp +199 -0
- data/test/cxx/MemoryKit/MbufTest.cpp +213 -0
- data/test/cxx/MessageServerTest.cpp +62 -55
- data/test/cxx/RequestHandlerTest.cpp +26 -27
- data/test/cxx/ServerKit/ChannelTest.cpp +1467 -0
- data/test/cxx/ServerKit/FileBufferedChannelTest.cpp +817 -0
- data/test/cxx/ServerKit/HeaderTableTest.cpp +171 -0
- data/test/cxx/ServerKit/HttpServerTest.cpp +1503 -0
- data/test/cxx/ServerKit/ServerTest.cpp +408 -0
- data/test/cxx/TestSupport.cpp +51 -15
- data/test/cxx/TestSupport.h +31 -21
- data/test/cxx/UnionStationTest.cpp +121 -122
- data/test/cxx/UtilsTest.cpp +9 -33
- data/test/integration_tests/apache2_tests.rb +65 -27
- data/test/integration_tests/downloaded_binaries_tests.rb +30 -6
- data/test/integration_tests/native_packaging_spec.rb +32 -17
- data/test/integration_tests/nginx_tests.rb +28 -10
- data/test/integration_tests/shared/example_webapp_tests.rb +40 -27
- data/test/integration_tests/standalone_tests.rb +232 -169
- data/test/ruby/debug_logging_spec.rb +44 -40
- data/test/ruby/rails3.0/preloader_spec.rb +1 -1
- data/test/ruby/rails3.1/preloader_spec.rb +1 -1
- data/test/ruby/rails3.2/preloader_spec.rb +1 -1
- data/test/ruby/rails4.0/preloader_spec.rb +1 -1
- data/test/ruby/rails4.1/preloader_spec.rb +1 -1
- data/test/ruby/request_handler_spec.rb +62 -24
- data/test/ruby/shared/loader_sharedspec.rb +10 -9
- data/test/ruby/shared/rails/union_station_extensions_sharedspec.rb +23 -22
- data/test/ruby/spec_helper.rb +2 -11
- data/test/ruby/standalone/runtime_installer_spec.rb +15 -13
- data/test/ruby/union_station_spec.rb +45 -40
- data/test/ruby/utils/tee_input_spec.rb +5 -5
- data/test/ruby/utils_spec.rb +3 -39
- data/test/stub/apache2/httpd.conf.erb +5 -2
- data/test/stub/nginx/nginx.conf.erb +3 -1
- data/test/support/apache2_controller.rb +25 -25
- data/test/support/nginx_controller.rb +14 -14
- data/test/support/test_helper.rb +74 -75
- metadata +439 -643
- metadata.gz.asc +7 -7
- data/ext/common/MultiLibeio.cpp +0 -204
- data/ext/common/MultiLibeio.h +0 -67
- data/ext/common/ServerInstanceDir.h +0 -402
- data/ext/common/Utils/Base64.cpp +0 -143
- data/ext/common/Utils/Base64.h +0 -83
- data/ext/common/Utils/HttpHeaderBufferer.h +0 -184
- data/ext/common/Utils/PriorityQueue.h +0 -54
- data/ext/common/Utils/StreamBoyerMooreHorspool.h +0 -512
- data/ext/common/Utils/fib.c +0 -699
- data/ext/common/Utils/fib.h +0 -101
- data/ext/common/Utils/fibpriv.h +0 -67
- data/ext/common/agents/EnvPrinter.c +0 -16
- data/ext/common/agents/HelperAgent/AgentOptions.h +0 -109
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +0 -732
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +0 -294
- data/ext/common/agents/HelperAgent/ScgiRequestParser.h +0 -457
- data/ext/common/agents/LoggingAgent/AdminController.h +0 -96
- data/ext/common/agents/SpawnPreparer.cpp +0 -206
- data/ext/common/agents/TempDirToucher.c +0 -383
- data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +0 -116
- data/helper-scripts/classic-rails-loader.rb +0 -166
- data/helper-scripts/classic-rails-preloader.rb +0 -193
- data/lib/phusion_passenger/admin_tools/server_instance.rb +0 -339
- data/lib/phusion_passenger/classic_rails/cgi_fixed.rb +0 -68
- data/lib/phusion_passenger/classic_rails/thread_handler_extension.rb +0 -40
- data/lib/phusion_passenger/platform_info/openssl.rb +0 -61
- data/lib/phusion_passenger/standalone/config_file.rb +0 -119
- data/lib/phusion_passenger/standalone/help_command.rb +0 -57
- data/lib/phusion_passenger/standalone/runtime_installer.rb +0 -712
- data/lib/phusion_passenger/standalone/runtime_locator.rb +0 -170
- data/lib/phusion_passenger/standalone/utils.rb +0 -58
- data/lib/phusion_passenger/utils/tmpdir.rb +0 -69
- data/packaging/debian/LICENSE.md +0 -19
- data/packaging/debian/README.md +0 -320
- data/packaging/debian/Vagrantfile +0 -25
- data/packaging/debian/build +0 -210
- data/packaging/debian/debian_specs/nginx/changelog +0 -1989
- data/packaging/debian/debian_specs/nginx/compat.erb +0 -5
- data/packaging/debian/debian_specs/nginx/conf/fastcgi.conf +0 -25
- data/packaging/debian/debian_specs/nginx/conf/fastcgi_params +0 -24
- data/packaging/debian/debian_specs/nginx/conf/koi-utf +0 -109
- data/packaging/debian/debian_specs/nginx/conf/koi-win +0 -103
- data/packaging/debian/debian_specs/nginx/conf/mime.types +0 -89
- data/packaging/debian/debian_specs/nginx/conf/nginx.conf.erb +0 -97
- data/packaging/debian/debian_specs/nginx/conf/proxy_params +0 -4
- data/packaging/debian/debian_specs/nginx/conf/scgi_params +0 -16
- data/packaging/debian/debian_specs/nginx/conf/sites-available/default.erb +0 -93
- data/packaging/debian/debian_specs/nginx/conf/snippets/fastcgi-php.conf +0 -13
- data/packaging/debian/debian_specs/nginx/conf/snippets/snakeoil.conf +0 -5
- data/packaging/debian/debian_specs/nginx/conf/uwsgi_params +0 -16
- data/packaging/debian/debian_specs/nginx/conf/win-utf +0 -125
- data/packaging/debian/debian_specs/nginx/control.erb +0 -226
- data/packaging/debian/debian_specs/nginx/copyright +0 -196
- data/packaging/debian/debian_specs/nginx/debian-full.lintian-overrides +0 -1
- data/packaging/debian/debian_specs/nginx/gbp.conf +0 -2
- data/packaging/debian/debian_specs/nginx/help/docs/fcgiwrap +0 -14
- data/packaging/debian/debian_specs/nginx/help/docs/php +0 -119
- data/packaging/debian/debian_specs/nginx/help/docs/support-irc +0 -28
- data/packaging/debian/debian_specs/nginx/help/docs/upstream +0 -51
- data/packaging/debian/debian_specs/nginx/help/examples/drupal +0 -114
- data/packaging/debian/debian_specs/nginx/help/examples/http +0 -59
- data/packaging/debian/debian_specs/nginx/help/examples/mail +0 -30
- data/packaging/debian/debian_specs/nginx/help/examples/mailman +0 -59
- data/packaging/debian/debian_specs/nginx/help/examples/nginx.conf +0 -34
- data/packaging/debian/debian_specs/nginx/help/examples/nginx_modsite +0 -162
- data/packaging/debian/debian_specs/nginx/help/examples/virtual_hosts +0 -155
- data/packaging/debian/debian_specs/nginx/help/examples/wordpress +0 -74
- data/packaging/debian/debian_specs/nginx/helpers.rb +0 -41
- data/packaging/debian/debian_specs/nginx/index-debian.html.in +0 -32
- data/packaging/debian/debian_specs/nginx/index-ubuntu.html.in +0 -32
- data/packaging/debian/debian_specs/nginx/index.html.erb +0 -10
- data/packaging/debian/debian_specs/nginx/modules/README.Modules-versions +0 -65
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/README.markdown +0 -510
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/config +0 -5
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/doc/HttpHeadersMoreModule.wiki +0 -395
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ddebug.h +0 -119
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.c +0 -348
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.h +0 -80
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.c +0 -826
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.h +0 -26
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.c +0 -716
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.h +0 -26
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.c +0 -380
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.h +0 -52
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/util/build.sh +0 -32
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/valgrind.suppress +0 -215
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ChangeLog +0 -35
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/LICENSE +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/README.md +0 -93
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/config +0 -4
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ngx_http_auth_pam_module.c +0 -462
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/CHANGES +0 -66
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/LICENSE +0 -26
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/README.md +0 -171
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/TODO.md +0 -7
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/config +0 -21
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/ngx_cache_purge_module.c +0 -1803
- data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/README +0 -29
- data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/config +0 -9
- data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/ngx_http_dav_ext_module.c +0 -824
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README +0 -139
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README_AUTO_LIB +0 -395
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/TODO +0 -1
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/array +0 -10
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/palloc +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/build +0 -597
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_replacements +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_types +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_args +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_locs +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_macros +0 -35
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/contexts +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/header_files +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/headers +0 -4
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/module_dependencies +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/modules_optional +0 -15
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/prefixes +0 -2
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/array.h +0 -7
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_cmd_basic.h +0 -43
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_merge.h +0 -78
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/palloc.h +0 -6
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/text/autogen +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/config +0 -49
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/action_macros +0 -63
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/conf_cmds +0 -62
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/modules/set_var +0 -124
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/patches/more_logging_info +0 -48
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/upstream/list +0 -45
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/README +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/config +0 -4
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/ngx_http_set_var_examples_module.c +0 -136
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/ngx_auto_lib_core +0 -797
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/CHANGES +0 -17
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/LICENSE +0 -24
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_array.h +0 -113
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_basic.h +0 -2203
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_extra.h +0 -5423
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_merge.h +0 -227
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.c +0 -72
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.h +0 -98
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_includes.h +0 -66
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_palloc.h +0 -112
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/auto_config +0 -16
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/expose_rewrite_functions +0 -291
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/rewrite_phase_handler +0 -19
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/md5.h +0 -117
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/murmurhash2.c +0 -77
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/sha.h +0 -200
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.c +0 -155
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.h +0 -58
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.c +0 -43
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.h +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.c +0 -129
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.h +0 -30
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.c +0 -192
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.h +0 -21
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.c +0 -396
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.h +0 -44
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.c +0 -72
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.h +0 -171
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.c +0 -57
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.h +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.c +0 -82
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.h +0 -45
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.c +0 -138
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.h +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http_headers.h +0 -35
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.c +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.h +0 -165
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_parse.h +0 -67
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.c +0 -583
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.c +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.h +0 -12
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.c +0 -215
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.h +0 -7
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.c +0 -103
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.h +0 -26
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.c +0 -602
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.h +0 -44
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.c +0 -434
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.h +0 -37
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string_util.h +0 -14
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.c +0 -205
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.h +0 -27
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.c +0 -45
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.h +0 -6
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/LICENSE +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/README.markdown +0 -1850
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/config +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/doc/HttpEchoModule.wiki +0 -1558
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ddebug.h +0 -109
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.c +0 -344
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.h +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.c +0 -282
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.h +0 -15
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.c +0 -183
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.h +0 -16
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.c +0 -429
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.h +0 -18
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.c +0 -178
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.h +0 -13
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.c +0 -667
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.h +0 -137
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.c +0 -452
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.h +0 -31
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.c +0 -208
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.h +0 -16
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.c +0 -788
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.h +0 -19
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.c +0 -96
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.h +0 -13
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.c +0 -298
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.h +0 -58
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.c +0 -110
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.h +0 -9
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/build.sh +0 -45
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/releng +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/wiki2pod.pl +0 -131
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/valgrind.suppress +0 -38
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/LICENCE +0 -24
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/README +0 -206
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/changelog.txt +0 -54
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/config +0 -26
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/protocol.txt +0 -191
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.c +0 -59
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.h +0 -73
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.c +0 -783
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.h +0 -31
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module_setup.c +0 -361
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_types.h +0 -120
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.c +0 -1180
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.h +0 -1
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.c +0 -146
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.h +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_store.h +0 -51
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.c +0 -178
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.h +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.c +0 -246
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.h +0 -9
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/Changes +0 -51
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/README.markdown +0 -6954
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/config +0 -363
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/doc/HttpLuaModule.wiki +0 -5898
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/dtrace/ngx_lua_provider.d +0 -61
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/Makefile +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/lib/RecvUntil.pm +0 -138
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/t/sanity.t +0 -140
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/api/ngx_http_lua_api.h +0 -52
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ddebug.h +0 -82
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.c +0 -377
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_api.c +0 -77
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.c +0 -537
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.c +0 -632
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.h +0 -31
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.c +0 -296
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.h +0 -24
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.c +0 -175
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.c +0 -887
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_common.h +0 -478
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.c +0 -67
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.h +0 -19
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.c +0 -148
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.c +0 -369
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.h +0 -26
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.c +0 -483
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.c +0 -379
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.c +0 -216
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.c +0 -1081
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.h +0 -56
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.c +0 -58
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.h +0 -33
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.c +0 -302
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.h +0 -29
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.c +0 -1370
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.c +0 -782
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.c +0 -625
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.c +0 -42
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.c +0 -320
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.h +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.c +0 -300
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.c +0 -227
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.c +0 -252
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_module.c +0 -924
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.c +0 -184
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.h +0 -21
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.c +0 -794
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.h +0 -28
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.c +0 -106
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.h +0 -23
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.c +0 -94
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.h +0 -13
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_probe.h +0 -85
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.c +0 -2468
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.c +0 -1169
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.c +0 -252
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.h +0 -19
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.c +0 -351
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.h +0 -22
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.c +0 -538
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.h +0 -86
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.c +0 -216
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.h +0 -15
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.c +0 -1844
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.h +0 -52
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.c +0 -191
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.c +0 -5314
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.h +0 -156
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.c +0 -1624
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.h +0 -56
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.c +0 -704
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.c +0 -1741
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.h +0 -46
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.c +0 -278
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.h +0 -21
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.c +0 -661
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.c +0 -110
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.c +0 -283
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.h +0 -36
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.c +0 -3972
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.h +0 -423
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.c +0 -499
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.h +0 -20
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.c +0 -64
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.h +0 -17
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/tapset/ngx_lua.stp +0 -5
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build.sh +0 -39
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build2.sh +0 -55
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/fix-comments +0 -27
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/gdbinit +0 -415
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/ngx-links +0 -62
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/reindex +0 -64
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/releng +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/retab +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/revim +0 -102
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/run_test.sh +0 -10
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/update-readme.sh +0 -4
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/valgrind.suppress +0 -144
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/CHANGES +0 -107
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/LICENSE +0 -25
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/Makefile +0 -8
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/README +0 -329
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/config +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/ngx_http_uploadprogress_module.c +0 -1774
- data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/README +0 -53
- data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/config +0 -3
- data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/ngx_http_upstream_fair_module.c +0 -1356
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/CHANGELOG.md +0 -37
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/HACKING.md +0 -24
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/LICENSE +0 -20
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/README.rst +0 -182
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/config +0 -8
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/nginx-0.6-support.patch +0 -23
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/ngx_http_fancyindex_module.c +0 -1305
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.awk +0 -52
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.h +0 -103
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.html +0 -102
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/CHANGES +0 -37
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/README +0 -141
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/config +0 -3
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.google_code_home_page.wiki +0 -120
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.html +0 -199
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.wiki +0 -123
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/ngx_http_subs_filter_module.c +0 -1298
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/README +0 -275
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/AutoInstall.pm +0 -820
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install.pm +0 -470
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/AutoInstall.pm +0 -82
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Base.pm +0 -83
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Can.pm +0 -81
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Fetch.pm +0 -93
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Include.pm +0 -34
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Makefile.pm +0 -415
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Metadata.pm +0 -716
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/TestBase.pm +0 -29
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Win32.pm +0 -64
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/WriteAll.pm +0 -63
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Spiffy.pm +0 -539
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base.pm +0 -682
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base/Filter.pm +0 -341
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder.pm +0 -1413
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder/Module.pm +0 -81
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/More.pm +0 -735
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx.pm +0 -315
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/LWP.pm +0 -524
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Socket.pm +0 -1749
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Util.pm +0 -874
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs.t +0 -136
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_capture.t +0 -32
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_fix_string.t +0 -32
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_regex.t +0 -108
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_types.t +0 -59
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/test.sh +0 -5
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/update-readme.sh +0 -7
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2google_code_homepage.pl +0 -29
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2pod.pl +0 -129
- data/packaging/debian/debian_specs/nginx/nginx-common.NEWS +0 -135
- data/packaging/debian/debian_specs/nginx/nginx-common.README.Debian +0 -45
- data/packaging/debian/debian_specs/nginx/nginx-common.dirs.erb +0 -32
- data/packaging/debian/debian_specs/nginx/nginx-common.install +0 -3
- data/packaging/debian/debian_specs/nginx/nginx-common.lintian-overrides +0 -2
- data/packaging/debian/debian_specs/nginx/nginx-common.manpages +0 -1
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.default +0 -10
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.init.erb +0 -214
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.logrotate +0 -18
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.service.erb +0 -37
- data/packaging/debian/debian_specs/nginx/nginx-common.postinst.erb +0 -66
- data/packaging/debian/debian_specs/nginx/nginx-common.postrm.erb +0 -46
- data/packaging/debian/debian_specs/nginx/nginx-common.preinst +0 -47
- data/packaging/debian/debian_specs/nginx/nginx-common.prerm.erb +0 -28
- data/packaging/debian/debian_specs/nginx/nginx-doc.docs +0 -2
- data/packaging/debian/debian_specs/nginx/nginx-doc.examples +0 -1
- data/packaging/debian/debian_specs/nginx/nginx-extras.install.erb +0 -17
- data/packaging/debian/debian_specs/nginx/nginx-extras.lintian-overrides +0 -1
- data/packaging/debian/debian_specs/nginx/nginx-extras.postinst.erb +0 -44
- data/packaging/debian/debian_specs/nginx/nginx-extras.prerm +0 -22
- data/packaging/debian/debian_specs/nginx/nginx.1 +0 -47
- data/packaging/debian/debian_specs/nginx/patches/perl-use-dpkg-buildflags.patch +0 -23
- data/packaging/debian/debian_specs/nginx/patches/series +0 -1
- data/packaging/debian/debian_specs/nginx/rules.erb +0 -185
- data/packaging/debian/debian_specs/nginx/source/format +0 -1
- data/packaging/debian/debian_specs/nginx/tests/control +0 -4
- data/packaging/debian/debian_specs/nginx/ufw/nginx +0 -14
- data/packaging/debian/debian_specs/nginx/upstream/signing-key.asc +0 -34
- data/packaging/debian/debian_specs/nginx/watch +0 -3
- data/packaging/debian/debian_specs/passenger/README.Debian +0 -12
- data/packaging/debian/debian_specs/passenger/changelog +0 -316
- data/packaging/debian/debian_specs/passenger/compat +0 -1
- data/packaging/debian/debian_specs/passenger/control.erb +0 -123
- data/packaging/debian/debian_specs/passenger/copyright +0 -385
- data/packaging/debian/debian_specs/passenger/helpers.rb +0 -24
- data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.install +0 -3
- data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.postinst +0 -36
- data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.prerm +0 -15
- data/packaging/debian/debian_specs/passenger/locations.ini.erb +0 -14
- data/packaging/debian/debian_specs/passenger/passenger-dev.install.erb +0 -3
- data/packaging/debian/debian_specs/passenger/passenger-doc.install.erb +0 -2
- data/packaging/debian/debian_specs/passenger/passenger.conf +0 -6
- data/packaging/debian/debian_specs/passenger/passenger.docs +0 -4
- data/packaging/debian/debian_specs/passenger/passenger.install.erb +0 -16
- data/packaging/debian/debian_specs/passenger/passenger.load +0 -3
- data/packaging/debian/debian_specs/passenger/passenger.manpages +0 -3
- data/packaging/debian/debian_specs/passenger/passenger_free_ruby.c +0 -29
- data/packaging/debian/debian_specs/passenger/passenger_ruby_utils.c +0 -54
- data/packaging/debian/debian_specs/passenger/passenger_system_ruby.c.erb +0 -37
- data/packaging/debian/debian_specs/passenger/rules.erb +0 -84
- data/packaging/debian/debian_specs/passenger/source/format +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/README.Debian +0 -12
- data/packaging/debian/debian_specs/passenger_enterprise/changelog +0 -316
- data/packaging/debian/debian_specs/passenger_enterprise/compat +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/control.erb +0 -123
- data/packaging/debian/debian_specs/passenger_enterprise/copyright +0 -385
- data/packaging/debian/debian_specs/passenger_enterprise/helpers.rb +0 -2
- data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.install +0 -3
- data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.postinst +0 -36
- data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.prerm +0 -15
- data/packaging/debian/debian_specs/passenger_enterprise/locations.ini.erb +0 -14
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-dev.install.erb +0 -3
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-doc.install.erb +0 -2
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.docs +0 -4
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.install.erb +0 -14
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.manpages +0 -3
- data/packaging/debian/debian_specs/passenger_enterprise/passenger.conf +0 -6
- data/packaging/debian/debian_specs/passenger_enterprise/passenger.load +0 -3
- data/packaging/debian/debian_specs/passenger_enterprise/passenger_free_ruby.c.erb +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/passenger_ruby_utils.c.erb +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/passenger_system_ruby.c.erb +0 -1
- data/packaging/debian/debian_specs/passenger_enterprise/patches/series +0 -0
- data/packaging/debian/debian_specs/passenger_enterprise/rules.erb +0 -84
- data/packaging/debian/debian_specs/passenger_enterprise/source/format +0 -1
- data/packaging/debian/docker_images/Makefile +0 -38
- data/packaging/debian/docker_images/buildbox/CONTAINER_VERSION.txt +0 -0
- data/packaging/debian/docker_images/buildbox/Dockerfile +0 -3
- data/packaging/debian/docker_images/buildbox/Gemfile +0 -9
- data/packaging/debian/docker_images/buildbox/Gemfile.lock +0 -42
- data/packaging/debian/docker_images/buildbox/install.sh +0 -85
- data/packaging/debian/docker_images/buildbox/pbuilderrc +0 -4
- data/packaging/debian/docker_images/buildbox/sudoers.conf +0 -6
- data/packaging/debian/docker_images/setup-buildbox-docker-image +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-debian-6 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-debian-7 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-debian-8 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-12.04 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-14.04 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.04 +0 -7
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.10 +0 -7
- data/packaging/debian/docker_images/testbox-debian-6/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-debian-6/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-debian-6/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-debian-6/argparse.py +0 -2374
- data/packaging/debian/docker_images/testbox-debian-6/install.sh +0 -78
- data/packaging/debian/docker_images/testbox-debian-7/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-debian-7/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-debian-7/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-debian-7/install.sh +0 -71
- data/packaging/debian/docker_images/testbox-debian-8/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-debian-8/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-debian-8/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-debian-8/install.sh +0 -70
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/install.sh +0 -69
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/install.sh +0 -69
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/install.sh +0 -69
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/Dockerfile +0 -3
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile +0 -2
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile.lock +0 -23
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/install.sh +0 -69
- data/packaging/debian/internal/build/Rakefile +0 -235
- data/packaging/debian/internal/build/build-passenger-orig-tarball.sh +0 -76
- data/packaging/debian/internal/build/build-source-package.rb +0 -121
- data/packaging/debian/internal/build/download-nginx-orig-tarball.sh +0 -17
- data/packaging/debian/internal/build/rakefile_support.rb +0 -96
- data/packaging/debian/internal/build/setup-environment-essentials.sh +0 -15
- data/packaging/debian/internal/build/setup-environment.sh +0 -29
- data/packaging/debian/internal/lib/distro_info.rb +0 -82
- data/packaging/debian/internal/lib/distro_info.sh +0 -303
- data/packaging/debian/internal/lib/distro_info.sh.erb +0 -65
- data/packaging/debian/internal/lib/library.sh +0 -83
- data/packaging/debian/internal/lib/preprocessor.rb +0 -173
- data/packaging/debian/internal/lib/tracking.rb +0 -95
- data/packaging/debian/internal/lib/tracking_category.rb +0 -45
- data/packaging/debian/internal/lib/tracking_database.rb +0 -132
- data/packaging/debian/internal/lib/tracking_task.rb +0 -148
- data/packaging/debian/internal/lib/utils.rb +0 -78
- data/packaging/debian/internal/publish/Rakefile +0 -97
- data/packaging/debian/internal/publish/oss-binaries.phusionpassenger.com-fingerprint.txt +0 -1
- data/packaging/debian/internal/publish/packagecloud_fingerprint.txt +0 -1
- data/packaging/debian/internal/publish/passenger_website_fingerprint.txt +0 -1
- data/packaging/debian/internal/publish/preinit.sh +0 -7
- data/packaging/debian/internal/publish/rakefile_support.rb +0 -183
- data/packaging/debian/internal/scripts/gpg_noninteractive/gpg +0 -11
- data/packaging/debian/internal/scripts/initccache.sh +0 -35
- data/packaging/debian/internal/scripts/inituidgid.sh +0 -19
- data/packaging/debian/internal/scripts/my_init +0 -340
- data/packaging/debian/internal/scripts/pin_certificates +0 -34
- data/packaging/debian/internal/scripts/regen_distro_info_script.sh +0 -3
- data/packaging/debian/internal/scripts/setup-vagrant.sh +0 -12
- data/packaging/debian/internal/scripts/setuser +0 -31
- data/packaging/debian/internal/shell/initpbuilder.sh +0 -3
- data/packaging/debian/internal/shell/preinit.sh +0 -28
- data/packaging/debian/internal/shell/sudoers.conf +0 -1
- data/packaging/debian/internal/test/apache/apache-24.conf +0 -5
- data/packaging/debian/internal/test/apache/apache-pre-24.conf +0 -4
- data/packaging/debian/internal/test/apache/vhost.conf +0 -17
- data/packaging/debian/internal/test/misc/config.json +0 -15
- data/packaging/debian/internal/test/misc/hosts.conf +0 -4
- data/packaging/debian/internal/test/misc/init.sh +0 -25
- data/packaging/debian/internal/test/misc/nodejs_test_app.js +0 -6
- data/packaging/debian/internal/test/misc/python_test_app.py +0 -3
- data/packaging/debian/internal/test/misc/ruby_test_app.rb +0 -5
- data/packaging/debian/internal/test/misc/test_support.rb +0 -61
- data/packaging/debian/internal/test/nginx/vhost.conf +0 -23
- data/packaging/debian/internal/test/system_web_server_test.rb +0 -126
- data/packaging/debian/internal/test/test.sh +0 -141
- data/packaging/debian/jenkins/publish/clear_caches.rb +0 -48
- data/packaging/debian/jenkins/publish/publish.sh +0 -69
- data/packaging/debian/jenkins/test/test.sh +0 -63
- data/packaging/debian/passenger_apt_automation.sublime-project +0 -14
- data/packaging/debian/publish +0 -172
- data/packaging/debian/shell +0 -116
- data/packaging/debian/test +0 -142
- data/packaging/rpm/passenger_spec/rubygem-passenger-4.0.18-gcc47-include-sys_types.patch +0 -45
- data/test/cxx/Base64Test.cpp +0 -50
- data/test/cxx/FileBackedPipeTest.cpp +0 -626
- data/test/cxx/HttpHeaderBuffererTest.cpp +0 -257
- data/test/cxx/ScgiRequestParserTest.cpp +0 -423
- data/test/cxx/ServerInstanceDirTest.cpp +0 -175
- data/test/ruby/admin_tools_spec.rb +0 -360
- data/test/ruby/classic_rails/loader_spec.rb +0 -46
- data/test/ruby/classic_rails/preloader_spec.rb +0 -52
- data/test/ruby/standalone/runtime_locator_spec.rb +0 -214
- data/test/stub/rails2.3/Rakefile +0 -10
- data/test/stub/rails2.3/app/controllers/application_controller.rb +0 -10
- data/test/stub/rails2.3/app/controllers/bar_controller_1.rb +0 -5
- data/test/stub/rails2.3/app/controllers/bar_controller_2.rb +0 -5
- data/test/stub/rails2.3/app/controllers/foo_controller.rb +0 -21
- data/test/stub/rails2.3/app/helpers/application_helper.rb +0 -3
- data/test/stub/rails2.3/app/helpers/bar_helper.rb +0 -2
- data/test/stub/rails2.3/app/helpers/foo_helper.rb +0 -2
- data/test/stub/rails2.3/config/boot.rb +0 -110
- data/test/stub/rails2.3/config/database.yml +0 -19
- data/test/stub/rails2.3/config/environment.rb +0 -62
- data/test/stub/rails2.3/config/environments/development.rb +0 -17
- data/test/stub/rails2.3/config/environments/production.rb +0 -18
- data/test/stub/rails2.3/config/environments/staging.rb +0 -18
- data/test/stub/rails2.3/config/initializers/inflections.rb +0 -10
- data/test/stub/rails2.3/config/initializers/mime_types.rb +0 -5
- data/test/stub/rails2.3/config/routes.rb +0 -35
- data/test/stub/rails2.3/log/.gitignore +0 -1
- data/test/stub/rails2.3/public/.gitignore +0 -1
- data/test/stub/rails2.3/script/about +0 -3
- data/test/stub/rails2.3/script/console +0 -3
- data/test/stub/rails2.3/script/dbconsole +0 -3
- data/test/stub/rails2.3/script/destroy +0 -3
- data/test/stub/rails2.3/script/generate +0 -3
- data/test/stub/rails2.3/script/performance/benchmarker +0 -3
- data/test/stub/rails2.3/script/performance/profiler +0 -3
- data/test/stub/rails2.3/script/performance/request +0 -3
- data/test/stub/rails2.3/script/plugin +0 -3
- data/test/stub/rails2.3/script/process/inspector +0 -3
- data/test/stub/rails2.3/script/process/reaper +0 -3
- data/test/stub/rails2.3/script/process/spawner +0 -3
- data/test/stub/rails2.3/script/runner +0 -3
- data/test/stub/rails2.3/script/server +0 -3
- data/test/stub/rails2.3/tmp/cache/.gitignore +0 -1
- data/test/stub/rails2.3/tmp/pids/.gitignore +0 -1
- data/test/stub/rails2.3/tmp/sessions/.gitignore +0 -1
- data/test/stub/rails2.3/tmp/sockets/.gitignore +0 -1
@@ -0,0 +1,1706 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2004-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_SLIST_HPP
|
12
|
+
#define BOOST_CONTAINER_SLIST_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 <boost/container/throw_exception.hpp>
|
23
|
+
#include <boost/move/utility.hpp>
|
24
|
+
#include <boost/move/detail/move_helpers.hpp>
|
25
|
+
#include <boost/intrusive/pointer_traits.hpp>
|
26
|
+
#include <boost/container/detail/utilities.hpp>
|
27
|
+
#include <boost/container/detail/mpl.hpp>
|
28
|
+
#include <boost/container/detail/type_traits.hpp>
|
29
|
+
#include <boost/type_traits/has_trivial_destructor.hpp>
|
30
|
+
#include <boost/detail/no_exceptions_support.hpp>
|
31
|
+
#include <boost/container/detail/node_alloc_holder.hpp>
|
32
|
+
#include <boost/intrusive/slist.hpp>
|
33
|
+
|
34
|
+
|
35
|
+
#if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
36
|
+
//Preprocessor library to emulate perfect forwarding
|
37
|
+
#else
|
38
|
+
#include <boost/container/detail/preprocessor.hpp>
|
39
|
+
#endif
|
40
|
+
|
41
|
+
#include <iterator>
|
42
|
+
#include <utility>
|
43
|
+
#include <memory>
|
44
|
+
#include <functional>
|
45
|
+
#include <algorithm>
|
46
|
+
|
47
|
+
namespace boost {
|
48
|
+
namespace container {
|
49
|
+
|
50
|
+
/// @cond
|
51
|
+
|
52
|
+
template <class T, class Allocator>
|
53
|
+
class slist;
|
54
|
+
|
55
|
+
namespace container_detail {
|
56
|
+
|
57
|
+
template<class VoidPointer>
|
58
|
+
struct slist_hook
|
59
|
+
{
|
60
|
+
typedef typename container_detail::bi::make_slist_base_hook
|
61
|
+
<container_detail::bi::void_pointer<VoidPointer>, container_detail::bi::link_mode<container_detail::bi::normal_link> >::type type;
|
62
|
+
};
|
63
|
+
|
64
|
+
template <class T, class VoidPointer>
|
65
|
+
struct slist_node
|
66
|
+
: public slist_hook<VoidPointer>::type
|
67
|
+
{
|
68
|
+
private:
|
69
|
+
slist_node();
|
70
|
+
|
71
|
+
public:
|
72
|
+
typedef typename slist_hook<VoidPointer>::type hook_type;
|
73
|
+
T m_data;
|
74
|
+
};
|
75
|
+
|
76
|
+
template<class Allocator>
|
77
|
+
struct intrusive_slist_type
|
78
|
+
{
|
79
|
+
typedef boost::container::allocator_traits<Allocator> allocator_traits_type;
|
80
|
+
typedef typename allocator_traits_type::value_type value_type;
|
81
|
+
typedef typename boost::intrusive::pointer_traits
|
82
|
+
<typename allocator_traits_type::pointer>::template
|
83
|
+
rebind_pointer<void>::type
|
84
|
+
void_pointer;
|
85
|
+
typedef typename container_detail::slist_node
|
86
|
+
<value_type, void_pointer> node_type;
|
87
|
+
|
88
|
+
typedef typename container_detail::bi::make_slist
|
89
|
+
<node_type
|
90
|
+
,container_detail::bi::base_hook<typename slist_hook<void_pointer>::type>
|
91
|
+
,container_detail::bi::constant_time_size<true>
|
92
|
+
, container_detail::bi::size_type
|
93
|
+
<typename allocator_traits_type::size_type>
|
94
|
+
>::type container_type;
|
95
|
+
typedef container_type type ;
|
96
|
+
};
|
97
|
+
|
98
|
+
template<class T, class IIterator>
|
99
|
+
class slist_const_iterator
|
100
|
+
: public std::iterator< std::forward_iterator_tag, T
|
101
|
+
, typename iiterator_types<T, IIterator>::difference_type
|
102
|
+
, typename iiterator_types<T, IIterator>::const_pointer
|
103
|
+
, typename iiterator_types<T, IIterator>::const_reference>
|
104
|
+
{
|
105
|
+
protected:
|
106
|
+
|
107
|
+
IIterator m_it;
|
108
|
+
|
109
|
+
public:
|
110
|
+
typedef typename iiterator_types<T, IIterator>::const_pointer const_pointer;
|
111
|
+
typedef typename iiterator_types<T, IIterator>::const_reference const_reference;
|
112
|
+
|
113
|
+
//Constructors
|
114
|
+
slist_const_iterator()
|
115
|
+
: m_it()
|
116
|
+
{}
|
117
|
+
|
118
|
+
explicit slist_const_iterator(const IIterator &it)
|
119
|
+
: m_it(it)
|
120
|
+
{}
|
121
|
+
|
122
|
+
//Pointer like operators
|
123
|
+
const_reference operator*() const
|
124
|
+
{ return this->m_it->m_data; }
|
125
|
+
|
126
|
+
const_pointer operator->() const
|
127
|
+
{ return ::boost::intrusive::pointer_traits<const_pointer>::pointer_to(this->m_it->m_data); }
|
128
|
+
|
129
|
+
//Increment / Decrement
|
130
|
+
slist_const_iterator& operator++()
|
131
|
+
{ ++this->m_it; return *this; }
|
132
|
+
|
133
|
+
slist_const_iterator operator++(int)
|
134
|
+
{ IIterator tmp = this->m_it; ++*this; return slist_const_iterator(tmp); }
|
135
|
+
|
136
|
+
//Comparison operators
|
137
|
+
friend bool operator== (const slist_const_iterator& l, const slist_const_iterator& r)
|
138
|
+
{ return l.m_it == r.m_it; }
|
139
|
+
|
140
|
+
friend bool operator!= (const slist_const_iterator& l, const slist_const_iterator& r)
|
141
|
+
{ return l.m_it != r.m_it; }
|
142
|
+
|
143
|
+
const IIterator &get() const
|
144
|
+
{ return this->m_it; }
|
145
|
+
};
|
146
|
+
|
147
|
+
template<class T, class IIterator>
|
148
|
+
class slist_iterator
|
149
|
+
: public slist_const_iterator<T, IIterator>
|
150
|
+
{
|
151
|
+
private:
|
152
|
+
typedef slist_const_iterator<T, IIterator> const_iterator;
|
153
|
+
|
154
|
+
public:
|
155
|
+
typedef typename iiterator_types<T, IIterator>::pointer pointer;
|
156
|
+
typedef typename iiterator_types<T, IIterator>::reference reference;
|
157
|
+
|
158
|
+
//Constructors
|
159
|
+
slist_iterator()
|
160
|
+
: const_iterator()
|
161
|
+
{}
|
162
|
+
|
163
|
+
explicit slist_iterator(const IIterator &it)
|
164
|
+
: const_iterator(it)
|
165
|
+
{}
|
166
|
+
|
167
|
+
//Pointer like operators
|
168
|
+
reference operator*() const
|
169
|
+
{ return this->m_it->m_data; }
|
170
|
+
|
171
|
+
pointer operator->() const
|
172
|
+
{ return ::boost::intrusive::pointer_traits<pointer>::pointer_to(this->m_it->m_data); }
|
173
|
+
|
174
|
+
//Increment / Decrement
|
175
|
+
slist_iterator& operator++()
|
176
|
+
{ ++this->m_it; return *this; }
|
177
|
+
|
178
|
+
slist_iterator operator++(int)
|
179
|
+
{ IIterator tmp = this->m_it; ++*this; return slist_iterator(tmp); }
|
180
|
+
|
181
|
+
const IIterator &get() const
|
182
|
+
{ return this->m_it; }
|
183
|
+
};
|
184
|
+
|
185
|
+
} //namespace container_detail {
|
186
|
+
|
187
|
+
/// @endcond
|
188
|
+
|
189
|
+
//! An slist is a singly linked list: a list where each element is linked to the next
|
190
|
+
//! element, but not to the previous element. That is, it is a Sequence that
|
191
|
+
//! supports forward but not backward traversal, and (amortized) constant time
|
192
|
+
//! insertion and removal of elements. Slists, like lists, have the important
|
193
|
+
//! property that insertion and splicing do not invalidate iterators to list elements,
|
194
|
+
//! and that even removal invalidates only the iterators that point to the elements
|
195
|
+
//! that are removed. The ordering of iterators may be changed (that is,
|
196
|
+
//! slist<T>::iterator might have a different predecessor or successor after a list
|
197
|
+
//! operation than it did before), but the iterators themselves will not be invalidated
|
198
|
+
//! or made to point to different elements unless that invalidation or mutation is explicit.
|
199
|
+
//!
|
200
|
+
//! The main difference between slist and list is that list's iterators are bidirectional
|
201
|
+
//! iterators, while slist's iterators are forward iterators. This means that slist is
|
202
|
+
//! less versatile than list; frequently, however, bidirectional iterators are
|
203
|
+
//! unnecessary. You should usually use slist unless you actually need the extra
|
204
|
+
//! functionality of list, because singly linked lists are smaller and faster than double
|
205
|
+
//! linked lists.
|
206
|
+
//!
|
207
|
+
//! Important performance note: like every other Sequence, slist defines the member
|
208
|
+
//! functions insert and erase. Using these member functions carelessly, however, can
|
209
|
+
//! result in disastrously slow programs. The problem is that insert's first argument is
|
210
|
+
//! an iterator p, and that it inserts the new element(s) before p. This means that
|
211
|
+
//! insert must find the iterator just before p; this is a constant-time operation
|
212
|
+
//! for list, since list has bidirectional iterators, but for slist it must find that
|
213
|
+
//! iterator by traversing the list from the beginning up to p. In other words:
|
214
|
+
//! insert and erase are slow operations anywhere but near the beginning of the slist.
|
215
|
+
//!
|
216
|
+
//! Slist provides the member functions insert_after and erase_after, which are constant
|
217
|
+
//! time operations: you should always use insert_after and erase_after whenever
|
218
|
+
//! possible. If you find that insert_after and erase_after aren't adequate for your
|
219
|
+
//! needs, and that you often need to use insert and erase in the middle of the list,
|
220
|
+
//! then you should probably use list instead of slist.
|
221
|
+
#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
|
222
|
+
template <class T, class Allocator = std::allocator<T> >
|
223
|
+
#else
|
224
|
+
template <class T, class Allocator>
|
225
|
+
#endif
|
226
|
+
class slist
|
227
|
+
: protected container_detail::node_alloc_holder
|
228
|
+
<Allocator, typename container_detail::intrusive_slist_type<Allocator>::type>
|
229
|
+
{
|
230
|
+
/// @cond
|
231
|
+
typedef typename
|
232
|
+
container_detail::intrusive_slist_type<Allocator>::type Icont;
|
233
|
+
typedef container_detail::node_alloc_holder<Allocator, Icont> AllocHolder;
|
234
|
+
typedef typename AllocHolder::NodePtr NodePtr;
|
235
|
+
typedef typename AllocHolder::NodeAlloc NodeAlloc;
|
236
|
+
typedef typename AllocHolder::ValAlloc ValAlloc;
|
237
|
+
typedef typename AllocHolder::Node Node;
|
238
|
+
typedef container_detail::allocator_destroyer<NodeAlloc> Destroyer;
|
239
|
+
typedef typename AllocHolder::allocator_v1 allocator_v1;
|
240
|
+
typedef typename AllocHolder::allocator_v2 allocator_v2;
|
241
|
+
typedef typename AllocHolder::alloc_version alloc_version;
|
242
|
+
typedef boost::container::allocator_traits<Allocator> allocator_traits_type;
|
243
|
+
|
244
|
+
class equal_to_value
|
245
|
+
{
|
246
|
+
typedef typename AllocHolder::value_type value_type;
|
247
|
+
const value_type &t_;
|
248
|
+
|
249
|
+
public:
|
250
|
+
equal_to_value(const value_type &t)
|
251
|
+
: t_(t)
|
252
|
+
{}
|
253
|
+
|
254
|
+
bool operator()(const value_type &t)const
|
255
|
+
{ return t_ == t; }
|
256
|
+
};
|
257
|
+
|
258
|
+
template<class Pred>
|
259
|
+
struct ValueCompareToNodeCompare
|
260
|
+
: Pred
|
261
|
+
{
|
262
|
+
ValueCompareToNodeCompare(Pred pred)
|
263
|
+
: Pred(pred)
|
264
|
+
{}
|
265
|
+
|
266
|
+
bool operator()(const Node &a, const Node &b) const
|
267
|
+
{ return static_cast<const Pred&>(*this)(a.m_data, b.m_data); }
|
268
|
+
|
269
|
+
bool operator()(const Node &a) const
|
270
|
+
{ return static_cast<const Pred&>(*this)(a.m_data); }
|
271
|
+
};
|
272
|
+
|
273
|
+
BOOST_COPYABLE_AND_MOVABLE(slist)
|
274
|
+
typedef container_detail::slist_iterator<T, typename Icont::iterator> iterator_impl;
|
275
|
+
typedef container_detail::slist_const_iterator<T, typename Icont::iterator>const_iterator_impl;
|
276
|
+
/// @endcond
|
277
|
+
|
278
|
+
public:
|
279
|
+
//////////////////////////////////////////////
|
280
|
+
//
|
281
|
+
// types
|
282
|
+
//
|
283
|
+
//////////////////////////////////////////////
|
284
|
+
|
285
|
+
typedef T value_type;
|
286
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
287
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
|
288
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::reference reference;
|
289
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::const_reference const_reference;
|
290
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::size_type size_type;
|
291
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
|
292
|
+
typedef Allocator allocator_type;
|
293
|
+
typedef BOOST_CONTAINER_IMPDEF(NodeAlloc) stored_allocator_type;
|
294
|
+
typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator;
|
295
|
+
typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator;
|
296
|
+
|
297
|
+
public:
|
298
|
+
|
299
|
+
//////////////////////////////////////////////
|
300
|
+
//
|
301
|
+
// construct/copy/destroy
|
302
|
+
//
|
303
|
+
//////////////////////////////////////////////
|
304
|
+
|
305
|
+
//! <b>Effects</b>: Constructs a list taking the allocator as parameter.
|
306
|
+
//!
|
307
|
+
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
308
|
+
//!
|
309
|
+
//! <b>Complexity</b>: Constant.
|
310
|
+
slist()
|
311
|
+
: AllocHolder()
|
312
|
+
{}
|
313
|
+
|
314
|
+
//! <b>Effects</b>: Constructs a list taking the allocator as parameter.
|
315
|
+
//!
|
316
|
+
//! <b>Throws</b>: Nothing
|
317
|
+
//!
|
318
|
+
//! <b>Complexity</b>: Constant.
|
319
|
+
explicit slist(const allocator_type& a) BOOST_CONTAINER_NOEXCEPT
|
320
|
+
: AllocHolder(a)
|
321
|
+
{}
|
322
|
+
|
323
|
+
explicit slist(size_type n)
|
324
|
+
: AllocHolder(allocator_type())
|
325
|
+
{ this->resize(n); }
|
326
|
+
|
327
|
+
//! <b>Effects</b>: Constructs a list that will use a copy of allocator a
|
328
|
+
//! and inserts n copies of value.
|
329
|
+
//!
|
330
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor
|
331
|
+
//! throws or T's default or copy constructor throws.
|
332
|
+
//!
|
333
|
+
//! <b>Complexity</b>: Linear to n.
|
334
|
+
explicit slist(size_type n, const value_type& x, const allocator_type& a = allocator_type())
|
335
|
+
: AllocHolder(a)
|
336
|
+
{ this->insert_after(this->cbefore_begin(), n, x); }
|
337
|
+
|
338
|
+
//! <b>Effects</b>: Constructs a list that will use a copy of allocator a
|
339
|
+
//! and inserts a copy of the range [first, last) in the list.
|
340
|
+
//!
|
341
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor
|
342
|
+
//! throws or T's constructor taking an dereferenced InIt throws.
|
343
|
+
//!
|
344
|
+
//! <b>Complexity</b>: Linear to the range [first, last).
|
345
|
+
template <class InpIt>
|
346
|
+
slist(InpIt first, InpIt last, const allocator_type& a = allocator_type())
|
347
|
+
: AllocHolder(a)
|
348
|
+
{ this->insert_after(this->cbefore_begin(), first, last); }
|
349
|
+
|
350
|
+
//! <b>Effects</b>: Copy constructs a list.
|
351
|
+
//!
|
352
|
+
//! <b>Postcondition</b>: x == *this.
|
353
|
+
//!
|
354
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor throws.
|
355
|
+
//!
|
356
|
+
//! <b>Complexity</b>: Linear to the elements x contains.
|
357
|
+
slist(const slist& x)
|
358
|
+
: AllocHolder(x)
|
359
|
+
{ this->insert_after(this->cbefore_begin(), x.begin(), x.end()); }
|
360
|
+
|
361
|
+
//! <b>Effects</b>: Move constructor. Moves mx's resources to *this.
|
362
|
+
//!
|
363
|
+
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
364
|
+
//!
|
365
|
+
//! <b>Complexity</b>: Constant.
|
366
|
+
slist(BOOST_RV_REF(slist) x)
|
367
|
+
: AllocHolder(boost::move(static_cast<AllocHolder&>(x)))
|
368
|
+
{}
|
369
|
+
|
370
|
+
//! <b>Effects</b>: Copy constructs a list using the specified allocator.
|
371
|
+
//!
|
372
|
+
//! <b>Postcondition</b>: x == *this.
|
373
|
+
//!
|
374
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor throws.
|
375
|
+
//!
|
376
|
+
//! <b>Complexity</b>: Linear to the elements x contains.
|
377
|
+
slist(const slist& x, const allocator_type &a)
|
378
|
+
: AllocHolder(a)
|
379
|
+
{ this->insert_after(this->cbefore_begin(), x.begin(), x.end()); }
|
380
|
+
|
381
|
+
//! <b>Effects</b>: Move constructor using the specified allocator.
|
382
|
+
//! Moves x's resources to *this.
|
383
|
+
//!
|
384
|
+
//! <b>Throws</b>: If allocation or value_type's copy constructor throws.
|
385
|
+
//!
|
386
|
+
//! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise.
|
387
|
+
slist(BOOST_RV_REF(slist) x, const allocator_type &a)
|
388
|
+
: AllocHolder(a)
|
389
|
+
{
|
390
|
+
if(this->node_alloc() == x.node_alloc()){
|
391
|
+
this->icont().swap(x.icont());
|
392
|
+
}
|
393
|
+
else{
|
394
|
+
this->insert(this->cbegin(), x.begin(), x.end());
|
395
|
+
}
|
396
|
+
}
|
397
|
+
|
398
|
+
//! <b>Effects</b>: Destroys the list. All stored values are destroyed
|
399
|
+
//! and used memory is deallocated.
|
400
|
+
//!
|
401
|
+
//! <b>Throws</b>: Nothing.
|
402
|
+
//!
|
403
|
+
//! <b>Complexity</b>: Linear to the number of elements.
|
404
|
+
~slist() BOOST_CONTAINER_NOEXCEPT
|
405
|
+
{} //AllocHolder clears the slist
|
406
|
+
|
407
|
+
//! <b>Effects</b>: Makes *this contain the same elements as x.
|
408
|
+
//!
|
409
|
+
//! <b>Postcondition</b>: this->size() == x.size(). *this contains a copy
|
410
|
+
//! of each of x's elements.
|
411
|
+
//!
|
412
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
413
|
+
//!
|
414
|
+
//! <b>Complexity</b>: Linear to the number of elements in x.
|
415
|
+
slist& operator= (BOOST_COPY_ASSIGN_REF(slist) x)
|
416
|
+
{
|
417
|
+
if (&x != this){
|
418
|
+
NodeAlloc &this_alloc = this->node_alloc();
|
419
|
+
const NodeAlloc &x_alloc = x.node_alloc();
|
420
|
+
container_detail::bool_<allocator_traits_type::
|
421
|
+
propagate_on_container_copy_assignment::value> flag;
|
422
|
+
if(flag && this_alloc != x_alloc){
|
423
|
+
this->clear();
|
424
|
+
}
|
425
|
+
this->AllocHolder::copy_assign_alloc(x);
|
426
|
+
this->assign(x.begin(), x.end());
|
427
|
+
}
|
428
|
+
return *this;
|
429
|
+
}
|
430
|
+
|
431
|
+
//! <b>Effects</b>: Makes *this contain the same elements as x.
|
432
|
+
//!
|
433
|
+
//! <b>Postcondition</b>: this->size() == x.size(). *this contains a copy
|
434
|
+
//! of each of x's elements.
|
435
|
+
//!
|
436
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
437
|
+
//!
|
438
|
+
//! <b>Complexity</b>: Linear to the number of elements in x.
|
439
|
+
slist& operator= (BOOST_RV_REF(slist) x)
|
440
|
+
{
|
441
|
+
if (&x != this){
|
442
|
+
NodeAlloc &this_alloc = this->node_alloc();
|
443
|
+
NodeAlloc &x_alloc = x.node_alloc();
|
444
|
+
//If allocators a re equal we can just swap pointers
|
445
|
+
if(this_alloc == x_alloc){
|
446
|
+
//Destroy and swap pointers
|
447
|
+
this->clear();
|
448
|
+
this->icont() = boost::move(x.icont());
|
449
|
+
//Move allocator if needed
|
450
|
+
this->AllocHolder::move_assign_alloc(x);
|
451
|
+
}
|
452
|
+
//If unequal allocators, then do a one by one move
|
453
|
+
else{
|
454
|
+
typedef typename std::iterator_traits<iterator>::iterator_category ItCat;
|
455
|
+
this->assign( boost::make_move_iterator(x.begin())
|
456
|
+
, boost::make_move_iterator(x.end()));
|
457
|
+
}
|
458
|
+
}
|
459
|
+
return *this;
|
460
|
+
}
|
461
|
+
|
462
|
+
//! <b>Effects</b>: Assigns the n copies of val to *this.
|
463
|
+
//!
|
464
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
465
|
+
//!
|
466
|
+
//! <b>Complexity</b>: Linear to n.
|
467
|
+
void assign(size_type n, const T& val)
|
468
|
+
{
|
469
|
+
typedef constant_iterator<value_type, difference_type> cvalue_iterator;
|
470
|
+
return this->assign(cvalue_iterator(val, n), cvalue_iterator());
|
471
|
+
}
|
472
|
+
|
473
|
+
//! <b>Effects</b>: Assigns the range [first, last) to *this.
|
474
|
+
//!
|
475
|
+
//! <b>Throws</b>: If memory allocation throws or
|
476
|
+
//! T's constructor from dereferencing InpIt throws.
|
477
|
+
//!
|
478
|
+
//! <b>Complexity</b>: Linear to n.
|
479
|
+
template <class InpIt>
|
480
|
+
void assign(InpIt first, InpIt last
|
481
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
482
|
+
, typename container_detail::enable_if_c
|
483
|
+
< !container_detail::is_convertible<InpIt, size_type>::value
|
484
|
+
>::type * = 0
|
485
|
+
#endif
|
486
|
+
)
|
487
|
+
{
|
488
|
+
iterator end_n(this->end());
|
489
|
+
iterator prev(this->before_begin());
|
490
|
+
iterator node(this->begin());
|
491
|
+
while (node != end_n && first != last){
|
492
|
+
*node = *first;
|
493
|
+
prev = node;
|
494
|
+
++node;
|
495
|
+
++first;
|
496
|
+
}
|
497
|
+
if (first != last)
|
498
|
+
this->insert_after(prev, first, last);
|
499
|
+
else
|
500
|
+
this->erase_after(prev, end_n);
|
501
|
+
}
|
502
|
+
|
503
|
+
//! <b>Effects</b>: Returns a copy of the internal allocator.
|
504
|
+
//!
|
505
|
+
//! <b>Throws</b>: If allocator's copy constructor throws.
|
506
|
+
//!
|
507
|
+
//! <b>Complexity</b>: Constant.
|
508
|
+
allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT
|
509
|
+
{ return allocator_type(this->node_alloc()); }
|
510
|
+
|
511
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
512
|
+
//!
|
513
|
+
//! <b>Throws</b>: Nothing
|
514
|
+
//!
|
515
|
+
//! <b>Complexity</b>: Constant.
|
516
|
+
//!
|
517
|
+
//! <b>Note</b>: Non-standard extension.
|
518
|
+
stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT
|
519
|
+
{ return this->node_alloc(); }
|
520
|
+
|
521
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
522
|
+
//!
|
523
|
+
//! <b>Throws</b>: Nothing
|
524
|
+
//!
|
525
|
+
//! <b>Complexity</b>: Constant.
|
526
|
+
//!
|
527
|
+
//! <b>Note</b>: Non-standard extension.
|
528
|
+
const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT
|
529
|
+
{ return this->node_alloc(); }
|
530
|
+
|
531
|
+
//////////////////////////////////////////////
|
532
|
+
//
|
533
|
+
// iterators
|
534
|
+
//
|
535
|
+
//////////////////////////////////////////////
|
536
|
+
|
537
|
+
//! <b>Effects</b>: Returns a non-dereferenceable iterator that,
|
538
|
+
//! when incremented, yields begin(). This iterator may be used
|
539
|
+
//! as the argument to insert_after, erase_after, etc.
|
540
|
+
//!
|
541
|
+
//! <b>Throws</b>: Nothing.
|
542
|
+
//!
|
543
|
+
//! <b>Complexity</b>: Constant.
|
544
|
+
iterator before_begin() BOOST_CONTAINER_NOEXCEPT
|
545
|
+
{ return iterator(end()); }
|
546
|
+
|
547
|
+
//! <b>Effects</b>: Returns a non-dereferenceable const_iterator
|
548
|
+
//! that, when incremented, yields begin(). This iterator may be used
|
549
|
+
//! as the argument to insert_after, erase_after, etc.
|
550
|
+
//!
|
551
|
+
//! <b>Throws</b>: Nothing.
|
552
|
+
//!
|
553
|
+
//! <b>Complexity</b>: Constant.
|
554
|
+
const_iterator before_begin() const BOOST_CONTAINER_NOEXCEPT
|
555
|
+
{ return this->cbefore_begin(); }
|
556
|
+
|
557
|
+
//! <b>Effects</b>: Returns an iterator to the first element contained in the list.
|
558
|
+
//!
|
559
|
+
//! <b>Throws</b>: Nothing.
|
560
|
+
//!
|
561
|
+
//! <b>Complexity</b>: Constant.
|
562
|
+
iterator begin() BOOST_CONTAINER_NOEXCEPT
|
563
|
+
{ return iterator(this->icont().begin()); }
|
564
|
+
|
565
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
|
566
|
+
//!
|
567
|
+
//! <b>Throws</b>: Nothing.
|
568
|
+
//!
|
569
|
+
//! <b>Complexity</b>: Constant.
|
570
|
+
const_iterator begin() const BOOST_CONTAINER_NOEXCEPT
|
571
|
+
{ return this->cbegin(); }
|
572
|
+
|
573
|
+
//! <b>Effects</b>: Returns an iterator to the end of the list.
|
574
|
+
//!
|
575
|
+
//! <b>Throws</b>: Nothing.
|
576
|
+
//!
|
577
|
+
//! <b>Complexity</b>: Constant.
|
578
|
+
iterator end() BOOST_CONTAINER_NOEXCEPT
|
579
|
+
{ return iterator(this->icont().end()); }
|
580
|
+
|
581
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the list.
|
582
|
+
//!
|
583
|
+
//! <b>Throws</b>: Nothing.
|
584
|
+
//!
|
585
|
+
//! <b>Complexity</b>: Constant.
|
586
|
+
const_iterator end() const BOOST_CONTAINER_NOEXCEPT
|
587
|
+
{ return this->cend(); }
|
588
|
+
|
589
|
+
//! <b>Effects</b>: Returns a non-dereferenceable const_iterator
|
590
|
+
//! that, when incremented, yields begin(). This iterator may be used
|
591
|
+
//! as the argument to insert_after, erase_after, etc.
|
592
|
+
//!
|
593
|
+
//! <b>Throws</b>: Nothing.
|
594
|
+
//!
|
595
|
+
//! <b>Complexity</b>: Constant.
|
596
|
+
const_iterator cbefore_begin() const BOOST_CONTAINER_NOEXCEPT
|
597
|
+
{ return const_iterator(end()); }
|
598
|
+
|
599
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
|
600
|
+
//!
|
601
|
+
//! <b>Throws</b>: Nothing.
|
602
|
+
//!
|
603
|
+
//! <b>Complexity</b>: Constant.
|
604
|
+
const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT
|
605
|
+
{ return const_iterator(this->non_const_icont().begin()); }
|
606
|
+
|
607
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the list.
|
608
|
+
//!
|
609
|
+
//! <b>Throws</b>: Nothing.
|
610
|
+
//!
|
611
|
+
//! <b>Complexity</b>: Constant.
|
612
|
+
const_iterator cend() const BOOST_CONTAINER_NOEXCEPT
|
613
|
+
{ return const_iterator(this->non_const_icont().end()); }
|
614
|
+
|
615
|
+
//! <b>Returns</b>: The iterator to the element before i in the sequence.
|
616
|
+
//! Returns the end-iterator, if either i is the begin-iterator or the
|
617
|
+
//! sequence is empty.
|
618
|
+
//!
|
619
|
+
//! <b>Throws</b>: Nothing.
|
620
|
+
//!
|
621
|
+
//! <b>Complexity</b>: Linear to the number of elements before i.
|
622
|
+
//!
|
623
|
+
//! <b>Note</b>: Non-standard extension.
|
624
|
+
iterator previous(iterator p) BOOST_CONTAINER_NOEXCEPT
|
625
|
+
{ return iterator(this->icont().previous(p.get())); }
|
626
|
+
|
627
|
+
//! <b>Returns</b>: The const_iterator to the element before i in the sequence.
|
628
|
+
//! Returns the end-const_iterator, if either i is the begin-const_iterator or
|
629
|
+
//! the sequence is empty.
|
630
|
+
//!
|
631
|
+
//! <b>Throws</b>: Nothing.
|
632
|
+
//!
|
633
|
+
//! <b>Complexity</b>: Linear to the number of elements before i.
|
634
|
+
//!
|
635
|
+
//! <b>Note</b>: Non-standard extension.
|
636
|
+
const_iterator previous(const_iterator p)
|
637
|
+
{ return const_iterator(this->icont().previous(p.get())); }
|
638
|
+
|
639
|
+
//////////////////////////////////////////////
|
640
|
+
//
|
641
|
+
// capacity
|
642
|
+
//
|
643
|
+
//////////////////////////////////////////////
|
644
|
+
|
645
|
+
//! <b>Effects</b>: Returns true if the list contains no elements.
|
646
|
+
//!
|
647
|
+
//! <b>Throws</b>: Nothing.
|
648
|
+
//!
|
649
|
+
//! <b>Complexity</b>: Constant.
|
650
|
+
bool empty() const
|
651
|
+
{ return !this->size(); }
|
652
|
+
|
653
|
+
//! <b>Effects</b>: Returns the number of the elements contained in the list.
|
654
|
+
//!
|
655
|
+
//! <b>Throws</b>: Nothing.
|
656
|
+
//!
|
657
|
+
//! <b>Complexity</b>: Constant.
|
658
|
+
size_type size() const
|
659
|
+
{ return this->icont().size(); }
|
660
|
+
|
661
|
+
//! <b>Effects</b>: Returns the largest possible size of the list.
|
662
|
+
//!
|
663
|
+
//! <b>Throws</b>: Nothing.
|
664
|
+
//!
|
665
|
+
//! <b>Complexity</b>: Constant.
|
666
|
+
size_type max_size() const
|
667
|
+
{ return AllocHolder::max_size(); }
|
668
|
+
|
669
|
+
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
670
|
+
//! the size becomes n. New elements are default constructed.
|
671
|
+
//!
|
672
|
+
//! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
|
673
|
+
//!
|
674
|
+
//! <b>Complexity</b>: Linear to the difference between size() and new_size.
|
675
|
+
void resize(size_type new_size)
|
676
|
+
{
|
677
|
+
const_iterator last_pos;
|
678
|
+
if(!priv_try_shrink(new_size, last_pos)){
|
679
|
+
typedef default_construct_iterator<value_type, difference_type> default_iterator;
|
680
|
+
this->insert_after(last_pos, default_iterator(new_size - this->size()), default_iterator());
|
681
|
+
}
|
682
|
+
}
|
683
|
+
|
684
|
+
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
685
|
+
//! the size becomes n. New elements are copy constructed from x.
|
686
|
+
//!
|
687
|
+
//! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
|
688
|
+
//!
|
689
|
+
//! <b>Complexity</b>: Linear to the difference between size() and new_size.
|
690
|
+
void resize(size_type new_size, const T& x)
|
691
|
+
{
|
692
|
+
const_iterator last_pos;
|
693
|
+
if(!priv_try_shrink(new_size, last_pos)){
|
694
|
+
this->insert_after(last_pos, new_size, x);
|
695
|
+
}
|
696
|
+
}
|
697
|
+
|
698
|
+
//////////////////////////////////////////////
|
699
|
+
//
|
700
|
+
// element access
|
701
|
+
//
|
702
|
+
//////////////////////////////////////////////
|
703
|
+
|
704
|
+
//! <b>Requires</b>: !empty()
|
705
|
+
//!
|
706
|
+
//! <b>Effects</b>: Returns a reference to the first element
|
707
|
+
//! from the beginning of the container.
|
708
|
+
//!
|
709
|
+
//! <b>Throws</b>: Nothing.
|
710
|
+
//!
|
711
|
+
//! <b>Complexity</b>: Constant.
|
712
|
+
reference front()
|
713
|
+
{ return *this->begin(); }
|
714
|
+
|
715
|
+
//! <b>Requires</b>: !empty()
|
716
|
+
//!
|
717
|
+
//! <b>Effects</b>: Returns a const reference to the first element
|
718
|
+
//! from the beginning of the container.
|
719
|
+
//!
|
720
|
+
//! <b>Throws</b>: Nothing.
|
721
|
+
//!
|
722
|
+
//! <b>Complexity</b>: Constant.
|
723
|
+
const_reference front() const
|
724
|
+
{ return *this->begin(); }
|
725
|
+
|
726
|
+
//////////////////////////////////////////////
|
727
|
+
//
|
728
|
+
// modifiers
|
729
|
+
//
|
730
|
+
//////////////////////////////////////////////
|
731
|
+
|
732
|
+
#if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
733
|
+
|
734
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
735
|
+
//! std::forward<Args>(args)... in the front of the list
|
736
|
+
//!
|
737
|
+
//! <b>Throws</b>: If memory allocation throws or
|
738
|
+
//! T's copy constructor throws.
|
739
|
+
//!
|
740
|
+
//! <b>Complexity</b>: Amortized constant time.
|
741
|
+
template <class... Args>
|
742
|
+
void emplace_front(Args&&... args)
|
743
|
+
{ this->emplace_after(this->cbefore_begin(), boost::forward<Args>(args)...); }
|
744
|
+
|
745
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
746
|
+
//! std::forward<Args>(args)... after prev
|
747
|
+
//!
|
748
|
+
//! <b>Throws</b>: If memory allocation throws or
|
749
|
+
//! T's in-place constructor throws.
|
750
|
+
//!
|
751
|
+
//! <b>Complexity</b>: Constant
|
752
|
+
template <class... Args>
|
753
|
+
iterator emplace_after(const_iterator prev, Args&&... args)
|
754
|
+
{
|
755
|
+
NodePtr pnode(AllocHolder::create_node(boost::forward<Args>(args)...));
|
756
|
+
return iterator(this->icont().insert_after(prev.get(), *pnode));
|
757
|
+
}
|
758
|
+
|
759
|
+
#else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
760
|
+
|
761
|
+
#define BOOST_PP_LOCAL_MACRO(n) \
|
762
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
763
|
+
void emplace_front(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
764
|
+
{ \
|
765
|
+
this->emplace(this->cbegin() \
|
766
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
|
767
|
+
} \
|
768
|
+
\
|
769
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
770
|
+
iterator emplace_after(const_iterator prev \
|
771
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
772
|
+
{ \
|
773
|
+
NodePtr pnode (AllocHolder::create_node \
|
774
|
+
(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); \
|
775
|
+
return iterator(this->icont().insert_after(prev.get(), *pnode)); \
|
776
|
+
} \
|
777
|
+
//!
|
778
|
+
#define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
|
779
|
+
#include BOOST_PP_LOCAL_ITERATE()
|
780
|
+
|
781
|
+
#endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
782
|
+
|
783
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
784
|
+
//! <b>Effects</b>: Inserts a copy of x at the beginning of the list.
|
785
|
+
//!
|
786
|
+
//! <b>Throws</b>: If memory allocation throws or
|
787
|
+
//! T's copy constructor throws.
|
788
|
+
//!
|
789
|
+
//! <b>Complexity</b>: Amortized constant time.
|
790
|
+
void push_front(const T &x);
|
791
|
+
|
792
|
+
//! <b>Effects</b>: Constructs a new element in the beginning of the list
|
793
|
+
//! and moves the resources of mx to this new element.
|
794
|
+
//!
|
795
|
+
//! <b>Throws</b>: If memory allocation throws.
|
796
|
+
//!
|
797
|
+
//! <b>Complexity</b>: Amortized constant time.
|
798
|
+
void push_front(T &&x);
|
799
|
+
#else
|
800
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH(push_front, T, void, priv_push_front)
|
801
|
+
#endif
|
802
|
+
|
803
|
+
|
804
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
805
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
806
|
+
//!
|
807
|
+
//! <b>Effects</b>: Inserts a copy of the value after the position pointed
|
808
|
+
//! by prev_p.
|
809
|
+
//!
|
810
|
+
//! <b>Returns</b>: An iterator to the inserted element.
|
811
|
+
//!
|
812
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
813
|
+
//!
|
814
|
+
//! <b>Complexity</b>: Amortized constant time.
|
815
|
+
//!
|
816
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references of
|
817
|
+
//! previous values.
|
818
|
+
iterator insert_after(const_iterator prev_pos, const T &x);
|
819
|
+
|
820
|
+
//! <b>Requires</b>: prev_pos must be a valid iterator of *this.
|
821
|
+
//!
|
822
|
+
//! <b>Effects</b>: Inserts a move constructed copy object from the value after the
|
823
|
+
//! p pointed by prev_pos.
|
824
|
+
//!
|
825
|
+
//! <b>Returns</b>: An iterator to the inserted element.
|
826
|
+
//!
|
827
|
+
//! <b>Throws</b>: If memory allocation throws.
|
828
|
+
//!
|
829
|
+
//! <b>Complexity</b>: Amortized constant time.
|
830
|
+
//!
|
831
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references of
|
832
|
+
//! previous values.
|
833
|
+
iterator insert_after(const_iterator prev_pos, T &&x);
|
834
|
+
#else
|
835
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert_after, T, iterator, priv_insert_after, const_iterator)
|
836
|
+
#endif
|
837
|
+
|
838
|
+
//! <b>Requires</b>: prev_pos must be a valid iterator of *this.
|
839
|
+
//!
|
840
|
+
//! <b>Effects</b>: Inserts n copies of x after prev_pos.
|
841
|
+
//!
|
842
|
+
//! <b>Returns</b>: an iterator to the last inserted element or prev_pos if n is 0.
|
843
|
+
//!
|
844
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
845
|
+
//!
|
846
|
+
//!
|
847
|
+
//! <b>Complexity</b>: Linear to n.
|
848
|
+
//!
|
849
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references of
|
850
|
+
//! previous values.
|
851
|
+
iterator insert_after(const_iterator prev_pos, size_type n, const value_type& x)
|
852
|
+
{
|
853
|
+
typedef constant_iterator<value_type, difference_type> cvalue_iterator;
|
854
|
+
return this->insert_after(prev_pos, cvalue_iterator(x, n), cvalue_iterator());
|
855
|
+
}
|
856
|
+
|
857
|
+
//! <b>Requires</b>: prev_pos must be a valid iterator of *this.
|
858
|
+
//!
|
859
|
+
//! <b>Effects</b>: Inserts the range pointed by [first, last)
|
860
|
+
//! after the position prev_pos.
|
861
|
+
//!
|
862
|
+
//! <b>Returns</b>: an iterator to the last inserted element or prev_pos if first == last.
|
863
|
+
//!
|
864
|
+
//! <b>Throws</b>: If memory allocation throws, T's constructor from a
|
865
|
+
//! dereferenced InpIt throws.
|
866
|
+
//!
|
867
|
+
//! <b>Complexity</b>: Linear to the number of elements inserted.
|
868
|
+
//!
|
869
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references of
|
870
|
+
//! previous values.
|
871
|
+
template <class InpIt>
|
872
|
+
iterator insert_after(const_iterator prev_pos, InpIt first, InpIt last
|
873
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
874
|
+
, typename container_detail::enable_if_c
|
875
|
+
< !container_detail::is_convertible<InpIt, size_type>::value
|
876
|
+
&& (container_detail::is_input_iterator<InpIt>::value
|
877
|
+
|| container_detail::is_same<alloc_version, allocator_v1>::value
|
878
|
+
)
|
879
|
+
>::type * = 0
|
880
|
+
#endif
|
881
|
+
)
|
882
|
+
{
|
883
|
+
iterator ret_it(prev_pos.get());
|
884
|
+
for (; first != last; ++first){
|
885
|
+
ret_it = iterator(this->icont().insert_after(ret_it.get(), *this->create_node_from_it(first)));
|
886
|
+
}
|
887
|
+
return ret_it;
|
888
|
+
}
|
889
|
+
|
890
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
891
|
+
template <class FwdIt>
|
892
|
+
iterator insert_after(const_iterator prev, FwdIt first, FwdIt last
|
893
|
+
, typename container_detail::enable_if_c
|
894
|
+
< !container_detail::is_convertible<FwdIt, size_type>::value
|
895
|
+
&& !(container_detail::is_input_iterator<FwdIt>::value
|
896
|
+
|| container_detail::is_same<alloc_version, allocator_v1>::value
|
897
|
+
)
|
898
|
+
>::type * = 0
|
899
|
+
)
|
900
|
+
{
|
901
|
+
//Optimized allocation and construction
|
902
|
+
insertion_functor func(this->icont(), prev.get());
|
903
|
+
this->allocate_many_and_construct(first, std::distance(first, last), func);
|
904
|
+
return iterator(func.inserted_first());
|
905
|
+
}
|
906
|
+
#endif
|
907
|
+
|
908
|
+
//! <b>Effects</b>: Removes the first element from the list.
|
909
|
+
//!
|
910
|
+
//! <b>Throws</b>: Nothing.
|
911
|
+
//!
|
912
|
+
//! <b>Complexity</b>: Amortized constant time.
|
913
|
+
void pop_front()
|
914
|
+
{ this->icont().pop_front_and_dispose(Destroyer(this->node_alloc())); }
|
915
|
+
|
916
|
+
//! <b>Effects</b>: Erases the element after the element pointed by prev_pos
|
917
|
+
//! of the list.
|
918
|
+
//!
|
919
|
+
//! <b>Returns</b>: the first element remaining beyond the removed elements,
|
920
|
+
//! or end() if no such element exists.
|
921
|
+
//!
|
922
|
+
//! <b>Throws</b>: Nothing.
|
923
|
+
//!
|
924
|
+
//! <b>Complexity</b>: Constant.
|
925
|
+
//!
|
926
|
+
//! <b>Note</b>: Does not invalidate iterators or references to non erased elements.
|
927
|
+
iterator erase_after(const_iterator prev_pos)
|
928
|
+
{
|
929
|
+
return iterator(this->icont().erase_after_and_dispose(prev_pos.get(), Destroyer(this->node_alloc())));
|
930
|
+
}
|
931
|
+
|
932
|
+
//! <b>Effects</b>: Erases the range (before_first, last) from
|
933
|
+
//! the list.
|
934
|
+
//!
|
935
|
+
//! <b>Returns</b>: the first element remaining beyond the removed elements,
|
936
|
+
//! or end() if no such element exists.
|
937
|
+
//!
|
938
|
+
//! <b>Throws</b>: Nothing.
|
939
|
+
//!
|
940
|
+
//! <b>Complexity</b>: Linear to the number of erased elements.
|
941
|
+
//!
|
942
|
+
//! <b>Note</b>: Does not invalidate iterators or references to non erased elements.
|
943
|
+
iterator erase_after(const_iterator before_first, const_iterator last)
|
944
|
+
{
|
945
|
+
return iterator(this->icont().erase_after_and_dispose(before_first.get(), last.get(), Destroyer(this->node_alloc())));
|
946
|
+
}
|
947
|
+
|
948
|
+
//! <b>Effects</b>: Swaps the contents of *this and x.
|
949
|
+
//!
|
950
|
+
//! <b>Throws</b>: Nothing.
|
951
|
+
//!
|
952
|
+
//! <b>Complexity</b>: Linear to the number of elements on *this and x.
|
953
|
+
void swap(slist& x)
|
954
|
+
{ AllocHolder::swap(x); }
|
955
|
+
|
956
|
+
//! <b>Effects</b>: Erases all the elements of the list.
|
957
|
+
//!
|
958
|
+
//! <b>Throws</b>: Nothing.
|
959
|
+
//!
|
960
|
+
//! <b>Complexity</b>: Linear to the number of elements in the list.
|
961
|
+
void clear()
|
962
|
+
{ this->icont().clear_and_dispose(Destroyer(this->node_alloc())); }
|
963
|
+
|
964
|
+
//////////////////////////////////////////////
|
965
|
+
//
|
966
|
+
// slist operations
|
967
|
+
//
|
968
|
+
//////////////////////////////////////////////
|
969
|
+
|
970
|
+
//! <b>Requires</b>: p must point to an element contained
|
971
|
+
//! by the list. x != *this
|
972
|
+
//!
|
973
|
+
//! <b>Effects</b>: Transfers all the elements of list x to this list, after the
|
974
|
+
//! the element pointed by p. No destructors or copy constructors are called.
|
975
|
+
//!
|
976
|
+
//! <b>Throws</b>: std::runtime_error if this' allocator and x's allocator
|
977
|
+
//! are not equal.
|
978
|
+
//!
|
979
|
+
//! <b>Complexity</b>: Linear to the elements in x.
|
980
|
+
//!
|
981
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of
|
982
|
+
//! this list. Iterators of this list and all the references are not invalidated.
|
983
|
+
void splice_after(const_iterator prev_pos, slist& x) BOOST_CONTAINER_NOEXCEPT
|
984
|
+
{
|
985
|
+
BOOST_ASSERT(this != &x);
|
986
|
+
BOOST_ASSERT(this->node_alloc() == x.node_alloc());
|
987
|
+
this->icont().splice_after(prev_pos.get(), x.icont());
|
988
|
+
}
|
989
|
+
|
990
|
+
//! <b>Requires</b>: p must point to an element contained
|
991
|
+
//! by the list. x != *this
|
992
|
+
//!
|
993
|
+
//! <b>Effects</b>: Transfers all the elements of list x to this list, after the
|
994
|
+
//! the element pointed by p. No destructors or copy constructors are called.
|
995
|
+
//!
|
996
|
+
//! <b>Throws</b>: std::runtime_error if this' allocator and x's allocator
|
997
|
+
//! are not equal.
|
998
|
+
//!
|
999
|
+
//! <b>Complexity</b>: Linear to the elements in x.
|
1000
|
+
//!
|
1001
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of
|
1002
|
+
//! this list. Iterators of this list and all the references are not invalidated.
|
1003
|
+
void splice_after(const_iterator prev_pos, BOOST_RV_REF(slist) x) BOOST_CONTAINER_NOEXCEPT
|
1004
|
+
{ this->splice_after(prev_pos, static_cast<slist&>(x)); }
|
1005
|
+
|
1006
|
+
//! <b>Requires</b>: prev_pos must be a valid iterator of this.
|
1007
|
+
//! i must point to an element contained in list x.
|
1008
|
+
//! this' allocator and x's allocator shall compare equal.
|
1009
|
+
//!
|
1010
|
+
//! <b>Effects</b>: Transfers the value pointed by i, from list x to this list,
|
1011
|
+
//! after the element pointed by prev_pos.
|
1012
|
+
//! If prev_pos == prev or prev_pos == ++prev, this function is a null operation.
|
1013
|
+
//!
|
1014
|
+
//! <b>Throws</b>: Nothing
|
1015
|
+
//!
|
1016
|
+
//! <b>Complexity</b>: Constant.
|
1017
|
+
//!
|
1018
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1019
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1020
|
+
void splice_after(const_iterator prev_pos, slist& x, const_iterator prev) BOOST_CONTAINER_NOEXCEPT
|
1021
|
+
{
|
1022
|
+
BOOST_ASSERT(this->node_alloc() == x.node_alloc());
|
1023
|
+
this->icont().splice_after(prev_pos.get(), x.icont(), prev.get());
|
1024
|
+
}
|
1025
|
+
|
1026
|
+
//! <b>Requires</b>: prev_pos must be a valid iterator of this.
|
1027
|
+
//! i must point to an element contained in list x.
|
1028
|
+
//! this' allocator and x's allocator shall compare equal.
|
1029
|
+
//!
|
1030
|
+
//! <b>Effects</b>: Transfers the value pointed by i, from list x to this list,
|
1031
|
+
//! after the element pointed by prev_pos.
|
1032
|
+
//! If prev_pos == prev or prev_pos == ++prev, this function is a null operation.
|
1033
|
+
//!
|
1034
|
+
//! <b>Throws</b>: Nothing
|
1035
|
+
//!
|
1036
|
+
//! <b>Complexity</b>: Constant.
|
1037
|
+
//!
|
1038
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1039
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1040
|
+
void splice_after(const_iterator prev_pos, BOOST_RV_REF(slist) x, const_iterator prev) BOOST_CONTAINER_NOEXCEPT
|
1041
|
+
{ this->splice_after(prev_pos, static_cast<slist&>(x), prev); }
|
1042
|
+
|
1043
|
+
//! <b>Requires</b>: prev_pos must be a valid iterator of this.
|
1044
|
+
//! before_first and before_last must be valid iterators of x.
|
1045
|
+
//! prev_pos must not be contained in [before_first, before_last) range.
|
1046
|
+
//! this' allocator and x's allocator shall compare equal.
|
1047
|
+
//!
|
1048
|
+
//! <b>Effects</b>: Transfers the range [before_first + 1, before_last + 1)
|
1049
|
+
//! from list x to this list, after the element pointed by prev_pos.
|
1050
|
+
//!
|
1051
|
+
//! <b>Throws</b>: Nothing
|
1052
|
+
//!
|
1053
|
+
//! <b>Complexity</b>: Linear to the number of transferred elements.
|
1054
|
+
//!
|
1055
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1056
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1057
|
+
void splice_after(const_iterator prev_pos, slist& x,
|
1058
|
+
const_iterator before_first, const_iterator before_last) BOOST_CONTAINER_NOEXCEPT
|
1059
|
+
{
|
1060
|
+
BOOST_ASSERT(this->node_alloc() == x.node_alloc());
|
1061
|
+
this->icont().splice_after
|
1062
|
+
(prev_pos.get(), x.icont(), before_first.get(), before_last.get());
|
1063
|
+
}
|
1064
|
+
|
1065
|
+
//! <b>Requires</b>: prev_pos must be a valid iterator of this.
|
1066
|
+
//! before_first and before_last must be valid iterators of x.
|
1067
|
+
//! prev_pos must not be contained in [before_first, before_last) range.
|
1068
|
+
//! this' allocator and x's allocator shall compare equal.
|
1069
|
+
//!
|
1070
|
+
//! <b>Effects</b>: Transfers the range [before_first + 1, before_last + 1)
|
1071
|
+
//! from list x to this list, after the element pointed by prev_pos.
|
1072
|
+
//!
|
1073
|
+
//! <b>Throws</b>: Nothing
|
1074
|
+
//!
|
1075
|
+
//! <b>Complexity</b>: Linear to the number of transferred elements.
|
1076
|
+
//!
|
1077
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1078
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1079
|
+
void splice_after(const_iterator prev_pos, BOOST_RV_REF(slist) x,
|
1080
|
+
const_iterator before_first, const_iterator before_last) BOOST_CONTAINER_NOEXCEPT
|
1081
|
+
{ this->splice_after(prev_pos, static_cast<slist&>(x), before_first, before_last); }
|
1082
|
+
|
1083
|
+
//! <b>Requires</b>: prev_pos must be a valid iterator of this.
|
1084
|
+
//! before_first and before_last must be valid iterators of x.
|
1085
|
+
//! prev_pos must not be contained in [before_first, before_last) range.
|
1086
|
+
//! n == std::distance(before_first, before_last).
|
1087
|
+
//! this' allocator and x's allocator shall compare equal.
|
1088
|
+
//!
|
1089
|
+
//! <b>Effects</b>: Transfers the range [before_first + 1, before_last + 1)
|
1090
|
+
//! from list x to this list, after the element pointed by prev_pos.
|
1091
|
+
//!
|
1092
|
+
//! <b>Throws</b>: Nothing
|
1093
|
+
//!
|
1094
|
+
//! <b>Complexity</b>: Constant.
|
1095
|
+
//!
|
1096
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1097
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1098
|
+
void splice_after(const_iterator prev_pos, slist& x,
|
1099
|
+
const_iterator before_first, const_iterator before_last,
|
1100
|
+
size_type n) BOOST_CONTAINER_NOEXCEPT
|
1101
|
+
{
|
1102
|
+
BOOST_ASSERT(this->node_alloc() == x.node_alloc());
|
1103
|
+
this->icont().splice_after
|
1104
|
+
(prev_pos.get(), x.icont(), before_first.get(), before_last.get(), n);
|
1105
|
+
}
|
1106
|
+
|
1107
|
+
//! <b>Requires</b>: prev_pos must be a valid iterator of this.
|
1108
|
+
//! before_first and before_last must be valid iterators of x.
|
1109
|
+
//! prev_pos must not be contained in [before_first, before_last) range.
|
1110
|
+
//! n == std::distance(before_first, before_last).
|
1111
|
+
//! this' allocator and x's allocator shall compare equal.
|
1112
|
+
//!
|
1113
|
+
//! <b>Effects</b>: Transfers the range [before_first + 1, before_last + 1)
|
1114
|
+
//! from list x to this list, after the element pointed by prev_pos.
|
1115
|
+
//!
|
1116
|
+
//! <b>Throws</b>: Nothing
|
1117
|
+
//!
|
1118
|
+
//! <b>Complexity</b>: Constant.
|
1119
|
+
//!
|
1120
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1121
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1122
|
+
void splice_after(const_iterator prev_pos, BOOST_RV_REF(slist) x,
|
1123
|
+
const_iterator before_first, const_iterator before_last,
|
1124
|
+
size_type n) BOOST_CONTAINER_NOEXCEPT
|
1125
|
+
{ this->splice_after(prev_pos, static_cast<slist&>(x), before_first, before_last, n); }
|
1126
|
+
|
1127
|
+
//! <b>Effects</b>: Removes all the elements that compare equal to value.
|
1128
|
+
//!
|
1129
|
+
//! <b>Throws</b>: Nothing.
|
1130
|
+
//!
|
1131
|
+
//! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
|
1132
|
+
//!
|
1133
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1134
|
+
//! and iterators to elements that are not removed remain valid.
|
1135
|
+
void remove(const T& value)
|
1136
|
+
{ this->remove_if(equal_to_value(value)); }
|
1137
|
+
|
1138
|
+
//! <b>Effects</b>: Removes all the elements for which a specified
|
1139
|
+
//! predicate is satisfied.
|
1140
|
+
//!
|
1141
|
+
//! <b>Throws</b>: If pred throws.
|
1142
|
+
//!
|
1143
|
+
//! <b>Complexity</b>: Linear time. It performs exactly size() calls to the predicate.
|
1144
|
+
//!
|
1145
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1146
|
+
//! and iterators to elements that are not removed remain valid.
|
1147
|
+
template <class Pred>
|
1148
|
+
void remove_if(Pred pred)
|
1149
|
+
{
|
1150
|
+
typedef ValueCompareToNodeCompare<Pred> Predicate;
|
1151
|
+
this->icont().remove_and_dispose_if(Predicate(pred), Destroyer(this->node_alloc()));
|
1152
|
+
}
|
1153
|
+
|
1154
|
+
//! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
|
1155
|
+
//! elements that are equal from the list.
|
1156
|
+
//!
|
1157
|
+
//! <b>Throws</b>: If comparison throws.
|
1158
|
+
//!
|
1159
|
+
//! <b>Complexity</b>: Linear time (size()-1 comparisons equality comparisons).
|
1160
|
+
//!
|
1161
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1162
|
+
//! and iterators to elements that are not removed remain valid.
|
1163
|
+
void unique()
|
1164
|
+
{ this->unique(value_equal()); }
|
1165
|
+
|
1166
|
+
//! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
|
1167
|
+
//! elements that satisfy some binary predicate from the list.
|
1168
|
+
//!
|
1169
|
+
//! <b>Throws</b>: If pred throws.
|
1170
|
+
//!
|
1171
|
+
//! <b>Complexity</b>: Linear time (size()-1 comparisons calls to pred()).
|
1172
|
+
//!
|
1173
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1174
|
+
//! and iterators to elements that are not removed remain valid.
|
1175
|
+
template <class Pred>
|
1176
|
+
void unique(Pred pred)
|
1177
|
+
{
|
1178
|
+
typedef ValueCompareToNodeCompare<Pred> Predicate;
|
1179
|
+
this->icont().unique_and_dispose(Predicate(pred), Destroyer(this->node_alloc()));
|
1180
|
+
}
|
1181
|
+
|
1182
|
+
//! <b>Requires</b>: The lists x and *this must be distinct.
|
1183
|
+
//!
|
1184
|
+
//! <b>Effects</b>: This function removes all of x's elements and inserts them
|
1185
|
+
//! in order into *this according to std::less<value_type>. The merge is stable;
|
1186
|
+
//! that is, if an element from *this is equivalent to one from x, then the element
|
1187
|
+
//! from *this will precede the one from x.
|
1188
|
+
//!
|
1189
|
+
//! <b>Throws</b>: If comparison throws.
|
1190
|
+
//!
|
1191
|
+
//! <b>Complexity</b>: This function is linear time: it performs at most
|
1192
|
+
//! size() + x.size() - 1 comparisons.
|
1193
|
+
void merge(slist & x)
|
1194
|
+
{ this->merge(x, value_less()); }
|
1195
|
+
|
1196
|
+
//! <b>Requires</b>: The lists x and *this must be distinct.
|
1197
|
+
//!
|
1198
|
+
//! <b>Effects</b>: This function removes all of x's elements and inserts them
|
1199
|
+
//! in order into *this according to std::less<value_type>. The merge is stable;
|
1200
|
+
//! that is, if an element from *this is equivalent to one from x, then the element
|
1201
|
+
//! from *this will precede the one from x.
|
1202
|
+
//!
|
1203
|
+
//! <b>Throws</b>: If comparison throws.
|
1204
|
+
//!
|
1205
|
+
//! <b>Complexity</b>: This function is linear time: it performs at most
|
1206
|
+
//! size() + x.size() - 1 comparisons.
|
1207
|
+
void merge(BOOST_RV_REF(slist) x)
|
1208
|
+
{ this->merge(static_cast<slist&>(x)); }
|
1209
|
+
|
1210
|
+
//! <b>Requires</b>: p must be a comparison function that induces a strict weak
|
1211
|
+
//! ordering and both *this and x must be sorted according to that ordering
|
1212
|
+
//! The lists x and *this must be distinct.
|
1213
|
+
//!
|
1214
|
+
//! <b>Effects</b>: This function removes all of x's elements and inserts them
|
1215
|
+
//! in order into *this. The merge is stable; that is, if an element from *this is
|
1216
|
+
//! equivalent to one from x, then the element from *this will precede the one from x.
|
1217
|
+
//!
|
1218
|
+
//! <b>Throws</b>: If comp throws.
|
1219
|
+
//!
|
1220
|
+
//! <b>Complexity</b>: This function is linear time: it performs at most
|
1221
|
+
//! size() + x.size() - 1 comparisons.
|
1222
|
+
//!
|
1223
|
+
//! <b>Note</b>: Iterators and references to *this are not invalidated.
|
1224
|
+
template <class StrictWeakOrdering>
|
1225
|
+
void merge(slist& x, StrictWeakOrdering comp)
|
1226
|
+
{
|
1227
|
+
BOOST_ASSERT(this->node_alloc() == x.node_alloc());
|
1228
|
+
this->icont().merge(x.icont(),
|
1229
|
+
ValueCompareToNodeCompare<StrictWeakOrdering>(comp));
|
1230
|
+
}
|
1231
|
+
|
1232
|
+
//! <b>Requires</b>: p must be a comparison function that induces a strict weak
|
1233
|
+
//! ordering and both *this and x must be sorted according to that ordering
|
1234
|
+
//! The lists x and *this must be distinct.
|
1235
|
+
//!
|
1236
|
+
//! <b>Effects</b>: This function removes all of x's elements and inserts them
|
1237
|
+
//! in order into *this. The merge is stable; that is, if an element from *this is
|
1238
|
+
//! equivalent to one from x, then the element from *this will precede the one from x.
|
1239
|
+
//!
|
1240
|
+
//! <b>Throws</b>: If comp throws.
|
1241
|
+
//!
|
1242
|
+
//! <b>Complexity</b>: This function is linear time: it performs at most
|
1243
|
+
//! size() + x.size() - 1 comparisons.
|
1244
|
+
//!
|
1245
|
+
//! <b>Note</b>: Iterators and references to *this are not invalidated.
|
1246
|
+
template <class StrictWeakOrdering>
|
1247
|
+
void merge(BOOST_RV_REF(slist) x, StrictWeakOrdering comp)
|
1248
|
+
{ this->merge(static_cast<slist&>(x), comp); }
|
1249
|
+
|
1250
|
+
//! <b>Effects</b>: This function sorts the list *this according to std::less<value_type>.
|
1251
|
+
//! The sort is stable, that is, the relative order of equivalent elements is preserved.
|
1252
|
+
//!
|
1253
|
+
//! <b>Throws</b>: If comparison throws.
|
1254
|
+
//!
|
1255
|
+
//! <b>Notes</b>: Iterators and references are not invalidated.
|
1256
|
+
//!
|
1257
|
+
//! <b>Complexity</b>: The number of comparisons is approximately N log N, where N
|
1258
|
+
//! is the list's size.
|
1259
|
+
void sort()
|
1260
|
+
{ this->sort(value_less()); }
|
1261
|
+
|
1262
|
+
//! <b>Effects</b>: This function sorts the list *this according to std::less<value_type>.
|
1263
|
+
//! The sort is stable, that is, the relative order of equivalent elements is preserved.
|
1264
|
+
//!
|
1265
|
+
//! <b>Throws</b>: If comp throws.
|
1266
|
+
//!
|
1267
|
+
//! <b>Notes</b>: Iterators and references are not invalidated.
|
1268
|
+
//!
|
1269
|
+
//! <b>Complexity</b>: The number of comparisons is approximately N log N, where N
|
1270
|
+
//! is the list's size.
|
1271
|
+
template <class StrictWeakOrdering>
|
1272
|
+
void sort(StrictWeakOrdering comp)
|
1273
|
+
{
|
1274
|
+
// nothing if the slist has length 0 or 1.
|
1275
|
+
if (this->size() < 2)
|
1276
|
+
return;
|
1277
|
+
this->icont().sort(ValueCompareToNodeCompare<StrictWeakOrdering>(comp));
|
1278
|
+
}
|
1279
|
+
|
1280
|
+
//! <b>Effects</b>: Reverses the order of elements in the list.
|
1281
|
+
//!
|
1282
|
+
//! <b>Throws</b>: Nothing.
|
1283
|
+
//!
|
1284
|
+
//! <b>Complexity</b>: This function is linear time.
|
1285
|
+
//!
|
1286
|
+
//! <b>Note</b>: Iterators and references are not invalidated
|
1287
|
+
void reverse() BOOST_CONTAINER_NOEXCEPT
|
1288
|
+
{ this->icont().reverse(); }
|
1289
|
+
|
1290
|
+
//////////////////////////////////////////////
|
1291
|
+
//
|
1292
|
+
// list compatibility interface
|
1293
|
+
//
|
1294
|
+
//////////////////////////////////////////////
|
1295
|
+
|
1296
|
+
#if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1297
|
+
|
1298
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
1299
|
+
//! std::forward<Args>(args)... before p
|
1300
|
+
//!
|
1301
|
+
//! <b>Throws</b>: If memory allocation throws or
|
1302
|
+
//! T's in-place constructor throws.
|
1303
|
+
//!
|
1304
|
+
//! <b>Complexity</b>: Linear to the elements before p
|
1305
|
+
template <class... Args>
|
1306
|
+
iterator emplace(const_iterator p, Args&&... args)
|
1307
|
+
{ return this->emplace_after(this->previous(p), boost::forward<Args>(args)...); }
|
1308
|
+
|
1309
|
+
#else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
1310
|
+
|
1311
|
+
#define BOOST_PP_LOCAL_MACRO(n) \
|
1312
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
1313
|
+
iterator emplace (const_iterator p \
|
1314
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
1315
|
+
{ \
|
1316
|
+
return this->emplace_after \
|
1317
|
+
(this->previous(p) \
|
1318
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
|
1319
|
+
} \
|
1320
|
+
//!
|
1321
|
+
#define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
|
1322
|
+
#include BOOST_PP_LOCAL_ITERATE()
|
1323
|
+
#endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
1324
|
+
|
1325
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1326
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
1327
|
+
//!
|
1328
|
+
//! <b>Effects</b>: Insert a copy of x before p.
|
1329
|
+
//!
|
1330
|
+
//! <b>Returns</b>: an iterator to the inserted element.
|
1331
|
+
//!
|
1332
|
+
//! <b>Throws</b>: If memory allocation throws or x's copy constructor throws.
|
1333
|
+
//!
|
1334
|
+
//! <b>Complexity</b>: Linear to the elements before p.
|
1335
|
+
iterator insert(const_iterator position, const T &x);
|
1336
|
+
|
1337
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
1338
|
+
//!
|
1339
|
+
//! <b>Effects</b>: Insert a new element before p with mx's resources.
|
1340
|
+
//!
|
1341
|
+
//! <b>Returns</b>: an iterator to the inserted element.
|
1342
|
+
//!
|
1343
|
+
//! <b>Throws</b>: If memory allocation throws.
|
1344
|
+
//!
|
1345
|
+
//! <b>Complexity</b>: Linear to the elements before p.
|
1346
|
+
iterator insert(const_iterator prev_pos, T &&x);
|
1347
|
+
#else
|
1348
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator)
|
1349
|
+
#endif
|
1350
|
+
|
1351
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
1352
|
+
//!
|
1353
|
+
//! <b>Effects</b>: Inserts n copies of x before p.
|
1354
|
+
//!
|
1355
|
+
//! <b>Returns</b>: an iterator to the first inserted element or p if n == 0.
|
1356
|
+
//!
|
1357
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
1358
|
+
//!
|
1359
|
+
//! <b>Complexity</b>: Linear to n plus linear to the elements before p.
|
1360
|
+
iterator insert(const_iterator p, size_type n, const value_type& x)
|
1361
|
+
{
|
1362
|
+
const_iterator prev(this->previous(p));
|
1363
|
+
this->insert_after(prev, n, x);
|
1364
|
+
return ++iterator(prev.get());
|
1365
|
+
}
|
1366
|
+
|
1367
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
1368
|
+
//!
|
1369
|
+
//! <b>Effects</b>: Insert a copy of the [first, last) range before p.
|
1370
|
+
//!
|
1371
|
+
//! <b>Returns</b>: an iterator to the first inserted element or p if first == last.
|
1372
|
+
//!
|
1373
|
+
//! <b>Throws</b>: If memory allocation throws, T's constructor from a
|
1374
|
+
//! dereferenced InpIt throws.
|
1375
|
+
//!
|
1376
|
+
//! <b>Complexity</b>: Linear to std::distance [first, last) plus
|
1377
|
+
//! linear to the elements before p.
|
1378
|
+
template <class InIter>
|
1379
|
+
iterator insert(const_iterator p, InIter first, InIter last)
|
1380
|
+
{
|
1381
|
+
const_iterator prev(this->previous(p));
|
1382
|
+
this->insert_after(prev, first, last);
|
1383
|
+
return ++iterator(prev.get());
|
1384
|
+
}
|
1385
|
+
|
1386
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
1387
|
+
//!
|
1388
|
+
//! <b>Effects</b>: Erases the element at p p.
|
1389
|
+
//!
|
1390
|
+
//! <b>Throws</b>: Nothing.
|
1391
|
+
//!
|
1392
|
+
//! <b>Complexity</b>: Linear to the number of elements before p.
|
1393
|
+
iterator erase(const_iterator p) BOOST_CONTAINER_NOEXCEPT
|
1394
|
+
{ return iterator(this->erase_after(previous(p))); }
|
1395
|
+
|
1396
|
+
//! <b>Requires</b>: first and last must be valid iterator to elements in *this.
|
1397
|
+
//!
|
1398
|
+
//! <b>Effects</b>: Erases the elements pointed by [first, last).
|
1399
|
+
//!
|
1400
|
+
//! <b>Throws</b>: Nothing.
|
1401
|
+
//!
|
1402
|
+
//! <b>Complexity</b>: Linear to the distance between first and last plus
|
1403
|
+
//! linear to the elements before first.
|
1404
|
+
iterator erase(const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT
|
1405
|
+
{ return iterator(this->erase_after(previous(first), last)); }
|
1406
|
+
|
1407
|
+
//! <b>Requires</b>: p must point to an element contained
|
1408
|
+
//! by the list. x != *this. this' allocator and x's allocator shall compare equal
|
1409
|
+
//!
|
1410
|
+
//! <b>Effects</b>: Transfers all the elements of list x to this list, before the
|
1411
|
+
//! the element pointed by p. No destructors or copy constructors are called.
|
1412
|
+
//!
|
1413
|
+
//! <b>Throws</b>: Nothing
|
1414
|
+
//!
|
1415
|
+
//! <b>Complexity</b>: Linear in distance(begin(), p), and linear in x.size().
|
1416
|
+
//!
|
1417
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of
|
1418
|
+
//! this list. Iterators of this list and all the references are not invalidated.
|
1419
|
+
void splice(const_iterator p, slist& x) BOOST_CONTAINER_NOEXCEPT
|
1420
|
+
{ this->splice_after(this->previous(p), x); }
|
1421
|
+
|
1422
|
+
//! <b>Requires</b>: p must point to an element contained
|
1423
|
+
//! by the list. x != *this. this' allocator and x's allocator shall compare equal
|
1424
|
+
//!
|
1425
|
+
//! <b>Effects</b>: Transfers all the elements of list x to this list, before the
|
1426
|
+
//! the element pointed by p. No destructors or copy constructors are called.
|
1427
|
+
//!
|
1428
|
+
//! <b>Throws</b>: Nothing
|
1429
|
+
//!
|
1430
|
+
//! <b>Complexity</b>: Linear in distance(begin(), p), and linear in x.size().
|
1431
|
+
//!
|
1432
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of
|
1433
|
+
//! this list. Iterators of this list and all the references are not invalidated.
|
1434
|
+
void splice(const_iterator p, BOOST_RV_REF(slist) x) BOOST_CONTAINER_NOEXCEPT
|
1435
|
+
{ this->splice(p, static_cast<slist&>(x)); }
|
1436
|
+
|
1437
|
+
//! <b>Requires</b>: p must point to an element contained
|
1438
|
+
//! by this list. i must point to an element contained in list x.
|
1439
|
+
//! this' allocator and x's allocator shall compare equal
|
1440
|
+
//!
|
1441
|
+
//! <b>Effects</b>: Transfers the value pointed by i, from list x to this list,
|
1442
|
+
//! before the the element pointed by p. No destructors or copy constructors are called.
|
1443
|
+
//! If p == i or p == ++i, this function is a null operation.
|
1444
|
+
//!
|
1445
|
+
//! <b>Throws</b>: Nothing
|
1446
|
+
//!
|
1447
|
+
//! <b>Complexity</b>: Linear in distance(begin(), p), and in distance(x.begin(), i).
|
1448
|
+
//!
|
1449
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1450
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1451
|
+
void splice(const_iterator p, slist& x, const_iterator i) BOOST_CONTAINER_NOEXCEPT
|
1452
|
+
{ this->splice_after(this->previous(p), x, this->previous(i)); }
|
1453
|
+
|
1454
|
+
//! <b>Requires</b>: p must point to an element contained
|
1455
|
+
//! by this list. i must point to an element contained in list x.
|
1456
|
+
//! this' allocator and x's allocator shall compare equal.
|
1457
|
+
//!
|
1458
|
+
//! <b>Effects</b>: Transfers the value pointed by i, from list x to this list,
|
1459
|
+
//! before the the element pointed by p. No destructors or copy constructors are called.
|
1460
|
+
//! If p == i or p == ++i, this function is a null operation.
|
1461
|
+
//!
|
1462
|
+
//! <b>Throws</b>: Nothing
|
1463
|
+
//!
|
1464
|
+
//! <b>Complexity</b>: Linear in distance(begin(), p), and in distance(x.begin(), i).
|
1465
|
+
//!
|
1466
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1467
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1468
|
+
void splice(const_iterator p, BOOST_RV_REF(slist) x, const_iterator i) BOOST_CONTAINER_NOEXCEPT
|
1469
|
+
{ this->splice(p, static_cast<slist&>(x), i); }
|
1470
|
+
|
1471
|
+
//! <b>Requires</b>: p must point to an element contained
|
1472
|
+
//! by this list. first and last must point to elements contained in list x.
|
1473
|
+
//!
|
1474
|
+
//! <b>Effects</b>: Transfers the range pointed by first and last from list x to this list,
|
1475
|
+
//! before the the element pointed by p. No destructors or copy constructors are called.
|
1476
|
+
//! this' allocator and x's allocator shall compare equal.
|
1477
|
+
//!
|
1478
|
+
//! <b>Throws</b>: Nothing
|
1479
|
+
//!
|
1480
|
+
//! <b>Complexity</b>: Linear in distance(begin(), p), in distance(x.begin(), first),
|
1481
|
+
//! and in distance(first, last).
|
1482
|
+
//!
|
1483
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1484
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1485
|
+
void splice(const_iterator p, slist& x, const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT
|
1486
|
+
{ this->splice_after(this->previous(p), x, this->previous(first), this->previous(last)); }
|
1487
|
+
|
1488
|
+
//! <b>Requires</b>: p must point to an element contained
|
1489
|
+
//! by this list. first and last must point to elements contained in list x.
|
1490
|
+
//! this' allocator and x's allocator shall compare equal
|
1491
|
+
//!
|
1492
|
+
//! <b>Effects</b>: Transfers the range pointed by first and last from list x to this list,
|
1493
|
+
//! before the the element pointed by p. No destructors or copy constructors are called.
|
1494
|
+
//!
|
1495
|
+
//! <b>Throws</b>: Nothing
|
1496
|
+
//!
|
1497
|
+
//! <b>Complexity</b>: Linear in distance(begin(), p), in distance(x.begin(), first),
|
1498
|
+
//! and in distance(first, last).
|
1499
|
+
//!
|
1500
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
1501
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
1502
|
+
void splice(const_iterator p, BOOST_RV_REF(slist) x, const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT
|
1503
|
+
{ this->splice(p, static_cast<slist&>(x), first, last); }
|
1504
|
+
|
1505
|
+
/// @cond
|
1506
|
+
private:
|
1507
|
+
|
1508
|
+
void priv_push_front (const T &x)
|
1509
|
+
{ this->insert(this->cbegin(), x); }
|
1510
|
+
|
1511
|
+
void priv_push_front (BOOST_RV_REF(T) x)
|
1512
|
+
{ this->insert(this->cbegin(), ::boost::move(x)); }
|
1513
|
+
|
1514
|
+
bool priv_try_shrink(size_type new_size, const_iterator &last_pos)
|
1515
|
+
{
|
1516
|
+
typename Icont::iterator end_n(this->icont().end()), cur(this->icont().before_begin()), cur_next;
|
1517
|
+
while (++(cur_next = cur) != end_n && new_size > 0){
|
1518
|
+
--new_size;
|
1519
|
+
cur = cur_next;
|
1520
|
+
}
|
1521
|
+
last_pos = const_iterator(cur);
|
1522
|
+
if (cur_next != end_n){
|
1523
|
+
this->erase_after(last_pos, const_iterator(end_n));
|
1524
|
+
return true;
|
1525
|
+
}
|
1526
|
+
else{
|
1527
|
+
return false;
|
1528
|
+
}
|
1529
|
+
}
|
1530
|
+
|
1531
|
+
template<class U>
|
1532
|
+
iterator priv_insert(const_iterator p, BOOST_FWD_REF(U) x)
|
1533
|
+
{ return this->insert_after(previous(p), ::boost::forward<U>(x)); }
|
1534
|
+
|
1535
|
+
template<class U>
|
1536
|
+
iterator priv_insert_after(const_iterator prev_pos, BOOST_FWD_REF(U) x)
|
1537
|
+
{ return iterator(this->icont().insert_after(prev_pos.get(), *this->create_node(::boost::forward<U>(x)))); }
|
1538
|
+
|
1539
|
+
class insertion_functor;
|
1540
|
+
friend class insertion_functor;
|
1541
|
+
|
1542
|
+
class insertion_functor
|
1543
|
+
{
|
1544
|
+
Icont &icont_;
|
1545
|
+
typedef typename Icont::iterator iiterator;
|
1546
|
+
typedef typename Icont::const_iterator iconst_iterator;
|
1547
|
+
const iconst_iterator prev_;
|
1548
|
+
iiterator ret_;
|
1549
|
+
|
1550
|
+
public:
|
1551
|
+
insertion_functor(Icont &icont, typename Icont::const_iterator prev)
|
1552
|
+
: icont_(icont), prev_(prev), ret_(prev.unconst())
|
1553
|
+
{}
|
1554
|
+
|
1555
|
+
void operator()(Node &n)
|
1556
|
+
{
|
1557
|
+
ret_ = this->icont_.insert_after(prev_, n);
|
1558
|
+
}
|
1559
|
+
|
1560
|
+
iiterator inserted_first() const
|
1561
|
+
{ return ret_; }
|
1562
|
+
};
|
1563
|
+
|
1564
|
+
//Functors for member algorithm defaults
|
1565
|
+
struct value_less
|
1566
|
+
{
|
1567
|
+
bool operator()(const value_type &a, const value_type &b) const
|
1568
|
+
{ return a < b; }
|
1569
|
+
};
|
1570
|
+
|
1571
|
+
struct value_equal
|
1572
|
+
{
|
1573
|
+
bool operator()(const value_type &a, const value_type &b) const
|
1574
|
+
{ return a == b; }
|
1575
|
+
};
|
1576
|
+
|
1577
|
+
struct value_equal_to_this
|
1578
|
+
{
|
1579
|
+
explicit value_equal_to_this(const value_type &ref)
|
1580
|
+
: m_ref(ref){}
|
1581
|
+
|
1582
|
+
bool operator()(const value_type &val) const
|
1583
|
+
{ return m_ref == val; }
|
1584
|
+
|
1585
|
+
const value_type &m_ref;
|
1586
|
+
};
|
1587
|
+
/// @endcond
|
1588
|
+
};
|
1589
|
+
|
1590
|
+
template <class T, class Allocator>
|
1591
|
+
inline bool
|
1592
|
+
operator==(const slist<T,Allocator>& x, const slist<T,Allocator>& y)
|
1593
|
+
{
|
1594
|
+
if(x.size() != y.size()){
|
1595
|
+
return false;
|
1596
|
+
}
|
1597
|
+
typedef typename slist<T,Allocator>::const_iterator const_iterator;
|
1598
|
+
const_iterator end1 = x.end();
|
1599
|
+
|
1600
|
+
const_iterator i1 = x.begin();
|
1601
|
+
const_iterator i2 = y.begin();
|
1602
|
+
while (i1 != end1 && *i1 == *i2){
|
1603
|
+
++i1;
|
1604
|
+
++i2;
|
1605
|
+
}
|
1606
|
+
return i1 == end1;
|
1607
|
+
}
|
1608
|
+
|
1609
|
+
template <class T, class Allocator>
|
1610
|
+
inline bool
|
1611
|
+
operator<(const slist<T,Allocator>& sL1, const slist<T,Allocator>& sL2)
|
1612
|
+
{
|
1613
|
+
return std::lexicographical_compare
|
1614
|
+
(sL1.begin(), sL1.end(), sL2.begin(), sL2.end());
|
1615
|
+
}
|
1616
|
+
|
1617
|
+
template <class T, class Allocator>
|
1618
|
+
inline bool
|
1619
|
+
operator!=(const slist<T,Allocator>& sL1, const slist<T,Allocator>& sL2)
|
1620
|
+
{ return !(sL1 == sL2); }
|
1621
|
+
|
1622
|
+
template <class T, class Allocator>
|
1623
|
+
inline bool
|
1624
|
+
operator>(const slist<T,Allocator>& sL1, const slist<T,Allocator>& sL2)
|
1625
|
+
{ return sL2 < sL1; }
|
1626
|
+
|
1627
|
+
template <class T, class Allocator>
|
1628
|
+
inline bool
|
1629
|
+
operator<=(const slist<T,Allocator>& sL1, const slist<T,Allocator>& sL2)
|
1630
|
+
{ return !(sL2 < sL1); }
|
1631
|
+
|
1632
|
+
template <class T, class Allocator>
|
1633
|
+
inline bool
|
1634
|
+
operator>=(const slist<T,Allocator>& sL1, const slist<T,Allocator>& sL2)
|
1635
|
+
{ return !(sL1 < sL2); }
|
1636
|
+
|
1637
|
+
template <class T, class Allocator>
|
1638
|
+
inline void swap(slist<T,Allocator>& x, slist<T,Allocator>& y)
|
1639
|
+
{ x.swap(y); }
|
1640
|
+
|
1641
|
+
}}
|
1642
|
+
|
1643
|
+
/// @cond
|
1644
|
+
|
1645
|
+
namespace boost {
|
1646
|
+
|
1647
|
+
//!has_trivial_destructor_after_move<> == true_type
|
1648
|
+
//!specialization for optimizations
|
1649
|
+
template <class T, class Allocator>
|
1650
|
+
struct has_trivial_destructor_after_move<boost::container::slist<T, Allocator> >
|
1651
|
+
: public ::boost::has_trivial_destructor_after_move<Allocator>
|
1652
|
+
{};
|
1653
|
+
|
1654
|
+
namespace container {
|
1655
|
+
|
1656
|
+
/// @endcond
|
1657
|
+
|
1658
|
+
}} //namespace boost{ namespace container {
|
1659
|
+
|
1660
|
+
// Specialization of insert_iterator so that insertions will be constant
|
1661
|
+
// time rather than linear time.
|
1662
|
+
|
1663
|
+
///@cond
|
1664
|
+
|
1665
|
+
//Ummm, I don't like to define things in namespace std, but
|
1666
|
+
//there is no other way
|
1667
|
+
namespace std {
|
1668
|
+
|
1669
|
+
template <class T, class Allocator>
|
1670
|
+
class insert_iterator<boost::container::slist<T, Allocator> >
|
1671
|
+
{
|
1672
|
+
protected:
|
1673
|
+
typedef boost::container::slist<T, Allocator> Container;
|
1674
|
+
Container* container;
|
1675
|
+
typename Container::iterator iter;
|
1676
|
+
public:
|
1677
|
+
typedef Container container_type;
|
1678
|
+
typedef output_iterator_tag iterator_category;
|
1679
|
+
typedef void value_type;
|
1680
|
+
typedef void difference_type;
|
1681
|
+
typedef void pointer;
|
1682
|
+
typedef void reference;
|
1683
|
+
|
1684
|
+
insert_iterator(Container& x,
|
1685
|
+
typename Container::iterator i,
|
1686
|
+
bool is_previous = false)
|
1687
|
+
: container(&x), iter(is_previous ? i : x.previous(i)){ }
|
1688
|
+
|
1689
|
+
insert_iterator<Container>&
|
1690
|
+
operator=(const typename Container::value_type& value)
|
1691
|
+
{
|
1692
|
+
iter = container->insert_after(iter, value);
|
1693
|
+
return *this;
|
1694
|
+
}
|
1695
|
+
insert_iterator<Container>& operator*(){ return *this; }
|
1696
|
+
insert_iterator<Container>& operator++(){ return *this; }
|
1697
|
+
insert_iterator<Container>& operator++(int){ return *this; }
|
1698
|
+
};
|
1699
|
+
|
1700
|
+
} //namespace std;
|
1701
|
+
|
1702
|
+
///@endcond
|
1703
|
+
|
1704
|
+
#include <boost/container/detail/config_end.hpp>
|
1705
|
+
|
1706
|
+
#endif // BOOST_CONTAINER_SLIST_HPP
|