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,327 @@
|
|
1
|
+
/////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Olaf Krzikalla 2004-2006.
|
4
|
+
// (C) Copyright Ion Gaztanaga 2006-2012
|
5
|
+
//
|
6
|
+
// Distributed under the Boost Software License, Version 1.0.
|
7
|
+
// (See accompanying file LICENSE_1_0.txt or copy at
|
8
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
9
|
+
//
|
10
|
+
// See http://www.boost.org/libs/intrusive for documentation.
|
11
|
+
//
|
12
|
+
/////////////////////////////////////////////////////////////////////////////
|
13
|
+
|
14
|
+
#ifndef BOOST_INTRUSIVE_LINEAR_SLIST_ALGORITHMS_HPP
|
15
|
+
#define BOOST_INTRUSIVE_LINEAR_SLIST_ALGORITHMS_HPP
|
16
|
+
|
17
|
+
#include <boost/intrusive/detail/config_begin.hpp>
|
18
|
+
#include <boost/intrusive/intrusive_fwd.hpp>
|
19
|
+
#include <boost/intrusive/detail/common_slist_algorithms.hpp>
|
20
|
+
#include <cstddef>
|
21
|
+
#include <utility>
|
22
|
+
|
23
|
+
namespace boost {
|
24
|
+
namespace intrusive {
|
25
|
+
|
26
|
+
//! linear_slist_algorithms provides basic algorithms to manipulate nodes
|
27
|
+
//! forming a linear singly linked list.
|
28
|
+
//!
|
29
|
+
//! linear_slist_algorithms is configured with a NodeTraits class, which encapsulates the
|
30
|
+
//! information about the node to be manipulated. NodeTraits must support the
|
31
|
+
//! following interface:
|
32
|
+
//!
|
33
|
+
//! <b>Typedefs</b>:
|
34
|
+
//!
|
35
|
+
//! <tt>node</tt>: The type of the node that forms the linear list
|
36
|
+
//!
|
37
|
+
//! <tt>node_ptr</tt>: A pointer to a node
|
38
|
+
//!
|
39
|
+
//! <tt>const_node_ptr</tt>: A pointer to a const node
|
40
|
+
//!
|
41
|
+
//! <b>Static functions</b>:
|
42
|
+
//!
|
43
|
+
//! <tt>static node_ptr get_next(const_node_ptr n);</tt>
|
44
|
+
//!
|
45
|
+
//! <tt>static void set_next(node_ptr n, node_ptr next);</tt>
|
46
|
+
template<class NodeTraits>
|
47
|
+
class linear_slist_algorithms
|
48
|
+
/// @cond
|
49
|
+
: public detail::common_slist_algorithms<NodeTraits>
|
50
|
+
/// @endcond
|
51
|
+
{
|
52
|
+
/// @cond
|
53
|
+
typedef detail::common_slist_algorithms<NodeTraits> base_t;
|
54
|
+
/// @endcond
|
55
|
+
public:
|
56
|
+
typedef typename NodeTraits::node node;
|
57
|
+
typedef typename NodeTraits::node_ptr node_ptr;
|
58
|
+
typedef typename NodeTraits::const_node_ptr const_node_ptr;
|
59
|
+
typedef NodeTraits node_traits;
|
60
|
+
|
61
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
62
|
+
|
63
|
+
//! <b>Effects</b>: Constructs an non-used list element, putting the next
|
64
|
+
//! pointer to null:
|
65
|
+
//! <tt>NodeTraits::get_next(this_node) == node_ptr()</tt>
|
66
|
+
//!
|
67
|
+
//! <b>Complexity</b>: Constant
|
68
|
+
//!
|
69
|
+
//! <b>Throws</b>: Nothing.
|
70
|
+
static void init(const node_ptr & this_node);
|
71
|
+
|
72
|
+
//! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
|
73
|
+
//!
|
74
|
+
//! <b>Effects</b>: Returns true is "this_node" is the only node of a circular list:
|
75
|
+
//! or it's a not inserted node:
|
76
|
+
//! <tt>return node_ptr() == NodeTraits::get_next(this_node) || NodeTraits::get_next(this_node) == this_node</tt>
|
77
|
+
//!
|
78
|
+
//! <b>Complexity</b>: Constant
|
79
|
+
//!
|
80
|
+
//! <b>Throws</b>: Nothing.
|
81
|
+
static bool unique(const_node_ptr this_node);
|
82
|
+
|
83
|
+
//! <b>Effects</b>: Returns true is "this_node" has the same state as if
|
84
|
+
//! it was inited using "init(node_ptr)"
|
85
|
+
//!
|
86
|
+
//! <b>Complexity</b>: Constant
|
87
|
+
//!
|
88
|
+
//! <b>Throws</b>: Nothing.
|
89
|
+
static bool inited(const_node_ptr this_node);
|
90
|
+
|
91
|
+
//! <b>Requires</b>: prev_node must be in a circular list or be an empty circular list.
|
92
|
+
//!
|
93
|
+
//! <b>Effects</b>: Unlinks the next node of prev_node from the circular list.
|
94
|
+
//!
|
95
|
+
//! <b>Complexity</b>: Constant
|
96
|
+
//!
|
97
|
+
//! <b>Throws</b>: Nothing.
|
98
|
+
static void unlink_after(const node_ptr & prev_node);
|
99
|
+
|
100
|
+
//! <b>Requires</b>: prev_node and last_node must be in a circular list
|
101
|
+
//! or be an empty circular list.
|
102
|
+
//!
|
103
|
+
//! <b>Effects</b>: Unlinks the range (prev_node, last_node) from the linear list.
|
104
|
+
//!
|
105
|
+
//! <b>Complexity</b>: Constant
|
106
|
+
//!
|
107
|
+
//! <b>Throws</b>: Nothing.
|
108
|
+
static void unlink_after(const node_ptr & prev_node, const node_ptr & last_node);
|
109
|
+
|
110
|
+
//! <b>Requires</b>: prev_node must be a node of a linear list.
|
111
|
+
//!
|
112
|
+
//! <b>Effects</b>: Links this_node after prev_node in the linear list.
|
113
|
+
//!
|
114
|
+
//! <b>Complexity</b>: Constant
|
115
|
+
//!
|
116
|
+
//! <b>Throws</b>: Nothing.
|
117
|
+
static void link_after(const node_ptr & prev_node, const node_ptr & this_node);
|
118
|
+
|
119
|
+
//! <b>Requires</b>: b and e must be nodes of the same linear list or an empty range.
|
120
|
+
//! and p must be a node of a different linear list.
|
121
|
+
//!
|
122
|
+
//! <b>Effects</b>: Removes the nodes from (b, e] range from their linear list and inserts
|
123
|
+
//! them after p in p's linear list.
|
124
|
+
//!
|
125
|
+
//! <b>Complexity</b>: Constant
|
126
|
+
//!
|
127
|
+
//! <b>Throws</b>: Nothing.
|
128
|
+
static void transfer_after(const node_ptr & p, const node_ptr & b, const node_ptr & e);
|
129
|
+
|
130
|
+
#endif //#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
131
|
+
|
132
|
+
//! <b>Effects</b>: Constructs an empty list, making this_node the only
|
133
|
+
//! node of the circular list:
|
134
|
+
//! <tt>NodeTraits::get_next(this_node) == this_node</tt>.
|
135
|
+
//!
|
136
|
+
//! <b>Complexity</b>: Constant
|
137
|
+
//!
|
138
|
+
//! <b>Throws</b>: Nothing.
|
139
|
+
static void init_header(const node_ptr & this_node)
|
140
|
+
{ NodeTraits::set_next(this_node, node_ptr ()); }
|
141
|
+
|
142
|
+
//! <b>Requires</b>: this_node and prev_init_node must be in the same linear list.
|
143
|
+
//!
|
144
|
+
//! <b>Effects</b>: Returns the previous node of this_node in the linear list starting.
|
145
|
+
//! the search from prev_init_node. The first node checked for equality
|
146
|
+
//! is NodeTraits::get_next(prev_init_node).
|
147
|
+
//!
|
148
|
+
//! <b>Complexity</b>: Linear to the number of elements between prev_init_node and this_node.
|
149
|
+
//!
|
150
|
+
//! <b>Throws</b>: Nothing.
|
151
|
+
static node_ptr get_previous_node(const node_ptr & prev_init_node, const node_ptr & this_node)
|
152
|
+
{ return base_t::get_previous_node(prev_init_node, this_node); }
|
153
|
+
|
154
|
+
//! <b>Requires</b>: this_node must be in a linear list or be an empty linear list.
|
155
|
+
//!
|
156
|
+
//! <b>Effects</b>: Returns the number of nodes in a linear list. If the linear list
|
157
|
+
//! is empty, returns 1.
|
158
|
+
//!
|
159
|
+
//! <b>Complexity</b>: Linear
|
160
|
+
//!
|
161
|
+
//! <b>Throws</b>: Nothing.
|
162
|
+
static std::size_t count(const const_node_ptr & this_node)
|
163
|
+
{
|
164
|
+
std::size_t result = 0;
|
165
|
+
const_node_ptr p = this_node;
|
166
|
+
do{
|
167
|
+
p = NodeTraits::get_next(p);
|
168
|
+
++result;
|
169
|
+
} while (p);
|
170
|
+
return result;
|
171
|
+
}
|
172
|
+
|
173
|
+
//! <b>Requires</b>: this_node and other_node must be nodes inserted
|
174
|
+
//! in linear lists or be empty linear lists.
|
175
|
+
//!
|
176
|
+
//! <b>Effects</b>: Moves all the nodes previously chained after this_node after other_node
|
177
|
+
//! and vice-versa.
|
178
|
+
//!
|
179
|
+
//! <b>Complexity</b>: Constant
|
180
|
+
//!
|
181
|
+
//! <b>Throws</b>: Nothing.
|
182
|
+
static void swap_trailing_nodes(const node_ptr & this_node, const node_ptr & other_node)
|
183
|
+
{
|
184
|
+
node_ptr this_nxt = NodeTraits::get_next(this_node);
|
185
|
+
node_ptr other_nxt = NodeTraits::get_next(other_node);
|
186
|
+
NodeTraits::set_next(this_node, other_nxt);
|
187
|
+
NodeTraits::set_next(other_node, this_nxt);
|
188
|
+
}
|
189
|
+
|
190
|
+
//! <b>Effects</b>: Reverses the order of elements in the list.
|
191
|
+
//!
|
192
|
+
//! <b>Returns</b>: The new first node of the list.
|
193
|
+
//!
|
194
|
+
//! <b>Throws</b>: Nothing.
|
195
|
+
//!
|
196
|
+
//! <b>Complexity</b>: This function is linear to the contained elements.
|
197
|
+
static node_ptr reverse(const node_ptr & p)
|
198
|
+
{
|
199
|
+
if(!p) return node_ptr();
|
200
|
+
node_ptr i = NodeTraits::get_next(p);
|
201
|
+
node_ptr first(p);
|
202
|
+
while(i){
|
203
|
+
node_ptr nxti(NodeTraits::get_next(i));
|
204
|
+
base_t::unlink_after(p);
|
205
|
+
NodeTraits::set_next(i, first);
|
206
|
+
first = i;
|
207
|
+
i = nxti;
|
208
|
+
}
|
209
|
+
return first;
|
210
|
+
}
|
211
|
+
|
212
|
+
//! <b>Effects</b>: Moves the first n nodes starting at p to the end of the list.
|
213
|
+
//!
|
214
|
+
//! <b>Returns</b>: A pair containing the new first and last node of the list or
|
215
|
+
//! if there has been any movement, a null pair if n leads to no movement.
|
216
|
+
//!
|
217
|
+
//! <b>Throws</b>: Nothing.
|
218
|
+
//!
|
219
|
+
//! <b>Complexity</b>: Linear to the number of elements plus the number moved positions.
|
220
|
+
static std::pair<node_ptr, node_ptr> move_first_n_backwards(const node_ptr & p, std::size_t n)
|
221
|
+
{
|
222
|
+
std::pair<node_ptr, node_ptr> ret;
|
223
|
+
//Null shift, or count() == 0 or 1, nothing to do
|
224
|
+
if(!n || !p || !NodeTraits::get_next(p)){
|
225
|
+
return ret;
|
226
|
+
}
|
227
|
+
|
228
|
+
node_ptr first = p;
|
229
|
+
bool end_found = false;
|
230
|
+
node_ptr new_last = node_ptr();
|
231
|
+
node_ptr old_last = node_ptr();
|
232
|
+
|
233
|
+
//Now find the new last node according to the shift count.
|
234
|
+
//If we find 0 before finding the new last node
|
235
|
+
//unlink p, shortcut the search now that we know the size of the list
|
236
|
+
//and continue.
|
237
|
+
for(std::size_t i = 1; i <= n; ++i){
|
238
|
+
new_last = first;
|
239
|
+
first = NodeTraits::get_next(first);
|
240
|
+
if(first == node_ptr()){
|
241
|
+
//Shortcut the shift with the modulo of the size of the list
|
242
|
+
n %= i;
|
243
|
+
if(!n) return ret;
|
244
|
+
old_last = new_last;
|
245
|
+
i = 0;
|
246
|
+
//Unlink p and continue the new first node search
|
247
|
+
first = p;
|
248
|
+
//unlink_after(new_last);
|
249
|
+
end_found = true;
|
250
|
+
}
|
251
|
+
}
|
252
|
+
|
253
|
+
//If the p has not been found in the previous loop, find it
|
254
|
+
//starting in the new first node and unlink it
|
255
|
+
if(!end_found){
|
256
|
+
old_last = base_t::get_previous_node(first, node_ptr());
|
257
|
+
}
|
258
|
+
|
259
|
+
//Now link p after the new last node
|
260
|
+
NodeTraits::set_next(old_last, p);
|
261
|
+
NodeTraits::set_next(new_last, node_ptr());
|
262
|
+
ret.first = first;
|
263
|
+
ret.second = new_last;
|
264
|
+
return ret;
|
265
|
+
}
|
266
|
+
|
267
|
+
//! <b>Effects</b>: Moves the first n nodes starting at p to the beginning of the list.
|
268
|
+
//!
|
269
|
+
//! <b>Returns</b>: A pair containing the new first and last node of the list or
|
270
|
+
//! if there has been any movement, a null pair if n leads to no movement.
|
271
|
+
//!
|
272
|
+
//! <b>Throws</b>: Nothing.
|
273
|
+
//!
|
274
|
+
//! <b>Complexity</b>: Linear to the number of elements plus the number moved positions.
|
275
|
+
static std::pair<node_ptr, node_ptr> move_first_n_forward(const node_ptr & p, std::size_t n)
|
276
|
+
{
|
277
|
+
std::pair<node_ptr, node_ptr> ret;
|
278
|
+
//Null shift, or count() == 0 or 1, nothing to do
|
279
|
+
if(!n || !p || !NodeTraits::get_next(p))
|
280
|
+
return ret;
|
281
|
+
|
282
|
+
node_ptr first = p;
|
283
|
+
|
284
|
+
//Iterate until p is found to know where the current last node is.
|
285
|
+
//If the shift count is less than the size of the list, we can also obtain
|
286
|
+
//the position of the new last node after the shift.
|
287
|
+
node_ptr old_last(first), next_to_it, new_last(p);
|
288
|
+
std::size_t distance = 1;
|
289
|
+
while(!!(next_to_it = node_traits::get_next(old_last))){
|
290
|
+
if(distance++ > n)
|
291
|
+
new_last = node_traits::get_next(new_last);
|
292
|
+
old_last = next_to_it;
|
293
|
+
}
|
294
|
+
//If the shift was bigger or equal than the size, obtain the equivalent
|
295
|
+
//forward shifts and find the new last node.
|
296
|
+
if(distance <= n){
|
297
|
+
//Now find the equivalent forward shifts.
|
298
|
+
//Shortcut the shift with the modulo of the size of the list
|
299
|
+
std::size_t new_before_last_pos = (distance - (n % distance))% distance;
|
300
|
+
//If the shift is a multiple of the size there is nothing to do
|
301
|
+
if(!new_before_last_pos)
|
302
|
+
return ret;
|
303
|
+
|
304
|
+
for( new_last = p
|
305
|
+
; --new_before_last_pos
|
306
|
+
; new_last = node_traits::get_next(new_last)){
|
307
|
+
//empty
|
308
|
+
}
|
309
|
+
}
|
310
|
+
|
311
|
+
//Get the first new node
|
312
|
+
node_ptr new_first(node_traits::get_next(new_last));
|
313
|
+
//Now put the old beginning after the old end
|
314
|
+
NodeTraits::set_next(old_last, p);
|
315
|
+
NodeTraits::set_next(new_last, node_ptr());
|
316
|
+
ret.first = new_first;
|
317
|
+
ret.second = new_last;
|
318
|
+
return ret;
|
319
|
+
}
|
320
|
+
};
|
321
|
+
|
322
|
+
} //namespace intrusive
|
323
|
+
} //namespace boost
|
324
|
+
|
325
|
+
#include <boost/intrusive/detail/config_end.hpp>
|
326
|
+
|
327
|
+
#endif //BOOST_INTRUSIVE_LINEAR_SLIST_ALGORITHMS_HPP
|
@@ -0,0 +1,46 @@
|
|
1
|
+
/////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2006-2012
|
4
|
+
//
|
5
|
+
// Distributed under the Boost Software License, Version 1.0.
|
6
|
+
// (See accompanying file LICENSE_1_0.txt or copy at
|
7
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
8
|
+
//
|
9
|
+
// See http://www.boost.org/libs/intrusive for documentation.
|
10
|
+
//
|
11
|
+
/////////////////////////////////////////////////////////////////////////////
|
12
|
+
|
13
|
+
#ifndef BOOST_INTRUSIVE_VALUE_LINK_TYPE_HPP
|
14
|
+
#define BOOST_INTRUSIVE_VALUE_LINK_TYPE_HPP
|
15
|
+
|
16
|
+
namespace boost {
|
17
|
+
namespace intrusive {
|
18
|
+
|
19
|
+
//!This enumeration defines the type of value_traits that can be defined
|
20
|
+
//!for Boost.Intrusive containers
|
21
|
+
enum link_mode_type{
|
22
|
+
//!If this linking policy is specified in a value_traits class
|
23
|
+
//!as the link_mode, containers
|
24
|
+
//!configured with such value_traits won't set the hooks
|
25
|
+
//!of the erased values to a default state. Containers also won't
|
26
|
+
//!check that the hooks of the new values are default initialized.
|
27
|
+
normal_link,
|
28
|
+
|
29
|
+
//!If this linking policy is specified in a value_traits class
|
30
|
+
//!as the link_mode, containers
|
31
|
+
//!configured with such value_traits will set the hooks
|
32
|
+
//!of the erased values to a default state. Containers also will
|
33
|
+
//!check that the hooks of the new values are default initialized.
|
34
|
+
safe_link,
|
35
|
+
|
36
|
+
//!Same as "safe_link" but the user type is an auto-unlink
|
37
|
+
//!type, so the containers with constant-time size features won't be
|
38
|
+
//!compatible with value_traits configured with this policy.
|
39
|
+
//!Containers also know that the a value can be silently erased from
|
40
|
+
//!the container without using any function provided by the containers.
|
41
|
+
auto_unlink
|
42
|
+
};
|
43
|
+
} //namespace intrusive
|
44
|
+
} //namespace boost
|
45
|
+
|
46
|
+
#endif //BOOST_INTRUSIVE_VALUE_LINK_TYPE_HPP
|
@@ -0,0 +1,1525 @@
|
|
1
|
+
/////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Olaf Krzikalla 2004-2006.
|
4
|
+
// (C) Copyright Ion Gaztanaga 2006-2012
|
5
|
+
//
|
6
|
+
// Distributed under the Boost Software License, Version 1.0.
|
7
|
+
// (See accompanying file LICENSE_1_0.txt or copy at
|
8
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
9
|
+
//
|
10
|
+
// See http://www.boost.org/libs/intrusive for documentation.
|
11
|
+
//
|
12
|
+
/////////////////////////////////////////////////////////////////////////////
|
13
|
+
|
14
|
+
#ifndef BOOST_INTRUSIVE_LIST_HPP
|
15
|
+
#define BOOST_INTRUSIVE_LIST_HPP
|
16
|
+
|
17
|
+
#include <boost/intrusive/detail/config_begin.hpp>
|
18
|
+
#include <boost/intrusive/detail/assert.hpp>
|
19
|
+
#include <boost/intrusive/intrusive_fwd.hpp>
|
20
|
+
#include <boost/intrusive/list_hook.hpp>
|
21
|
+
#include <boost/intrusive/circular_list_algorithms.hpp>
|
22
|
+
#include <boost/intrusive/pointer_traits.hpp>
|
23
|
+
#include <boost/intrusive/detail/clear_on_destructor_base.hpp>
|
24
|
+
#include <boost/intrusive/detail/mpl.hpp>
|
25
|
+
#include <boost/intrusive/link_mode.hpp>
|
26
|
+
#include <boost/static_assert.hpp>
|
27
|
+
#include <boost/intrusive/options.hpp>
|
28
|
+
#include <boost/intrusive/pointer_traits.hpp>
|
29
|
+
#include <boost/intrusive/detail/utilities.hpp>
|
30
|
+
#include <iterator>
|
31
|
+
#include <algorithm>
|
32
|
+
#include <functional>
|
33
|
+
#include <cstddef>
|
34
|
+
#include <boost/move/move.hpp>
|
35
|
+
|
36
|
+
namespace boost {
|
37
|
+
namespace intrusive {
|
38
|
+
|
39
|
+
/// @cond
|
40
|
+
|
41
|
+
template <class ValueTraits, class SizeType, bool ConstantTimeSize>
|
42
|
+
struct listopt
|
43
|
+
{
|
44
|
+
typedef ValueTraits value_traits;
|
45
|
+
typedef SizeType size_type;
|
46
|
+
static const bool constant_time_size = ConstantTimeSize;
|
47
|
+
};
|
48
|
+
|
49
|
+
|
50
|
+
template <class T>
|
51
|
+
struct list_defaults
|
52
|
+
: pack_options
|
53
|
+
< none
|
54
|
+
, base_hook<detail::default_list_hook>
|
55
|
+
, constant_time_size<true>
|
56
|
+
, size_type<std::size_t>
|
57
|
+
>::type
|
58
|
+
{};
|
59
|
+
|
60
|
+
/// @endcond
|
61
|
+
|
62
|
+
//! The class template list is an intrusive container that mimics most of the
|
63
|
+
//! interface of std::list as described in the C++ standard.
|
64
|
+
//!
|
65
|
+
//! The template parameter \c T is the type to be managed by the container.
|
66
|
+
//! The user can specify additional options and if no options are provided
|
67
|
+
//! default options are used.
|
68
|
+
//!
|
69
|
+
//! The container supports the following options:
|
70
|
+
//! \c base_hook<>/member_hook<>/value_traits<>,
|
71
|
+
//! \c constant_time_size<> and \c size_type<>.
|
72
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
73
|
+
template<class T, class ...Options>
|
74
|
+
#else
|
75
|
+
template<class Config>
|
76
|
+
#endif
|
77
|
+
class list_impl
|
78
|
+
: private detail::clear_on_destructor_base< list_impl<Config> >
|
79
|
+
{
|
80
|
+
template<class C> friend class detail::clear_on_destructor_base;
|
81
|
+
//Public typedefs
|
82
|
+
public:
|
83
|
+
typedef typename Config::value_traits value_traits;
|
84
|
+
/// @cond
|
85
|
+
static const bool external_value_traits =
|
86
|
+
detail::external_value_traits_bool_is_true<value_traits>::value;
|
87
|
+
typedef typename detail::eval_if_c
|
88
|
+
< external_value_traits
|
89
|
+
, detail::eval_value_traits<value_traits>
|
90
|
+
, detail::identity<value_traits>
|
91
|
+
>::type real_value_traits;
|
92
|
+
/// @endcond
|
93
|
+
typedef typename real_value_traits::pointer pointer;
|
94
|
+
typedef typename real_value_traits::const_pointer const_pointer;
|
95
|
+
typedef typename pointer_traits<pointer>::element_type value_type;
|
96
|
+
typedef typename pointer_traits<pointer>::reference reference;
|
97
|
+
typedef typename pointer_traits<const_pointer>::reference const_reference;
|
98
|
+
typedef typename pointer_traits<pointer>::difference_type difference_type;
|
99
|
+
typedef typename Config::size_type size_type;
|
100
|
+
typedef list_iterator<list_impl, false> iterator;
|
101
|
+
typedef list_iterator<list_impl, true> const_iterator;
|
102
|
+
typedef boost::intrusive::detail::reverse_iterator<iterator> reverse_iterator;
|
103
|
+
typedef boost::intrusive::detail::reverse_iterator<const_iterator>const_reverse_iterator;
|
104
|
+
typedef typename real_value_traits::node_traits node_traits;
|
105
|
+
typedef typename node_traits::node node;
|
106
|
+
typedef typename node_traits::node_ptr node_ptr;
|
107
|
+
typedef typename node_traits::const_node_ptr const_node_ptr;
|
108
|
+
typedef circular_list_algorithms<node_traits> node_algorithms;
|
109
|
+
|
110
|
+
static const bool constant_time_size = Config::constant_time_size;
|
111
|
+
static const bool stateful_value_traits = detail::is_stateful_value_traits<real_value_traits>::value;
|
112
|
+
|
113
|
+
/// @cond
|
114
|
+
|
115
|
+
private:
|
116
|
+
typedef detail::size_holder<constant_time_size, size_type> size_traits;
|
117
|
+
|
118
|
+
//noncopyable
|
119
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(list_impl)
|
120
|
+
|
121
|
+
enum { safemode_or_autounlink =
|
122
|
+
(int)real_value_traits::link_mode == (int)auto_unlink ||
|
123
|
+
(int)real_value_traits::link_mode == (int)safe_link };
|
124
|
+
|
125
|
+
//Constant-time size is incompatible with auto-unlink hooks!
|
126
|
+
BOOST_STATIC_ASSERT(!(constant_time_size &&
|
127
|
+
((int)real_value_traits::link_mode == (int)auto_unlink)
|
128
|
+
));
|
129
|
+
|
130
|
+
//Const cast emulation for smart pointers
|
131
|
+
static node_ptr uncast(const const_node_ptr & ptr)
|
132
|
+
{ return pointer_traits<node_ptr>::const_cast_from(ptr); }
|
133
|
+
|
134
|
+
node_ptr get_root_node()
|
135
|
+
{ return pointer_traits<node_ptr>::pointer_to(data_.root_plus_size_.root_); }
|
136
|
+
|
137
|
+
const_node_ptr get_root_node() const
|
138
|
+
{ return pointer_traits<const_node_ptr>::pointer_to(data_.root_plus_size_.root_); }
|
139
|
+
|
140
|
+
struct root_plus_size : public size_traits
|
141
|
+
{
|
142
|
+
node root_;
|
143
|
+
};
|
144
|
+
|
145
|
+
struct data_t : public value_traits
|
146
|
+
{
|
147
|
+
typedef typename list_impl::value_traits value_traits;
|
148
|
+
data_t(const value_traits &val_traits)
|
149
|
+
: value_traits(val_traits)
|
150
|
+
{}
|
151
|
+
|
152
|
+
root_plus_size root_plus_size_;
|
153
|
+
} data_;
|
154
|
+
|
155
|
+
size_traits &priv_size_traits()
|
156
|
+
{ return data_.root_plus_size_; }
|
157
|
+
|
158
|
+
const size_traits &priv_size_traits() const
|
159
|
+
{ return data_.root_plus_size_; }
|
160
|
+
|
161
|
+
const real_value_traits &get_real_value_traits(detail::bool_<false>) const
|
162
|
+
{ return data_; }
|
163
|
+
|
164
|
+
const real_value_traits &get_real_value_traits(detail::bool_<true>) const
|
165
|
+
{ return data_.get_value_traits(*this); }
|
166
|
+
|
167
|
+
real_value_traits &get_real_value_traits(detail::bool_<false>)
|
168
|
+
{ return data_; }
|
169
|
+
|
170
|
+
real_value_traits &get_real_value_traits(detail::bool_<true>)
|
171
|
+
{ return data_.get_value_traits(*this); }
|
172
|
+
|
173
|
+
const value_traits &priv_value_traits() const
|
174
|
+
{ return data_; }
|
175
|
+
|
176
|
+
value_traits &priv_value_traits()
|
177
|
+
{ return data_; }
|
178
|
+
|
179
|
+
protected:
|
180
|
+
node &prot_root_node()
|
181
|
+
{ return data_.root_plus_size_.root_; }
|
182
|
+
|
183
|
+
node const &prot_root_node() const
|
184
|
+
{ return data_.root_plus_size_.root_; }
|
185
|
+
|
186
|
+
void prot_set_size(size_type s)
|
187
|
+
{ data_.root_plus_size_.set_size(s); }
|
188
|
+
|
189
|
+
/// @endcond
|
190
|
+
|
191
|
+
public:
|
192
|
+
|
193
|
+
const real_value_traits &get_real_value_traits() const
|
194
|
+
{ return this->get_real_value_traits(detail::bool_<external_value_traits>()); }
|
195
|
+
|
196
|
+
real_value_traits &get_real_value_traits()
|
197
|
+
{ return this->get_real_value_traits(detail::bool_<external_value_traits>()); }
|
198
|
+
|
199
|
+
//! <b>Effects</b>: constructs an empty list.
|
200
|
+
//!
|
201
|
+
//! <b>Complexity</b>: Constant
|
202
|
+
//!
|
203
|
+
//! <b>Throws</b>: If real_value_traits::node_traits::node
|
204
|
+
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks).
|
205
|
+
explicit list_impl(const value_traits &v_traits = value_traits())
|
206
|
+
: data_(v_traits)
|
207
|
+
{
|
208
|
+
this->priv_size_traits().set_size(size_type(0));
|
209
|
+
node_algorithms::init_header(this->get_root_node());
|
210
|
+
}
|
211
|
+
|
212
|
+
//! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
|
213
|
+
//!
|
214
|
+
//! <b>Effects</b>: Constructs a list equal to the range [first,last).
|
215
|
+
//!
|
216
|
+
//! <b>Complexity</b>: Linear in std::distance(b, e). No copy constructors are called.
|
217
|
+
//!
|
218
|
+
//! <b>Throws</b>: If real_value_traits::node_traits::node
|
219
|
+
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks).
|
220
|
+
template<class Iterator>
|
221
|
+
list_impl(Iterator b, Iterator e, const value_traits &v_traits = value_traits())
|
222
|
+
: data_(v_traits)
|
223
|
+
{
|
224
|
+
this->priv_size_traits().set_size(size_type(0));
|
225
|
+
node_algorithms::init_header(this->get_root_node());
|
226
|
+
this->insert(this->cend(), b, e);
|
227
|
+
}
|
228
|
+
|
229
|
+
//! <b>Effects</b>: to-do
|
230
|
+
//!
|
231
|
+
list_impl(BOOST_RV_REF(list_impl) x)
|
232
|
+
: data_(::boost::move(x.priv_value_traits()))
|
233
|
+
{
|
234
|
+
this->priv_size_traits().set_size(size_type(0));
|
235
|
+
node_algorithms::init_header(this->get_root_node());
|
236
|
+
this->swap(x);
|
237
|
+
}
|
238
|
+
|
239
|
+
//! <b>Effects</b>: to-do
|
240
|
+
//!
|
241
|
+
list_impl& operator=(BOOST_RV_REF(list_impl) x)
|
242
|
+
{ this->swap(x); return *this; }
|
243
|
+
|
244
|
+
//! <b>Effects</b>: If it's not a safe-mode or an auto-unlink value_type
|
245
|
+
//! the destructor does nothing
|
246
|
+
//! (ie. no code is generated). Otherwise it detaches all elements from this.
|
247
|
+
//! In this case the objects in the list are not deleted (i.e. no destructors
|
248
|
+
//! are called), but the hooks according to the ValueTraits template parameter
|
249
|
+
//! are set to their default value.
|
250
|
+
//!
|
251
|
+
//! <b>Complexity</b>: Linear to the number of elements in the list, if
|
252
|
+
//! it's a safe-mode or auto-unlink value . Otherwise constant.
|
253
|
+
~list_impl()
|
254
|
+
{}
|
255
|
+
|
256
|
+
//! <b>Requires</b>: value must be an lvalue.
|
257
|
+
//!
|
258
|
+
//! <b>Effects</b>: Inserts the value in the back of the list.
|
259
|
+
//! No copy constructors are called.
|
260
|
+
//!
|
261
|
+
//! <b>Throws</b>: Nothing.
|
262
|
+
//!
|
263
|
+
//! <b>Complexity</b>: Constant.
|
264
|
+
//!
|
265
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
266
|
+
void push_back(reference value)
|
267
|
+
{
|
268
|
+
node_ptr to_insert = get_real_value_traits().to_node_ptr(value);
|
269
|
+
if(safemode_or_autounlink)
|
270
|
+
BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::inited(to_insert));
|
271
|
+
node_algorithms::link_before(this->get_root_node(), to_insert);
|
272
|
+
this->priv_size_traits().increment();
|
273
|
+
}
|
274
|
+
|
275
|
+
//! <b>Requires</b>: value must be an lvalue.
|
276
|
+
//!
|
277
|
+
//! <b>Effects</b>: Inserts the value in the front of the list.
|
278
|
+
//! No copy constructors are called.
|
279
|
+
//!
|
280
|
+
//! <b>Throws</b>: Nothing.
|
281
|
+
//!
|
282
|
+
//! <b>Complexity</b>: Constant.
|
283
|
+
//!
|
284
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
285
|
+
void push_front(reference value)
|
286
|
+
{
|
287
|
+
node_ptr to_insert = get_real_value_traits().to_node_ptr(value);
|
288
|
+
if(safemode_or_autounlink)
|
289
|
+
BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::inited(to_insert));
|
290
|
+
node_algorithms::link_before(node_traits::get_next(this->get_root_node()), to_insert);
|
291
|
+
this->priv_size_traits().increment();
|
292
|
+
}
|
293
|
+
|
294
|
+
//! <b>Effects</b>: Erases the last element of the list.
|
295
|
+
//! No destructors are called.
|
296
|
+
//!
|
297
|
+
//! <b>Throws</b>: Nothing.
|
298
|
+
//!
|
299
|
+
//! <b>Complexity</b>: Constant.
|
300
|
+
//!
|
301
|
+
//! <b>Note</b>: Invalidates the iterators (but not the references) to the erased element.
|
302
|
+
void pop_back()
|
303
|
+
{ return this->pop_back_and_dispose(detail::null_disposer()); }
|
304
|
+
|
305
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
306
|
+
//!
|
307
|
+
//! <b>Effects</b>: Erases the last element of the list.
|
308
|
+
//! No destructors are called.
|
309
|
+
//! Disposer::operator()(pointer) is called for the removed element.
|
310
|
+
//!
|
311
|
+
//! <b>Throws</b>: Nothing.
|
312
|
+
//!
|
313
|
+
//! <b>Complexity</b>: Constant.
|
314
|
+
//!
|
315
|
+
//! <b>Note</b>: Invalidates the iterators to the erased element.
|
316
|
+
template<class Disposer>
|
317
|
+
void pop_back_and_dispose(Disposer disposer)
|
318
|
+
{
|
319
|
+
node_ptr to_erase = node_traits::get_previous(this->get_root_node());
|
320
|
+
node_algorithms::unlink(to_erase);
|
321
|
+
this->priv_size_traits().decrement();
|
322
|
+
if(safemode_or_autounlink)
|
323
|
+
node_algorithms::init(to_erase);
|
324
|
+
disposer(get_real_value_traits().to_value_ptr(to_erase));
|
325
|
+
}
|
326
|
+
|
327
|
+
//! <b>Effects</b>: Erases the first element of the list.
|
328
|
+
//! No destructors are called.
|
329
|
+
//!
|
330
|
+
//! <b>Throws</b>: Nothing.
|
331
|
+
//!
|
332
|
+
//! <b>Complexity</b>: Constant.
|
333
|
+
//!
|
334
|
+
//! <b>Note</b>: Invalidates the iterators (but not the references) to the erased element.
|
335
|
+
void pop_front()
|
336
|
+
{ return this->pop_front_and_dispose(detail::null_disposer()); }
|
337
|
+
|
338
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
339
|
+
//!
|
340
|
+
//! <b>Effects</b>: Erases the first element of the list.
|
341
|
+
//! No destructors are called.
|
342
|
+
//! Disposer::operator()(pointer) is called for the removed element.
|
343
|
+
//!
|
344
|
+
//! <b>Throws</b>: Nothing.
|
345
|
+
//!
|
346
|
+
//! <b>Complexity</b>: Constant.
|
347
|
+
//!
|
348
|
+
//! <b>Note</b>: Invalidates the iterators to the erased element.
|
349
|
+
template<class Disposer>
|
350
|
+
void pop_front_and_dispose(Disposer disposer)
|
351
|
+
{
|
352
|
+
node_ptr to_erase = node_traits::get_next(this->get_root_node());
|
353
|
+
node_algorithms::unlink(to_erase);
|
354
|
+
this->priv_size_traits().decrement();
|
355
|
+
if(safemode_or_autounlink)
|
356
|
+
node_algorithms::init(to_erase);
|
357
|
+
disposer(get_real_value_traits().to_value_ptr(to_erase));
|
358
|
+
}
|
359
|
+
|
360
|
+
//! <b>Effects</b>: Returns a reference to the first element of the list.
|
361
|
+
//!
|
362
|
+
//! <b>Throws</b>: Nothing.
|
363
|
+
//!
|
364
|
+
//! <b>Complexity</b>: Constant.
|
365
|
+
reference front()
|
366
|
+
{ return *get_real_value_traits().to_value_ptr(node_traits::get_next(this->get_root_node())); }
|
367
|
+
|
368
|
+
//! <b>Effects</b>: Returns a const_reference to the first element of the list.
|
369
|
+
//!
|
370
|
+
//! <b>Throws</b>: Nothing.
|
371
|
+
//!
|
372
|
+
//! <b>Complexity</b>: Constant.
|
373
|
+
const_reference front() const
|
374
|
+
{ return *get_real_value_traits().to_value_ptr(uncast(node_traits::get_next(this->get_root_node()))); }
|
375
|
+
|
376
|
+
//! <b>Effects</b>: Returns a reference to the last element of the list.
|
377
|
+
//!
|
378
|
+
//! <b>Throws</b>: Nothing.
|
379
|
+
//!
|
380
|
+
//! <b>Complexity</b>: Constant.
|
381
|
+
reference back()
|
382
|
+
{ return *get_real_value_traits().to_value_ptr(node_traits::get_previous(this->get_root_node())); }
|
383
|
+
|
384
|
+
//! <b>Effects</b>: Returns a const_reference to the last element of the list.
|
385
|
+
//!
|
386
|
+
//! <b>Throws</b>: Nothing.
|
387
|
+
//!
|
388
|
+
//! <b>Complexity</b>: Constant.
|
389
|
+
const_reference back() const
|
390
|
+
{ return *get_real_value_traits().to_value_ptr(uncast(node_traits::get_previous(this->get_root_node()))); }
|
391
|
+
|
392
|
+
//! <b>Effects</b>: Returns an iterator to the first element contained in the list.
|
393
|
+
//!
|
394
|
+
//! <b>Throws</b>: Nothing.
|
395
|
+
//!
|
396
|
+
//! <b>Complexity</b>: Constant.
|
397
|
+
iterator begin()
|
398
|
+
{ return iterator(node_traits::get_next(this->get_root_node()), this); }
|
399
|
+
|
400
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
|
401
|
+
//!
|
402
|
+
//! <b>Throws</b>: Nothing.
|
403
|
+
//!
|
404
|
+
//! <b>Complexity</b>: Constant.
|
405
|
+
const_iterator begin() const
|
406
|
+
{ return this->cbegin(); }
|
407
|
+
|
408
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
|
409
|
+
//!
|
410
|
+
//! <b>Throws</b>: Nothing.
|
411
|
+
//!
|
412
|
+
//! <b>Complexity</b>: Constant.
|
413
|
+
const_iterator cbegin() const
|
414
|
+
{ return const_iterator(node_traits::get_next(this->get_root_node()), this); }
|
415
|
+
|
416
|
+
//! <b>Effects</b>: Returns an iterator to the end of the list.
|
417
|
+
//!
|
418
|
+
//! <b>Throws</b>: Nothing.
|
419
|
+
//!
|
420
|
+
//! <b>Complexity</b>: Constant.
|
421
|
+
iterator end()
|
422
|
+
{ return iterator(this->get_root_node(), this); }
|
423
|
+
|
424
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the list.
|
425
|
+
//!
|
426
|
+
//! <b>Throws</b>: Nothing.
|
427
|
+
//!
|
428
|
+
//! <b>Complexity</b>: Constant.
|
429
|
+
const_iterator end() const
|
430
|
+
{ return this->cend(); }
|
431
|
+
|
432
|
+
//! <b>Effects</b>: Returns a constant iterator to the end of the list.
|
433
|
+
//!
|
434
|
+
//! <b>Throws</b>: Nothing.
|
435
|
+
//!
|
436
|
+
//! <b>Complexity</b>: Constant.
|
437
|
+
const_iterator cend() const
|
438
|
+
{ return const_iterator(uncast(this->get_root_node()), this); }
|
439
|
+
|
440
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
441
|
+
//! of the reversed list.
|
442
|
+
//!
|
443
|
+
//! <b>Throws</b>: Nothing.
|
444
|
+
//!
|
445
|
+
//! <b>Complexity</b>: Constant.
|
446
|
+
reverse_iterator rbegin()
|
447
|
+
{ return reverse_iterator(this->end()); }
|
448
|
+
|
449
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
450
|
+
//! of the reversed list.
|
451
|
+
//!
|
452
|
+
//! <b>Throws</b>: Nothing.
|
453
|
+
//!
|
454
|
+
//! <b>Complexity</b>: Constant.
|
455
|
+
const_reverse_iterator rbegin() const
|
456
|
+
{ return this->crbegin(); }
|
457
|
+
|
458
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
459
|
+
//! of the reversed list.
|
460
|
+
//!
|
461
|
+
//! <b>Throws</b>: Nothing.
|
462
|
+
//!
|
463
|
+
//! <b>Complexity</b>: Constant.
|
464
|
+
const_reverse_iterator crbegin() const
|
465
|
+
{ return const_reverse_iterator(end()); }
|
466
|
+
|
467
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
468
|
+
//! of the reversed list.
|
469
|
+
//!
|
470
|
+
//! <b>Throws</b>: Nothing.
|
471
|
+
//!
|
472
|
+
//! <b>Complexity</b>: Constant.
|
473
|
+
reverse_iterator rend()
|
474
|
+
{ return reverse_iterator(begin()); }
|
475
|
+
|
476
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
477
|
+
//! of the reversed list.
|
478
|
+
//!
|
479
|
+
//! <b>Throws</b>: Nothing.
|
480
|
+
//!
|
481
|
+
//! <b>Complexity</b>: Constant.
|
482
|
+
const_reverse_iterator rend() const
|
483
|
+
{ return this->crend(); }
|
484
|
+
|
485
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
486
|
+
//! of the reversed list.
|
487
|
+
//!
|
488
|
+
//! <b>Throws</b>: Nothing.
|
489
|
+
//!
|
490
|
+
//! <b>Complexity</b>: Constant.
|
491
|
+
const_reverse_iterator crend() const
|
492
|
+
{ return const_reverse_iterator(this->begin()); }
|
493
|
+
|
494
|
+
//! <b>Precondition</b>: end_iterator must be a valid end iterator
|
495
|
+
//! of list.
|
496
|
+
//!
|
497
|
+
//! <b>Effects</b>: Returns a const reference to the list associated to the end iterator
|
498
|
+
//!
|
499
|
+
//! <b>Throws</b>: Nothing.
|
500
|
+
//!
|
501
|
+
//! <b>Complexity</b>: Constant.
|
502
|
+
static list_impl &container_from_end_iterator(iterator end_iterator)
|
503
|
+
{ return list_impl::priv_container_from_end_iterator(end_iterator); }
|
504
|
+
|
505
|
+
//! <b>Precondition</b>: end_iterator must be a valid end const_iterator
|
506
|
+
//! of list.
|
507
|
+
//!
|
508
|
+
//! <b>Effects</b>: Returns a const reference to the list associated to the end iterator
|
509
|
+
//!
|
510
|
+
//! <b>Throws</b>: Nothing.
|
511
|
+
//!
|
512
|
+
//! <b>Complexity</b>: Constant.
|
513
|
+
static const list_impl &container_from_end_iterator(const_iterator end_iterator)
|
514
|
+
{ return list_impl::priv_container_from_end_iterator(end_iterator); }
|
515
|
+
|
516
|
+
//! <b>Effects</b>: Returns the number of the elements contained in the list.
|
517
|
+
//!
|
518
|
+
//! <b>Throws</b>: Nothing.
|
519
|
+
//!
|
520
|
+
//! <b>Complexity</b>: Linear to the number of elements contained in the list.
|
521
|
+
//! if constant-time size option is disabled. Constant time otherwise.
|
522
|
+
//!
|
523
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
524
|
+
size_type size() const
|
525
|
+
{
|
526
|
+
if(constant_time_size)
|
527
|
+
return this->priv_size_traits().get_size();
|
528
|
+
else
|
529
|
+
return node_algorithms::count(this->get_root_node()) - 1;
|
530
|
+
}
|
531
|
+
|
532
|
+
//! <b>Effects</b>: Returns true if the list contains no elements.
|
533
|
+
//!
|
534
|
+
//! <b>Throws</b>: Nothing.
|
535
|
+
//!
|
536
|
+
//! <b>Complexity</b>: Constant.
|
537
|
+
//!
|
538
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
539
|
+
bool empty() const
|
540
|
+
{ return node_algorithms::unique(this->get_root_node()); }
|
541
|
+
|
542
|
+
//! <b>Effects</b>: Swaps the elements of x and *this.
|
543
|
+
//!
|
544
|
+
//! <b>Throws</b>: Nothing.
|
545
|
+
//!
|
546
|
+
//! <b>Complexity</b>: Constant.
|
547
|
+
//!
|
548
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
549
|
+
void swap(list_impl& other)
|
550
|
+
{
|
551
|
+
node_algorithms::swap_nodes(this->get_root_node(), other.get_root_node());
|
552
|
+
if(constant_time_size){
|
553
|
+
size_type backup = this->priv_size_traits().get_size();
|
554
|
+
this->priv_size_traits().set_size(other.priv_size_traits().get_size());
|
555
|
+
other.priv_size_traits().set_size(backup);
|
556
|
+
}
|
557
|
+
}
|
558
|
+
|
559
|
+
//! <b>Effects</b>: Moves backwards all the elements, so that the first
|
560
|
+
//! element becomes the second, the second becomes the third...
|
561
|
+
//! the last element becomes the first one.
|
562
|
+
//!
|
563
|
+
//! <b>Throws</b>: Nothing.
|
564
|
+
//!
|
565
|
+
//! <b>Complexity</b>: Linear to the number of shifts.
|
566
|
+
//!
|
567
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
568
|
+
void shift_backwards(size_type n = 1)
|
569
|
+
{ node_algorithms::move_forward(this->get_root_node(), n); }
|
570
|
+
|
571
|
+
//! <b>Effects</b>: Moves forward all the elements, so that the second
|
572
|
+
//! element becomes the first, the third becomes the second...
|
573
|
+
//! the first element becomes the last one.
|
574
|
+
//!
|
575
|
+
//! <b>Throws</b>: Nothing.
|
576
|
+
//!
|
577
|
+
//! <b>Complexity</b>: Linear to the number of shifts.
|
578
|
+
//!
|
579
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
580
|
+
void shift_forward(size_type n = 1)
|
581
|
+
{ node_algorithms::move_backwards(this->get_root_node(), n); }
|
582
|
+
|
583
|
+
//! <b>Effects</b>: Erases the element pointed by i of the list.
|
584
|
+
//! No destructors are called.
|
585
|
+
//!
|
586
|
+
//! <b>Returns</b>: the first element remaining beyond the removed element,
|
587
|
+
//! or end() if no such element exists.
|
588
|
+
//!
|
589
|
+
//! <b>Throws</b>: Nothing.
|
590
|
+
//!
|
591
|
+
//! <b>Complexity</b>: Constant.
|
592
|
+
//!
|
593
|
+
//! <b>Note</b>: Invalidates the iterators (but not the references) to the
|
594
|
+
//! erased element.
|
595
|
+
iterator erase(const_iterator i)
|
596
|
+
{ return this->erase_and_dispose(i, detail::null_disposer()); }
|
597
|
+
|
598
|
+
//! <b>Requires</b>: b and e must be valid iterators to elements in *this.
|
599
|
+
//!
|
600
|
+
//! <b>Effects</b>: Erases the element range pointed by b and e
|
601
|
+
//! No destructors are called.
|
602
|
+
//!
|
603
|
+
//! <b>Returns</b>: the first element remaining beyond the removed elements,
|
604
|
+
//! or end() if no such element exists.
|
605
|
+
//!
|
606
|
+
//! <b>Throws</b>: Nothing.
|
607
|
+
//!
|
608
|
+
//! <b>Complexity</b>: Linear to the number of erased elements if it's a safe-mode
|
609
|
+
//! or auto-unlink value, or constant-time size is enabled. Constant-time otherwise.
|
610
|
+
//!
|
611
|
+
//! <b>Note</b>: Invalidates the iterators (but not the references) to the
|
612
|
+
//! erased elements.
|
613
|
+
iterator erase(const_iterator b, const_iterator e)
|
614
|
+
{
|
615
|
+
if(safemode_or_autounlink || constant_time_size){
|
616
|
+
return this->erase_and_dispose(b, e, detail::null_disposer());
|
617
|
+
}
|
618
|
+
else{
|
619
|
+
node_algorithms::unlink(b.pointed_node(), e.pointed_node());
|
620
|
+
return e.unconst();
|
621
|
+
}
|
622
|
+
}
|
623
|
+
|
624
|
+
//! <b>Requires</b>: b and e must be valid iterators to elements in *this.
|
625
|
+
//! n must be std::distance(b, e).
|
626
|
+
//!
|
627
|
+
//! <b>Effects</b>: Erases the element range pointed by b and e
|
628
|
+
//! No destructors are called.
|
629
|
+
//!
|
630
|
+
//! <b>Returns</b>: the first element remaining beyond the removed elements,
|
631
|
+
//! or end() if no such element exists.
|
632
|
+
//!
|
633
|
+
//! <b>Throws</b>: Nothing.
|
634
|
+
//!
|
635
|
+
//! <b>Complexity</b>: Linear to the number of erased elements if it's a safe-mode
|
636
|
+
//! or auto-unlink value is enabled. Constant-time otherwise.
|
637
|
+
//!
|
638
|
+
//! <b>Note</b>: Invalidates the iterators (but not the references) to the
|
639
|
+
//! erased elements.
|
640
|
+
iterator erase(const_iterator b, const_iterator e, difference_type n)
|
641
|
+
{
|
642
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(std::distance(b, e) == difference_type(n));
|
643
|
+
if(safemode_or_autounlink || constant_time_size){
|
644
|
+
return this->erase_and_dispose(b, e, detail::null_disposer());
|
645
|
+
}
|
646
|
+
else{
|
647
|
+
if(constant_time_size){
|
648
|
+
this->priv_size_traits().decrease(n);
|
649
|
+
}
|
650
|
+
node_algorithms::unlink(b.pointed_node(), e.pointed_node());
|
651
|
+
return e.unconst();
|
652
|
+
}
|
653
|
+
}
|
654
|
+
|
655
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
656
|
+
//!
|
657
|
+
//! <b>Effects</b>: Erases the element pointed by i of the list.
|
658
|
+
//! No destructors are called.
|
659
|
+
//! Disposer::operator()(pointer) is called for the removed element.
|
660
|
+
//!
|
661
|
+
//! <b>Returns</b>: the first element remaining beyond the removed element,
|
662
|
+
//! or end() if no such element exists.
|
663
|
+
//!
|
664
|
+
//! <b>Throws</b>: Nothing.
|
665
|
+
//!
|
666
|
+
//! <b>Complexity</b>: Constant.
|
667
|
+
//!
|
668
|
+
//! <b>Note</b>: Invalidates the iterators to the erased element.
|
669
|
+
template <class Disposer>
|
670
|
+
iterator erase_and_dispose(const_iterator i, Disposer disposer)
|
671
|
+
{
|
672
|
+
node_ptr to_erase(i.pointed_node());
|
673
|
+
++i;
|
674
|
+
node_algorithms::unlink(to_erase);
|
675
|
+
this->priv_size_traits().decrement();
|
676
|
+
if(safemode_or_autounlink)
|
677
|
+
node_algorithms::init(to_erase);
|
678
|
+
disposer(this->get_real_value_traits().to_value_ptr(to_erase));
|
679
|
+
return i.unconst();
|
680
|
+
}
|
681
|
+
|
682
|
+
#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
683
|
+
template<class Disposer>
|
684
|
+
iterator erase_and_dispose(iterator i, Disposer disposer)
|
685
|
+
{ return this->erase_and_dispose(const_iterator(i), disposer); }
|
686
|
+
#endif
|
687
|
+
|
688
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
689
|
+
//!
|
690
|
+
//! <b>Effects</b>: Erases the element range pointed by b and e
|
691
|
+
//! No destructors are called.
|
692
|
+
//! Disposer::operator()(pointer) is called for the removed elements.
|
693
|
+
//!
|
694
|
+
//! <b>Returns</b>: the first element remaining beyond the removed elements,
|
695
|
+
//! or end() if no such element exists.
|
696
|
+
//!
|
697
|
+
//! <b>Throws</b>: Nothing.
|
698
|
+
//!
|
699
|
+
//! <b>Complexity</b>: Linear to the number of elements erased.
|
700
|
+
//!
|
701
|
+
//! <b>Note</b>: Invalidates the iterators to the erased elements.
|
702
|
+
template <class Disposer>
|
703
|
+
iterator erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer)
|
704
|
+
{
|
705
|
+
node_ptr bp(b.pointed_node()), ep(e.pointed_node());
|
706
|
+
node_algorithms::unlink(bp, ep);
|
707
|
+
while(bp != ep){
|
708
|
+
node_ptr to_erase(bp);
|
709
|
+
bp = node_traits::get_next(bp);
|
710
|
+
if(safemode_or_autounlink)
|
711
|
+
node_algorithms::init(to_erase);
|
712
|
+
disposer(get_real_value_traits().to_value_ptr(to_erase));
|
713
|
+
this->priv_size_traits().decrement();
|
714
|
+
}
|
715
|
+
return e.unconst();
|
716
|
+
}
|
717
|
+
|
718
|
+
//! <b>Effects</b>: Erases all the elements of the container.
|
719
|
+
//! No destructors are called.
|
720
|
+
//!
|
721
|
+
//! <b>Throws</b>: Nothing.
|
722
|
+
//!
|
723
|
+
//! <b>Complexity</b>: Linear to the number of elements of the list.
|
724
|
+
//! if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
|
725
|
+
//!
|
726
|
+
//! <b>Note</b>: Invalidates the iterators (but not the references) to the erased elements.
|
727
|
+
void clear()
|
728
|
+
{
|
729
|
+
if(safemode_or_autounlink){
|
730
|
+
this->clear_and_dispose(detail::null_disposer());
|
731
|
+
}
|
732
|
+
else{
|
733
|
+
node_algorithms::init_header(this->get_root_node());
|
734
|
+
this->priv_size_traits().set_size(size_type(0));
|
735
|
+
}
|
736
|
+
}
|
737
|
+
|
738
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
739
|
+
//!
|
740
|
+
//! <b>Effects</b>: Erases all the elements of the container.
|
741
|
+
//! No destructors are called.
|
742
|
+
//! Disposer::operator()(pointer) is called for the removed elements.
|
743
|
+
//!
|
744
|
+
//! <b>Throws</b>: Nothing.
|
745
|
+
//!
|
746
|
+
//! <b>Complexity</b>: Linear to the number of elements of the list.
|
747
|
+
//!
|
748
|
+
//! <b>Note</b>: Invalidates the iterators to the erased elements.
|
749
|
+
template <class Disposer>
|
750
|
+
void clear_and_dispose(Disposer disposer)
|
751
|
+
{
|
752
|
+
const_iterator it(this->begin()), itend(this->end());
|
753
|
+
while(it != itend){
|
754
|
+
node_ptr to_erase(it.pointed_node());
|
755
|
+
++it;
|
756
|
+
if(safemode_or_autounlink)
|
757
|
+
node_algorithms::init(to_erase);
|
758
|
+
disposer(get_real_value_traits().to_value_ptr(to_erase));
|
759
|
+
}
|
760
|
+
node_algorithms::init_header(this->get_root_node());
|
761
|
+
this->priv_size_traits().set_size(0);
|
762
|
+
}
|
763
|
+
|
764
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
765
|
+
//! Cloner should yield to nodes equivalent to the original nodes.
|
766
|
+
//!
|
767
|
+
//! <b>Effects</b>: Erases all the elements from *this
|
768
|
+
//! calling Disposer::operator()(pointer), clones all the
|
769
|
+
//! elements from src calling Cloner::operator()(const_reference )
|
770
|
+
//! and inserts them on *this.
|
771
|
+
//!
|
772
|
+
//! If cloner throws, all cloned elements are unlinked and disposed
|
773
|
+
//! calling Disposer::operator()(pointer).
|
774
|
+
//!
|
775
|
+
//! <b>Complexity</b>: Linear to erased plus inserted elements.
|
776
|
+
//!
|
777
|
+
//! <b>Throws</b>: If cloner throws. Basic guarantee.
|
778
|
+
template <class Cloner, class Disposer>
|
779
|
+
void clone_from(const list_impl &src, Cloner cloner, Disposer disposer)
|
780
|
+
{
|
781
|
+
this->clear_and_dispose(disposer);
|
782
|
+
detail::exception_disposer<list_impl, Disposer>
|
783
|
+
rollback(*this, disposer);
|
784
|
+
const_iterator b(src.begin()), e(src.end());
|
785
|
+
for(; b != e; ++b){
|
786
|
+
this->push_back(*cloner(*b));
|
787
|
+
}
|
788
|
+
rollback.release();
|
789
|
+
}
|
790
|
+
|
791
|
+
//! <b>Requires</b>: value must be an lvalue and p must be a valid iterator of *this.
|
792
|
+
//!
|
793
|
+
//! <b>Effects</b>: Inserts the value before the position pointed by p.
|
794
|
+
//!
|
795
|
+
//! <b>Returns</b>: An iterator to the inserted element.
|
796
|
+
//!
|
797
|
+
//! <b>Throws</b>: Nothing.
|
798
|
+
//!
|
799
|
+
//! <b>Complexity</b>: Constant time. No copy constructors are called.
|
800
|
+
//!
|
801
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
802
|
+
iterator insert(const_iterator p, reference value)
|
803
|
+
{
|
804
|
+
node_ptr to_insert = this->get_real_value_traits().to_node_ptr(value);
|
805
|
+
if(safemode_or_autounlink)
|
806
|
+
BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::inited(to_insert));
|
807
|
+
node_algorithms::link_before(p.pointed_node(), to_insert);
|
808
|
+
this->priv_size_traits().increment();
|
809
|
+
return iterator(to_insert, this);
|
810
|
+
}
|
811
|
+
|
812
|
+
//! <b>Requires</b>: Dereferencing iterator must yield
|
813
|
+
//! an lvalue of type value_type and p must be a valid iterator of *this.
|
814
|
+
//!
|
815
|
+
//! <b>Effects</b>: Inserts the range pointed by b and e before the position p.
|
816
|
+
//! No copy constructors are called.
|
817
|
+
//!
|
818
|
+
//! <b>Throws</b>: Nothing.
|
819
|
+
//!
|
820
|
+
//! <b>Complexity</b>: Linear to the number of elements inserted.
|
821
|
+
//!
|
822
|
+
//! <b>Note</b>: Does not affect the validity of iterators and references.
|
823
|
+
template<class Iterator>
|
824
|
+
void insert(const_iterator p, Iterator b, Iterator e)
|
825
|
+
{
|
826
|
+
for (; b != e; ++b)
|
827
|
+
this->insert(p, *b);
|
828
|
+
}
|
829
|
+
|
830
|
+
//! <b>Requires</b>: Dereferencing iterator must yield
|
831
|
+
//! an lvalue of type value_type.
|
832
|
+
//!
|
833
|
+
//! <b>Effects</b>: Clears the list and inserts the range pointed by b and e.
|
834
|
+
//! No destructors or copy constructors are called.
|
835
|
+
//!
|
836
|
+
//! <b>Throws</b>: Nothing.
|
837
|
+
//!
|
838
|
+
//! <b>Complexity</b>: Linear to the number of elements inserted plus
|
839
|
+
//! linear to the elements contained in the list if it's a safe-mode
|
840
|
+
//! or auto-unlink value.
|
841
|
+
//! Linear to the number of elements inserted in the list otherwise.
|
842
|
+
//!
|
843
|
+
//! <b>Note</b>: Invalidates the iterators (but not the references)
|
844
|
+
//! to the erased elements.
|
845
|
+
template<class Iterator>
|
846
|
+
void assign(Iterator b, Iterator e)
|
847
|
+
{
|
848
|
+
this->clear();
|
849
|
+
this->insert(this->cend(), b, e);
|
850
|
+
}
|
851
|
+
|
852
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
853
|
+
//!
|
854
|
+
//! <b>Requires</b>: Dereferencing iterator must yield
|
855
|
+
//! an lvalue of type value_type.
|
856
|
+
//!
|
857
|
+
//! <b>Effects</b>: Clears the list and inserts the range pointed by b and e.
|
858
|
+
//! No destructors or copy constructors are called.
|
859
|
+
//! Disposer::operator()(pointer) is called for the removed elements.
|
860
|
+
//!
|
861
|
+
//! <b>Throws</b>: Nothing.
|
862
|
+
//!
|
863
|
+
//! <b>Complexity</b>: Linear to the number of elements inserted plus
|
864
|
+
//! linear to the elements contained in the list.
|
865
|
+
//!
|
866
|
+
//! <b>Note</b>: Invalidates the iterators (but not the references)
|
867
|
+
//! to the erased elements.
|
868
|
+
template<class Iterator, class Disposer>
|
869
|
+
void dispose_and_assign(Disposer disposer, Iterator b, Iterator e)
|
870
|
+
{
|
871
|
+
this->clear_and_dispose(disposer);
|
872
|
+
this->insert(this->cend(), b, e);
|
873
|
+
}
|
874
|
+
|
875
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
876
|
+
//!
|
877
|
+
//! <b>Effects</b>: Transfers all the elements of list x to this list, before the
|
878
|
+
//! the element pointed by p. No destructors or copy constructors are called.
|
879
|
+
//!
|
880
|
+
//! <b>Throws</b>: Nothing.
|
881
|
+
//!
|
882
|
+
//! <b>Complexity</b>: Constant.
|
883
|
+
//!
|
884
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of
|
885
|
+
//! this list. Iterators of this list and all the references are not invalidated.
|
886
|
+
void splice(const_iterator p, list_impl& x)
|
887
|
+
{
|
888
|
+
if(!x.empty()){
|
889
|
+
node_algorithms::transfer
|
890
|
+
(p.pointed_node(), x.begin().pointed_node(), x.end().pointed_node());
|
891
|
+
size_traits &thist = this->priv_size_traits();
|
892
|
+
size_traits &xt = x.priv_size_traits();
|
893
|
+
thist.increase(xt.get_size());
|
894
|
+
xt.set_size(size_type(0));
|
895
|
+
}
|
896
|
+
}
|
897
|
+
|
898
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
899
|
+
//! new_ele must point to an element contained in list x.
|
900
|
+
//!
|
901
|
+
//! <b>Effects</b>: Transfers the value pointed by new_ele, from list x to this list,
|
902
|
+
//! before the the element pointed by p. No destructors or copy constructors are called.
|
903
|
+
//! If p == new_ele or p == ++new_ele, this function is a null operation.
|
904
|
+
//!
|
905
|
+
//! <b>Throws</b>: Nothing.
|
906
|
+
//!
|
907
|
+
//! <b>Complexity</b>: Constant.
|
908
|
+
//!
|
909
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
910
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
911
|
+
void splice(const_iterator p, list_impl&x, const_iterator new_ele)
|
912
|
+
{
|
913
|
+
node_algorithms::transfer(p.pointed_node(), new_ele.pointed_node());
|
914
|
+
x.priv_size_traits().decrement();
|
915
|
+
this->priv_size_traits().increment();
|
916
|
+
}
|
917
|
+
|
918
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
919
|
+
//! f and e must point to elements contained in list x.
|
920
|
+
//!
|
921
|
+
//! <b>Effects</b>: Transfers the range pointed by f and e from list x to this list,
|
922
|
+
//! before the the element pointed by p. No destructors or copy constructors are called.
|
923
|
+
//!
|
924
|
+
//! <b>Throws</b>: Nothing.
|
925
|
+
//!
|
926
|
+
//! <b>Complexity</b>: Linear to the number of elements transferred
|
927
|
+
//! if constant-time size option is enabled. Constant-time otherwise.
|
928
|
+
//!
|
929
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
930
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
931
|
+
void splice(const_iterator p, list_impl&x, const_iterator f, const_iterator e)
|
932
|
+
{
|
933
|
+
if(constant_time_size)
|
934
|
+
this->splice(p, x, f, e, std::distance(f, e));
|
935
|
+
else
|
936
|
+
this->splice(p, x, f, e, 1);//distance is a dummy value
|
937
|
+
}
|
938
|
+
|
939
|
+
//! <b>Requires</b>: p must be a valid iterator of *this.
|
940
|
+
//! f and e must point to elements contained in list x.
|
941
|
+
//! n == std::distance(f, e)
|
942
|
+
//!
|
943
|
+
//! <b>Effects</b>: Transfers the range pointed by f and e from list x to this list,
|
944
|
+
//! before the the element pointed by p. No destructors or copy constructors are called.
|
945
|
+
//!
|
946
|
+
//! <b>Throws</b>: Nothing.
|
947
|
+
//!
|
948
|
+
//! <b>Complexity</b>: Constant.
|
949
|
+
//!
|
950
|
+
//! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
|
951
|
+
//! list. Iterators of this list and all the references are not invalidated.
|
952
|
+
void splice(const_iterator p, list_impl&x, const_iterator f, const_iterator e, difference_type n)
|
953
|
+
{
|
954
|
+
if(n){
|
955
|
+
if(constant_time_size){
|
956
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(n == std::distance(f, e));
|
957
|
+
node_algorithms::transfer(p.pointed_node(), f.pointed_node(), e.pointed_node());
|
958
|
+
size_traits &thist = this->priv_size_traits();
|
959
|
+
size_traits &xt = x.priv_size_traits();
|
960
|
+
thist.increase(n);
|
961
|
+
xt.decrease(n);
|
962
|
+
}
|
963
|
+
else{
|
964
|
+
node_algorithms::transfer(p.pointed_node(), f.pointed_node(), e.pointed_node());
|
965
|
+
}
|
966
|
+
}
|
967
|
+
}
|
968
|
+
|
969
|
+
//! <b>Effects</b>: This function sorts the list *this according to std::less<value_type>.
|
970
|
+
//! The sort is stable, that is, the relative order of equivalent elements is preserved.
|
971
|
+
//!
|
972
|
+
//! <b>Throws</b>: If real_value_traits::node_traits::node
|
973
|
+
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
974
|
+
//! or std::less<value_type> throws. Basic guarantee.
|
975
|
+
//!
|
976
|
+
//! <b>Notes</b>: Iterators and references are not invalidated.
|
977
|
+
//!
|
978
|
+
//! <b>Complexity</b>: The number of comparisons is approximately N log N, where N
|
979
|
+
//! is the list's size.
|
980
|
+
void sort()
|
981
|
+
{ this->sort(std::less<value_type>()); }
|
982
|
+
|
983
|
+
//! <b>Requires</b>: p must be a comparison function that induces a strict weak ordering
|
984
|
+
//!
|
985
|
+
//! <b>Effects</b>: This function sorts the list *this according to p. The sort is
|
986
|
+
//! stable, that is, the relative order of equivalent elements is preserved.
|
987
|
+
//!
|
988
|
+
//! <b>Throws</b>: If real_value_traits::node_traits::node
|
989
|
+
//! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
|
990
|
+
//! or the predicate throws. Basic guarantee.
|
991
|
+
//!
|
992
|
+
//! <b>Notes</b>: This won't throw if list_base_hook<> or
|
993
|
+
//! list_member_hook are used.
|
994
|
+
//! Iterators and references are not invalidated.
|
995
|
+
//!
|
996
|
+
//! <b>Complexity</b>: The number of comparisons is approximately N log N, where N
|
997
|
+
//! is the list's size.
|
998
|
+
template<class Predicate>
|
999
|
+
void sort(Predicate p)
|
1000
|
+
{
|
1001
|
+
if(node_traits::get_next(this->get_root_node())
|
1002
|
+
!= node_traits::get_previous(this->get_root_node())){
|
1003
|
+
list_impl carry(this->priv_value_traits());
|
1004
|
+
detail::array_initializer<list_impl, 64> counter(this->priv_value_traits());
|
1005
|
+
int fill = 0;
|
1006
|
+
while(!this->empty()){
|
1007
|
+
carry.splice(carry.cbegin(), *this, this->cbegin());
|
1008
|
+
int i = 0;
|
1009
|
+
while(i < fill && !counter[i].empty()) {
|
1010
|
+
counter[i].merge(carry, p);
|
1011
|
+
carry.swap(counter[i++]);
|
1012
|
+
}
|
1013
|
+
carry.swap(counter[i]);
|
1014
|
+
if(i == fill)
|
1015
|
+
++fill;
|
1016
|
+
}
|
1017
|
+
for (int i = 1; i < fill; ++i)
|
1018
|
+
counter[i].merge(counter[i-1], p);
|
1019
|
+
this->swap(counter[fill-1]);
|
1020
|
+
}
|
1021
|
+
}
|
1022
|
+
|
1023
|
+
//! <b>Effects</b>: This function removes all of x's elements and inserts them
|
1024
|
+
//! in order into *this according to std::less<value_type>. The merge is stable;
|
1025
|
+
//! that is, if an element from *this is equivalent to one from x, then the element
|
1026
|
+
//! from *this will precede the one from x.
|
1027
|
+
//!
|
1028
|
+
//! <b>Throws</b>: If std::less<value_type> throws. Basic guarantee.
|
1029
|
+
//!
|
1030
|
+
//! <b>Complexity</b>: This function is linear time: it performs at most
|
1031
|
+
//! size() + x.size() - 1 comparisons.
|
1032
|
+
//!
|
1033
|
+
//! <b>Note</b>: Iterators and references are not invalidated
|
1034
|
+
void merge(list_impl& x)
|
1035
|
+
{ this->merge(x, std::less<value_type>()); }
|
1036
|
+
|
1037
|
+
//! <b>Requires</b>: p must be a comparison function that induces a strict weak
|
1038
|
+
//! ordering and both *this and x must be sorted according to that ordering
|
1039
|
+
//! The lists x and *this must be distinct.
|
1040
|
+
//!
|
1041
|
+
//! <b>Effects</b>: This function removes all of x's elements and inserts them
|
1042
|
+
//! in order into *this. The merge is stable; that is, if an element from *this is
|
1043
|
+
//! equivalent to one from x, then the element from *this will precede the one from x.
|
1044
|
+
//!
|
1045
|
+
//! <b>Throws</b>: If the predicate throws. Basic guarantee.
|
1046
|
+
//!
|
1047
|
+
//! <b>Complexity</b>: This function is linear time: it performs at most
|
1048
|
+
//! size() + x.size() - 1 comparisons.
|
1049
|
+
//!
|
1050
|
+
//! <b>Note</b>: Iterators and references are not invalidated.
|
1051
|
+
template<class Predicate>
|
1052
|
+
void merge(list_impl& x, Predicate p)
|
1053
|
+
{
|
1054
|
+
const_iterator e(this->cend()), ex(x.cend());
|
1055
|
+
const_iterator b(this->cbegin());
|
1056
|
+
while(!x.empty()){
|
1057
|
+
const_iterator ix(x.cbegin());
|
1058
|
+
while (b != e && !p(*ix, *b)){
|
1059
|
+
++b;
|
1060
|
+
}
|
1061
|
+
if(b == e){
|
1062
|
+
//Now transfer the rest to the end of the container
|
1063
|
+
this->splice(e, x);
|
1064
|
+
break;
|
1065
|
+
}
|
1066
|
+
else{
|
1067
|
+
size_type n(0);
|
1068
|
+
do{
|
1069
|
+
++ix; ++n;
|
1070
|
+
} while(ix != ex && p(*ix, *b));
|
1071
|
+
this->splice(b, x, x.begin(), ix, n);
|
1072
|
+
}
|
1073
|
+
}
|
1074
|
+
}
|
1075
|
+
|
1076
|
+
//! <b>Effects</b>: Reverses the order of elements in the list.
|
1077
|
+
//!
|
1078
|
+
//! <b>Throws</b>: Nothing.
|
1079
|
+
//!
|
1080
|
+
//! <b>Complexity</b>: This function is linear time.
|
1081
|
+
//!
|
1082
|
+
//! <b>Note</b>: Iterators and references are not invalidated
|
1083
|
+
void reverse()
|
1084
|
+
{ node_algorithms::reverse(this->get_root_node()); }
|
1085
|
+
|
1086
|
+
//! <b>Effects</b>: Removes all the elements that compare equal to value.
|
1087
|
+
//! No destructors are called.
|
1088
|
+
//!
|
1089
|
+
//! <b>Throws</b>: If std::equal_to<value_type> throws. Basic guarantee.
|
1090
|
+
//!
|
1091
|
+
//! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
|
1092
|
+
//!
|
1093
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1094
|
+
//! and iterators to elements that are not removed remain valid.
|
1095
|
+
void remove(const_reference value)
|
1096
|
+
{ this->remove_if(detail::equal_to_value<const_reference>(value)); }
|
1097
|
+
|
1098
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
1099
|
+
//!
|
1100
|
+
//! <b>Effects</b>: Removes all the elements that compare equal to value.
|
1101
|
+
//! Disposer::operator()(pointer) is called for every removed element.
|
1102
|
+
//!
|
1103
|
+
//! <b>Throws</b>: If std::equal_to<value_type> throws. Basic guarantee.
|
1104
|
+
//!
|
1105
|
+
//! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
|
1106
|
+
//!
|
1107
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1108
|
+
//! and iterators to elements that are not removed remain valid.
|
1109
|
+
template<class Disposer>
|
1110
|
+
void remove_and_dispose(const_reference value, Disposer disposer)
|
1111
|
+
{ this->remove_and_dispose_if(detail::equal_to_value<const_reference>(value), disposer); }
|
1112
|
+
|
1113
|
+
//! <b>Effects</b>: Removes all the elements for which a specified
|
1114
|
+
//! predicate is satisfied. No destructors are called.
|
1115
|
+
//!
|
1116
|
+
//! <b>Throws</b>: If pred throws. Basic guarantee.
|
1117
|
+
//!
|
1118
|
+
//! <b>Complexity</b>: Linear time. It performs exactly size() calls to the predicate.
|
1119
|
+
//!
|
1120
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1121
|
+
//! and iterators to elements that are not removed remain valid.
|
1122
|
+
template<class Pred>
|
1123
|
+
void remove_if(Pred pred)
|
1124
|
+
{ this->remove_and_dispose_if(pred, detail::null_disposer()); }
|
1125
|
+
|
1126
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
1127
|
+
//!
|
1128
|
+
//! <b>Effects</b>: Removes all the elements for which a specified
|
1129
|
+
//! predicate is satisfied.
|
1130
|
+
//! Disposer::operator()(pointer) is called for every removed element.
|
1131
|
+
//!
|
1132
|
+
//! <b>Throws</b>: If pred throws. Basic guarantee.
|
1133
|
+
//!
|
1134
|
+
//! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
|
1135
|
+
//!
|
1136
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1137
|
+
//! and iterators to elements that are not removed remain valid.
|
1138
|
+
template<class Pred, class Disposer>
|
1139
|
+
void remove_and_dispose_if(Pred pred, Disposer disposer)
|
1140
|
+
{
|
1141
|
+
const_iterator cur(this->cbegin());
|
1142
|
+
const_iterator last(this->cend());
|
1143
|
+
while(cur != last) {
|
1144
|
+
if(pred(*cur)){
|
1145
|
+
cur = this->erase_and_dispose(cur, disposer);
|
1146
|
+
}
|
1147
|
+
else{
|
1148
|
+
++cur;
|
1149
|
+
}
|
1150
|
+
}
|
1151
|
+
}
|
1152
|
+
|
1153
|
+
//! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
|
1154
|
+
//! elements that are equal from the list. No destructors are called.
|
1155
|
+
//!
|
1156
|
+
//! <b>Throws</b>: If std::equal_to<value_type throws. Basic guarantee.
|
1157
|
+
//!
|
1158
|
+
//! <b>Complexity</b>: Linear time (size()-1 comparisons calls to pred()).
|
1159
|
+
//!
|
1160
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1161
|
+
//! and iterators to elements that are not removed remain valid.
|
1162
|
+
void unique()
|
1163
|
+
{ this->unique_and_dispose(std::equal_to<value_type>(), detail::null_disposer()); }
|
1164
|
+
|
1165
|
+
//! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
|
1166
|
+
//! elements that satisfy some binary predicate from the list.
|
1167
|
+
//! No destructors are called.
|
1168
|
+
//!
|
1169
|
+
//! <b>Throws</b>: If pred throws. Basic guarantee.
|
1170
|
+
//!
|
1171
|
+
//! <b>Complexity</b>: Linear time (size()-1 comparisons equality comparisons).
|
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 BinaryPredicate>
|
1176
|
+
void unique(BinaryPredicate pred)
|
1177
|
+
{ this->unique_and_dispose(pred, detail::null_disposer()); }
|
1178
|
+
|
1179
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
1180
|
+
//!
|
1181
|
+
//! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
|
1182
|
+
//! elements that are equal from the list.
|
1183
|
+
//! Disposer::operator()(pointer) is called for every removed element.
|
1184
|
+
//!
|
1185
|
+
//! <b>Throws</b>: If std::equal_to<value_type throws. Basic guarantee.
|
1186
|
+
//!
|
1187
|
+
//! <b>Complexity</b>: Linear time (size()-1) comparisons equality comparisons.
|
1188
|
+
//!
|
1189
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1190
|
+
//! and iterators to elements that are not removed remain valid.
|
1191
|
+
template<class Disposer>
|
1192
|
+
void unique_and_dispose(Disposer disposer)
|
1193
|
+
{ this->unique_and_dispose(std::equal_to<value_type>(), disposer); }
|
1194
|
+
|
1195
|
+
//! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
|
1196
|
+
//!
|
1197
|
+
//! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
|
1198
|
+
//! elements that satisfy some binary predicate from the list.
|
1199
|
+
//! Disposer::operator()(pointer) is called for every removed element.
|
1200
|
+
//!
|
1201
|
+
//! <b>Throws</b>: If pred throws. Basic guarantee.
|
1202
|
+
//!
|
1203
|
+
//! <b>Complexity</b>: Linear time (size()-1) comparisons equality comparisons.
|
1204
|
+
//!
|
1205
|
+
//! <b>Note</b>: The relative order of elements that are not removed is unchanged,
|
1206
|
+
//! and iterators to elements that are not removed remain valid.
|
1207
|
+
template<class BinaryPredicate, class Disposer>
|
1208
|
+
void unique_and_dispose(BinaryPredicate pred, Disposer disposer)
|
1209
|
+
{
|
1210
|
+
const_iterator itend(this->cend());
|
1211
|
+
const_iterator cur(this->cbegin());
|
1212
|
+
|
1213
|
+
if(cur != itend){
|
1214
|
+
const_iterator after(cur);
|
1215
|
+
++after;
|
1216
|
+
while(after != itend){
|
1217
|
+
if(pred(*cur, *after)){
|
1218
|
+
after = this->erase_and_dispose(after, disposer);
|
1219
|
+
}
|
1220
|
+
else{
|
1221
|
+
cur = after;
|
1222
|
+
++after;
|
1223
|
+
}
|
1224
|
+
}
|
1225
|
+
}
|
1226
|
+
}
|
1227
|
+
|
1228
|
+
//! <b>Requires</b>: value must be a reference to a value inserted in a list.
|
1229
|
+
//!
|
1230
|
+
//! <b>Effects</b>: This function returns a const_iterator pointing to the element
|
1231
|
+
//!
|
1232
|
+
//! <b>Throws</b>: Nothing.
|
1233
|
+
//!
|
1234
|
+
//! <b>Complexity</b>: Constant time.
|
1235
|
+
//!
|
1236
|
+
//! <b>Note</b>: Iterators and references are not invalidated.
|
1237
|
+
//! This static function is available only if the <i>value traits</i>
|
1238
|
+
//! is stateless.
|
1239
|
+
static iterator s_iterator_to(reference value)
|
1240
|
+
{
|
1241
|
+
BOOST_STATIC_ASSERT((!stateful_value_traits));
|
1242
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(!node_algorithms::inited(real_value_traits::to_node_ptr(value)));
|
1243
|
+
return iterator(real_value_traits::to_node_ptr(value), 0);
|
1244
|
+
}
|
1245
|
+
|
1246
|
+
//! <b>Requires</b>: value must be a const reference to a value inserted in a list.
|
1247
|
+
//!
|
1248
|
+
//! <b>Effects</b>: This function returns an iterator pointing to the element.
|
1249
|
+
//!
|
1250
|
+
//! <b>Throws</b>: Nothing.
|
1251
|
+
//!
|
1252
|
+
//! <b>Complexity</b>: Constant time.
|
1253
|
+
//!
|
1254
|
+
//! <b>Note</b>: Iterators and references are not invalidated.
|
1255
|
+
//! This static function is available only if the <i>value traits</i>
|
1256
|
+
//! is stateless.
|
1257
|
+
static const_iterator s_iterator_to(const_reference value)
|
1258
|
+
{
|
1259
|
+
BOOST_STATIC_ASSERT((!stateful_value_traits));
|
1260
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(!node_algorithms::inited(real_value_traits::to_node_ptr(const_cast<reference> (value))));
|
1261
|
+
return const_iterator(real_value_traits::to_node_ptr(const_cast<reference> (value)), 0);
|
1262
|
+
}
|
1263
|
+
|
1264
|
+
//! <b>Requires</b>: value must be a reference to a value inserted in a list.
|
1265
|
+
//!
|
1266
|
+
//! <b>Effects</b>: This function returns a const_iterator pointing to the element
|
1267
|
+
//!
|
1268
|
+
//! <b>Throws</b>: Nothing.
|
1269
|
+
//!
|
1270
|
+
//! <b>Complexity</b>: Constant time.
|
1271
|
+
//!
|
1272
|
+
//! <b>Note</b>: Iterators and references are not invalidated.
|
1273
|
+
iterator iterator_to(reference value)
|
1274
|
+
{
|
1275
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(!node_algorithms::inited(real_value_traits::to_node_ptr(value)));
|
1276
|
+
return iterator(real_value_traits::to_node_ptr(value), this);
|
1277
|
+
}
|
1278
|
+
|
1279
|
+
//! <b>Requires</b>: value must be a const reference to a value inserted in a list.
|
1280
|
+
//!
|
1281
|
+
//! <b>Effects</b>: This function returns an iterator pointing to the element.
|
1282
|
+
//!
|
1283
|
+
//! <b>Throws</b>: Nothing.
|
1284
|
+
//!
|
1285
|
+
//! <b>Complexity</b>: Constant time.
|
1286
|
+
//!
|
1287
|
+
//! <b>Note</b>: Iterators and references are not invalidated.
|
1288
|
+
const_iterator iterator_to(const_reference value) const
|
1289
|
+
{
|
1290
|
+
BOOST_INTRUSIVE_INVARIANT_ASSERT(!node_algorithms::inited(real_value_traits::to_node_ptr(const_cast<reference> (value))));
|
1291
|
+
return const_iterator(real_value_traits::to_node_ptr(const_cast<reference> (value)), this);
|
1292
|
+
}
|
1293
|
+
|
1294
|
+
/// @cond
|
1295
|
+
|
1296
|
+
private:
|
1297
|
+
static list_impl &priv_container_from_end_iterator(const const_iterator &end_iterator)
|
1298
|
+
{
|
1299
|
+
root_plus_size *r = detail::parent_from_member<root_plus_size, node>
|
1300
|
+
( boost::intrusive::detail::to_raw_pointer(end_iterator.pointed_node()), &root_plus_size::root_);
|
1301
|
+
data_t *d = detail::parent_from_member<data_t, root_plus_size>
|
1302
|
+
( r, &data_t::root_plus_size_);
|
1303
|
+
list_impl *s = detail::parent_from_member<list_impl, data_t>(d, &list_impl::data_);
|
1304
|
+
return *s;
|
1305
|
+
}
|
1306
|
+
/// @endcond
|
1307
|
+
};
|
1308
|
+
|
1309
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1310
|
+
template<class T, class ...Options>
|
1311
|
+
#else
|
1312
|
+
template<class Config>
|
1313
|
+
#endif
|
1314
|
+
inline bool operator<
|
1315
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1316
|
+
(const list_impl<T, Options...> &x, const list_impl<T, Options...> &y)
|
1317
|
+
#else
|
1318
|
+
(const list_impl<Config> &x, const list_impl<Config> &y)
|
1319
|
+
#endif
|
1320
|
+
{ return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
|
1321
|
+
|
1322
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1323
|
+
template<class T, class ...Options>
|
1324
|
+
#else
|
1325
|
+
template<class Config>
|
1326
|
+
#endif
|
1327
|
+
bool operator==
|
1328
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1329
|
+
(const list_impl<T, Options...> &x, const list_impl<T, Options...> &y)
|
1330
|
+
#else
|
1331
|
+
(const list_impl<Config> &x, const list_impl<Config> &y)
|
1332
|
+
#endif
|
1333
|
+
{
|
1334
|
+
typedef list_impl<Config> list_type;
|
1335
|
+
typedef typename list_type::const_iterator const_iterator;
|
1336
|
+
const bool C = list_type::constant_time_size;
|
1337
|
+
if(C && x.size() != y.size()){
|
1338
|
+
return false;
|
1339
|
+
}
|
1340
|
+
const_iterator end1 = x.end();
|
1341
|
+
|
1342
|
+
const_iterator i1 = x.begin();
|
1343
|
+
const_iterator i2 = y.begin();
|
1344
|
+
if(C){
|
1345
|
+
while (i1 != end1 && *i1 == *i2) {
|
1346
|
+
++i1;
|
1347
|
+
++i2;
|
1348
|
+
}
|
1349
|
+
return i1 == end1;
|
1350
|
+
}
|
1351
|
+
else{
|
1352
|
+
const_iterator end2 = y.end();
|
1353
|
+
while (i1 != end1 && i2 != end2 && *i1 == *i2) {
|
1354
|
+
++i1;
|
1355
|
+
++i2;
|
1356
|
+
}
|
1357
|
+
return i1 == end1 && i2 == end2;
|
1358
|
+
}
|
1359
|
+
}
|
1360
|
+
|
1361
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1362
|
+
template<class T, class ...Options>
|
1363
|
+
#else
|
1364
|
+
template<class Config>
|
1365
|
+
#endif
|
1366
|
+
inline bool operator!=
|
1367
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1368
|
+
(const list_impl<T, Options...> &x, const list_impl<T, Options...> &y)
|
1369
|
+
#else
|
1370
|
+
(const list_impl<Config> &x, const list_impl<Config> &y)
|
1371
|
+
#endif
|
1372
|
+
{ return !(x == y); }
|
1373
|
+
|
1374
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1375
|
+
template<class T, class ...Options>
|
1376
|
+
#else
|
1377
|
+
template<class Config>
|
1378
|
+
#endif
|
1379
|
+
inline bool operator>
|
1380
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1381
|
+
(const list_impl<T, Options...> &x, const list_impl<T, Options...> &y)
|
1382
|
+
#else
|
1383
|
+
(const list_impl<Config> &x, const list_impl<Config> &y)
|
1384
|
+
#endif
|
1385
|
+
{ return y < x; }
|
1386
|
+
|
1387
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1388
|
+
template<class T, class ...Options>
|
1389
|
+
#else
|
1390
|
+
template<class Config>
|
1391
|
+
#endif
|
1392
|
+
inline bool operator<=
|
1393
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1394
|
+
(const list_impl<T, Options...> &x, const list_impl<T, Options...> &y)
|
1395
|
+
#else
|
1396
|
+
(const list_impl<Config> &x, const list_impl<Config> &y)
|
1397
|
+
#endif
|
1398
|
+
{ return !(y < x); }
|
1399
|
+
|
1400
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1401
|
+
template<class T, class ...Options>
|
1402
|
+
#else
|
1403
|
+
template<class Config>
|
1404
|
+
#endif
|
1405
|
+
inline bool operator>=
|
1406
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1407
|
+
(const list_impl<T, Options...> &x, const list_impl<T, Options...> &y)
|
1408
|
+
#else
|
1409
|
+
(const list_impl<Config> &x, const list_impl<Config> &y)
|
1410
|
+
#endif
|
1411
|
+
{ return !(x < y); }
|
1412
|
+
|
1413
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1414
|
+
template<class T, class ...Options>
|
1415
|
+
#else
|
1416
|
+
template<class Config>
|
1417
|
+
#endif
|
1418
|
+
inline void swap
|
1419
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
|
1420
|
+
(list_impl<T, Options...> &x, list_impl<T, Options...> &y)
|
1421
|
+
#else
|
1422
|
+
(list_impl<Config> &x, list_impl<Config> &y)
|
1423
|
+
#endif
|
1424
|
+
{ x.swap(y); }
|
1425
|
+
|
1426
|
+
//! Helper metafunction to define a \c list that yields to the same type when the
|
1427
|
+
//! same options (either explicitly or implicitly) are used.
|
1428
|
+
#if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
|
1429
|
+
template<class T, class ...Options>
|
1430
|
+
#else
|
1431
|
+
template<class T, class O1 = none, class O2 = none, class O3 = none>
|
1432
|
+
#endif
|
1433
|
+
struct make_list
|
1434
|
+
{
|
1435
|
+
/// @cond
|
1436
|
+
typedef typename pack_options
|
1437
|
+
< list_defaults<T>,
|
1438
|
+
#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
|
1439
|
+
O1, O2, O3
|
1440
|
+
#else
|
1441
|
+
Options...
|
1442
|
+
#endif
|
1443
|
+
>::type packed_options;
|
1444
|
+
|
1445
|
+
typedef typename detail::get_value_traits
|
1446
|
+
<T, typename packed_options::value_traits>::type value_traits;
|
1447
|
+
|
1448
|
+
typedef list_impl
|
1449
|
+
<
|
1450
|
+
listopt
|
1451
|
+
< value_traits
|
1452
|
+
, typename packed_options::size_type
|
1453
|
+
, packed_options::constant_time_size
|
1454
|
+
>
|
1455
|
+
> implementation_defined;
|
1456
|
+
/// @endcond
|
1457
|
+
typedef implementation_defined type;
|
1458
|
+
};
|
1459
|
+
|
1460
|
+
|
1461
|
+
#ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
|
1462
|
+
|
1463
|
+
#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
|
1464
|
+
template<class T, class O1, class O2, class O3>
|
1465
|
+
#else
|
1466
|
+
template<class T, class ...Options>
|
1467
|
+
#endif
|
1468
|
+
class list
|
1469
|
+
: public make_list<T,
|
1470
|
+
#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
|
1471
|
+
O1, O2, O3
|
1472
|
+
#else
|
1473
|
+
Options...
|
1474
|
+
#endif
|
1475
|
+
>::type
|
1476
|
+
{
|
1477
|
+
typedef typename make_list
|
1478
|
+
<T,
|
1479
|
+
#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
|
1480
|
+
O1, O2, O3
|
1481
|
+
#else
|
1482
|
+
Options...
|
1483
|
+
#endif
|
1484
|
+
>::type Base;
|
1485
|
+
typedef typename Base::real_value_traits real_value_traits;
|
1486
|
+
//Assert if passed value traits are compatible with the type
|
1487
|
+
BOOST_STATIC_ASSERT((detail::is_same<typename real_value_traits::value_type, T>::value));
|
1488
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(list)
|
1489
|
+
|
1490
|
+
public:
|
1491
|
+
typedef typename Base::value_traits value_traits;
|
1492
|
+
typedef typename Base::iterator iterator;
|
1493
|
+
typedef typename Base::const_iterator const_iterator;
|
1494
|
+
|
1495
|
+
list(const value_traits &v_traits = value_traits())
|
1496
|
+
: Base(v_traits)
|
1497
|
+
{}
|
1498
|
+
|
1499
|
+
template<class Iterator>
|
1500
|
+
list(Iterator b, Iterator e, const value_traits &v_traits = value_traits())
|
1501
|
+
: Base(b, e, v_traits)
|
1502
|
+
{}
|
1503
|
+
|
1504
|
+
list(BOOST_RV_REF(list) x)
|
1505
|
+
: Base(::boost::move(static_cast<Base&>(x)))
|
1506
|
+
{}
|
1507
|
+
|
1508
|
+
list& operator=(BOOST_RV_REF(list) x)
|
1509
|
+
{ this->Base::operator=(::boost::move(static_cast<Base&>(x))); return *this; }
|
1510
|
+
|
1511
|
+
static list &container_from_end_iterator(iterator end_iterator)
|
1512
|
+
{ return static_cast<list &>(Base::container_from_end_iterator(end_iterator)); }
|
1513
|
+
|
1514
|
+
static const list &container_from_end_iterator(const_iterator end_iterator)
|
1515
|
+
{ return static_cast<const list &>(Base::container_from_end_iterator(end_iterator)); }
|
1516
|
+
};
|
1517
|
+
|
1518
|
+
#endif
|
1519
|
+
|
1520
|
+
} //namespace intrusive
|
1521
|
+
} //namespace boost
|
1522
|
+
|
1523
|
+
#include <boost/intrusive/detail/config_end.hpp>
|
1524
|
+
|
1525
|
+
#endif //BOOST_INTRUSIVE_LIST_HPP
|