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,1869 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
//
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
8
|
+
//
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
10
|
+
// Stable vector.
|
11
|
+
//
|
12
|
+
// Copyright 2008 Joaquin M Lopez Munoz.
|
13
|
+
// Distributed under the Boost Software License, Version 1.0.
|
14
|
+
// (See accompanying file LICENSE_1_0.txt or copy at
|
15
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
16
|
+
//
|
17
|
+
//////////////////////////////////////////////////////////////////////////////
|
18
|
+
|
19
|
+
#ifndef BOOST_CONTAINER_STABLE_VECTOR_HPP
|
20
|
+
#define BOOST_CONTAINER_STABLE_VECTOR_HPP
|
21
|
+
|
22
|
+
#if (defined _MSC_VER) && (_MSC_VER >= 1200)
|
23
|
+
# pragma once
|
24
|
+
#endif
|
25
|
+
|
26
|
+
#include <boost/container/detail/config_begin.hpp>
|
27
|
+
#include <boost/container/detail/workaround.hpp>
|
28
|
+
#include <boost/container/container_fwd.hpp>
|
29
|
+
#include <boost/mpl/bool.hpp>
|
30
|
+
#include <boost/mpl/not.hpp>
|
31
|
+
#include <boost/assert.hpp>
|
32
|
+
#include <boost/container/throw_exception.hpp>
|
33
|
+
#include <boost/container/detail/allocator_version_traits.hpp>
|
34
|
+
#include <boost/container/detail/utilities.hpp>
|
35
|
+
#include <boost/container/detail/iterators.hpp>
|
36
|
+
#include <boost/container/detail/algorithms.hpp>
|
37
|
+
#include <boost/container/allocator_traits.hpp>
|
38
|
+
#include <boost/container/throw_exception.hpp>
|
39
|
+
#include <boost/intrusive/pointer_traits.hpp>
|
40
|
+
#include <boost/detail/no_exceptions_support.hpp>
|
41
|
+
#include <boost/aligned_storage.hpp>
|
42
|
+
#include <boost/move/utility.hpp>
|
43
|
+
#include <boost/move/iterator.hpp>
|
44
|
+
#include <boost/move/detail/move_helpers.hpp>
|
45
|
+
#include <algorithm> //max
|
46
|
+
|
47
|
+
#include <memory>
|
48
|
+
#include <new> //placement new
|
49
|
+
|
50
|
+
///@cond
|
51
|
+
|
52
|
+
#include <boost/container/vector.hpp>
|
53
|
+
|
54
|
+
//#define STABLE_VECTOR_ENABLE_INVARIANT_CHECKING
|
55
|
+
|
56
|
+
///@endcond
|
57
|
+
|
58
|
+
namespace boost {
|
59
|
+
namespace container {
|
60
|
+
|
61
|
+
///@cond
|
62
|
+
|
63
|
+
namespace stable_vector_detail{
|
64
|
+
|
65
|
+
template <class C>
|
66
|
+
class clear_on_destroy
|
67
|
+
{
|
68
|
+
public:
|
69
|
+
clear_on_destroy(C &c)
|
70
|
+
: c_(c), do_clear_(true)
|
71
|
+
{}
|
72
|
+
|
73
|
+
void release()
|
74
|
+
{ do_clear_ = false; }
|
75
|
+
|
76
|
+
~clear_on_destroy()
|
77
|
+
{
|
78
|
+
if(do_clear_){
|
79
|
+
c_.clear();
|
80
|
+
c_.priv_clear_pool();
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
private:
|
85
|
+
clear_on_destroy(const clear_on_destroy &);
|
86
|
+
clear_on_destroy &operator=(const clear_on_destroy &);
|
87
|
+
C &c_;
|
88
|
+
bool do_clear_;
|
89
|
+
};
|
90
|
+
|
91
|
+
template<typename VoidPointer, typename T>
|
92
|
+
struct node;
|
93
|
+
|
94
|
+
template<class VoidPtr>
|
95
|
+
struct node_base
|
96
|
+
{
|
97
|
+
private:
|
98
|
+
typedef typename boost::intrusive::
|
99
|
+
pointer_traits<VoidPtr> void_ptr_traits;
|
100
|
+
typedef typename void_ptr_traits::
|
101
|
+
template rebind_pointer
|
102
|
+
<node_base>::type node_base_ptr;
|
103
|
+
typedef typename void_ptr_traits::
|
104
|
+
template rebind_pointer
|
105
|
+
<node_base_ptr>::type node_base_ptr_ptr;
|
106
|
+
|
107
|
+
public:
|
108
|
+
node_base(const node_base_ptr_ptr &n)
|
109
|
+
: up(n)
|
110
|
+
{}
|
111
|
+
|
112
|
+
node_base()
|
113
|
+
: up()
|
114
|
+
{}
|
115
|
+
|
116
|
+
node_base_ptr_ptr up;
|
117
|
+
};
|
118
|
+
|
119
|
+
template<typename VoidPointer, typename T>
|
120
|
+
struct node
|
121
|
+
: public node_base<VoidPointer>
|
122
|
+
{
|
123
|
+
private:
|
124
|
+
node();
|
125
|
+
|
126
|
+
public:
|
127
|
+
T value;
|
128
|
+
};
|
129
|
+
|
130
|
+
template<typename T, typename Reference, typename Pointer>
|
131
|
+
class iterator
|
132
|
+
: public std::iterator< std::random_access_iterator_tag
|
133
|
+
, T
|
134
|
+
, typename boost::intrusive::
|
135
|
+
pointer_traits<Pointer>::difference_type
|
136
|
+
, Pointer
|
137
|
+
, Reference>
|
138
|
+
{
|
139
|
+
typedef boost::intrusive::
|
140
|
+
pointer_traits<Pointer> ptr_traits;
|
141
|
+
typedef typename ptr_traits::template
|
142
|
+
rebind_pointer<void>::type void_ptr;
|
143
|
+
typedef node<void_ptr, T> node_type;
|
144
|
+
typedef node_base<void_ptr> node_base_type;
|
145
|
+
typedef typename ptr_traits::template
|
146
|
+
rebind_pointer<node_type>::type node_ptr;
|
147
|
+
typedef boost::intrusive::
|
148
|
+
pointer_traits<node_ptr> node_ptr_traits;
|
149
|
+
typedef typename ptr_traits::template
|
150
|
+
rebind_pointer<node_base_type>::type node_base_ptr;
|
151
|
+
typedef typename ptr_traits::template
|
152
|
+
rebind_pointer<node_base_ptr>::type node_base_ptr_ptr;
|
153
|
+
typedef typename ptr_traits::template
|
154
|
+
rebind_pointer<T>::type friend_iterator_pointer;
|
155
|
+
|
156
|
+
friend class iterator<T, const T, friend_iterator_pointer>;
|
157
|
+
|
158
|
+
public:
|
159
|
+
typedef std::random_access_iterator_tag iterator_category;
|
160
|
+
typedef T value_type;
|
161
|
+
typedef typename ptr_traits::difference_type difference_type;
|
162
|
+
typedef Pointer pointer;
|
163
|
+
typedef Reference reference;
|
164
|
+
|
165
|
+
iterator()
|
166
|
+
{}
|
167
|
+
|
168
|
+
explicit iterator(node_ptr p)
|
169
|
+
: pn(p)
|
170
|
+
{}
|
171
|
+
|
172
|
+
iterator(const iterator<T, T&, friend_iterator_pointer>& x)
|
173
|
+
: pn(x.pn)
|
174
|
+
{}
|
175
|
+
|
176
|
+
node_ptr &node_pointer()
|
177
|
+
{ return pn; }
|
178
|
+
|
179
|
+
const node_ptr &node_pointer() const
|
180
|
+
{ return pn; }
|
181
|
+
|
182
|
+
public:
|
183
|
+
//Pointer like operators
|
184
|
+
reference operator*() const
|
185
|
+
{ return pn->value; }
|
186
|
+
|
187
|
+
pointer operator->() const
|
188
|
+
{ return ptr_traits::pointer_to(this->operator*()); }
|
189
|
+
|
190
|
+
//Increment / Decrement
|
191
|
+
iterator& operator++()
|
192
|
+
{
|
193
|
+
if(node_base_ptr_ptr p = this->pn->up){
|
194
|
+
++p;
|
195
|
+
this->pn = node_ptr_traits::static_cast_from(*p);
|
196
|
+
}
|
197
|
+
return *this;
|
198
|
+
}
|
199
|
+
|
200
|
+
iterator operator++(int)
|
201
|
+
{ iterator tmp(*this); ++*this; return iterator(tmp); }
|
202
|
+
|
203
|
+
iterator& operator--()
|
204
|
+
{
|
205
|
+
if(node_base_ptr_ptr p = this->pn->up){
|
206
|
+
--p;
|
207
|
+
this->pn = node_ptr_traits::static_cast_from(*p);
|
208
|
+
}
|
209
|
+
return *this;
|
210
|
+
}
|
211
|
+
|
212
|
+
iterator operator--(int)
|
213
|
+
{ iterator tmp(*this); --*this; return iterator(tmp); }
|
214
|
+
|
215
|
+
reference operator[](difference_type off) const
|
216
|
+
{
|
217
|
+
iterator tmp(*this);
|
218
|
+
tmp += off;
|
219
|
+
return *tmp;
|
220
|
+
}
|
221
|
+
|
222
|
+
iterator& operator+=(difference_type off)
|
223
|
+
{
|
224
|
+
if(node_base_ptr_ptr p = this->pn->up){
|
225
|
+
p += off;
|
226
|
+
this->pn = node_ptr_traits::static_cast_from(*p);
|
227
|
+
}
|
228
|
+
return *this;
|
229
|
+
}
|
230
|
+
|
231
|
+
friend iterator operator+(const iterator &left, difference_type off)
|
232
|
+
{
|
233
|
+
iterator tmp(left);
|
234
|
+
tmp += off;
|
235
|
+
return tmp;
|
236
|
+
}
|
237
|
+
|
238
|
+
friend iterator operator+(difference_type off, const iterator& right)
|
239
|
+
{
|
240
|
+
iterator tmp(right);
|
241
|
+
tmp += off;
|
242
|
+
return tmp;
|
243
|
+
}
|
244
|
+
|
245
|
+
iterator& operator-=(difference_type off)
|
246
|
+
{ *this += -off; return *this; }
|
247
|
+
|
248
|
+
friend iterator operator-(const iterator &left, difference_type off)
|
249
|
+
{
|
250
|
+
iterator tmp(left);
|
251
|
+
tmp -= off;
|
252
|
+
return tmp;
|
253
|
+
}
|
254
|
+
|
255
|
+
friend difference_type operator-(const iterator& left, const iterator& right)
|
256
|
+
{
|
257
|
+
return left.pn->up - right.pn->up;
|
258
|
+
}
|
259
|
+
|
260
|
+
//Comparison operators
|
261
|
+
friend bool operator== (const iterator& l, const iterator& r)
|
262
|
+
{ return l.pn == r.pn; }
|
263
|
+
|
264
|
+
friend bool operator!= (const iterator& l, const iterator& r)
|
265
|
+
{ return l.pn != r.pn; }
|
266
|
+
|
267
|
+
friend bool operator< (const iterator& l, const iterator& r)
|
268
|
+
{ return l.pn->up < r.pn->up; }
|
269
|
+
|
270
|
+
friend bool operator<= (const iterator& l, const iterator& r)
|
271
|
+
{ return l.pn->up <= r.pn->up; }
|
272
|
+
|
273
|
+
friend bool operator> (const iterator& l, const iterator& r)
|
274
|
+
{ return l.pn->up > r.pn->up; }
|
275
|
+
|
276
|
+
friend bool operator>= (const iterator& l, const iterator& r)
|
277
|
+
{ return l.pn->up >= r.pn->up; }
|
278
|
+
|
279
|
+
node_ptr pn;
|
280
|
+
};
|
281
|
+
|
282
|
+
template<class VoidPtr, class VoidAllocator>
|
283
|
+
struct index_traits
|
284
|
+
{
|
285
|
+
typedef boost::intrusive::
|
286
|
+
pointer_traits
|
287
|
+
<VoidPtr> void_ptr_traits;
|
288
|
+
typedef stable_vector_detail::
|
289
|
+
node_base<VoidPtr> node_base_type;
|
290
|
+
typedef typename void_ptr_traits::template
|
291
|
+
rebind_pointer<node_base_type>::type node_base_ptr;
|
292
|
+
typedef typename void_ptr_traits::template
|
293
|
+
rebind_pointer<node_base_ptr>::type node_base_ptr_ptr;
|
294
|
+
typedef boost::intrusive::
|
295
|
+
pointer_traits<node_base_ptr> node_base_ptr_traits;
|
296
|
+
typedef boost::intrusive::
|
297
|
+
pointer_traits<node_base_ptr_ptr> node_base_ptr_ptr_traits;
|
298
|
+
typedef typename allocator_traits<VoidAllocator>::
|
299
|
+
template portable_rebind_alloc
|
300
|
+
<node_base_ptr>::type node_base_ptr_allocator;
|
301
|
+
typedef ::boost::container::vector
|
302
|
+
<node_base_ptr, node_base_ptr_allocator> index_type;
|
303
|
+
typedef typename index_type::iterator index_iterator;
|
304
|
+
typedef typename index_type::const_iterator const_index_iterator;
|
305
|
+
typedef typename index_type::size_type size_type;
|
306
|
+
|
307
|
+
static const size_type ExtraPointers = 3;
|
308
|
+
//Stable vector stores metadata at the end of the index (node_base_ptr vector) with additional 3 pointers:
|
309
|
+
// back() is this->index.back() - ExtraPointers;
|
310
|
+
// end node index is *(this->index.end() - 3)
|
311
|
+
// Node cache first is *(this->index.end() - 2);
|
312
|
+
// Node cache last is this->index.back();
|
313
|
+
|
314
|
+
static node_base_ptr_ptr ptr_to_node_base_ptr(node_base_ptr &n)
|
315
|
+
{ return node_base_ptr_ptr_traits::pointer_to(n); }
|
316
|
+
|
317
|
+
static void fix_up_pointers(index_iterator first, index_iterator last)
|
318
|
+
{
|
319
|
+
while(first != last){
|
320
|
+
typedef typename index_type::reference node_base_ptr_ref;
|
321
|
+
node_base_ptr_ref nbp = *first;
|
322
|
+
nbp->up = index_traits::ptr_to_node_base_ptr(nbp);
|
323
|
+
++first;
|
324
|
+
}
|
325
|
+
}
|
326
|
+
|
327
|
+
static index_iterator get_fix_up_end(index_type &index)
|
328
|
+
{ return index.end() - (ExtraPointers - 1); }
|
329
|
+
|
330
|
+
static void fix_up_pointers_from(index_type & index, index_iterator first)
|
331
|
+
{ index_traits::fix_up_pointers(first, index_traits::get_fix_up_end(index)); }
|
332
|
+
|
333
|
+
static void readjust_end_node(index_type &index, node_base_type &end_node)
|
334
|
+
{
|
335
|
+
if(!index.empty()){
|
336
|
+
index_iterator end_node_it(index_traits::get_fix_up_end(index));
|
337
|
+
node_base_ptr &end_node_idx_ref = *(--end_node_it);
|
338
|
+
end_node_idx_ref = node_base_ptr_traits::pointer_to(end_node);
|
339
|
+
end_node.up = node_base_ptr_ptr_traits::pointer_to(end_node_idx_ref);
|
340
|
+
}
|
341
|
+
else{
|
342
|
+
end_node.up = node_base_ptr_ptr();
|
343
|
+
}
|
344
|
+
}
|
345
|
+
|
346
|
+
static void initialize_end_node(index_type &index, node_base_type &end_node, const size_type index_capacity_if_empty)
|
347
|
+
{
|
348
|
+
if(index.empty()){
|
349
|
+
index.reserve(index_capacity_if_empty + ExtraPointers);
|
350
|
+
index.resize(ExtraPointers);
|
351
|
+
node_base_ptr &end_node_ref = *index.data();
|
352
|
+
end_node_ref = node_base_ptr_traits::pointer_to(end_node);
|
353
|
+
end_node.up = index_traits::ptr_to_node_base_ptr(end_node_ref);
|
354
|
+
}
|
355
|
+
}
|
356
|
+
|
357
|
+
|
358
|
+
#ifdef STABLE_VECTOR_ENABLE_INVARIANT_CHECKING
|
359
|
+
static bool invariants(index_type &index)
|
360
|
+
{
|
361
|
+
for( index_iterator it = index.begin()
|
362
|
+
, it_end = index_traits::get_fix_up_end(index)
|
363
|
+
; it != it_end
|
364
|
+
; ++it){
|
365
|
+
if((*it)->up != index_traits::ptr_to_node_base_ptr(*it)){
|
366
|
+
return false;
|
367
|
+
}
|
368
|
+
}
|
369
|
+
return true;
|
370
|
+
}
|
371
|
+
#endif //STABLE_VECTOR_ENABLE_INVARIANT_CHECKING
|
372
|
+
};
|
373
|
+
|
374
|
+
} //namespace stable_vector_detail
|
375
|
+
|
376
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
377
|
+
|
378
|
+
#if defined(STABLE_VECTOR_ENABLE_INVARIANT_CHECKING)
|
379
|
+
|
380
|
+
#define STABLE_VECTOR_CHECK_INVARIANT \
|
381
|
+
invariant_checker BOOST_JOIN(check_invariant_,__LINE__)(*this); \
|
382
|
+
BOOST_JOIN(check_invariant_,__LINE__).touch();
|
383
|
+
|
384
|
+
#else //STABLE_VECTOR_ENABLE_INVARIANT_CHECKING
|
385
|
+
|
386
|
+
#define STABLE_VECTOR_CHECK_INVARIANT
|
387
|
+
|
388
|
+
#endif //#if defined(STABLE_VECTOR_ENABLE_INVARIANT_CHECKING)
|
389
|
+
|
390
|
+
#endif //#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
391
|
+
|
392
|
+
/// @endcond
|
393
|
+
|
394
|
+
//! Originally developed by Joaquin M. Lopez Munoz, stable_vector is a std::vector
|
395
|
+
//! drop-in replacement implemented as a node container, offering iterator and reference
|
396
|
+
//! stability.
|
397
|
+
//!
|
398
|
+
//! Here are the details taken from the author's blog
|
399
|
+
//! (<a href="http://bannalia.blogspot.com/2008/09/introducing-stablevector.html" >
|
400
|
+
//! Introducing stable_vector</a>):
|
401
|
+
//!
|
402
|
+
//! We present stable_vector, a fully STL-compliant stable container that provides
|
403
|
+
//! most of the features of std::vector except element contiguity.
|
404
|
+
//!
|
405
|
+
//! General properties: stable_vector satisfies all the requirements of a container,
|
406
|
+
//! a reversible container and a sequence and provides all the optional operations
|
407
|
+
//! present in std::vector. Like std::vector, iterators are random access.
|
408
|
+
//! stable_vector does not provide element contiguity; in exchange for this absence,
|
409
|
+
//! the container is stable, i.e. references and iterators to an element of a stable_vector
|
410
|
+
//! remain valid as long as the element is not erased, and an iterator that has been
|
411
|
+
//! assigned the return value of end() always remain valid until the destruction of
|
412
|
+
//! the associated stable_vector.
|
413
|
+
//!
|
414
|
+
//! Operation complexity: The big-O complexities of stable_vector operations match
|
415
|
+
//! exactly those of std::vector. In general, insertion/deletion is constant time at
|
416
|
+
//! the end of the sequence and linear elsewhere. Unlike std::vector, stable_vector
|
417
|
+
//! does not internally perform any value_type destruction, copy or assignment
|
418
|
+
//! operations other than those exactly corresponding to the insertion of new
|
419
|
+
//! elements or deletion of stored elements, which can sometimes compensate in terms
|
420
|
+
//! of performance for the extra burden of doing more pointer manipulation and an
|
421
|
+
//! additional allocation per element.
|
422
|
+
//!
|
423
|
+
//! Exception safety: As stable_vector does not internally copy elements around, some
|
424
|
+
//! operations provide stronger exception safety guarantees than in std::vector.
|
425
|
+
#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
|
426
|
+
template <class T, class Allocator = std::allocator<T> >
|
427
|
+
#else
|
428
|
+
template <class T, class Allocator>
|
429
|
+
#endif
|
430
|
+
class stable_vector
|
431
|
+
{
|
432
|
+
///@cond
|
433
|
+
typedef allocator_traits<Allocator> allocator_traits_type;
|
434
|
+
typedef typename boost::intrusive::pointer_traits
|
435
|
+
<typename allocator_traits_type::pointer>::
|
436
|
+
template rebind_pointer<void>::type void_ptr;
|
437
|
+
typedef typename allocator_traits_type::
|
438
|
+
template portable_rebind_alloc
|
439
|
+
<void>::type void_allocator_type;
|
440
|
+
typedef stable_vector_detail::index_traits
|
441
|
+
<void_ptr, void_allocator_type> index_traits_type;
|
442
|
+
typedef typename index_traits_type::node_base_type node_base_type;
|
443
|
+
typedef typename index_traits_type::node_base_ptr node_base_ptr;
|
444
|
+
typedef typename index_traits_type::
|
445
|
+
node_base_ptr_ptr node_base_ptr_ptr;
|
446
|
+
typedef typename index_traits_type::
|
447
|
+
node_base_ptr_traits node_base_ptr_traits;
|
448
|
+
typedef typename index_traits_type::
|
449
|
+
node_base_ptr_ptr_traits node_base_ptr_ptr_traits;
|
450
|
+
typedef typename index_traits_type::index_type index_type;
|
451
|
+
typedef typename index_traits_type::index_iterator index_iterator;
|
452
|
+
typedef typename index_traits_type::
|
453
|
+
const_index_iterator const_index_iterator;
|
454
|
+
typedef boost::intrusive::
|
455
|
+
pointer_traits
|
456
|
+
<typename allocator_traits_type::pointer> ptr_traits;
|
457
|
+
typedef stable_vector_detail::node<void_ptr, T> node_type;
|
458
|
+
typedef typename ptr_traits::template
|
459
|
+
rebind_pointer<node_type>::type node_ptr;
|
460
|
+
typedef boost::intrusive::
|
461
|
+
pointer_traits<node_ptr> node_ptr_traits;
|
462
|
+
typedef typename ptr_traits::template
|
463
|
+
rebind_pointer<const node_type>::type const_node_ptr;
|
464
|
+
typedef boost::intrusive::
|
465
|
+
pointer_traits<const_node_ptr> const_node_ptr_traits;
|
466
|
+
typedef typename node_ptr_traits::reference node_reference;
|
467
|
+
typedef typename const_node_ptr_traits::reference const_node_reference;
|
468
|
+
|
469
|
+
typedef ::boost::container::container_detail::
|
470
|
+
integral_constant<unsigned, 1> allocator_v1;
|
471
|
+
typedef ::boost::container::container_detail::
|
472
|
+
integral_constant<unsigned, 2> allocator_v2;
|
473
|
+
typedef ::boost::container::container_detail::integral_constant
|
474
|
+
<unsigned, boost::container::container_detail::
|
475
|
+
version<Allocator>::value> alloc_version;
|
476
|
+
typedef typename allocator_traits_type::
|
477
|
+
template portable_rebind_alloc
|
478
|
+
<node_type>::type node_allocator_type;
|
479
|
+
|
480
|
+
typedef ::boost::container::container_detail::
|
481
|
+
allocator_version_traits<node_allocator_type> allocator_version_traits_t;
|
482
|
+
typedef typename allocator_version_traits_t::multiallocation_chain multiallocation_chain;
|
483
|
+
|
484
|
+
node_ptr allocate_one()
|
485
|
+
{ return allocator_version_traits_t::allocate_one(this->priv_node_alloc()); }
|
486
|
+
|
487
|
+
void deallocate_one(const node_ptr &p)
|
488
|
+
{ allocator_version_traits_t::deallocate_one(this->priv_node_alloc(), p); }
|
489
|
+
|
490
|
+
void allocate_individual(typename allocator_traits_type::size_type n, multiallocation_chain &m)
|
491
|
+
{ allocator_version_traits_t::allocate_individual(this->priv_node_alloc(), n, m); }
|
492
|
+
|
493
|
+
void deallocate_individual(multiallocation_chain &holder)
|
494
|
+
{ allocator_version_traits_t::deallocate_individual(this->priv_node_alloc(), holder); }
|
495
|
+
|
496
|
+
friend class stable_vector_detail::clear_on_destroy<stable_vector>;
|
497
|
+
typedef stable_vector_detail::iterator
|
498
|
+
< T
|
499
|
+
, typename allocator_traits<Allocator>::reference
|
500
|
+
, typename allocator_traits<Allocator>::pointer> iterator_impl;
|
501
|
+
typedef stable_vector_detail::iterator
|
502
|
+
< T
|
503
|
+
, typename allocator_traits<Allocator>::const_reference
|
504
|
+
, typename allocator_traits<Allocator>::const_pointer> const_iterator_impl;
|
505
|
+
///@endcond
|
506
|
+
public:
|
507
|
+
|
508
|
+
//////////////////////////////////////////////
|
509
|
+
//
|
510
|
+
// types
|
511
|
+
//
|
512
|
+
//////////////////////////////////////////////
|
513
|
+
typedef T value_type;
|
514
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
515
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
|
516
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::reference reference;
|
517
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::const_reference const_reference;
|
518
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::size_type size_type;
|
519
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
|
520
|
+
typedef Allocator allocator_type;
|
521
|
+
typedef node_allocator_type stored_allocator_type;
|
522
|
+
typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator;
|
523
|
+
typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator;
|
524
|
+
typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<iterator>) reverse_iterator;
|
525
|
+
typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<const_iterator>) const_reverse_iterator;
|
526
|
+
|
527
|
+
///@cond
|
528
|
+
private:
|
529
|
+
BOOST_COPYABLE_AND_MOVABLE(stable_vector)
|
530
|
+
static const size_type ExtraPointers = index_traits_type::ExtraPointers;
|
531
|
+
|
532
|
+
class insert_rollback;
|
533
|
+
friend class insert_rollback;
|
534
|
+
|
535
|
+
class push_back_rollback;
|
536
|
+
friend class push_back_rollback;
|
537
|
+
///@endcond
|
538
|
+
|
539
|
+
public:
|
540
|
+
//////////////////////////////////////////////
|
541
|
+
//
|
542
|
+
// construct/copy/destroy
|
543
|
+
//
|
544
|
+
//////////////////////////////////////////////
|
545
|
+
|
546
|
+
//! <b>Effects</b>: Default constructs a stable_vector.
|
547
|
+
//!
|
548
|
+
//! <b>Throws</b>: If allocator_type's default constructor throws.
|
549
|
+
//!
|
550
|
+
//! <b>Complexity</b>: Constant.
|
551
|
+
stable_vector()
|
552
|
+
: internal_data(), index()
|
553
|
+
{
|
554
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
555
|
+
}
|
556
|
+
|
557
|
+
//! <b>Effects</b>: Constructs a stable_vector taking the allocator as parameter.
|
558
|
+
//!
|
559
|
+
//! <b>Throws</b>: Nothing
|
560
|
+
//!
|
561
|
+
//! <b>Complexity</b>: Constant.
|
562
|
+
explicit stable_vector(const allocator_type& al) BOOST_CONTAINER_NOEXCEPT
|
563
|
+
: internal_data(al), index(al)
|
564
|
+
{
|
565
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
566
|
+
}
|
567
|
+
|
568
|
+
//! <b>Effects</b>: Constructs a stable_vector that will use a copy of allocator a
|
569
|
+
//! and inserts n default contructed values.
|
570
|
+
//!
|
571
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor
|
572
|
+
//! throws or T's default or copy constructor throws.
|
573
|
+
//!
|
574
|
+
//! <b>Complexity</b>: Linear to n.
|
575
|
+
explicit stable_vector(size_type n)
|
576
|
+
: internal_data(), index()
|
577
|
+
{
|
578
|
+
stable_vector_detail::clear_on_destroy<stable_vector> cod(*this);
|
579
|
+
this->resize(n);
|
580
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
581
|
+
cod.release();
|
582
|
+
}
|
583
|
+
|
584
|
+
//! <b>Effects</b>: Constructs a stable_vector that will use a copy of allocator a
|
585
|
+
//! and inserts n copies of value.
|
586
|
+
//!
|
587
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor
|
588
|
+
//! throws or T's default or copy constructor throws.
|
589
|
+
//!
|
590
|
+
//! <b>Complexity</b>: Linear to n.
|
591
|
+
stable_vector(size_type n, const T& t, const allocator_type& al = allocator_type())
|
592
|
+
: internal_data(al), index(al)
|
593
|
+
{
|
594
|
+
stable_vector_detail::clear_on_destroy<stable_vector> cod(*this);
|
595
|
+
this->insert(this->cend(), n, t);
|
596
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
597
|
+
cod.release();
|
598
|
+
}
|
599
|
+
|
600
|
+
//! <b>Effects</b>: Constructs a stable_vector that will use a copy of allocator a
|
601
|
+
//! and inserts a copy of the range [first, last) in the stable_vector.
|
602
|
+
//!
|
603
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor
|
604
|
+
//! throws or T's constructor taking an dereferenced InIt throws.
|
605
|
+
//!
|
606
|
+
//! <b>Complexity</b>: Linear to the range [first, last).
|
607
|
+
template <class InputIterator>
|
608
|
+
stable_vector(InputIterator first,InputIterator last, const allocator_type& al = allocator_type())
|
609
|
+
: internal_data(al), index(al)
|
610
|
+
{
|
611
|
+
stable_vector_detail::clear_on_destroy<stable_vector> cod(*this);
|
612
|
+
this->insert(this->cend(), first, last);
|
613
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
614
|
+
cod.release();
|
615
|
+
}
|
616
|
+
|
617
|
+
//! <b>Effects</b>: Copy constructs a stable_vector.
|
618
|
+
//!
|
619
|
+
//! <b>Postcondition</b>: x == *this.
|
620
|
+
//!
|
621
|
+
//! <b>Complexity</b>: Linear to the elements x contains.
|
622
|
+
stable_vector(const stable_vector& x)
|
623
|
+
: internal_data(allocator_traits<node_allocator_type>::
|
624
|
+
select_on_container_copy_construction(x.priv_node_alloc()))
|
625
|
+
, index(allocator_traits<allocator_type>::
|
626
|
+
select_on_container_copy_construction(x.index.get_stored_allocator()))
|
627
|
+
{
|
628
|
+
stable_vector_detail::clear_on_destroy<stable_vector> cod(*this);
|
629
|
+
this->insert(this->cend(), x.begin(), x.end());
|
630
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
631
|
+
cod.release();
|
632
|
+
}
|
633
|
+
|
634
|
+
//! <b>Effects</b>: Move constructor. Moves mx's resources to *this.
|
635
|
+
//!
|
636
|
+
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
637
|
+
//!
|
638
|
+
//! <b>Complexity</b>: Constant.
|
639
|
+
stable_vector(BOOST_RV_REF(stable_vector) x)
|
640
|
+
: internal_data(boost::move(x.priv_node_alloc())), index(boost::move(x.index))
|
641
|
+
{
|
642
|
+
this->priv_swap_members(x);
|
643
|
+
}
|
644
|
+
|
645
|
+
//! <b>Effects</b>: Copy constructs a stable_vector using the specified allocator.
|
646
|
+
//!
|
647
|
+
//! <b>Postcondition</b>: x == *this.
|
648
|
+
//!
|
649
|
+
//! <b>Complexity</b>: Linear to the elements x contains.
|
650
|
+
stable_vector(const stable_vector& x, const allocator_type &a)
|
651
|
+
: internal_data(a), index(a)
|
652
|
+
{
|
653
|
+
stable_vector_detail::clear_on_destroy<stable_vector> cod(*this);
|
654
|
+
this->insert(this->cend(), x.begin(), x.end());
|
655
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
656
|
+
cod.release();
|
657
|
+
}
|
658
|
+
|
659
|
+
//! <b>Effects</b>: Move constructor using the specified allocator.
|
660
|
+
//! Moves mx's resources to *this.
|
661
|
+
//!
|
662
|
+
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
663
|
+
//!
|
664
|
+
//! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise
|
665
|
+
stable_vector(BOOST_RV_REF(stable_vector) x, const allocator_type &a)
|
666
|
+
: internal_data(a), index(a)
|
667
|
+
{
|
668
|
+
if(this->priv_node_alloc() == x.priv_node_alloc()){
|
669
|
+
this->priv_swap_members(x);
|
670
|
+
}
|
671
|
+
else{
|
672
|
+
stable_vector_detail::clear_on_destroy<stable_vector> cod(*this);
|
673
|
+
this->insert(this->cend(), x.begin(), x.end());
|
674
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
675
|
+
cod.release();
|
676
|
+
}
|
677
|
+
}
|
678
|
+
|
679
|
+
//! <b>Effects</b>: Destroys the stable_vector. All stored values are destroyed
|
680
|
+
//! and used memory is deallocated.
|
681
|
+
//!
|
682
|
+
//! <b>Throws</b>: Nothing.
|
683
|
+
//!
|
684
|
+
//! <b>Complexity</b>: Linear to the number of elements.
|
685
|
+
~stable_vector()
|
686
|
+
{
|
687
|
+
this->clear();
|
688
|
+
this->priv_clear_pool();
|
689
|
+
}
|
690
|
+
|
691
|
+
//! <b>Effects</b>: Makes *this contain the same elements as x.
|
692
|
+
//!
|
693
|
+
//! <b>Postcondition</b>: this->size() == x.size(). *this contains a copy
|
694
|
+
//! of each of x's elements.
|
695
|
+
//!
|
696
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
697
|
+
//!
|
698
|
+
//! <b>Complexity</b>: Linear to the number of elements in x.
|
699
|
+
stable_vector& operator=(BOOST_COPY_ASSIGN_REF(stable_vector) x)
|
700
|
+
{
|
701
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
702
|
+
if (&x != this){
|
703
|
+
node_allocator_type &this_alloc = this->priv_node_alloc();
|
704
|
+
const node_allocator_type &x_alloc = x.priv_node_alloc();
|
705
|
+
container_detail::bool_<allocator_traits_type::
|
706
|
+
propagate_on_container_copy_assignment::value> flag;
|
707
|
+
if(flag && this_alloc != x_alloc){
|
708
|
+
this->clear();
|
709
|
+
this->shrink_to_fit();
|
710
|
+
}
|
711
|
+
container_detail::assign_alloc(this->priv_node_alloc(), x.priv_node_alloc(), flag);
|
712
|
+
container_detail::assign_alloc(this->index.get_stored_allocator(), x.index.get_stored_allocator(), flag);
|
713
|
+
this->assign(x.begin(), x.end());
|
714
|
+
}
|
715
|
+
return *this;
|
716
|
+
}
|
717
|
+
|
718
|
+
//! <b>Effects</b>: Move assignment. All mx's values are transferred to *this.
|
719
|
+
//!
|
720
|
+
//! <b>Postcondition</b>: x.empty(). *this contains a the elements x had
|
721
|
+
//! before the function.
|
722
|
+
//!
|
723
|
+
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
724
|
+
//!
|
725
|
+
//! <b>Complexity</b>: Linear.
|
726
|
+
stable_vector& operator=(BOOST_RV_REF(stable_vector) x)
|
727
|
+
{
|
728
|
+
if (&x != this){
|
729
|
+
node_allocator_type &this_alloc = this->priv_node_alloc();
|
730
|
+
node_allocator_type &x_alloc = x.priv_node_alloc();
|
731
|
+
//If allocators are equal we can just swap pointers
|
732
|
+
if(this_alloc == x_alloc){
|
733
|
+
//Destroy objects but retain memory
|
734
|
+
this->clear();
|
735
|
+
this->index = boost::move(x.index);
|
736
|
+
this->priv_swap_members(x);
|
737
|
+
//Move allocator if needed
|
738
|
+
container_detail::bool_<allocator_traits_type::
|
739
|
+
propagate_on_container_move_assignment::value> flag;
|
740
|
+
container_detail::move_alloc(this->priv_node_alloc(), x.priv_node_alloc(), flag);
|
741
|
+
}
|
742
|
+
//If unequal allocators, then do a one by one move
|
743
|
+
else{
|
744
|
+
this->assign( boost::make_move_iterator(x.begin())
|
745
|
+
, boost::make_move_iterator(x.end()));
|
746
|
+
}
|
747
|
+
}
|
748
|
+
return *this;
|
749
|
+
}
|
750
|
+
|
751
|
+
|
752
|
+
//! <b>Effects</b>: Assigns the n copies of val to *this.
|
753
|
+
//!
|
754
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
755
|
+
//!
|
756
|
+
//! <b>Complexity</b>: Linear to n.
|
757
|
+
void assign(size_type n, const T& t)
|
758
|
+
{
|
759
|
+
typedef constant_iterator<value_type, difference_type> cvalue_iterator;
|
760
|
+
this->assign(cvalue_iterator(t, n), cvalue_iterator());
|
761
|
+
}
|
762
|
+
|
763
|
+
//! <b>Effects</b>: Assigns the the range [first, last) to *this.
|
764
|
+
//!
|
765
|
+
//! <b>Throws</b>: If memory allocation throws or
|
766
|
+
//! T's constructor from dereferencing InpIt throws.
|
767
|
+
//!
|
768
|
+
//! <b>Complexity</b>: Linear to n.
|
769
|
+
template<typename InputIterator>
|
770
|
+
void assign(InputIterator first,InputIterator last
|
771
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
772
|
+
, typename container_detail::enable_if_c
|
773
|
+
< !container_detail::is_convertible<InputIterator, size_type>::value
|
774
|
+
>::type * = 0
|
775
|
+
#endif
|
776
|
+
)
|
777
|
+
{
|
778
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
779
|
+
iterator first1 = this->begin();
|
780
|
+
iterator last1 = this->end();
|
781
|
+
for ( ; first1 != last1 && first != last; ++first1, ++first)
|
782
|
+
*first1 = *first;
|
783
|
+
if (first == last){
|
784
|
+
this->erase(first1, last1);
|
785
|
+
}
|
786
|
+
else{
|
787
|
+
this->insert(last1, first, last);
|
788
|
+
}
|
789
|
+
}
|
790
|
+
|
791
|
+
//! <b>Effects</b>: Returns a copy of the internal allocator.
|
792
|
+
//!
|
793
|
+
//! <b>Throws</b>: If allocator's copy constructor throws.
|
794
|
+
//!
|
795
|
+
//! <b>Complexity</b>: Constant.
|
796
|
+
allocator_type get_allocator() const
|
797
|
+
{ return this->priv_node_alloc(); }
|
798
|
+
|
799
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
800
|
+
//!
|
801
|
+
//! <b>Throws</b>: Nothing
|
802
|
+
//!
|
803
|
+
//! <b>Complexity</b>: Constant.
|
804
|
+
//!
|
805
|
+
//! <b>Note</b>: Non-standard extension.
|
806
|
+
const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT
|
807
|
+
{ return this->priv_node_alloc(); }
|
808
|
+
|
809
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
810
|
+
//!
|
811
|
+
//! <b>Throws</b>: Nothing
|
812
|
+
//!
|
813
|
+
//! <b>Complexity</b>: Constant.
|
814
|
+
//!
|
815
|
+
//! <b>Note</b>: Non-standard extension.
|
816
|
+
stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT
|
817
|
+
{ return this->priv_node_alloc(); }
|
818
|
+
|
819
|
+
//////////////////////////////////////////////
|
820
|
+
//
|
821
|
+
// iterators
|
822
|
+
//
|
823
|
+
//////////////////////////////////////////////
|
824
|
+
|
825
|
+
//! <b>Effects</b>: Returns an iterator to the first element contained in the stable_vector.
|
826
|
+
//!
|
827
|
+
//! <b>Throws</b>: Nothing.
|
828
|
+
//!
|
829
|
+
//! <b>Complexity</b>: Constant.
|
830
|
+
iterator begin() BOOST_CONTAINER_NOEXCEPT
|
831
|
+
{ return (this->index.empty()) ? this->end(): iterator(node_ptr_traits::static_cast_from(this->index.front())); }
|
832
|
+
|
833
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the stable_vector.
|
834
|
+
//!
|
835
|
+
//! <b>Throws</b>: Nothing.
|
836
|
+
//!
|
837
|
+
//! <b>Complexity</b>: Constant.
|
838
|
+
const_iterator begin() const BOOST_CONTAINER_NOEXCEPT
|
839
|
+
{ return (this->index.empty()) ? this->cend() : const_iterator(node_ptr_traits::static_cast_from(this->index.front())) ; }
|
840
|
+
|
841
|
+
//! <b>Effects</b>: Returns an iterator to the end of the stable_vector.
|
842
|
+
//!
|
843
|
+
//! <b>Throws</b>: Nothing.
|
844
|
+
//!
|
845
|
+
//! <b>Complexity</b>: Constant.
|
846
|
+
iterator end() BOOST_CONTAINER_NOEXCEPT
|
847
|
+
{ return iterator(this->priv_get_end_node()); }
|
848
|
+
|
849
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the stable_vector.
|
850
|
+
//!
|
851
|
+
//! <b>Throws</b>: Nothing.
|
852
|
+
//!
|
853
|
+
//! <b>Complexity</b>: Constant.
|
854
|
+
const_iterator end() const BOOST_CONTAINER_NOEXCEPT
|
855
|
+
{ return const_iterator(this->priv_get_end_node()); }
|
856
|
+
|
857
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
858
|
+
//! of the reversed stable_vector.
|
859
|
+
//!
|
860
|
+
//! <b>Throws</b>: Nothing.
|
861
|
+
//!
|
862
|
+
//! <b>Complexity</b>: Constant.
|
863
|
+
reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT
|
864
|
+
{ return reverse_iterator(this->end()); }
|
865
|
+
|
866
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
867
|
+
//! of the reversed stable_vector.
|
868
|
+
//!
|
869
|
+
//! <b>Throws</b>: Nothing.
|
870
|
+
//!
|
871
|
+
//! <b>Complexity</b>: Constant.
|
872
|
+
const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT
|
873
|
+
{ return const_reverse_iterator(this->end()); }
|
874
|
+
|
875
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
876
|
+
//! of the reversed stable_vector.
|
877
|
+
//!
|
878
|
+
//! <b>Throws</b>: Nothing.
|
879
|
+
//!
|
880
|
+
//! <b>Complexity</b>: Constant.
|
881
|
+
reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT
|
882
|
+
{ return reverse_iterator(this->begin()); }
|
883
|
+
|
884
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
885
|
+
//! of the reversed stable_vector.
|
886
|
+
//!
|
887
|
+
//! <b>Throws</b>: Nothing.
|
888
|
+
//!
|
889
|
+
//! <b>Complexity</b>: Constant.
|
890
|
+
const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT
|
891
|
+
{ return const_reverse_iterator(this->begin()); }
|
892
|
+
|
893
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the stable_vector.
|
894
|
+
//!
|
895
|
+
//! <b>Throws</b>: Nothing.
|
896
|
+
//!
|
897
|
+
//! <b>Complexity</b>: Constant.
|
898
|
+
const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT
|
899
|
+
{ return this->begin(); }
|
900
|
+
|
901
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the stable_vector.
|
902
|
+
//!
|
903
|
+
//! <b>Throws</b>: Nothing.
|
904
|
+
//!
|
905
|
+
//! <b>Complexity</b>: Constant.
|
906
|
+
const_iterator cend() const BOOST_CONTAINER_NOEXCEPT
|
907
|
+
{ return this->end(); }
|
908
|
+
|
909
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
910
|
+
//! of the reversed stable_vector.
|
911
|
+
//!
|
912
|
+
//! <b>Throws</b>: Nothing.
|
913
|
+
//!
|
914
|
+
//! <b>Complexity</b>: Constant.
|
915
|
+
const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT
|
916
|
+
{ return this->rbegin(); }
|
917
|
+
|
918
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
919
|
+
//! of the reversed stable_vector.
|
920
|
+
//!
|
921
|
+
//! <b>Throws</b>: Nothing.
|
922
|
+
//!
|
923
|
+
//! <b>Complexity</b>: Constant.
|
924
|
+
const_reverse_iterator crend()const BOOST_CONTAINER_NOEXCEPT
|
925
|
+
{ return this->rend(); }
|
926
|
+
|
927
|
+
//////////////////////////////////////////////
|
928
|
+
//
|
929
|
+
// capacity
|
930
|
+
//
|
931
|
+
//////////////////////////////////////////////
|
932
|
+
|
933
|
+
//! <b>Effects</b>: Returns true if the stable_vector contains no elements.
|
934
|
+
//!
|
935
|
+
//! <b>Throws</b>: Nothing.
|
936
|
+
//!
|
937
|
+
//! <b>Complexity</b>: Constant.
|
938
|
+
bool empty() const BOOST_CONTAINER_NOEXCEPT
|
939
|
+
{ return this->index.size() <= ExtraPointers; }
|
940
|
+
|
941
|
+
//! <b>Effects</b>: Returns the number of the elements contained in the stable_vector.
|
942
|
+
//!
|
943
|
+
//! <b>Throws</b>: Nothing.
|
944
|
+
//!
|
945
|
+
//! <b>Complexity</b>: Constant.
|
946
|
+
size_type size() const BOOST_CONTAINER_NOEXCEPT
|
947
|
+
{
|
948
|
+
const size_type index_size = this->index.size();
|
949
|
+
return (index_size - ExtraPointers) & (std::size_t(0u) -std::size_t(index_size != 0));
|
950
|
+
}
|
951
|
+
|
952
|
+
//! <b>Effects</b>: Returns the largest possible size of the stable_vector.
|
953
|
+
//!
|
954
|
+
//! <b>Throws</b>: Nothing.
|
955
|
+
//!
|
956
|
+
//! <b>Complexity</b>: Constant.
|
957
|
+
size_type max_size() const BOOST_CONTAINER_NOEXCEPT
|
958
|
+
{ return this->index.max_size() - ExtraPointers; }
|
959
|
+
|
960
|
+
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
961
|
+
//! the size becomes n. New elements are default constructed.
|
962
|
+
//!
|
963
|
+
//! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
|
964
|
+
//!
|
965
|
+
//! <b>Complexity</b>: Linear to the difference between size() and new_size.
|
966
|
+
void resize(size_type n)
|
967
|
+
{
|
968
|
+
typedef default_construct_iterator<value_type, difference_type> default_iterator;
|
969
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
970
|
+
if(n > this->size())
|
971
|
+
this->insert(this->cend(), default_iterator(n - this->size()), default_iterator());
|
972
|
+
else if(n < this->size())
|
973
|
+
this->erase(this->cbegin() + n, this->cend());
|
974
|
+
}
|
975
|
+
|
976
|
+
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
977
|
+
//! the size becomes n. New elements are copy constructed from x.
|
978
|
+
//!
|
979
|
+
//! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
|
980
|
+
//!
|
981
|
+
//! <b>Complexity</b>: Linear to the difference between size() and new_size.
|
982
|
+
void resize(size_type n, const T& t)
|
983
|
+
{
|
984
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
985
|
+
if(n > this->size())
|
986
|
+
this->insert(this->cend(), n - this->size(), t);
|
987
|
+
else if(n < this->size())
|
988
|
+
this->erase(this->cbegin() + n, this->cend());
|
989
|
+
}
|
990
|
+
|
991
|
+
//! <b>Effects</b>: Number of elements for which memory has been allocated.
|
992
|
+
//! capacity() is always greater than or equal to size().
|
993
|
+
//!
|
994
|
+
//! <b>Throws</b>: Nothing.
|
995
|
+
//!
|
996
|
+
//! <b>Complexity</b>: Constant.
|
997
|
+
size_type capacity() const BOOST_CONTAINER_NOEXCEPT
|
998
|
+
{
|
999
|
+
const size_type index_size = this->index.size();
|
1000
|
+
BOOST_ASSERT(!index_size || index_size >= ExtraPointers);
|
1001
|
+
const size_type bucket_extra_capacity = this->index.capacity()- index_size;
|
1002
|
+
const size_type node_extra_capacity = this->internal_data.pool_size;
|
1003
|
+
const size_type extra_capacity = (bucket_extra_capacity < node_extra_capacity)
|
1004
|
+
? bucket_extra_capacity : node_extra_capacity;
|
1005
|
+
const size_type index_offset =
|
1006
|
+
(ExtraPointers + extra_capacity) & (size_type(0u) - size_type(index_size != 0));
|
1007
|
+
return index_size - index_offset;
|
1008
|
+
}
|
1009
|
+
|
1010
|
+
//! <b>Effects</b>: If n is less than or equal to capacity(), this call has no
|
1011
|
+
//! effect. Otherwise, it is a request for allocation of additional memory.
|
1012
|
+
//! If the request is successful, then capacity() is greater than or equal to
|
1013
|
+
//! n; otherwise, capacity() is unchanged. In either case, size() is unchanged.
|
1014
|
+
//!
|
1015
|
+
//! <b>Throws</b>: If memory allocation allocation throws.
|
1016
|
+
void reserve(size_type n)
|
1017
|
+
{
|
1018
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
1019
|
+
if(n > this->max_size()){
|
1020
|
+
throw_length_error("stable_vector::reserve max_size() exceeded");
|
1021
|
+
}
|
1022
|
+
|
1023
|
+
size_type sz = this->size();
|
1024
|
+
size_type old_capacity = this->capacity();
|
1025
|
+
if(n > old_capacity){
|
1026
|
+
index_traits_type::initialize_end_node(this->index, this->internal_data.end_node, n);
|
1027
|
+
const void * old_ptr = &index[0];
|
1028
|
+
this->index.reserve(n + ExtraPointers);
|
1029
|
+
bool realloced = &index[0] != old_ptr;
|
1030
|
+
//Fix the pointers for the newly allocated buffer
|
1031
|
+
if(realloced){
|
1032
|
+
index_traits_type::fix_up_pointers_from(this->index, this->index.begin());
|
1033
|
+
}
|
1034
|
+
//Now fill pool if data is not enough
|
1035
|
+
if((n - sz) > this->internal_data.pool_size){
|
1036
|
+
this->priv_increase_pool((n - sz) - this->internal_data.pool_size);
|
1037
|
+
}
|
1038
|
+
}
|
1039
|
+
}
|
1040
|
+
|
1041
|
+
//! <b>Effects</b>: Tries to deallocate the excess of memory created
|
1042
|
+
//! with previous allocations. The size of the stable_vector is unchanged
|
1043
|
+
//!
|
1044
|
+
//! <b>Throws</b>: If memory allocation throws.
|
1045
|
+
//!
|
1046
|
+
//! <b>Complexity</b>: Linear to size().
|
1047
|
+
void shrink_to_fit()
|
1048
|
+
{
|
1049
|
+
if(this->capacity()){
|
1050
|
+
//First empty allocated node pool
|
1051
|
+
this->priv_clear_pool();
|
1052
|
+
//If empty completely destroy the index, let's recover default-constructed state
|
1053
|
+
if(this->empty()){
|
1054
|
+
this->index.clear();
|
1055
|
+
this->index.shrink_to_fit();
|
1056
|
+
this->internal_data.end_node.up = node_base_ptr_ptr();
|
1057
|
+
}
|
1058
|
+
//Otherwise, try to shrink-to-fit the index and readjust pointers if necessary
|
1059
|
+
else{
|
1060
|
+
const void* old_ptr = &index[0];
|
1061
|
+
this->index.shrink_to_fit();
|
1062
|
+
bool realloced = &index[0] != old_ptr;
|
1063
|
+
//Fix the pointers for the newly allocated buffer
|
1064
|
+
if(realloced){
|
1065
|
+
index_traits_type::fix_up_pointers_from(this->index, this->index.begin());
|
1066
|
+
}
|
1067
|
+
}
|
1068
|
+
}
|
1069
|
+
}
|
1070
|
+
|
1071
|
+
//////////////////////////////////////////////
|
1072
|
+
//
|
1073
|
+
// element access
|
1074
|
+
//
|
1075
|
+
//////////////////////////////////////////////
|
1076
|
+
|
1077
|
+
//! <b>Requires</b>: !empty()
|
1078
|
+
//!
|
1079
|
+
//! <b>Effects</b>: Returns a reference to the first
|
1080
|
+
//! element of the container.
|
1081
|
+
//!
|
1082
|
+
//! <b>Throws</b>: Nothing.
|
1083
|
+
//!
|
1084
|
+
//! <b>Complexity</b>: Constant.
|
1085
|
+
reference front() BOOST_CONTAINER_NOEXCEPT
|
1086
|
+
{ return static_cast<node_reference>(*this->index.front()).value; }
|
1087
|
+
|
1088
|
+
//! <b>Requires</b>: !empty()
|
1089
|
+
//!
|
1090
|
+
//! <b>Effects</b>: Returns a const reference to the first
|
1091
|
+
//! element of the container.
|
1092
|
+
//!
|
1093
|
+
//! <b>Throws</b>: Nothing.
|
1094
|
+
//!
|
1095
|
+
//! <b>Complexity</b>: Constant.
|
1096
|
+
const_reference front() const BOOST_CONTAINER_NOEXCEPT
|
1097
|
+
{ return static_cast<const_node_reference>(*this->index.front()).value; }
|
1098
|
+
|
1099
|
+
//! <b>Requires</b>: !empty()
|
1100
|
+
//!
|
1101
|
+
//! <b>Effects</b>: Returns a reference to the last
|
1102
|
+
//! element of the container.
|
1103
|
+
//!
|
1104
|
+
//! <b>Throws</b>: Nothing.
|
1105
|
+
//!
|
1106
|
+
//! <b>Complexity</b>: Constant.
|
1107
|
+
reference back() BOOST_CONTAINER_NOEXCEPT
|
1108
|
+
{ return static_cast<node_reference>(*this->index[this->size()-1u]).value; }
|
1109
|
+
|
1110
|
+
//! <b>Requires</b>: !empty()
|
1111
|
+
//!
|
1112
|
+
//! <b>Effects</b>: Returns a const reference to the last
|
1113
|
+
//! element of the container.
|
1114
|
+
//!
|
1115
|
+
//! <b>Throws</b>: Nothing.
|
1116
|
+
//!
|
1117
|
+
//! <b>Complexity</b>: Constant.
|
1118
|
+
const_reference back() const BOOST_CONTAINER_NOEXCEPT
|
1119
|
+
{ return static_cast<const_node_reference>(*this->index[this->size()-1u]).value; }
|
1120
|
+
|
1121
|
+
//! <b>Requires</b>: size() > n.
|
1122
|
+
//!
|
1123
|
+
//! <b>Effects</b>: Returns a reference to the nth element
|
1124
|
+
//! from the beginning of the container.
|
1125
|
+
//!
|
1126
|
+
//! <b>Throws</b>: Nothing.
|
1127
|
+
//!
|
1128
|
+
//! <b>Complexity</b>: Constant.
|
1129
|
+
reference operator[](size_type n) BOOST_CONTAINER_NOEXCEPT
|
1130
|
+
{
|
1131
|
+
BOOST_ASSERT(n < this->size());
|
1132
|
+
return static_cast<node_reference>(*this->index[n]).value;
|
1133
|
+
}
|
1134
|
+
|
1135
|
+
//! <b>Requires</b>: size() > n.
|
1136
|
+
//!
|
1137
|
+
//! <b>Effects</b>: Returns a const reference to the nth element
|
1138
|
+
//! from the beginning of the container.
|
1139
|
+
//!
|
1140
|
+
//! <b>Throws</b>: Nothing.
|
1141
|
+
//!
|
1142
|
+
//! <b>Complexity</b>: Constant.
|
1143
|
+
const_reference operator[](size_type n) const BOOST_CONTAINER_NOEXCEPT
|
1144
|
+
{
|
1145
|
+
BOOST_ASSERT(n < this->size());
|
1146
|
+
return static_cast<const_node_reference>(*this->index[n]).value;
|
1147
|
+
}
|
1148
|
+
|
1149
|
+
//! <b>Requires</b>: size() > n.
|
1150
|
+
//!
|
1151
|
+
//! <b>Effects</b>: Returns a reference to the nth element
|
1152
|
+
//! from the beginning of the container.
|
1153
|
+
//!
|
1154
|
+
//! <b>Throws</b>: std::range_error if n >= size()
|
1155
|
+
//!
|
1156
|
+
//! <b>Complexity</b>: Constant.
|
1157
|
+
reference at(size_type n)
|
1158
|
+
{
|
1159
|
+
if(n >= this->size()){
|
1160
|
+
throw_out_of_range("vector::at invalid subscript");
|
1161
|
+
}
|
1162
|
+
return operator[](n);
|
1163
|
+
}
|
1164
|
+
|
1165
|
+
//! <b>Requires</b>: size() > n.
|
1166
|
+
//!
|
1167
|
+
//! <b>Effects</b>: Returns a const reference to the nth element
|
1168
|
+
//! from the beginning of the container.
|
1169
|
+
//!
|
1170
|
+
//! <b>Throws</b>: std::range_error if n >= size()
|
1171
|
+
//!
|
1172
|
+
//! <b>Complexity</b>: Constant.
|
1173
|
+
const_reference at(size_type n)const
|
1174
|
+
{
|
1175
|
+
if(n >= this->size()){
|
1176
|
+
throw_out_of_range("vector::at invalid subscript");
|
1177
|
+
}
|
1178
|
+
return operator[](n);
|
1179
|
+
}
|
1180
|
+
|
1181
|
+
//////////////////////////////////////////////
|
1182
|
+
//
|
1183
|
+
// modifiers
|
1184
|
+
//
|
1185
|
+
//////////////////////////////////////////////
|
1186
|
+
|
1187
|
+
#if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1188
|
+
|
1189
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
1190
|
+
//! std::forward<Args>(args)... in the end of the stable_vector.
|
1191
|
+
//!
|
1192
|
+
//! <b>Throws</b>: If memory allocation throws or the in-place constructor throws.
|
1193
|
+
//!
|
1194
|
+
//! <b>Complexity</b>: Amortized constant time.
|
1195
|
+
template<class ...Args>
|
1196
|
+
void emplace_back(Args &&...args)
|
1197
|
+
{
|
1198
|
+
typedef emplace_functor<Args...> EmplaceFunctor;
|
1199
|
+
typedef emplace_iterator<value_type, EmplaceFunctor, difference_type> EmplaceIterator;
|
1200
|
+
EmplaceFunctor &&ef = EmplaceFunctor(boost::forward<Args>(args)...);
|
1201
|
+
this->insert(this->cend(), EmplaceIterator(ef), EmplaceIterator());
|
1202
|
+
}
|
1203
|
+
|
1204
|
+
//! <b>Requires</b>: position must be a valid iterator of *this.
|
1205
|
+
//!
|
1206
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
1207
|
+
//! std::forward<Args>(args)... before position
|
1208
|
+
//!
|
1209
|
+
//! <b>Throws</b>: If memory allocation throws or the in-place constructor throws.
|
1210
|
+
//!
|
1211
|
+
//! <b>Complexity</b>: If position is end(), amortized constant time
|
1212
|
+
//! Linear time otherwise.
|
1213
|
+
template<class ...Args>
|
1214
|
+
iterator emplace(const_iterator position, Args && ...args)
|
1215
|
+
{
|
1216
|
+
//Just call more general insert(pos, size, value) and return iterator
|
1217
|
+
size_type pos_n = position - cbegin();
|
1218
|
+
typedef emplace_functor<Args...> EmplaceFunctor;
|
1219
|
+
typedef emplace_iterator<value_type, EmplaceFunctor, difference_type> EmplaceIterator;
|
1220
|
+
EmplaceFunctor &&ef = EmplaceFunctor(boost::forward<Args>(args)...);
|
1221
|
+
this->insert(position, EmplaceIterator(ef), EmplaceIterator());
|
1222
|
+
return iterator(this->begin() + pos_n);
|
1223
|
+
}
|
1224
|
+
|
1225
|
+
#else
|
1226
|
+
|
1227
|
+
#define BOOST_PP_LOCAL_MACRO(n) \
|
1228
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
1229
|
+
void emplace_back(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
1230
|
+
{ \
|
1231
|
+
typedef BOOST_PP_CAT(BOOST_PP_CAT(emplace_functor, n), arg) \
|
1232
|
+
BOOST_PP_EXPR_IF(n, <) BOOST_PP_ENUM_PARAMS(n, P) BOOST_PP_EXPR_IF(n, >) \
|
1233
|
+
EmplaceFunctor; \
|
1234
|
+
typedef emplace_iterator<value_type, EmplaceFunctor, difference_type> EmplaceIterator; \
|
1235
|
+
EmplaceFunctor ef BOOST_PP_LPAREN_IF(n) \
|
1236
|
+
BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) \
|
1237
|
+
BOOST_PP_RPAREN_IF(n); \
|
1238
|
+
this->insert(this->cend() , EmplaceIterator(ef), EmplaceIterator()); \
|
1239
|
+
} \
|
1240
|
+
\
|
1241
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
1242
|
+
iterator emplace(const_iterator pos \
|
1243
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
1244
|
+
{ \
|
1245
|
+
typedef BOOST_PP_CAT(BOOST_PP_CAT(emplace_functor, n), arg) \
|
1246
|
+
BOOST_PP_EXPR_IF(n, <) BOOST_PP_ENUM_PARAMS(n, P) BOOST_PP_EXPR_IF(n, >) \
|
1247
|
+
EmplaceFunctor; \
|
1248
|
+
typedef emplace_iterator<value_type, EmplaceFunctor, difference_type> EmplaceIterator; \
|
1249
|
+
EmplaceFunctor ef BOOST_PP_LPAREN_IF(n) \
|
1250
|
+
BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) \
|
1251
|
+
BOOST_PP_RPAREN_IF(n); \
|
1252
|
+
size_type pos_n = pos - this->cbegin(); \
|
1253
|
+
this->insert(pos, EmplaceIterator(ef), EmplaceIterator()); \
|
1254
|
+
return iterator(this->begin() + pos_n); \
|
1255
|
+
} \
|
1256
|
+
//!
|
1257
|
+
#define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
|
1258
|
+
#include BOOST_PP_LOCAL_ITERATE()
|
1259
|
+
|
1260
|
+
#endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
1261
|
+
|
1262
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1263
|
+
//! <b>Effects</b>: Inserts a copy of x at the end of the stable_vector.
|
1264
|
+
//!
|
1265
|
+
//! <b>Throws</b>: If memory allocation throws or
|
1266
|
+
//! T's copy constructor throws.
|
1267
|
+
//!
|
1268
|
+
//! <b>Complexity</b>: Amortized constant time.
|
1269
|
+
void push_back(const T &x);
|
1270
|
+
|
1271
|
+
//! <b>Effects</b>: Constructs a new element in the end of the stable_vector
|
1272
|
+
//! and moves the resources of mx to this new element.
|
1273
|
+
//!
|
1274
|
+
//! <b>Throws</b>: If memory allocation throws.
|
1275
|
+
//!
|
1276
|
+
//! <b>Complexity</b>: Amortized constant time.
|
1277
|
+
void push_back(T &&x);
|
1278
|
+
#else
|
1279
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH(push_back, T, void, priv_push_back)
|
1280
|
+
#endif
|
1281
|
+
|
1282
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1283
|
+
//! <b>Requires</b>: position must be a valid iterator of *this.
|
1284
|
+
//!
|
1285
|
+
//! <b>Effects</b>: Insert a copy of x before position.
|
1286
|
+
//!
|
1287
|
+
//! <b>Returns</b>: An iterator to the inserted element.
|
1288
|
+
//!
|
1289
|
+
//! <b>Throws</b>: If memory allocation throws or x's copy constructor throws.
|
1290
|
+
//!
|
1291
|
+
//! <b>Complexity</b>: If position is end(), amortized constant time
|
1292
|
+
//! Linear time otherwise.
|
1293
|
+
iterator insert(const_iterator position, const T &x);
|
1294
|
+
|
1295
|
+
//! <b>Requires</b>: position must be a valid iterator of *this.
|
1296
|
+
//!
|
1297
|
+
//! <b>Effects</b>: Insert a new element before position with mx's resources.
|
1298
|
+
//!
|
1299
|
+
//! <b>Returns</b>: an iterator to the inserted element.
|
1300
|
+
//!
|
1301
|
+
//! <b>Throws</b>: If memory allocation throws.
|
1302
|
+
//!
|
1303
|
+
//! <b>Complexity</b>: If position is end(), amortized constant time
|
1304
|
+
//! Linear time otherwise.
|
1305
|
+
iterator insert(const_iterator position, T &&x);
|
1306
|
+
#else
|
1307
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator)
|
1308
|
+
#endif
|
1309
|
+
|
1310
|
+
//! <b>Requires</b>: pos must be a valid iterator of *this.
|
1311
|
+
//!
|
1312
|
+
//! <b>Effects</b>: Insert n copies of x before position.
|
1313
|
+
//!
|
1314
|
+
//! <b>Returns</b>: an iterator to the first inserted element or position if n is 0.
|
1315
|
+
//!
|
1316
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
1317
|
+
//!
|
1318
|
+
//! <b>Complexity</b>: Linear to n.
|
1319
|
+
iterator insert(const_iterator position, size_type n, const T& t)
|
1320
|
+
{
|
1321
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
1322
|
+
typedef constant_iterator<value_type, difference_type> cvalue_iterator;
|
1323
|
+
return this->insert(position, cvalue_iterator(t, n), cvalue_iterator());
|
1324
|
+
}
|
1325
|
+
|
1326
|
+
//! <b>Requires</b>: pos must be a valid iterator of *this.
|
1327
|
+
//!
|
1328
|
+
//! <b>Effects</b>: Insert a copy of the [first, last) range before pos.
|
1329
|
+
//!
|
1330
|
+
//! <b>Returns</b>: an iterator to the first inserted element or position if first == last.
|
1331
|
+
//!
|
1332
|
+
//! <b>Throws</b>: If memory allocation throws, T's constructor from a
|
1333
|
+
//! dereferenced InpIt throws or T's copy constructor throws.
|
1334
|
+
//!
|
1335
|
+
//! <b>Complexity</b>: Linear to std::distance [first, last).
|
1336
|
+
template <class InputIterator>
|
1337
|
+
iterator insert(const_iterator position, InputIterator first, InputIterator last
|
1338
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1339
|
+
, typename container_detail::enable_if_c
|
1340
|
+
< !container_detail::is_convertible<InputIterator, size_type>::value
|
1341
|
+
&& container_detail::is_input_iterator<InputIterator>::value
|
1342
|
+
>::type * = 0
|
1343
|
+
#endif
|
1344
|
+
)
|
1345
|
+
{
|
1346
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
1347
|
+
const size_type pos_n = position - this->cbegin();
|
1348
|
+
for(; first != last; ++first){
|
1349
|
+
this->emplace(position, *first);
|
1350
|
+
}
|
1351
|
+
return this->begin() + pos_n;
|
1352
|
+
}
|
1353
|
+
|
1354
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1355
|
+
template <class FwdIt>
|
1356
|
+
iterator insert(const_iterator position, FwdIt first, FwdIt last
|
1357
|
+
, typename container_detail::enable_if_c
|
1358
|
+
< !container_detail::is_convertible<FwdIt, size_type>::value
|
1359
|
+
&& !container_detail::is_input_iterator<FwdIt>::value
|
1360
|
+
>::type * = 0
|
1361
|
+
)
|
1362
|
+
{
|
1363
|
+
const size_type num_new = static_cast<size_type>(std::distance(first, last));
|
1364
|
+
const size_type pos = static_cast<size_type>(position - this->cbegin());
|
1365
|
+
if(num_new){
|
1366
|
+
//Fills the node pool and inserts num_new null pointers in pos.
|
1367
|
+
//If a new buffer was needed fixes up pointers up to pos so
|
1368
|
+
//past-new nodes are not aligned until the end of this function
|
1369
|
+
//or in a rollback in case of exception
|
1370
|
+
index_iterator it_past_newly_constructed(this->priv_insert_forward_non_templated(pos, num_new));
|
1371
|
+
const index_iterator it_past_new(it_past_newly_constructed + num_new);
|
1372
|
+
{
|
1373
|
+
//Prepare rollback
|
1374
|
+
insert_rollback rollback(*this, it_past_newly_constructed, it_past_new);
|
1375
|
+
while(first != last){
|
1376
|
+
const node_ptr p = this->priv_get_from_pool();
|
1377
|
+
BOOST_ASSERT(!!p);
|
1378
|
+
//Put it in the index so rollback can return it in pool if construct_in_place throws
|
1379
|
+
*it_past_newly_constructed = p;
|
1380
|
+
//Constructs and fixes up pointers This can throw
|
1381
|
+
this->priv_build_node_from_it(p, it_past_newly_constructed, first);
|
1382
|
+
++first;
|
1383
|
+
++it_past_newly_constructed;
|
1384
|
+
}
|
1385
|
+
//rollback.~insert_rollback() called in case of exception
|
1386
|
+
}
|
1387
|
+
//Fix up pointers for past-new nodes (new nodes were fixed during construction) and
|
1388
|
+
//nodes before insertion position in priv_insert_forward_non_templated(...)
|
1389
|
+
index_traits_type::fix_up_pointers_from(this->index, it_past_newly_constructed);
|
1390
|
+
}
|
1391
|
+
return this->begin() + pos;
|
1392
|
+
}
|
1393
|
+
#endif
|
1394
|
+
|
1395
|
+
//! <b>Effects</b>: Removes the last element from the stable_vector.
|
1396
|
+
//!
|
1397
|
+
//! <b>Throws</b>: Nothing.
|
1398
|
+
//!
|
1399
|
+
//! <b>Complexity</b>: Constant time.
|
1400
|
+
void pop_back() BOOST_CONTAINER_NOEXCEPT
|
1401
|
+
{ this->erase(--this->cend()); }
|
1402
|
+
|
1403
|
+
//! <b>Effects</b>: Erases the element at position pos.
|
1404
|
+
//!
|
1405
|
+
//! <b>Throws</b>: Nothing.
|
1406
|
+
//!
|
1407
|
+
//! <b>Complexity</b>: Linear to the elements between pos and the
|
1408
|
+
//! last element. Constant if pos is the last element.
|
1409
|
+
iterator erase(const_iterator position) BOOST_CONTAINER_NOEXCEPT
|
1410
|
+
{
|
1411
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
1412
|
+
const size_type d = position - this->cbegin();
|
1413
|
+
index_iterator it = this->index.begin() + d;
|
1414
|
+
this->priv_delete_node(position.node_pointer());
|
1415
|
+
it = this->index.erase(it);
|
1416
|
+
index_traits_type::fix_up_pointers_from(this->index, it);
|
1417
|
+
return iterator(node_ptr_traits::static_cast_from(*it));
|
1418
|
+
}
|
1419
|
+
|
1420
|
+
//! <b>Effects</b>: Erases the elements pointed by [first, last).
|
1421
|
+
//!
|
1422
|
+
//! <b>Throws</b>: Nothing.
|
1423
|
+
//!
|
1424
|
+
//! <b>Complexity</b>: Linear to the distance between first and last
|
1425
|
+
//! plus linear to the elements between pos and the last element.
|
1426
|
+
iterator erase(const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT
|
1427
|
+
{
|
1428
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
1429
|
+
const const_iterator cbeg(this->cbegin());
|
1430
|
+
const size_type d1 = static_cast<size_type>(first - cbeg),
|
1431
|
+
d2 = static_cast<size_type>(last - cbeg);
|
1432
|
+
size_type d_dif = d2 - d1;
|
1433
|
+
if(d_dif){
|
1434
|
+
multiallocation_chain holder;
|
1435
|
+
const index_iterator it1(this->index.begin() + d1);
|
1436
|
+
const index_iterator it2(it1 + d_dif);
|
1437
|
+
index_iterator it(it1);
|
1438
|
+
while(d_dif--){
|
1439
|
+
node_base_ptr &nb = *it;
|
1440
|
+
++it;
|
1441
|
+
node_type &n = *node_ptr_traits::static_cast_from(nb);
|
1442
|
+
this->priv_destroy_node(n);
|
1443
|
+
holder.push_back(node_ptr_traits::pointer_to(n));
|
1444
|
+
}
|
1445
|
+
this->priv_put_in_pool(holder);
|
1446
|
+
const index_iterator e = this->index.erase(it1, it2);
|
1447
|
+
index_traits_type::fix_up_pointers_from(this->index, e);
|
1448
|
+
}
|
1449
|
+
return iterator(last.node_pointer());
|
1450
|
+
}
|
1451
|
+
|
1452
|
+
//! <b>Effects</b>: Swaps the contents of *this and x.
|
1453
|
+
//!
|
1454
|
+
//! <b>Throws</b>: Nothing.
|
1455
|
+
//!
|
1456
|
+
//! <b>Complexity</b>: Constant.
|
1457
|
+
void swap(stable_vector & x)
|
1458
|
+
{
|
1459
|
+
STABLE_VECTOR_CHECK_INVARIANT;
|
1460
|
+
container_detail::bool_<allocator_traits_type::propagate_on_container_swap::value> flag;
|
1461
|
+
container_detail::swap_alloc(this->priv_node_alloc(), x.priv_node_alloc(), flag);
|
1462
|
+
//vector's allocator is swapped here
|
1463
|
+
this->index.swap(x.index);
|
1464
|
+
this->priv_swap_members(x);
|
1465
|
+
}
|
1466
|
+
|
1467
|
+
//! <b>Effects</b>: Erases all the elements of the stable_vector.
|
1468
|
+
//!
|
1469
|
+
//! <b>Throws</b>: Nothing.
|
1470
|
+
//!
|
1471
|
+
//! <b>Complexity</b>: Linear to the number of elements in the stable_vector.
|
1472
|
+
void clear() BOOST_CONTAINER_NOEXCEPT
|
1473
|
+
{ this->erase(this->cbegin(),this->cend()); }
|
1474
|
+
|
1475
|
+
/// @cond
|
1476
|
+
|
1477
|
+
private:
|
1478
|
+
|
1479
|
+
class insert_rollback
|
1480
|
+
{
|
1481
|
+
public:
|
1482
|
+
|
1483
|
+
insert_rollback(stable_vector &sv, index_iterator &it_past_constructed, const index_iterator &it_past_new)
|
1484
|
+
: m_sv(sv), m_it_past_constructed(it_past_constructed), m_it_past_new(it_past_new)
|
1485
|
+
{}
|
1486
|
+
|
1487
|
+
~insert_rollback()
|
1488
|
+
{
|
1489
|
+
if(m_it_past_constructed != m_it_past_new){
|
1490
|
+
m_sv.priv_put_in_pool(node_ptr_traits::static_cast_from(*m_it_past_constructed));
|
1491
|
+
index_iterator e = m_sv.index.erase(m_it_past_constructed, m_it_past_new);
|
1492
|
+
index_traits_type::fix_up_pointers_from(m_sv.index, e);
|
1493
|
+
}
|
1494
|
+
}
|
1495
|
+
|
1496
|
+
private:
|
1497
|
+
stable_vector &m_sv;
|
1498
|
+
index_iterator &m_it_past_constructed;
|
1499
|
+
const index_iterator &m_it_past_new;
|
1500
|
+
};
|
1501
|
+
|
1502
|
+
class push_back_rollback
|
1503
|
+
{
|
1504
|
+
public:
|
1505
|
+
push_back_rollback(stable_vector &sv, const node_ptr &p)
|
1506
|
+
: m_sv(sv), m_p(p)
|
1507
|
+
{}
|
1508
|
+
|
1509
|
+
~push_back_rollback()
|
1510
|
+
{
|
1511
|
+
if(m_p){
|
1512
|
+
m_sv.priv_put_in_pool(m_p);
|
1513
|
+
}
|
1514
|
+
}
|
1515
|
+
|
1516
|
+
void release()
|
1517
|
+
{ m_p = node_ptr(); }
|
1518
|
+
|
1519
|
+
private:
|
1520
|
+
stable_vector &m_sv;
|
1521
|
+
node_ptr m_p;
|
1522
|
+
};
|
1523
|
+
|
1524
|
+
index_iterator priv_insert_forward_non_templated(size_type pos, size_type num_new)
|
1525
|
+
{
|
1526
|
+
index_traits_type::initialize_end_node(this->index, this->internal_data.end_node, num_new);
|
1527
|
+
|
1528
|
+
//Now try to fill the pool with new data
|
1529
|
+
if(this->internal_data.pool_size < num_new){
|
1530
|
+
this->priv_increase_pool(num_new - this->internal_data.pool_size);
|
1531
|
+
}
|
1532
|
+
|
1533
|
+
//Now try to make room in the vector
|
1534
|
+
const node_base_ptr_ptr old_buffer = this->index.data();
|
1535
|
+
this->index.insert(this->index.begin() + pos, num_new, node_ptr());
|
1536
|
+
bool new_buffer = this->index.data() != old_buffer;
|
1537
|
+
|
1538
|
+
//Fix the pointers for the newly allocated buffer
|
1539
|
+
const index_iterator index_beg = this->index.begin();
|
1540
|
+
if(new_buffer){
|
1541
|
+
index_traits_type::fix_up_pointers(index_beg, index_beg + pos);
|
1542
|
+
}
|
1543
|
+
return index_beg + pos;
|
1544
|
+
}
|
1545
|
+
|
1546
|
+
bool priv_capacity_bigger_than_size() const
|
1547
|
+
{
|
1548
|
+
return this->index.capacity() > this->index.size() &&
|
1549
|
+
this->internal_data.pool_size > 0;
|
1550
|
+
}
|
1551
|
+
|
1552
|
+
template <class U>
|
1553
|
+
void priv_push_back(BOOST_MOVE_CATCH_FWD(U) x)
|
1554
|
+
{
|
1555
|
+
if(this->priv_capacity_bigger_than_size()){
|
1556
|
+
//Enough memory in the pool and in the index
|
1557
|
+
const node_ptr p = this->priv_get_from_pool();
|
1558
|
+
BOOST_ASSERT(!!p);
|
1559
|
+
{
|
1560
|
+
push_back_rollback rollback(*this, p);
|
1561
|
+
//This might throw
|
1562
|
+
this->priv_build_node_from_convertible(p, ::boost::forward<U>(x));
|
1563
|
+
rollback.release();
|
1564
|
+
}
|
1565
|
+
//This can't throw as there is room for a new elements in the index
|
1566
|
+
index_iterator new_index = this->index.insert(this->index.end() - ExtraPointers, p);
|
1567
|
+
index_traits_type::fix_up_pointers_from(this->index, new_index);
|
1568
|
+
}
|
1569
|
+
else{
|
1570
|
+
this->insert(this->cend(), ::boost::forward<U>(x));
|
1571
|
+
}
|
1572
|
+
}
|
1573
|
+
|
1574
|
+
iterator priv_insert(const_iterator position, const value_type &t)
|
1575
|
+
{
|
1576
|
+
typedef constant_iterator<value_type, difference_type> cvalue_iterator;
|
1577
|
+
return this->insert(position, cvalue_iterator(t, 1), cvalue_iterator());
|
1578
|
+
}
|
1579
|
+
|
1580
|
+
iterator priv_insert(const_iterator position, BOOST_RV_REF(T) x)
|
1581
|
+
{
|
1582
|
+
typedef repeat_iterator<T, difference_type> repeat_it;
|
1583
|
+
typedef boost::move_iterator<repeat_it> repeat_move_it;
|
1584
|
+
//Just call more general insert(pos, size, value) and return iterator
|
1585
|
+
return this->insert(position, repeat_move_it(repeat_it(x, 1)), repeat_move_it(repeat_it()));
|
1586
|
+
}
|
1587
|
+
|
1588
|
+
void priv_clear_pool()
|
1589
|
+
{
|
1590
|
+
if(!this->index.empty() && this->index.back()){
|
1591
|
+
node_base_ptr &pool_first_ref = *(this->index.end() - 2);
|
1592
|
+
node_base_ptr &pool_last_ref = this->index.back();
|
1593
|
+
|
1594
|
+
multiallocation_chain holder;
|
1595
|
+
holder.incorporate_after( holder.before_begin()
|
1596
|
+
, node_ptr_traits::static_cast_from(pool_first_ref)
|
1597
|
+
, node_ptr_traits::static_cast_from(pool_last_ref)
|
1598
|
+
, internal_data.pool_size);
|
1599
|
+
this->deallocate_individual(holder);
|
1600
|
+
pool_first_ref = pool_last_ref = 0;
|
1601
|
+
this->internal_data.pool_size = 0;
|
1602
|
+
}
|
1603
|
+
}
|
1604
|
+
|
1605
|
+
void priv_increase_pool(size_type n)
|
1606
|
+
{
|
1607
|
+
node_base_ptr &pool_first_ref = *(this->index.end() - 2);
|
1608
|
+
node_base_ptr &pool_last_ref = this->index.back();
|
1609
|
+
multiallocation_chain holder;
|
1610
|
+
holder.incorporate_after( holder.before_begin()
|
1611
|
+
, node_ptr_traits::static_cast_from(pool_first_ref)
|
1612
|
+
, node_ptr_traits::static_cast_from(pool_last_ref)
|
1613
|
+
, internal_data.pool_size);
|
1614
|
+
multiallocation_chain m;
|
1615
|
+
this->allocate_individual(n, m);
|
1616
|
+
holder.splice_after(holder.before_begin(), m, m.before_begin(), m.last(), n);
|
1617
|
+
this->internal_data.pool_size += n;
|
1618
|
+
std::pair<node_ptr, node_ptr> data(holder.extract_data());
|
1619
|
+
pool_first_ref = data.first;
|
1620
|
+
pool_last_ref = data.second;
|
1621
|
+
}
|
1622
|
+
|
1623
|
+
void priv_put_in_pool(const node_ptr &p)
|
1624
|
+
{
|
1625
|
+
node_base_ptr &pool_first_ref = *(this->index.end()-2);
|
1626
|
+
node_base_ptr &pool_last_ref = this->index.back();
|
1627
|
+
multiallocation_chain holder;
|
1628
|
+
holder.incorporate_after( holder.before_begin()
|
1629
|
+
, node_ptr_traits::static_cast_from(pool_first_ref)
|
1630
|
+
, node_ptr_traits::static_cast_from(pool_last_ref)
|
1631
|
+
, internal_data.pool_size);
|
1632
|
+
holder.push_front(p);
|
1633
|
+
++this->internal_data.pool_size;
|
1634
|
+
std::pair<node_ptr, node_ptr> ret(holder.extract_data());
|
1635
|
+
pool_first_ref = ret.first;
|
1636
|
+
pool_last_ref = ret.second;
|
1637
|
+
}
|
1638
|
+
|
1639
|
+
void priv_put_in_pool(multiallocation_chain &ch)
|
1640
|
+
{
|
1641
|
+
node_base_ptr &pool_first_ref = *(this->index.end()-(ExtraPointers-1));
|
1642
|
+
node_base_ptr &pool_last_ref = this->index.back();
|
1643
|
+
ch.incorporate_after( ch.before_begin()
|
1644
|
+
, node_ptr_traits::static_cast_from(pool_first_ref)
|
1645
|
+
, node_ptr_traits::static_cast_from(pool_last_ref)
|
1646
|
+
, internal_data.pool_size);
|
1647
|
+
this->internal_data.pool_size = ch.size();
|
1648
|
+
const std::pair<node_ptr, node_ptr> ret(ch.extract_data());
|
1649
|
+
pool_first_ref = ret.first;
|
1650
|
+
pool_last_ref = ret.second;
|
1651
|
+
}
|
1652
|
+
|
1653
|
+
node_ptr priv_get_from_pool()
|
1654
|
+
{
|
1655
|
+
//Precondition: index is not empty
|
1656
|
+
BOOST_ASSERT(!this->index.empty());
|
1657
|
+
node_base_ptr &pool_first_ref = *(this->index.end() - (ExtraPointers-1));
|
1658
|
+
node_base_ptr &pool_last_ref = this->index.back();
|
1659
|
+
multiallocation_chain holder;
|
1660
|
+
holder.incorporate_after( holder.before_begin()
|
1661
|
+
, node_ptr_traits::static_cast_from(pool_first_ref)
|
1662
|
+
, node_ptr_traits::static_cast_from(pool_last_ref)
|
1663
|
+
, internal_data.pool_size);
|
1664
|
+
node_ptr ret = holder.pop_front();
|
1665
|
+
--this->internal_data.pool_size;
|
1666
|
+
if(!internal_data.pool_size){
|
1667
|
+
pool_first_ref = pool_last_ref = node_ptr();
|
1668
|
+
}
|
1669
|
+
else{
|
1670
|
+
const std::pair<node_ptr, node_ptr> data(holder.extract_data());
|
1671
|
+
pool_first_ref = data.first;
|
1672
|
+
pool_last_ref = data.second;
|
1673
|
+
}
|
1674
|
+
return ret;
|
1675
|
+
}
|
1676
|
+
|
1677
|
+
node_ptr priv_get_end_node() const
|
1678
|
+
{
|
1679
|
+
return node_ptr_traits::pointer_to
|
1680
|
+
(static_cast<node_type&>(const_cast<node_base_type&>(this->internal_data.end_node)));
|
1681
|
+
}
|
1682
|
+
|
1683
|
+
void priv_destroy_node(const node_type &n)
|
1684
|
+
{
|
1685
|
+
allocator_traits<node_allocator_type>::
|
1686
|
+
destroy(this->priv_node_alloc(), container_detail::addressof(n.value));
|
1687
|
+
static_cast<const node_base_type*>(&n)->~node_base_type();
|
1688
|
+
}
|
1689
|
+
|
1690
|
+
void priv_delete_node(const node_ptr &n)
|
1691
|
+
{
|
1692
|
+
this->priv_destroy_node(*n);
|
1693
|
+
this->priv_put_in_pool(n);
|
1694
|
+
}
|
1695
|
+
|
1696
|
+
template<class Iterator>
|
1697
|
+
void priv_build_node_from_it(const node_ptr &p, const index_iterator &up_index, const Iterator &it)
|
1698
|
+
{
|
1699
|
+
//This can throw
|
1700
|
+
boost::container::construct_in_place
|
1701
|
+
( this->priv_node_alloc()
|
1702
|
+
, container_detail::addressof(p->value)
|
1703
|
+
, it);
|
1704
|
+
//This does not throw
|
1705
|
+
::new(static_cast<node_base_type*>(container_detail::to_raw_pointer(p)))
|
1706
|
+
node_base_type(index_traits_type::ptr_to_node_base_ptr(*up_index));
|
1707
|
+
}
|
1708
|
+
|
1709
|
+
template<class ValueConvertible>
|
1710
|
+
void priv_build_node_from_convertible(const node_ptr &p, BOOST_FWD_REF(ValueConvertible) value_convertible)
|
1711
|
+
{
|
1712
|
+
//This can throw
|
1713
|
+
boost::container::allocator_traits<node_allocator_type>::construct
|
1714
|
+
( this->priv_node_alloc()
|
1715
|
+
, container_detail::addressof(p->value)
|
1716
|
+
, ::boost::forward<ValueConvertible>(value_convertible));
|
1717
|
+
//This does not throw
|
1718
|
+
::new(static_cast<node_base_type*>(container_detail::to_raw_pointer(p))) node_base_type;
|
1719
|
+
}
|
1720
|
+
|
1721
|
+
void priv_swap_members(stable_vector &x)
|
1722
|
+
{
|
1723
|
+
boost::container::swap_dispatch(this->internal_data.pool_size, x.internal_data.pool_size);
|
1724
|
+
index_traits_type::readjust_end_node(this->index, this->internal_data.end_node);
|
1725
|
+
index_traits_type::readjust_end_node(x.index, x.internal_data.end_node);
|
1726
|
+
}
|
1727
|
+
|
1728
|
+
#if defined(STABLE_VECTOR_ENABLE_INVARIANT_CHECKING)
|
1729
|
+
bool priv_invariant()const
|
1730
|
+
{
|
1731
|
+
index_type & index_ref = const_cast<index_type&>(this->index);
|
1732
|
+
|
1733
|
+
if(index.empty())
|
1734
|
+
return !this->capacity() && !this->size();
|
1735
|
+
if(this->priv_get_end_node() != *(index.end() - ExtraPointers)){
|
1736
|
+
return false;
|
1737
|
+
}
|
1738
|
+
|
1739
|
+
if(!index_traits_type::invariants(index_ref)){
|
1740
|
+
return false;
|
1741
|
+
}
|
1742
|
+
|
1743
|
+
size_type n = this->capacity() - this->size();
|
1744
|
+
node_base_ptr &pool_first_ref = *(index_ref.end() - (ExtraPointers-1));
|
1745
|
+
node_base_ptr &pool_last_ref = index_ref.back();
|
1746
|
+
multiallocation_chain holder;
|
1747
|
+
holder.incorporate_after( holder.before_begin()
|
1748
|
+
, node_ptr_traits::static_cast_from(pool_first_ref)
|
1749
|
+
, node_ptr_traits::static_cast_from(pool_last_ref)
|
1750
|
+
, internal_data.pool_size);
|
1751
|
+
typename multiallocation_chain::iterator beg(holder.begin()), end(holder.end());
|
1752
|
+
size_type num_pool = 0;
|
1753
|
+
while(beg != end){
|
1754
|
+
++num_pool;
|
1755
|
+
++beg;
|
1756
|
+
}
|
1757
|
+
return n >= num_pool && num_pool == internal_data.pool_size;
|
1758
|
+
}
|
1759
|
+
|
1760
|
+
class invariant_checker
|
1761
|
+
{
|
1762
|
+
invariant_checker(const invariant_checker &);
|
1763
|
+
invariant_checker & operator=(const invariant_checker &);
|
1764
|
+
const stable_vector* p;
|
1765
|
+
|
1766
|
+
public:
|
1767
|
+
invariant_checker(const stable_vector& v):p(&v){}
|
1768
|
+
~invariant_checker(){BOOST_ASSERT(p->priv_invariant());}
|
1769
|
+
void touch(){}
|
1770
|
+
};
|
1771
|
+
#endif
|
1772
|
+
|
1773
|
+
class ebo_holder
|
1774
|
+
: public node_allocator_type
|
1775
|
+
{
|
1776
|
+
private:
|
1777
|
+
BOOST_MOVABLE_BUT_NOT_COPYABLE(ebo_holder)
|
1778
|
+
|
1779
|
+
public:
|
1780
|
+
template<class AllocatorRLValue>
|
1781
|
+
explicit ebo_holder(BOOST_FWD_REF(AllocatorRLValue) a)
|
1782
|
+
: node_allocator_type(boost::forward<AllocatorRLValue>(a))
|
1783
|
+
, pool_size(0)
|
1784
|
+
, end_node()
|
1785
|
+
{}
|
1786
|
+
|
1787
|
+
ebo_holder()
|
1788
|
+
: node_allocator_type()
|
1789
|
+
, pool_size(0)
|
1790
|
+
, end_node()
|
1791
|
+
{}
|
1792
|
+
|
1793
|
+
size_type pool_size;
|
1794
|
+
node_base_type end_node;
|
1795
|
+
} internal_data;
|
1796
|
+
|
1797
|
+
node_allocator_type &priv_node_alloc() { return internal_data; }
|
1798
|
+
const node_allocator_type &priv_node_alloc() const { return internal_data; }
|
1799
|
+
|
1800
|
+
index_type index;
|
1801
|
+
/// @endcond
|
1802
|
+
};
|
1803
|
+
|
1804
|
+
template <typename T,typename Allocator>
|
1805
|
+
bool operator==(const stable_vector<T,Allocator>& x,const stable_vector<T,Allocator>& y)
|
1806
|
+
{
|
1807
|
+
return x.size()==y.size()&&std::equal(x.begin(),x.end(),y.begin());
|
1808
|
+
}
|
1809
|
+
|
1810
|
+
template <typename T,typename Allocator>
|
1811
|
+
bool operator< (const stable_vector<T,Allocator>& x,const stable_vector<T,Allocator>& y)
|
1812
|
+
{
|
1813
|
+
return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
|
1814
|
+
}
|
1815
|
+
|
1816
|
+
template <typename T,typename Allocator>
|
1817
|
+
bool operator!=(const stable_vector<T,Allocator>& x,const stable_vector<T,Allocator>& y)
|
1818
|
+
{
|
1819
|
+
return !(x==y);
|
1820
|
+
}
|
1821
|
+
|
1822
|
+
template <typename T,typename Allocator>
|
1823
|
+
bool operator> (const stable_vector<T,Allocator>& x,const stable_vector<T,Allocator>& y)
|
1824
|
+
{
|
1825
|
+
return y<x;
|
1826
|
+
}
|
1827
|
+
|
1828
|
+
template <typename T,typename Allocator>
|
1829
|
+
bool operator>=(const stable_vector<T,Allocator>& x,const stable_vector<T,Allocator>& y)
|
1830
|
+
{
|
1831
|
+
return !(x<y);
|
1832
|
+
}
|
1833
|
+
|
1834
|
+
template <typename T,typename Allocator>
|
1835
|
+
bool operator<=(const stable_vector<T,Allocator>& x,const stable_vector<T,Allocator>& y)
|
1836
|
+
{
|
1837
|
+
return !(x>y);
|
1838
|
+
}
|
1839
|
+
|
1840
|
+
// specialized algorithms:
|
1841
|
+
|
1842
|
+
template <typename T, typename Allocator>
|
1843
|
+
void swap(stable_vector<T,Allocator>& x,stable_vector<T,Allocator>& y)
|
1844
|
+
{
|
1845
|
+
x.swap(y);
|
1846
|
+
}
|
1847
|
+
|
1848
|
+
/// @cond
|
1849
|
+
|
1850
|
+
#undef STABLE_VECTOR_CHECK_INVARIANT
|
1851
|
+
|
1852
|
+
/// @endcond
|
1853
|
+
|
1854
|
+
/*
|
1855
|
+
|
1856
|
+
//!has_trivial_destructor_after_move<> == true_type
|
1857
|
+
//!specialization for optimizations
|
1858
|
+
template <class T, class Allocator>
|
1859
|
+
struct has_trivial_destructor_after_move<boost::container::stable_vector<T, Allocator> >
|
1860
|
+
: public has_trivial_destructor_after_move<Allocator>::value
|
1861
|
+
{};
|
1862
|
+
|
1863
|
+
*/
|
1864
|
+
|
1865
|
+
}}
|
1866
|
+
|
1867
|
+
#include <boost/container/detail/config_end.hpp>
|
1868
|
+
|
1869
|
+
#endif //BOOST_CONTAINER_STABLE_VECTOR_HPP
|