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,2012 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
//
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
8
|
+
//
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
10
|
+
// Copyright (c) 1996,1997
|
11
|
+
// Silicon Graphics Computer Systems, Inc.
|
12
|
+
//
|
13
|
+
// Permission to use, copy, modify, distribute and sell this software
|
14
|
+
// and its documentation for any purpose is hereby granted without fee,
|
15
|
+
// provided that the above copyright notice appear in all copies and
|
16
|
+
// that both that copyright notice and this permission notice appear
|
17
|
+
// in supporting documentation. Silicon Graphics makes no
|
18
|
+
// representations about the suitability of this software for any
|
19
|
+
// purpose. It is provided "as is" without express or implied warranty.
|
20
|
+
//
|
21
|
+
//
|
22
|
+
// Copyright (c) 1994
|
23
|
+
// Hewlett-Packard Company
|
24
|
+
//
|
25
|
+
// Permission to use, copy, modify, distribute and sell this software
|
26
|
+
// and its documentation for any purpose is hereby granted without fee,
|
27
|
+
// provided that the above copyright notice appear in all copies and
|
28
|
+
// that both that copyright notice and this permission notice appear
|
29
|
+
// in supporting documentation. Hewlett-Packard Company makes no
|
30
|
+
// representations about the suitability of this software for any
|
31
|
+
// purpose. It is provided "as is" without express or implied warranty.
|
32
|
+
|
33
|
+
#ifndef BOOST_CONTAINER_DEQUE_HPP
|
34
|
+
#define BOOST_CONTAINER_DEQUE_HPP
|
35
|
+
|
36
|
+
#if (defined _MSC_VER) && (_MSC_VER >= 1200)
|
37
|
+
# pragma once
|
38
|
+
#endif
|
39
|
+
|
40
|
+
#include <boost/container/detail/config_begin.hpp>
|
41
|
+
#include <boost/container/detail/workaround.hpp>
|
42
|
+
|
43
|
+
#include <boost/container/detail/utilities.hpp>
|
44
|
+
#include <boost/container/detail/iterators.hpp>
|
45
|
+
#include <boost/container/detail/algorithms.hpp>
|
46
|
+
#include <boost/container/detail/mpl.hpp>
|
47
|
+
#include <boost/container/allocator_traits.hpp>
|
48
|
+
#include <boost/container/container_fwd.hpp>
|
49
|
+
#include <boost/container/throw_exception.hpp>
|
50
|
+
#include <cstddef>
|
51
|
+
#include <iterator>
|
52
|
+
#include <boost/assert.hpp>
|
53
|
+
#include <memory>
|
54
|
+
#include <algorithm>
|
55
|
+
#include <boost/detail/no_exceptions_support.hpp>
|
56
|
+
#include <boost/type_traits/has_trivial_destructor.hpp>
|
57
|
+
#include <boost/type_traits/has_trivial_copy.hpp>
|
58
|
+
#include <boost/type_traits/has_trivial_assign.hpp>
|
59
|
+
#include <boost/type_traits/has_nothrow_copy.hpp>
|
60
|
+
#include <boost/type_traits/has_nothrow_assign.hpp>
|
61
|
+
#include <boost/move/utility.hpp>
|
62
|
+
#include <boost/move/iterator.hpp>
|
63
|
+
#include <boost/move/detail/move_helpers.hpp>
|
64
|
+
#include <boost/container/detail/advanced_insert_int.hpp>
|
65
|
+
#include <boost/detail/no_exceptions_support.hpp>
|
66
|
+
|
67
|
+
namespace boost {
|
68
|
+
namespace container {
|
69
|
+
|
70
|
+
/// @cond
|
71
|
+
#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
|
72
|
+
template <class T, class Allocator = std::allocator<T> >
|
73
|
+
#else
|
74
|
+
template <class T, class Allocator>
|
75
|
+
#endif
|
76
|
+
class deque;
|
77
|
+
|
78
|
+
template <class T, class Allocator>
|
79
|
+
struct deque_value_traits
|
80
|
+
{
|
81
|
+
typedef T value_type;
|
82
|
+
typedef Allocator allocator_type;
|
83
|
+
static const bool trivial_dctr = boost::has_trivial_destructor<value_type>::value;
|
84
|
+
static const bool trivial_dctr_after_move = ::boost::has_trivial_destructor_after_move<value_type>::value;
|
85
|
+
static const bool trivial_copy = has_trivial_copy<value_type>::value;
|
86
|
+
static const bool nothrow_copy = has_nothrow_copy<value_type>::value;
|
87
|
+
static const bool trivial_assign = has_trivial_assign<value_type>::value;
|
88
|
+
//static const bool nothrow_assign = has_nothrow_assign<value_type>::value;
|
89
|
+
static const bool nothrow_assign = false;
|
90
|
+
};
|
91
|
+
|
92
|
+
// Note: this function is simply a kludge to work around several compilers'
|
93
|
+
// bugs in handling constant expressions.
|
94
|
+
inline std::size_t deque_buf_size(std::size_t size)
|
95
|
+
{ return size < 512 ? std::size_t(512 / size) : std::size_t(1); }
|
96
|
+
|
97
|
+
// Deque base class. It has two purposes. First, its constructor
|
98
|
+
// and destructor allocate (but don't initialize) storage. This makes
|
99
|
+
// exception safety easier.
|
100
|
+
template <class T, class Allocator>
|
101
|
+
class deque_base
|
102
|
+
{
|
103
|
+
BOOST_COPYABLE_AND_MOVABLE(deque_base)
|
104
|
+
public:
|
105
|
+
typedef allocator_traits<Allocator> val_alloc_traits_type;
|
106
|
+
typedef typename val_alloc_traits_type::value_type val_alloc_val;
|
107
|
+
typedef typename val_alloc_traits_type::pointer val_alloc_ptr;
|
108
|
+
typedef typename val_alloc_traits_type::const_pointer val_alloc_cptr;
|
109
|
+
typedef typename val_alloc_traits_type::reference val_alloc_ref;
|
110
|
+
typedef typename val_alloc_traits_type::const_reference val_alloc_cref;
|
111
|
+
typedef typename val_alloc_traits_type::difference_type val_alloc_diff;
|
112
|
+
typedef typename val_alloc_traits_type::size_type val_alloc_size;
|
113
|
+
typedef typename val_alloc_traits_type::template
|
114
|
+
portable_rebind_alloc<val_alloc_ptr>::type ptr_alloc_t;
|
115
|
+
typedef allocator_traits<ptr_alloc_t> ptr_alloc_traits_type;
|
116
|
+
typedef typename ptr_alloc_traits_type::value_type ptr_alloc_val;
|
117
|
+
typedef typename ptr_alloc_traits_type::pointer ptr_alloc_ptr;
|
118
|
+
typedef typename ptr_alloc_traits_type::const_pointer ptr_alloc_cptr;
|
119
|
+
typedef typename ptr_alloc_traits_type::reference ptr_alloc_ref;
|
120
|
+
typedef typename ptr_alloc_traits_type::const_reference ptr_alloc_cref;
|
121
|
+
typedef Allocator allocator_type;
|
122
|
+
typedef allocator_type stored_allocator_type;
|
123
|
+
typedef val_alloc_size size_type;
|
124
|
+
|
125
|
+
protected:
|
126
|
+
|
127
|
+
typedef deque_value_traits<T, Allocator> traits_t;
|
128
|
+
typedef ptr_alloc_t map_allocator_type;
|
129
|
+
|
130
|
+
static size_type s_buffer_size() { return deque_buf_size(sizeof(T)); }
|
131
|
+
|
132
|
+
val_alloc_ptr priv_allocate_node()
|
133
|
+
{ return this->alloc().allocate(s_buffer_size()); }
|
134
|
+
|
135
|
+
void priv_deallocate_node(val_alloc_ptr p)
|
136
|
+
{ this->alloc().deallocate(p, s_buffer_size()); }
|
137
|
+
|
138
|
+
ptr_alloc_ptr priv_allocate_map(size_type n)
|
139
|
+
{ return this->ptr_alloc().allocate(n); }
|
140
|
+
|
141
|
+
void priv_deallocate_map(ptr_alloc_ptr p, size_type n)
|
142
|
+
{ this->ptr_alloc().deallocate(p, n); }
|
143
|
+
|
144
|
+
public:
|
145
|
+
// Class invariants:
|
146
|
+
// For any nonsingular iterator i:
|
147
|
+
// i.node is the address of an element in the map array. The
|
148
|
+
// contents of i.node is a pointer to the beginning of a node.
|
149
|
+
// i.first == //(i.node)
|
150
|
+
// i.last == i.first + node_size
|
151
|
+
// i.cur is a pointer in the range [i.first, i.last). NOTE:
|
152
|
+
// the implication of this is that i.cur is always a dereferenceable
|
153
|
+
// pointer, even if i is a past-the-end iterator.
|
154
|
+
// Start and Finish are always nonsingular iterators. NOTE: this means
|
155
|
+
// that an empty deque must have one node, and that a deque
|
156
|
+
// with N elements, where N is the buffer size, must have two nodes.
|
157
|
+
// For every node other than start.node and finish.node, every element
|
158
|
+
// in the node is an initialized object. If start.node == finish.node,
|
159
|
+
// then [start.cur, finish.cur) are initialized objects, and
|
160
|
+
// the elements outside that range are uninitialized storage. Otherwise,
|
161
|
+
// [start.cur, start.last) and [finish.first, finish.cur) are initialized
|
162
|
+
// objects, and [start.first, start.cur) and [finish.cur, finish.last)
|
163
|
+
// are uninitialized storage.
|
164
|
+
// [map, map + map_size) is a valid, non-empty range.
|
165
|
+
// [start.node, finish.node] is a valid range contained within
|
166
|
+
// [map, map + map_size).
|
167
|
+
// Allocator pointer in the range [map, map + map_size) points to an allocated node
|
168
|
+
// if and only if the pointer is in the range [start.node, finish.node].
|
169
|
+
class const_iterator
|
170
|
+
: public std::iterator<std::random_access_iterator_tag,
|
171
|
+
val_alloc_val, val_alloc_diff,
|
172
|
+
val_alloc_cptr, val_alloc_cref>
|
173
|
+
{
|
174
|
+
public:
|
175
|
+
static size_type s_buffer_size() { return deque_base<T, Allocator>::s_buffer_size(); }
|
176
|
+
|
177
|
+
typedef std::random_access_iterator_tag iterator_category;
|
178
|
+
typedef val_alloc_val value_type;
|
179
|
+
typedef val_alloc_cptr pointer;
|
180
|
+
typedef val_alloc_cref reference;
|
181
|
+
typedef val_alloc_diff difference_type;
|
182
|
+
|
183
|
+
typedef ptr_alloc_ptr index_pointer;
|
184
|
+
typedef const_iterator self_t;
|
185
|
+
|
186
|
+
friend class deque<T, Allocator>;
|
187
|
+
friend class deque_base<T, Allocator>;
|
188
|
+
|
189
|
+
protected:
|
190
|
+
val_alloc_ptr m_cur;
|
191
|
+
val_alloc_ptr m_first;
|
192
|
+
val_alloc_ptr m_last;
|
193
|
+
index_pointer m_node;
|
194
|
+
|
195
|
+
public:
|
196
|
+
const_iterator(val_alloc_ptr x, index_pointer y)
|
197
|
+
: m_cur(x), m_first(*y),
|
198
|
+
m_last(*y + s_buffer_size()), m_node(y) {}
|
199
|
+
|
200
|
+
const_iterator() : m_cur(0), m_first(0), m_last(0), m_node(0) {}
|
201
|
+
|
202
|
+
const_iterator(const const_iterator& x)
|
203
|
+
: m_cur(x.m_cur), m_first(x.m_first),
|
204
|
+
m_last(x.m_last), m_node(x.m_node) {}
|
205
|
+
|
206
|
+
reference operator*() const
|
207
|
+
{ return *this->m_cur; }
|
208
|
+
|
209
|
+
pointer operator->() const
|
210
|
+
{ return this->m_cur; }
|
211
|
+
|
212
|
+
difference_type operator-(const self_t& x) const
|
213
|
+
{
|
214
|
+
if(!this->m_cur && !x.m_cur){
|
215
|
+
return 0;
|
216
|
+
}
|
217
|
+
return difference_type(this->s_buffer_size()) * (this->m_node - x.m_node - 1) +
|
218
|
+
(this->m_cur - this->m_first) + (x.m_last - x.m_cur);
|
219
|
+
}
|
220
|
+
|
221
|
+
self_t& operator++()
|
222
|
+
{
|
223
|
+
++this->m_cur;
|
224
|
+
if (this->m_cur == this->m_last) {
|
225
|
+
this->priv_set_node(this->m_node + 1);
|
226
|
+
this->m_cur = this->m_first;
|
227
|
+
}
|
228
|
+
return *this;
|
229
|
+
}
|
230
|
+
|
231
|
+
self_t operator++(int)
|
232
|
+
{
|
233
|
+
self_t tmp = *this;
|
234
|
+
++*this;
|
235
|
+
return tmp;
|
236
|
+
}
|
237
|
+
|
238
|
+
self_t& operator--()
|
239
|
+
{
|
240
|
+
if (this->m_cur == this->m_first) {
|
241
|
+
this->priv_set_node(this->m_node - 1);
|
242
|
+
this->m_cur = this->m_last;
|
243
|
+
}
|
244
|
+
--this->m_cur;
|
245
|
+
return *this;
|
246
|
+
}
|
247
|
+
|
248
|
+
self_t operator--(int)
|
249
|
+
{
|
250
|
+
self_t tmp = *this;
|
251
|
+
--*this;
|
252
|
+
return tmp;
|
253
|
+
}
|
254
|
+
|
255
|
+
self_t& operator+=(difference_type n)
|
256
|
+
{
|
257
|
+
difference_type offset = n + (this->m_cur - this->m_first);
|
258
|
+
if (offset >= 0 && offset < difference_type(this->s_buffer_size()))
|
259
|
+
this->m_cur += n;
|
260
|
+
else {
|
261
|
+
difference_type node_offset =
|
262
|
+
offset > 0 ? offset / difference_type(this->s_buffer_size())
|
263
|
+
: -difference_type((-offset - 1) / this->s_buffer_size()) - 1;
|
264
|
+
this->priv_set_node(this->m_node + node_offset);
|
265
|
+
this->m_cur = this->m_first +
|
266
|
+
(offset - node_offset * difference_type(this->s_buffer_size()));
|
267
|
+
}
|
268
|
+
return *this;
|
269
|
+
}
|
270
|
+
|
271
|
+
self_t operator+(difference_type n) const
|
272
|
+
{ self_t tmp = *this; return tmp += n; }
|
273
|
+
|
274
|
+
self_t& operator-=(difference_type n)
|
275
|
+
{ return *this += -n; }
|
276
|
+
|
277
|
+
self_t operator-(difference_type n) const
|
278
|
+
{ self_t tmp = *this; return tmp -= n; }
|
279
|
+
|
280
|
+
reference operator[](difference_type n) const
|
281
|
+
{ return *(*this + n); }
|
282
|
+
|
283
|
+
bool operator==(const self_t& x) const
|
284
|
+
{ return this->m_cur == x.m_cur; }
|
285
|
+
|
286
|
+
bool operator!=(const self_t& x) const
|
287
|
+
{ return !(*this == x); }
|
288
|
+
|
289
|
+
bool operator<(const self_t& x) const
|
290
|
+
{
|
291
|
+
return (this->m_node == x.m_node) ?
|
292
|
+
(this->m_cur < x.m_cur) : (this->m_node < x.m_node);
|
293
|
+
}
|
294
|
+
|
295
|
+
bool operator>(const self_t& x) const
|
296
|
+
{ return x < *this; }
|
297
|
+
|
298
|
+
bool operator<=(const self_t& x) const
|
299
|
+
{ return !(x < *this); }
|
300
|
+
|
301
|
+
bool operator>=(const self_t& x) const
|
302
|
+
{ return !(*this < x); }
|
303
|
+
|
304
|
+
void priv_set_node(index_pointer new_node)
|
305
|
+
{
|
306
|
+
this->m_node = new_node;
|
307
|
+
this->m_first = *new_node;
|
308
|
+
this->m_last = this->m_first + this->s_buffer_size();
|
309
|
+
}
|
310
|
+
|
311
|
+
friend const_iterator operator+(difference_type n, const const_iterator& x)
|
312
|
+
{ return x + n; }
|
313
|
+
};
|
314
|
+
|
315
|
+
//Deque iterator
|
316
|
+
class iterator : public const_iterator
|
317
|
+
{
|
318
|
+
public:
|
319
|
+
typedef std::random_access_iterator_tag iterator_category;
|
320
|
+
typedef val_alloc_val value_type;
|
321
|
+
typedef val_alloc_ptr pointer;
|
322
|
+
typedef val_alloc_ref reference;
|
323
|
+
typedef val_alloc_diff difference_type;
|
324
|
+
typedef ptr_alloc_ptr index_pointer;
|
325
|
+
typedef const_iterator self_t;
|
326
|
+
|
327
|
+
friend class deque<T, Allocator>;
|
328
|
+
friend class deque_base<T, Allocator>;
|
329
|
+
|
330
|
+
private:
|
331
|
+
explicit iterator(const const_iterator& x) : const_iterator(x){}
|
332
|
+
|
333
|
+
public:
|
334
|
+
//Constructors
|
335
|
+
iterator(val_alloc_ptr x, index_pointer y) : const_iterator(x, y){}
|
336
|
+
iterator() : const_iterator(){}
|
337
|
+
//iterator(const const_iterator &cit) : const_iterator(cit){}
|
338
|
+
iterator(const iterator& x) : const_iterator(x){}
|
339
|
+
|
340
|
+
//Pointer like operators
|
341
|
+
reference operator*() const { return *this->m_cur; }
|
342
|
+
pointer operator->() const { return this->m_cur; }
|
343
|
+
|
344
|
+
reference operator[](difference_type n) const { return *(*this + n); }
|
345
|
+
|
346
|
+
//Increment / Decrement
|
347
|
+
iterator& operator++()
|
348
|
+
{ this->const_iterator::operator++(); return *this; }
|
349
|
+
|
350
|
+
iterator operator++(int)
|
351
|
+
{ iterator tmp = *this; ++*this; return tmp; }
|
352
|
+
|
353
|
+
iterator& operator--()
|
354
|
+
{ this->const_iterator::operator--(); return *this; }
|
355
|
+
|
356
|
+
iterator operator--(int)
|
357
|
+
{ iterator tmp = *this; --*this; return tmp; }
|
358
|
+
|
359
|
+
// Arithmetic
|
360
|
+
iterator& operator+=(difference_type off)
|
361
|
+
{ this->const_iterator::operator+=(off); return *this; }
|
362
|
+
|
363
|
+
iterator operator+(difference_type off) const
|
364
|
+
{ return iterator(this->const_iterator::operator+(off)); }
|
365
|
+
|
366
|
+
friend iterator operator+(difference_type off, const iterator& right)
|
367
|
+
{ return iterator(off+static_cast<const const_iterator &>(right)); }
|
368
|
+
|
369
|
+
iterator& operator-=(difference_type off)
|
370
|
+
{ this->const_iterator::operator-=(off); return *this; }
|
371
|
+
|
372
|
+
iterator operator-(difference_type off) const
|
373
|
+
{ return iterator(this->const_iterator::operator-(off)); }
|
374
|
+
|
375
|
+
difference_type operator-(const const_iterator& right) const
|
376
|
+
{ return static_cast<const const_iterator&>(*this) - right; }
|
377
|
+
};
|
378
|
+
|
379
|
+
deque_base(size_type num_elements, const allocator_type& a)
|
380
|
+
: members_(a)
|
381
|
+
{ this->priv_initialize_map(num_elements); }
|
382
|
+
|
383
|
+
explicit deque_base(const allocator_type& a)
|
384
|
+
: members_(a)
|
385
|
+
{}
|
386
|
+
|
387
|
+
deque_base()
|
388
|
+
: members_()
|
389
|
+
{}
|
390
|
+
|
391
|
+
explicit deque_base(BOOST_RV_REF(deque_base) x)
|
392
|
+
: members_( boost::move(x.ptr_alloc())
|
393
|
+
, boost::move(x.alloc()) )
|
394
|
+
{}
|
395
|
+
|
396
|
+
~deque_base()
|
397
|
+
{
|
398
|
+
if (this->members_.m_map) {
|
399
|
+
this->priv_destroy_nodes(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1);
|
400
|
+
this->priv_deallocate_map(this->members_.m_map, this->members_.m_map_size);
|
401
|
+
}
|
402
|
+
}
|
403
|
+
|
404
|
+
private:
|
405
|
+
deque_base(const deque_base&);
|
406
|
+
|
407
|
+
protected:
|
408
|
+
|
409
|
+
void swap_members(deque_base &x)
|
410
|
+
{
|
411
|
+
std::swap(this->members_.m_start, x.members_.m_start);
|
412
|
+
std::swap(this->members_.m_finish, x.members_.m_finish);
|
413
|
+
std::swap(this->members_.m_map, x.members_.m_map);
|
414
|
+
std::swap(this->members_.m_map_size, x.members_.m_map_size);
|
415
|
+
}
|
416
|
+
|
417
|
+
void priv_initialize_map(size_type num_elements)
|
418
|
+
{
|
419
|
+
// if(num_elements){
|
420
|
+
size_type num_nodes = num_elements / s_buffer_size() + 1;
|
421
|
+
|
422
|
+
this->members_.m_map_size = container_detail::max_value((size_type) InitialMapSize, num_nodes + 2);
|
423
|
+
this->members_.m_map = this->priv_allocate_map(this->members_.m_map_size);
|
424
|
+
|
425
|
+
ptr_alloc_ptr nstart = this->members_.m_map + (this->members_.m_map_size - num_nodes) / 2;
|
426
|
+
ptr_alloc_ptr nfinish = nstart + num_nodes;
|
427
|
+
|
428
|
+
BOOST_TRY {
|
429
|
+
this->priv_create_nodes(nstart, nfinish);
|
430
|
+
}
|
431
|
+
BOOST_CATCH(...){
|
432
|
+
this->priv_deallocate_map(this->members_.m_map, this->members_.m_map_size);
|
433
|
+
this->members_.m_map = 0;
|
434
|
+
this->members_.m_map_size = 0;
|
435
|
+
BOOST_RETHROW
|
436
|
+
}
|
437
|
+
BOOST_CATCH_END
|
438
|
+
|
439
|
+
this->members_.m_start.priv_set_node(nstart);
|
440
|
+
this->members_.m_finish.priv_set_node(nfinish - 1);
|
441
|
+
this->members_.m_start.m_cur = this->members_.m_start.m_first;
|
442
|
+
this->members_.m_finish.m_cur = this->members_.m_finish.m_first +
|
443
|
+
num_elements % s_buffer_size();
|
444
|
+
// }
|
445
|
+
}
|
446
|
+
|
447
|
+
void priv_create_nodes(ptr_alloc_ptr nstart, ptr_alloc_ptr nfinish)
|
448
|
+
{
|
449
|
+
ptr_alloc_ptr cur;
|
450
|
+
BOOST_TRY {
|
451
|
+
for (cur = nstart; cur < nfinish; ++cur)
|
452
|
+
*cur = this->priv_allocate_node();
|
453
|
+
}
|
454
|
+
BOOST_CATCH(...){
|
455
|
+
this->priv_destroy_nodes(nstart, cur);
|
456
|
+
BOOST_RETHROW
|
457
|
+
}
|
458
|
+
BOOST_CATCH_END
|
459
|
+
}
|
460
|
+
|
461
|
+
void priv_destroy_nodes(ptr_alloc_ptr nstart, ptr_alloc_ptr nfinish)
|
462
|
+
{
|
463
|
+
for (ptr_alloc_ptr n = nstart; n < nfinish; ++n)
|
464
|
+
this->priv_deallocate_node(*n);
|
465
|
+
}
|
466
|
+
|
467
|
+
void priv_clear_map()
|
468
|
+
{
|
469
|
+
if (this->members_.m_map) {
|
470
|
+
this->priv_destroy_nodes(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1);
|
471
|
+
this->priv_deallocate_map(this->members_.m_map, this->members_.m_map_size);
|
472
|
+
this->members_.m_map = 0;
|
473
|
+
this->members_.m_map_size = 0;
|
474
|
+
this->members_.m_start = iterator();
|
475
|
+
this->members_.m_finish = this->members_.m_start;
|
476
|
+
}
|
477
|
+
}
|
478
|
+
|
479
|
+
enum { InitialMapSize = 8 };
|
480
|
+
|
481
|
+
protected:
|
482
|
+
struct members_holder
|
483
|
+
: public ptr_alloc_t
|
484
|
+
, public allocator_type
|
485
|
+
{
|
486
|
+
members_holder()
|
487
|
+
: map_allocator_type(), allocator_type()
|
488
|
+
, m_map(0), m_map_size(0)
|
489
|
+
, m_start(), m_finish(m_start)
|
490
|
+
{}
|
491
|
+
|
492
|
+
explicit members_holder(const allocator_type &a)
|
493
|
+
: map_allocator_type(a), allocator_type(a)
|
494
|
+
, m_map(0), m_map_size(0)
|
495
|
+
, m_start(), m_finish(m_start)
|
496
|
+
{}
|
497
|
+
|
498
|
+
template<class ValAllocConvertible, class PtrAllocConvertible>
|
499
|
+
members_holder(BOOST_FWD_REF(PtrAllocConvertible) pa, BOOST_FWD_REF(ValAllocConvertible) va)
|
500
|
+
: map_allocator_type(boost::forward<PtrAllocConvertible>(pa))
|
501
|
+
, allocator_type (boost::forward<ValAllocConvertible>(va))
|
502
|
+
, m_map(0), m_map_size(0)
|
503
|
+
, m_start(), m_finish(m_start)
|
504
|
+
{}
|
505
|
+
|
506
|
+
ptr_alloc_ptr m_map;
|
507
|
+
val_alloc_size m_map_size;
|
508
|
+
iterator m_start;
|
509
|
+
iterator m_finish;
|
510
|
+
} members_;
|
511
|
+
|
512
|
+
ptr_alloc_t &ptr_alloc()
|
513
|
+
{ return members_; }
|
514
|
+
|
515
|
+
const ptr_alloc_t &ptr_alloc() const
|
516
|
+
{ return members_; }
|
517
|
+
|
518
|
+
allocator_type &alloc()
|
519
|
+
{ return members_; }
|
520
|
+
|
521
|
+
const allocator_type &alloc() const
|
522
|
+
{ return members_; }
|
523
|
+
};
|
524
|
+
/// @endcond
|
525
|
+
|
526
|
+
//! Deque class
|
527
|
+
//!
|
528
|
+
#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
|
529
|
+
template <class T, class Allocator = std::allocator<T> >
|
530
|
+
#else
|
531
|
+
template <class T, class Allocator>
|
532
|
+
#endif
|
533
|
+
class deque : protected deque_base<T, Allocator>
|
534
|
+
{
|
535
|
+
/// @cond
|
536
|
+
private:
|
537
|
+
typedef deque_base<T, Allocator> Base;
|
538
|
+
/// @endcond
|
539
|
+
|
540
|
+
public:
|
541
|
+
|
542
|
+
//////////////////////////////////////////////
|
543
|
+
//
|
544
|
+
// types
|
545
|
+
//
|
546
|
+
//////////////////////////////////////////////
|
547
|
+
|
548
|
+
typedef T value_type;
|
549
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
550
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
|
551
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::reference reference;
|
552
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::const_reference const_reference;
|
553
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::size_type size_type;
|
554
|
+
typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
|
555
|
+
typedef Allocator allocator_type;
|
556
|
+
typedef BOOST_CONTAINER_IMPDEF(allocator_type) stored_allocator_type;
|
557
|
+
typedef BOOST_CONTAINER_IMPDEF(typename Base::iterator) iterator;
|
558
|
+
typedef BOOST_CONTAINER_IMPDEF(typename Base::const_iterator) const_iterator;
|
559
|
+
typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<iterator>) reverse_iterator;
|
560
|
+
typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<const_iterator>) const_reverse_iterator;
|
561
|
+
|
562
|
+
/// @cond
|
563
|
+
|
564
|
+
private: // Internal typedefs
|
565
|
+
BOOST_COPYABLE_AND_MOVABLE(deque)
|
566
|
+
typedef typename Base::ptr_alloc_ptr index_pointer;
|
567
|
+
static size_type s_buffer_size()
|
568
|
+
{ return Base::s_buffer_size(); }
|
569
|
+
typedef allocator_traits<Allocator> allocator_traits_type;
|
570
|
+
|
571
|
+
/// @endcond
|
572
|
+
|
573
|
+
public:
|
574
|
+
//////////////////////////////////////////////
|
575
|
+
//
|
576
|
+
// construct/copy/destroy
|
577
|
+
//
|
578
|
+
//////////////////////////////////////////////
|
579
|
+
|
580
|
+
//! <b>Effects</b>: Default constructors a deque.
|
581
|
+
//!
|
582
|
+
//! <b>Throws</b>: If allocator_type's default constructor throws.
|
583
|
+
//!
|
584
|
+
//! <b>Complexity</b>: Constant.
|
585
|
+
deque()
|
586
|
+
: Base()
|
587
|
+
{}
|
588
|
+
|
589
|
+
//! <b>Effects</b>: Constructs a deque taking the allocator as parameter.
|
590
|
+
//!
|
591
|
+
//! <b>Throws</b>: Nothing
|
592
|
+
//!
|
593
|
+
//! <b>Complexity</b>: Constant.
|
594
|
+
explicit deque(const allocator_type& a) BOOST_CONTAINER_NOEXCEPT
|
595
|
+
: Base(a)
|
596
|
+
{}
|
597
|
+
|
598
|
+
//! <b>Effects</b>: Constructs a deque that will use a copy of allocator a
|
599
|
+
//! and inserts n default contructed values.
|
600
|
+
//!
|
601
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor
|
602
|
+
//! throws or T's default or copy constructor throws.
|
603
|
+
//!
|
604
|
+
//! <b>Complexity</b>: Linear to n.
|
605
|
+
explicit deque(size_type n)
|
606
|
+
: Base(n, allocator_type())
|
607
|
+
{
|
608
|
+
container_detail::insert_default_constructed_n_proxy<Allocator, iterator> proxy(this->alloc());
|
609
|
+
proxy.uninitialized_copy_n_and_update(this->begin(), n);
|
610
|
+
//deque_base will deallocate in case of exception...
|
611
|
+
}
|
612
|
+
|
613
|
+
//! <b>Effects</b>: Constructs a deque that will use a copy of allocator a
|
614
|
+
//! and inserts n copies of value.
|
615
|
+
//!
|
616
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor
|
617
|
+
//! throws or T's default or copy constructor throws.
|
618
|
+
//!
|
619
|
+
//! <b>Complexity</b>: Linear to n.
|
620
|
+
deque(size_type n, const value_type& value,
|
621
|
+
const allocator_type& a = allocator_type())
|
622
|
+
: Base(n, a)
|
623
|
+
{ this->priv_fill_initialize(value); }
|
624
|
+
|
625
|
+
//! <b>Effects</b>: Constructs a deque that will use a copy of allocator a
|
626
|
+
//! and inserts a copy of the range [first, last) in the deque.
|
627
|
+
//!
|
628
|
+
//! <b>Throws</b>: If allocator_type's default constructor or copy constructor
|
629
|
+
//! throws or T's constructor taking an dereferenced InIt throws.
|
630
|
+
//!
|
631
|
+
//! <b>Complexity</b>: Linear to the range [first, last).
|
632
|
+
template <class InIt>
|
633
|
+
deque(InIt first, InIt last, const allocator_type& a = allocator_type()
|
634
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
635
|
+
, typename container_detail::enable_if_c
|
636
|
+
< !container_detail::is_convertible<InIt, size_type>::value
|
637
|
+
>::type * = 0
|
638
|
+
#endif
|
639
|
+
)
|
640
|
+
: Base(a)
|
641
|
+
{
|
642
|
+
typedef typename std::iterator_traits<InIt>::iterator_category ItCat;
|
643
|
+
this->priv_range_initialize(first, last, ItCat());
|
644
|
+
}
|
645
|
+
|
646
|
+
//! <b>Effects</b>: Copy constructs a deque.
|
647
|
+
//!
|
648
|
+
//! <b>Postcondition</b>: x == *this.
|
649
|
+
//!
|
650
|
+
//! <b>Complexity</b>: Linear to the elements x contains.
|
651
|
+
deque(const deque& x)
|
652
|
+
: Base(allocator_traits_type::select_on_container_copy_construction(x.alloc()))
|
653
|
+
{
|
654
|
+
if(x.size()){
|
655
|
+
this->priv_initialize_map(x.size());
|
656
|
+
boost::container::uninitialized_copy_alloc
|
657
|
+
(this->alloc(), x.begin(), x.end(), this->members_.m_start);
|
658
|
+
}
|
659
|
+
}
|
660
|
+
|
661
|
+
//! <b>Effects</b>: Move constructor. Moves mx's resources to *this.
|
662
|
+
//!
|
663
|
+
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
664
|
+
//!
|
665
|
+
//! <b>Complexity</b>: Constant.
|
666
|
+
deque(BOOST_RV_REF(deque) x)
|
667
|
+
: Base(boost::move(static_cast<Base&>(x)))
|
668
|
+
{ this->swap_members(x); }
|
669
|
+
|
670
|
+
//! <b>Effects</b>: Copy constructs a vector using the specified allocator.
|
671
|
+
//!
|
672
|
+
//! <b>Postcondition</b>: x == *this.
|
673
|
+
//!
|
674
|
+
//! <b>Throws</b>: If allocation
|
675
|
+
//! throws or T's copy constructor throws.
|
676
|
+
//!
|
677
|
+
//! <b>Complexity</b>: Linear to the elements x contains.
|
678
|
+
deque(const deque& x, const allocator_type &a)
|
679
|
+
: Base(a)
|
680
|
+
{
|
681
|
+
if(x.size()){
|
682
|
+
this->priv_initialize_map(x.size());
|
683
|
+
boost::container::uninitialized_copy_alloc
|
684
|
+
(this->alloc(), x.begin(), x.end(), this->members_.m_start);
|
685
|
+
}
|
686
|
+
}
|
687
|
+
|
688
|
+
//! <b>Effects</b>: Move constructor using the specified allocator.
|
689
|
+
//! Moves mx's resources to *this if a == allocator_type().
|
690
|
+
//! Otherwise copies values from x to *this.
|
691
|
+
//!
|
692
|
+
//! <b>Throws</b>: If allocation or T's copy constructor throws.
|
693
|
+
//!
|
694
|
+
//! <b>Complexity</b>: Constant if a == mx.get_allocator(), linear otherwise.
|
695
|
+
deque(BOOST_RV_REF(deque) mx, const allocator_type &a)
|
696
|
+
: Base(a)
|
697
|
+
{
|
698
|
+
if(mx.alloc() == a){
|
699
|
+
this->swap_members(mx);
|
700
|
+
}
|
701
|
+
else{
|
702
|
+
if(mx.size()){
|
703
|
+
this->priv_initialize_map(mx.size());
|
704
|
+
boost::container::uninitialized_copy_alloc
|
705
|
+
(this->alloc(), mx.begin(), mx.end(), this->members_.m_start);
|
706
|
+
}
|
707
|
+
}
|
708
|
+
}
|
709
|
+
|
710
|
+
//! <b>Effects</b>: Destroys the deque. All stored values are destroyed
|
711
|
+
//! and used memory is deallocated.
|
712
|
+
//!
|
713
|
+
//! <b>Throws</b>: Nothing.
|
714
|
+
//!
|
715
|
+
//! <b>Complexity</b>: Linear to the number of elements.
|
716
|
+
~deque() BOOST_CONTAINER_NOEXCEPT
|
717
|
+
{
|
718
|
+
this->priv_destroy_range(this->members_.m_start, this->members_.m_finish);
|
719
|
+
}
|
720
|
+
|
721
|
+
//! <b>Effects</b>: Makes *this contain the same elements as x.
|
722
|
+
//!
|
723
|
+
//! <b>Postcondition</b>: this->size() == x.size(). *this contains a copy
|
724
|
+
//! of each of x's elements.
|
725
|
+
//!
|
726
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
727
|
+
//!
|
728
|
+
//! <b>Complexity</b>: Linear to the number of elements in x.
|
729
|
+
deque& operator= (BOOST_COPY_ASSIGN_REF(deque) x)
|
730
|
+
{
|
731
|
+
if (&x != this){
|
732
|
+
allocator_type &this_alloc = this->alloc();
|
733
|
+
const allocator_type &x_alloc = x.alloc();
|
734
|
+
container_detail::bool_<allocator_traits_type::
|
735
|
+
propagate_on_container_copy_assignment::value> flag;
|
736
|
+
if(flag && this_alloc != x_alloc){
|
737
|
+
this->clear();
|
738
|
+
this->shrink_to_fit();
|
739
|
+
}
|
740
|
+
container_detail::assign_alloc(this->alloc(), x.alloc(), flag);
|
741
|
+
container_detail::assign_alloc(this->ptr_alloc(), x.ptr_alloc(), flag);
|
742
|
+
this->assign(x.cbegin(), x.cend());
|
743
|
+
}
|
744
|
+
return *this;
|
745
|
+
}
|
746
|
+
|
747
|
+
//! <b>Effects</b>: Move assignment. All mx's values are transferred to *this.
|
748
|
+
//!
|
749
|
+
//! <b>Postcondition</b>: x.empty(). *this contains a the elements x had
|
750
|
+
//! before the function.
|
751
|
+
//!
|
752
|
+
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
753
|
+
//!
|
754
|
+
//! <b>Complexity</b>: Linear.
|
755
|
+
deque& operator= (BOOST_RV_REF(deque) x)
|
756
|
+
{
|
757
|
+
if (&x != this){
|
758
|
+
allocator_type &this_alloc = this->alloc();
|
759
|
+
allocator_type &x_alloc = x.alloc();
|
760
|
+
//If allocators are equal we can just swap pointers
|
761
|
+
if(this_alloc == x_alloc){
|
762
|
+
//Destroy objects but retain memory in case x reuses it in the future
|
763
|
+
this->clear();
|
764
|
+
this->swap_members(x);
|
765
|
+
//Move allocator if needed
|
766
|
+
container_detail::bool_<allocator_traits_type::
|
767
|
+
propagate_on_container_move_assignment::value> flag;
|
768
|
+
container_detail::move_alloc(this_alloc, x_alloc, flag);
|
769
|
+
container_detail::move_alloc(this->ptr_alloc(), x.ptr_alloc(), flag);
|
770
|
+
}
|
771
|
+
//If unequal allocators, then do a one by one move
|
772
|
+
else{
|
773
|
+
typedef typename std::iterator_traits<iterator>::iterator_category ItCat;
|
774
|
+
this->assign( boost::make_move_iterator(x.begin())
|
775
|
+
, boost::make_move_iterator(x.end()));
|
776
|
+
}
|
777
|
+
}
|
778
|
+
return *this;
|
779
|
+
}
|
780
|
+
|
781
|
+
//! <b>Effects</b>: Assigns the n copies of val to *this.
|
782
|
+
//!
|
783
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
784
|
+
//!
|
785
|
+
//! <b>Complexity</b>: Linear to n.
|
786
|
+
void assign(size_type n, const T& val)
|
787
|
+
{
|
788
|
+
typedef constant_iterator<value_type, difference_type> c_it;
|
789
|
+
this->assign(c_it(val, n), c_it());
|
790
|
+
}
|
791
|
+
|
792
|
+
//! <b>Effects</b>: Assigns the the range [first, last) to *this.
|
793
|
+
//!
|
794
|
+
//! <b>Throws</b>: If memory allocation throws or
|
795
|
+
//! T's constructor from dereferencing InIt throws.
|
796
|
+
//!
|
797
|
+
//! <b>Complexity</b>: Linear to n.
|
798
|
+
template <class InIt>
|
799
|
+
void assign(InIt first, InIt last
|
800
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
801
|
+
, typename container_detail::enable_if_c
|
802
|
+
< !container_detail::is_convertible<InIt, size_type>::value
|
803
|
+
&& container_detail::is_input_iterator<InIt>::value
|
804
|
+
>::type * = 0
|
805
|
+
#endif
|
806
|
+
)
|
807
|
+
{
|
808
|
+
iterator cur = this->begin();
|
809
|
+
for ( ; first != last && cur != end(); ++cur, ++first){
|
810
|
+
*cur = *first;
|
811
|
+
}
|
812
|
+
if (first == last){
|
813
|
+
this->erase(cur, this->cend());
|
814
|
+
}
|
815
|
+
else{
|
816
|
+
this->insert(this->cend(), first, last);
|
817
|
+
}
|
818
|
+
}
|
819
|
+
|
820
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
821
|
+
template <class FwdIt>
|
822
|
+
void assign(FwdIt first, FwdIt last
|
823
|
+
, typename container_detail::enable_if_c
|
824
|
+
< !container_detail::is_convertible<FwdIt, size_type>::value
|
825
|
+
&& !container_detail::is_input_iterator<FwdIt>::value
|
826
|
+
>::type * = 0
|
827
|
+
)
|
828
|
+
{
|
829
|
+
const size_type len = std::distance(first, last);
|
830
|
+
if (len > size()) {
|
831
|
+
FwdIt mid = first;
|
832
|
+
std::advance(mid, this->size());
|
833
|
+
boost::container::copy(first, mid, begin());
|
834
|
+
this->insert(this->cend(), mid, last);
|
835
|
+
}
|
836
|
+
else{
|
837
|
+
this->erase(boost::container::copy(first, last, this->begin()), cend());
|
838
|
+
}
|
839
|
+
}
|
840
|
+
#endif
|
841
|
+
|
842
|
+
//! <b>Effects</b>: Returns a copy of the internal allocator.
|
843
|
+
//!
|
844
|
+
//! <b>Throws</b>: If allocator's copy constructor throws.
|
845
|
+
//!
|
846
|
+
//! <b>Complexity</b>: Constant.
|
847
|
+
allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT
|
848
|
+
{ return Base::alloc(); }
|
849
|
+
|
850
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
851
|
+
//!
|
852
|
+
//! <b>Throws</b>: Nothing
|
853
|
+
//!
|
854
|
+
//! <b>Complexity</b>: Constant.
|
855
|
+
//!
|
856
|
+
//! <b>Note</b>: Non-standard extension.
|
857
|
+
const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT
|
858
|
+
{ return Base::alloc(); }
|
859
|
+
|
860
|
+
//////////////////////////////////////////////
|
861
|
+
//
|
862
|
+
// iterators
|
863
|
+
//
|
864
|
+
//////////////////////////////////////////////
|
865
|
+
|
866
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
867
|
+
//!
|
868
|
+
//! <b>Throws</b>: Nothing
|
869
|
+
//!
|
870
|
+
//! <b>Complexity</b>: Constant.
|
871
|
+
//!
|
872
|
+
//! <b>Note</b>: Non-standard extension.
|
873
|
+
stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT
|
874
|
+
{ return Base::alloc(); }
|
875
|
+
|
876
|
+
//! <b>Effects</b>: Returns an iterator to the first element contained in the deque.
|
877
|
+
//!
|
878
|
+
//! <b>Throws</b>: Nothing.
|
879
|
+
//!
|
880
|
+
//! <b>Complexity</b>: Constant.
|
881
|
+
iterator begin() BOOST_CONTAINER_NOEXCEPT
|
882
|
+
{ return this->members_.m_start; }
|
883
|
+
|
884
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the deque.
|
885
|
+
//!
|
886
|
+
//! <b>Throws</b>: Nothing.
|
887
|
+
//!
|
888
|
+
//! <b>Complexity</b>: Constant.
|
889
|
+
const_iterator begin() const BOOST_CONTAINER_NOEXCEPT
|
890
|
+
{ return this->members_.m_start; }
|
891
|
+
|
892
|
+
//! <b>Effects</b>: Returns an iterator to the end of the deque.
|
893
|
+
//!
|
894
|
+
//! <b>Throws</b>: Nothing.
|
895
|
+
//!
|
896
|
+
//! <b>Complexity</b>: Constant.
|
897
|
+
iterator end() BOOST_CONTAINER_NOEXCEPT
|
898
|
+
{ return this->members_.m_finish; }
|
899
|
+
|
900
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the deque.
|
901
|
+
//!
|
902
|
+
//! <b>Throws</b>: Nothing.
|
903
|
+
//!
|
904
|
+
//! <b>Complexity</b>: Constant.
|
905
|
+
const_iterator end() const BOOST_CONTAINER_NOEXCEPT
|
906
|
+
{ return this->members_.m_finish; }
|
907
|
+
|
908
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
909
|
+
//! of the reversed deque.
|
910
|
+
//!
|
911
|
+
//! <b>Throws</b>: Nothing.
|
912
|
+
//!
|
913
|
+
//! <b>Complexity</b>: Constant.
|
914
|
+
reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT
|
915
|
+
{ return reverse_iterator(this->members_.m_finish); }
|
916
|
+
|
917
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
918
|
+
//! of the reversed deque.
|
919
|
+
//!
|
920
|
+
//! <b>Throws</b>: Nothing.
|
921
|
+
//!
|
922
|
+
//! <b>Complexity</b>: Constant.
|
923
|
+
const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT
|
924
|
+
{ return const_reverse_iterator(this->members_.m_finish); }
|
925
|
+
|
926
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
927
|
+
//! of the reversed deque.
|
928
|
+
//!
|
929
|
+
//! <b>Throws</b>: Nothing.
|
930
|
+
//!
|
931
|
+
//! <b>Complexity</b>: Constant.
|
932
|
+
reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT
|
933
|
+
{ return reverse_iterator(this->members_.m_start); }
|
934
|
+
|
935
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
936
|
+
//! of the reversed deque.
|
937
|
+
//!
|
938
|
+
//! <b>Throws</b>: Nothing.
|
939
|
+
//!
|
940
|
+
//! <b>Complexity</b>: Constant.
|
941
|
+
const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT
|
942
|
+
{ return const_reverse_iterator(this->members_.m_start); }
|
943
|
+
|
944
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the deque.
|
945
|
+
//!
|
946
|
+
//! <b>Throws</b>: Nothing.
|
947
|
+
//!
|
948
|
+
//! <b>Complexity</b>: Constant.
|
949
|
+
const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT
|
950
|
+
{ return this->members_.m_start; }
|
951
|
+
|
952
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the deque.
|
953
|
+
//!
|
954
|
+
//! <b>Throws</b>: Nothing.
|
955
|
+
//!
|
956
|
+
//! <b>Complexity</b>: Constant.
|
957
|
+
const_iterator cend() const BOOST_CONTAINER_NOEXCEPT
|
958
|
+
{ return this->members_.m_finish; }
|
959
|
+
|
960
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
961
|
+
//! of the reversed deque.
|
962
|
+
//!
|
963
|
+
//! <b>Throws</b>: Nothing.
|
964
|
+
//!
|
965
|
+
//! <b>Complexity</b>: Constant.
|
966
|
+
const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT
|
967
|
+
{ return const_reverse_iterator(this->members_.m_finish); }
|
968
|
+
|
969
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
970
|
+
//! of the reversed deque.
|
971
|
+
//!
|
972
|
+
//! <b>Throws</b>: Nothing.
|
973
|
+
//!
|
974
|
+
//! <b>Complexity</b>: Constant.
|
975
|
+
const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT
|
976
|
+
{ return const_reverse_iterator(this->members_.m_start); }
|
977
|
+
|
978
|
+
//////////////////////////////////////////////
|
979
|
+
//
|
980
|
+
// capacity
|
981
|
+
//
|
982
|
+
//////////////////////////////////////////////
|
983
|
+
|
984
|
+
//! <b>Effects</b>: Returns true if the deque contains no elements.
|
985
|
+
//!
|
986
|
+
//! <b>Throws</b>: Nothing.
|
987
|
+
//!
|
988
|
+
//! <b>Complexity</b>: Constant.
|
989
|
+
bool empty() const BOOST_CONTAINER_NOEXCEPT
|
990
|
+
{ return this->members_.m_finish == this->members_.m_start; }
|
991
|
+
|
992
|
+
//! <b>Effects</b>: Returns the number of the elements contained in the deque.
|
993
|
+
//!
|
994
|
+
//! <b>Throws</b>: Nothing.
|
995
|
+
//!
|
996
|
+
//! <b>Complexity</b>: Constant.
|
997
|
+
size_type size() const BOOST_CONTAINER_NOEXCEPT
|
998
|
+
{ return this->members_.m_finish - this->members_.m_start; }
|
999
|
+
|
1000
|
+
//! <b>Effects</b>: Returns the largest possible size of the deque.
|
1001
|
+
//!
|
1002
|
+
//! <b>Throws</b>: Nothing.
|
1003
|
+
//!
|
1004
|
+
//! <b>Complexity</b>: Constant.
|
1005
|
+
size_type max_size() const BOOST_CONTAINER_NOEXCEPT
|
1006
|
+
{ return allocator_traits_type::max_size(this->alloc()); }
|
1007
|
+
|
1008
|
+
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
1009
|
+
//! the size becomes n. New elements are default constructed.
|
1010
|
+
//!
|
1011
|
+
//! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
|
1012
|
+
//!
|
1013
|
+
//! <b>Complexity</b>: Linear to the difference between size() and new_size.
|
1014
|
+
void resize(size_type new_size)
|
1015
|
+
{
|
1016
|
+
const size_type len = size();
|
1017
|
+
if (new_size < len)
|
1018
|
+
this->priv_erase_last_n(len - new_size);
|
1019
|
+
else{
|
1020
|
+
const size_type n = new_size - this->size();
|
1021
|
+
container_detail::insert_default_constructed_n_proxy<Allocator, iterator> proxy(this->alloc());
|
1022
|
+
priv_insert_back_aux_impl(n, proxy);
|
1023
|
+
}
|
1024
|
+
}
|
1025
|
+
|
1026
|
+
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
1027
|
+
//! the size becomes n. New elements are copy constructed from x.
|
1028
|
+
//!
|
1029
|
+
//! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
|
1030
|
+
//!
|
1031
|
+
//! <b>Complexity</b>: Linear to the difference between size() and new_size.
|
1032
|
+
void resize(size_type new_size, const value_type& x)
|
1033
|
+
{
|
1034
|
+
const size_type len = size();
|
1035
|
+
if (new_size < len)
|
1036
|
+
this->erase(this->members_.m_start + new_size, this->members_.m_finish);
|
1037
|
+
else
|
1038
|
+
this->insert(this->members_.m_finish, new_size - len, x);
|
1039
|
+
}
|
1040
|
+
|
1041
|
+
//! <b>Effects</b>: Tries to deallocate the excess of memory created
|
1042
|
+
//! with previous allocations. The size of the deque is unchanged
|
1043
|
+
//!
|
1044
|
+
//! <b>Throws</b>: If memory allocation throws.
|
1045
|
+
//!
|
1046
|
+
//! <b>Complexity</b>: Constant.
|
1047
|
+
void shrink_to_fit()
|
1048
|
+
{
|
1049
|
+
//This deque implementation already
|
1050
|
+
//deallocates excess nodes when erasing
|
1051
|
+
//so there is nothing to do except for
|
1052
|
+
//empty deque
|
1053
|
+
if(this->empty()){
|
1054
|
+
this->priv_clear_map();
|
1055
|
+
}
|
1056
|
+
}
|
1057
|
+
|
1058
|
+
//////////////////////////////////////////////
|
1059
|
+
//
|
1060
|
+
// element access
|
1061
|
+
//
|
1062
|
+
//////////////////////////////////////////////
|
1063
|
+
|
1064
|
+
//! <b>Requires</b>: !empty()
|
1065
|
+
//!
|
1066
|
+
//! <b>Effects</b>: Returns a reference to the first
|
1067
|
+
//! element of the container.
|
1068
|
+
//!
|
1069
|
+
//! <b>Throws</b>: Nothing.
|
1070
|
+
//!
|
1071
|
+
//! <b>Complexity</b>: Constant.
|
1072
|
+
reference front() BOOST_CONTAINER_NOEXCEPT
|
1073
|
+
{ return *this->members_.m_start; }
|
1074
|
+
|
1075
|
+
//! <b>Requires</b>: !empty()
|
1076
|
+
//!
|
1077
|
+
//! <b>Effects</b>: Returns a const reference to the first element
|
1078
|
+
//! from the beginning of the container.
|
1079
|
+
//!
|
1080
|
+
//! <b>Throws</b>: Nothing.
|
1081
|
+
//!
|
1082
|
+
//! <b>Complexity</b>: Constant.
|
1083
|
+
const_reference front() const BOOST_CONTAINER_NOEXCEPT
|
1084
|
+
{ return *this->members_.m_start; }
|
1085
|
+
|
1086
|
+
//! <b>Requires</b>: !empty()
|
1087
|
+
//!
|
1088
|
+
//! <b>Effects</b>: Returns a reference to the last
|
1089
|
+
//! element of the container.
|
1090
|
+
//!
|
1091
|
+
//! <b>Throws</b>: Nothing.
|
1092
|
+
//!
|
1093
|
+
//! <b>Complexity</b>: Constant.
|
1094
|
+
reference back() BOOST_CONTAINER_NOEXCEPT
|
1095
|
+
{ return *(end()-1); }
|
1096
|
+
|
1097
|
+
//! <b>Requires</b>: !empty()
|
1098
|
+
//!
|
1099
|
+
//! <b>Effects</b>: Returns a const reference to the last
|
1100
|
+
//! element of the container.
|
1101
|
+
//!
|
1102
|
+
//! <b>Throws</b>: Nothing.
|
1103
|
+
//!
|
1104
|
+
//! <b>Complexity</b>: Constant.
|
1105
|
+
const_reference back() const BOOST_CONTAINER_NOEXCEPT
|
1106
|
+
{ return *(cend()-1); }
|
1107
|
+
|
1108
|
+
//! <b>Requires</b>: size() > n.
|
1109
|
+
//!
|
1110
|
+
//! <b>Effects</b>: Returns a reference to the nth element
|
1111
|
+
//! from the beginning of the container.
|
1112
|
+
//!
|
1113
|
+
//! <b>Throws</b>: Nothing.
|
1114
|
+
//!
|
1115
|
+
//! <b>Complexity</b>: Constant.
|
1116
|
+
reference operator[](size_type n) BOOST_CONTAINER_NOEXCEPT
|
1117
|
+
{ return this->members_.m_start[difference_type(n)]; }
|
1118
|
+
|
1119
|
+
//! <b>Requires</b>: size() > n.
|
1120
|
+
//!
|
1121
|
+
//! <b>Effects</b>: Returns a const reference to the nth element
|
1122
|
+
//! from the beginning of the container.
|
1123
|
+
//!
|
1124
|
+
//! <b>Throws</b>: Nothing.
|
1125
|
+
//!
|
1126
|
+
//! <b>Complexity</b>: Constant.
|
1127
|
+
const_reference operator[](size_type n) const BOOST_CONTAINER_NOEXCEPT
|
1128
|
+
{ return this->members_.m_start[difference_type(n)]; }
|
1129
|
+
|
1130
|
+
//! <b>Requires</b>: size() > n.
|
1131
|
+
//!
|
1132
|
+
//! <b>Effects</b>: Returns a reference to the nth element
|
1133
|
+
//! from the beginning of the container.
|
1134
|
+
//!
|
1135
|
+
//! <b>Throws</b>: std::range_error if n >= size()
|
1136
|
+
//!
|
1137
|
+
//! <b>Complexity</b>: Constant.
|
1138
|
+
reference at(size_type n)
|
1139
|
+
{ this->priv_range_check(n); return (*this)[n]; }
|
1140
|
+
|
1141
|
+
//! <b>Requires</b>: size() > n.
|
1142
|
+
//!
|
1143
|
+
//! <b>Effects</b>: Returns a const reference to the nth element
|
1144
|
+
//! from the beginning of the container.
|
1145
|
+
//!
|
1146
|
+
//! <b>Throws</b>: std::range_error if n >= size()
|
1147
|
+
//!
|
1148
|
+
//! <b>Complexity</b>: Constant.
|
1149
|
+
const_reference at(size_type n) const
|
1150
|
+
{ this->priv_range_check(n); return (*this)[n]; }
|
1151
|
+
|
1152
|
+
//////////////////////////////////////////////
|
1153
|
+
//
|
1154
|
+
// modifiers
|
1155
|
+
//
|
1156
|
+
//////////////////////////////////////////////
|
1157
|
+
|
1158
|
+
#if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1159
|
+
|
1160
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
1161
|
+
//! std::forward<Args>(args)... in the beginning of the deque.
|
1162
|
+
//!
|
1163
|
+
//! <b>Throws</b>: If memory allocation throws or the in-place constructor throws.
|
1164
|
+
//!
|
1165
|
+
//! <b>Complexity</b>: Amortized constant time
|
1166
|
+
template <class... Args>
|
1167
|
+
void emplace_front(Args&&... args)
|
1168
|
+
{
|
1169
|
+
if(this->priv_push_front_simple_available()){
|
1170
|
+
allocator_traits_type::construct
|
1171
|
+
( this->alloc()
|
1172
|
+
, this->priv_push_front_simple_pos()
|
1173
|
+
, boost::forward<Args>(args)...);
|
1174
|
+
this->priv_push_front_simple_commit();
|
1175
|
+
}
|
1176
|
+
else{
|
1177
|
+
typedef container_detail::insert_non_movable_emplace_proxy<Allocator, iterator, Args...> type;
|
1178
|
+
this->priv_insert_front_aux_impl(1, type(this->alloc(), boost::forward<Args>(args)...));
|
1179
|
+
}
|
1180
|
+
}
|
1181
|
+
|
1182
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
1183
|
+
//! std::forward<Args>(args)... in the end of the deque.
|
1184
|
+
//!
|
1185
|
+
//! <b>Throws</b>: If memory allocation throws or the in-place constructor throws.
|
1186
|
+
//!
|
1187
|
+
//! <b>Complexity</b>: Amortized constant time
|
1188
|
+
template <class... Args>
|
1189
|
+
void emplace_back(Args&&... args)
|
1190
|
+
{
|
1191
|
+
if(this->priv_push_back_simple_available()){
|
1192
|
+
allocator_traits_type::construct
|
1193
|
+
( this->alloc()
|
1194
|
+
, this->priv_push_back_simple_pos()
|
1195
|
+
, boost::forward<Args>(args)...);
|
1196
|
+
this->priv_push_back_simple_commit();
|
1197
|
+
}
|
1198
|
+
else{
|
1199
|
+
typedef container_detail::insert_non_movable_emplace_proxy<Allocator, iterator, Args...> type;
|
1200
|
+
this->priv_insert_back_aux_impl(1, type(this->alloc(), boost::forward<Args>(args)...));
|
1201
|
+
}
|
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 p, Args&&... args)
|
1215
|
+
{
|
1216
|
+
if(p == this->cbegin()){
|
1217
|
+
this->emplace_front(boost::forward<Args>(args)...);
|
1218
|
+
return this->begin();
|
1219
|
+
}
|
1220
|
+
else if(p == this->cend()){
|
1221
|
+
this->emplace_back(boost::forward<Args>(args)...);
|
1222
|
+
return (this->end()-1);
|
1223
|
+
}
|
1224
|
+
else{
|
1225
|
+
typedef container_detail::insert_emplace_proxy<Allocator, iterator, Args...> type;
|
1226
|
+
return this->priv_insert_aux_impl(p, 1, type(this->alloc(), boost::forward<Args>(args)...));
|
1227
|
+
}
|
1228
|
+
}
|
1229
|
+
|
1230
|
+
#else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
1231
|
+
|
1232
|
+
//advanced_insert_int.hpp includes all necessary preprocessor machinery...
|
1233
|
+
#define BOOST_PP_LOCAL_MACRO(n) \
|
1234
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, > ) \
|
1235
|
+
void emplace_front(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
1236
|
+
{ \
|
1237
|
+
if(priv_push_front_simple_available()){ \
|
1238
|
+
allocator_traits_type::construct \
|
1239
|
+
( this->alloc() \
|
1240
|
+
, this->priv_push_front_simple_pos() \
|
1241
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
|
1242
|
+
priv_push_front_simple_commit(); \
|
1243
|
+
} \
|
1244
|
+
else{ \
|
1245
|
+
container_detail::BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, n) \
|
1246
|
+
<Allocator, iterator BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy \
|
1247
|
+
(this->alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
|
1248
|
+
priv_insert_front_aux_impl(1, proxy); \
|
1249
|
+
} \
|
1250
|
+
} \
|
1251
|
+
\
|
1252
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
1253
|
+
void emplace_back(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
1254
|
+
{ \
|
1255
|
+
if(priv_push_back_simple_available()){ \
|
1256
|
+
allocator_traits_type::construct \
|
1257
|
+
( this->alloc() \
|
1258
|
+
, this->priv_push_back_simple_pos() \
|
1259
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
|
1260
|
+
priv_push_back_simple_commit(); \
|
1261
|
+
} \
|
1262
|
+
else{ \
|
1263
|
+
container_detail::BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, n) \
|
1264
|
+
<Allocator, iterator BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy \
|
1265
|
+
(this->alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
|
1266
|
+
priv_insert_back_aux_impl(1, proxy); \
|
1267
|
+
} \
|
1268
|
+
} \
|
1269
|
+
\
|
1270
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
1271
|
+
iterator emplace(const_iterator p \
|
1272
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
1273
|
+
{ \
|
1274
|
+
if(p == this->cbegin()){ \
|
1275
|
+
this->emplace_front(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
|
1276
|
+
return this->begin(); \
|
1277
|
+
} \
|
1278
|
+
else if(p == cend()){ \
|
1279
|
+
this->emplace_back(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
|
1280
|
+
return (this->end()-1); \
|
1281
|
+
} \
|
1282
|
+
else{ \
|
1283
|
+
container_detail::BOOST_PP_CAT(insert_emplace_proxy_arg, n) \
|
1284
|
+
<Allocator, iterator BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy \
|
1285
|
+
(this->alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
|
1286
|
+
return this->priv_insert_aux_impl(p, 1, proxy); \
|
1287
|
+
} \
|
1288
|
+
} \
|
1289
|
+
//!
|
1290
|
+
#define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
|
1291
|
+
#include BOOST_PP_LOCAL_ITERATE()
|
1292
|
+
|
1293
|
+
#endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
1294
|
+
|
1295
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1296
|
+
//! <b>Effects</b>: Inserts a copy of x at the front of the deque.
|
1297
|
+
//!
|
1298
|
+
//! <b>Throws</b>: If memory allocation throws or
|
1299
|
+
//! T's copy constructor throws.
|
1300
|
+
//!
|
1301
|
+
//! <b>Complexity</b>: Amortized constant time.
|
1302
|
+
void push_front(const T &x);
|
1303
|
+
|
1304
|
+
//! <b>Effects</b>: Constructs a new element in the front of the deque
|
1305
|
+
//! and moves the resources of mx to this new element.
|
1306
|
+
//!
|
1307
|
+
//! <b>Throws</b>: If memory allocation throws.
|
1308
|
+
//!
|
1309
|
+
//! <b>Complexity</b>: Amortized constant time.
|
1310
|
+
void push_front(T &&x);
|
1311
|
+
#else
|
1312
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH(push_front, T, void, priv_push_front)
|
1313
|
+
#endif
|
1314
|
+
|
1315
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1316
|
+
//! <b>Effects</b>: Inserts a copy of x at the end of the deque.
|
1317
|
+
//!
|
1318
|
+
//! <b>Throws</b>: If memory allocation throws or
|
1319
|
+
//! T's copy constructor throws.
|
1320
|
+
//!
|
1321
|
+
//! <b>Complexity</b>: Amortized constant time.
|
1322
|
+
void push_back(const T &x);
|
1323
|
+
|
1324
|
+
//! <b>Effects</b>: Constructs a new element in the end of the deque
|
1325
|
+
//! and moves the resources of mx to this new element.
|
1326
|
+
//!
|
1327
|
+
//! <b>Throws</b>: If memory allocation throws.
|
1328
|
+
//!
|
1329
|
+
//! <b>Complexity</b>: Amortized constant time.
|
1330
|
+
void push_back(T &&x);
|
1331
|
+
#else
|
1332
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH(push_back, T, void, priv_push_back)
|
1333
|
+
#endif
|
1334
|
+
|
1335
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1336
|
+
|
1337
|
+
//! <b>Requires</b>: position must be a valid iterator of *this.
|
1338
|
+
//!
|
1339
|
+
//! <b>Effects</b>: Insert a copy of x before position.
|
1340
|
+
//!
|
1341
|
+
//! <b>Returns</b>: an iterator to the inserted element.
|
1342
|
+
//!
|
1343
|
+
//! <b>Throws</b>: If memory allocation throws or x's copy constructor throws.
|
1344
|
+
//!
|
1345
|
+
//! <b>Complexity</b>: If position is end(), amortized constant time
|
1346
|
+
//! Linear time otherwise.
|
1347
|
+
iterator insert(const_iterator position, const T &x);
|
1348
|
+
|
1349
|
+
//! <b>Requires</b>: position must be a valid iterator of *this.
|
1350
|
+
//!
|
1351
|
+
//! <b>Effects</b>: Insert a new element before position with mx's resources.
|
1352
|
+
//!
|
1353
|
+
//! <b>Returns</b>: an iterator to the inserted element.
|
1354
|
+
//!
|
1355
|
+
//! <b>Throws</b>: If memory allocation throws.
|
1356
|
+
//!
|
1357
|
+
//! <b>Complexity</b>: If position is end(), amortized constant time
|
1358
|
+
//! Linear time otherwise.
|
1359
|
+
iterator insert(const_iterator position, T &&x);
|
1360
|
+
#else
|
1361
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator)
|
1362
|
+
#endif
|
1363
|
+
|
1364
|
+
//! <b>Requires</b>: pos must be a valid iterator of *this.
|
1365
|
+
//!
|
1366
|
+
//! <b>Effects</b>: Insert n copies of x before pos.
|
1367
|
+
//!
|
1368
|
+
//! <b>Returns</b>: an iterator to the first inserted element or pos if n is 0.
|
1369
|
+
//!
|
1370
|
+
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
1371
|
+
//!
|
1372
|
+
//! <b>Complexity</b>: Linear to n.
|
1373
|
+
iterator insert(const_iterator pos, size_type n, const value_type& x)
|
1374
|
+
{
|
1375
|
+
typedef constant_iterator<value_type, difference_type> c_it;
|
1376
|
+
return this->insert(pos, c_it(x, n), c_it());
|
1377
|
+
}
|
1378
|
+
|
1379
|
+
//! <b>Requires</b>: pos must be a valid iterator of *this.
|
1380
|
+
//!
|
1381
|
+
//! <b>Effects</b>: Insert a copy of the [first, last) range before pos.
|
1382
|
+
//!
|
1383
|
+
//! <b>Returns</b>: an iterator to the first inserted element or pos if first == last.
|
1384
|
+
//!
|
1385
|
+
//! <b>Throws</b>: If memory allocation throws, T's constructor from a
|
1386
|
+
//! dereferenced InIt throws or T's copy constructor throws.
|
1387
|
+
//!
|
1388
|
+
//! <b>Complexity</b>: Linear to std::distance [first, last).
|
1389
|
+
template <class InIt>
|
1390
|
+
iterator insert(const_iterator pos, InIt first, InIt last
|
1391
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1392
|
+
, typename container_detail::enable_if_c
|
1393
|
+
< !container_detail::is_convertible<InIt, size_type>::value
|
1394
|
+
&& container_detail::is_input_iterator<InIt>::value
|
1395
|
+
>::type * = 0
|
1396
|
+
#endif
|
1397
|
+
)
|
1398
|
+
{
|
1399
|
+
size_type n = 0;
|
1400
|
+
iterator it(pos);
|
1401
|
+
for(;first != last; ++first, ++n){
|
1402
|
+
it = this->emplace(it, *first);
|
1403
|
+
++it;
|
1404
|
+
}
|
1405
|
+
it -= n;
|
1406
|
+
return it;
|
1407
|
+
}
|
1408
|
+
|
1409
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1410
|
+
template <class FwdIt>
|
1411
|
+
iterator insert(const_iterator p, FwdIt first, FwdIt last
|
1412
|
+
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1413
|
+
, typename container_detail::enable_if_c
|
1414
|
+
< !container_detail::is_convertible<FwdIt, size_type>::value
|
1415
|
+
&& !container_detail::is_input_iterator<FwdIt>::value
|
1416
|
+
>::type * = 0
|
1417
|
+
#endif
|
1418
|
+
)
|
1419
|
+
{
|
1420
|
+
container_detail::insert_range_proxy<Allocator, FwdIt, iterator> proxy(this->alloc(), first);
|
1421
|
+
return priv_insert_aux_impl(p, (size_type)std::distance(first, last), proxy);
|
1422
|
+
}
|
1423
|
+
#endif
|
1424
|
+
|
1425
|
+
//! <b>Effects</b>: Removes the first element from the deque.
|
1426
|
+
//!
|
1427
|
+
//! <b>Throws</b>: Nothing.
|
1428
|
+
//!
|
1429
|
+
//! <b>Complexity</b>: Constant time.
|
1430
|
+
void pop_front() BOOST_CONTAINER_NOEXCEPT
|
1431
|
+
{
|
1432
|
+
if (this->members_.m_start.m_cur != this->members_.m_start.m_last - 1) {
|
1433
|
+
allocator_traits_type::destroy
|
1434
|
+
( this->alloc()
|
1435
|
+
, container_detail::to_raw_pointer(this->members_.m_start.m_cur)
|
1436
|
+
);
|
1437
|
+
++this->members_.m_start.m_cur;
|
1438
|
+
}
|
1439
|
+
else
|
1440
|
+
this->priv_pop_front_aux();
|
1441
|
+
}
|
1442
|
+
|
1443
|
+
//! <b>Effects</b>: Removes the last element from the deque.
|
1444
|
+
//!
|
1445
|
+
//! <b>Throws</b>: Nothing.
|
1446
|
+
//!
|
1447
|
+
//! <b>Complexity</b>: Constant time.
|
1448
|
+
void pop_back() BOOST_CONTAINER_NOEXCEPT
|
1449
|
+
{
|
1450
|
+
if (this->members_.m_finish.m_cur != this->members_.m_finish.m_first) {
|
1451
|
+
--this->members_.m_finish.m_cur;
|
1452
|
+
allocator_traits_type::destroy
|
1453
|
+
( this->alloc()
|
1454
|
+
, container_detail::to_raw_pointer(this->members_.m_finish.m_cur)
|
1455
|
+
);
|
1456
|
+
}
|
1457
|
+
else
|
1458
|
+
this->priv_pop_back_aux();
|
1459
|
+
}
|
1460
|
+
|
1461
|
+
//! <b>Effects</b>: Erases the element at position pos.
|
1462
|
+
//!
|
1463
|
+
//! <b>Throws</b>: Nothing.
|
1464
|
+
//!
|
1465
|
+
//! <b>Complexity</b>: Linear to the elements between pos and the
|
1466
|
+
//! last element (if pos is near the end) or the first element
|
1467
|
+
//! if(pos is near the beginning).
|
1468
|
+
//! Constant if pos is the first or the last element.
|
1469
|
+
iterator erase(const_iterator pos) BOOST_CONTAINER_NOEXCEPT
|
1470
|
+
{
|
1471
|
+
const_iterator next = pos;
|
1472
|
+
++next;
|
1473
|
+
size_type index = pos - this->members_.m_start;
|
1474
|
+
if (index < (this->size()/2)) {
|
1475
|
+
boost::move_backward(begin(), iterator(pos), iterator(next));
|
1476
|
+
pop_front();
|
1477
|
+
}
|
1478
|
+
else {
|
1479
|
+
boost::move(iterator(next), end(), iterator(pos));
|
1480
|
+
pop_back();
|
1481
|
+
}
|
1482
|
+
return this->members_.m_start + index;
|
1483
|
+
}
|
1484
|
+
|
1485
|
+
//! <b>Effects</b>: Erases the elements pointed by [first, last).
|
1486
|
+
//!
|
1487
|
+
//! <b>Throws</b>: Nothing.
|
1488
|
+
//!
|
1489
|
+
//! <b>Complexity</b>: Linear to the distance between first and
|
1490
|
+
//! last plus the elements between pos and the
|
1491
|
+
//! last element (if pos is near the end) or the first element
|
1492
|
+
//! if(pos is near the beginning).
|
1493
|
+
iterator erase(const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT
|
1494
|
+
{
|
1495
|
+
if (first == this->members_.m_start && last == this->members_.m_finish) {
|
1496
|
+
this->clear();
|
1497
|
+
return this->members_.m_finish;
|
1498
|
+
}
|
1499
|
+
else {
|
1500
|
+
const size_type n = static_cast<size_type>(last - first);
|
1501
|
+
const size_type elems_before = static_cast<size_type>(first - this->members_.m_start);
|
1502
|
+
if (elems_before < (this->size() - n) - elems_before) {
|
1503
|
+
boost::move_backward(begin(), iterator(first), iterator(last));
|
1504
|
+
iterator new_start = this->members_.m_start + n;
|
1505
|
+
if(!Base::traits_t::trivial_dctr_after_move)
|
1506
|
+
this->priv_destroy_range(this->members_.m_start, new_start);
|
1507
|
+
this->priv_destroy_nodes(this->members_.m_start.m_node, new_start.m_node);
|
1508
|
+
this->members_.m_start = new_start;
|
1509
|
+
}
|
1510
|
+
else {
|
1511
|
+
boost::move(iterator(last), end(), iterator(first));
|
1512
|
+
iterator new_finish = this->members_.m_finish - n;
|
1513
|
+
if(!Base::traits_t::trivial_dctr_after_move)
|
1514
|
+
this->priv_destroy_range(new_finish, this->members_.m_finish);
|
1515
|
+
this->priv_destroy_nodes(new_finish.m_node + 1, this->members_.m_finish.m_node + 1);
|
1516
|
+
this->members_.m_finish = new_finish;
|
1517
|
+
}
|
1518
|
+
return this->members_.m_start + elems_before;
|
1519
|
+
}
|
1520
|
+
}
|
1521
|
+
|
1522
|
+
//! <b>Effects</b>: Swaps the contents of *this and x.
|
1523
|
+
//!
|
1524
|
+
//! <b>Throws</b>: Nothing.
|
1525
|
+
//!
|
1526
|
+
//! <b>Complexity</b>: Constant.
|
1527
|
+
void swap(deque &x)
|
1528
|
+
{
|
1529
|
+
this->swap_members(x);
|
1530
|
+
container_detail::bool_<allocator_traits_type::propagate_on_container_swap::value> flag;
|
1531
|
+
container_detail::swap_alloc(this->alloc(), x.alloc(), flag);
|
1532
|
+
container_detail::swap_alloc(this->ptr_alloc(), x.ptr_alloc(), flag);
|
1533
|
+
}
|
1534
|
+
|
1535
|
+
//! <b>Effects</b>: Erases all the elements of the deque.
|
1536
|
+
//!
|
1537
|
+
//! <b>Throws</b>: Nothing.
|
1538
|
+
//!
|
1539
|
+
//! <b>Complexity</b>: Linear to the number of elements in the deque.
|
1540
|
+
void clear() BOOST_CONTAINER_NOEXCEPT
|
1541
|
+
{
|
1542
|
+
for (index_pointer node = this->members_.m_start.m_node + 1;
|
1543
|
+
node < this->members_.m_finish.m_node;
|
1544
|
+
++node) {
|
1545
|
+
this->priv_destroy_range(*node, *node + this->s_buffer_size());
|
1546
|
+
this->priv_deallocate_node(*node);
|
1547
|
+
}
|
1548
|
+
|
1549
|
+
if (this->members_.m_start.m_node != this->members_.m_finish.m_node) {
|
1550
|
+
this->priv_destroy_range(this->members_.m_start.m_cur, this->members_.m_start.m_last);
|
1551
|
+
this->priv_destroy_range(this->members_.m_finish.m_first, this->members_.m_finish.m_cur);
|
1552
|
+
this->priv_deallocate_node(this->members_.m_finish.m_first);
|
1553
|
+
}
|
1554
|
+
else
|
1555
|
+
this->priv_destroy_range(this->members_.m_start.m_cur, this->members_.m_finish.m_cur);
|
1556
|
+
|
1557
|
+
this->members_.m_finish = this->members_.m_start;
|
1558
|
+
}
|
1559
|
+
|
1560
|
+
/// @cond
|
1561
|
+
private:
|
1562
|
+
|
1563
|
+
void priv_erase_last_n(size_type n)
|
1564
|
+
{
|
1565
|
+
if(n == this->size()) {
|
1566
|
+
this->clear();
|
1567
|
+
}
|
1568
|
+
else {
|
1569
|
+
iterator new_finish = this->members_.m_finish - n;
|
1570
|
+
if(!Base::traits_t::trivial_dctr_after_move)
|
1571
|
+
this->priv_destroy_range(new_finish, this->members_.m_finish);
|
1572
|
+
this->priv_destroy_nodes(new_finish.m_node + 1, this->members_.m_finish.m_node + 1);
|
1573
|
+
this->members_.m_finish = new_finish;
|
1574
|
+
}
|
1575
|
+
}
|
1576
|
+
|
1577
|
+
void priv_range_check(size_type n) const
|
1578
|
+
{ if (n >= this->size()) throw_out_of_range("deque::at out of range"); }
|
1579
|
+
|
1580
|
+
template <class U>
|
1581
|
+
iterator priv_insert(const_iterator position, BOOST_FWD_REF(U) x)
|
1582
|
+
{
|
1583
|
+
if (position == cbegin()){
|
1584
|
+
this->push_front(::boost::forward<U>(x));
|
1585
|
+
return begin();
|
1586
|
+
}
|
1587
|
+
else if (position == cend()){
|
1588
|
+
this->push_back(::boost::forward<U>(x));
|
1589
|
+
return --end();
|
1590
|
+
}
|
1591
|
+
else {
|
1592
|
+
return priv_insert_aux_impl
|
1593
|
+
(position, (size_type)1, container_detail::get_insert_value_proxy<iterator>(this->alloc(), ::boost::forward<U>(x)));
|
1594
|
+
}
|
1595
|
+
}
|
1596
|
+
|
1597
|
+
template <class U>
|
1598
|
+
void priv_push_front(BOOST_FWD_REF(U) x)
|
1599
|
+
{
|
1600
|
+
if(this->priv_push_front_simple_available()){
|
1601
|
+
allocator_traits_type::construct
|
1602
|
+
( this->alloc(), this->priv_push_front_simple_pos(), ::boost::forward<U>(x));
|
1603
|
+
this->priv_push_front_simple_commit();
|
1604
|
+
}
|
1605
|
+
else{
|
1606
|
+
priv_insert_aux_impl
|
1607
|
+
(this->cbegin(), (size_type)1, container_detail::get_insert_value_proxy<iterator>(this->alloc(), ::boost::forward<U>(x)));
|
1608
|
+
}
|
1609
|
+
}
|
1610
|
+
|
1611
|
+
template <class U>
|
1612
|
+
void priv_push_back(BOOST_FWD_REF(U) x)
|
1613
|
+
{
|
1614
|
+
if(this->priv_push_back_simple_available()){
|
1615
|
+
allocator_traits_type::construct
|
1616
|
+
( this->alloc(), this->priv_push_back_simple_pos(), ::boost::forward<U>(x));
|
1617
|
+
this->priv_push_back_simple_commit();
|
1618
|
+
}
|
1619
|
+
else{
|
1620
|
+
priv_insert_aux_impl
|
1621
|
+
(this->cend(), (size_type)1, container_detail::get_insert_value_proxy<iterator>(this->alloc(), ::boost::forward<U>(x)));
|
1622
|
+
container_detail::insert_copy_proxy<Allocator, iterator> proxy(this->alloc(), x);
|
1623
|
+
}
|
1624
|
+
}
|
1625
|
+
|
1626
|
+
bool priv_push_back_simple_available() const
|
1627
|
+
{
|
1628
|
+
return this->members_.m_map &&
|
1629
|
+
(this->members_.m_finish.m_cur != (this->members_.m_finish.m_last - 1));
|
1630
|
+
}
|
1631
|
+
|
1632
|
+
T *priv_push_back_simple_pos() const
|
1633
|
+
{
|
1634
|
+
return container_detail::to_raw_pointer(this->members_.m_finish.m_cur);
|
1635
|
+
}
|
1636
|
+
|
1637
|
+
void priv_push_back_simple_commit()
|
1638
|
+
{
|
1639
|
+
++this->members_.m_finish.m_cur;
|
1640
|
+
}
|
1641
|
+
|
1642
|
+
bool priv_push_front_simple_available() const
|
1643
|
+
{
|
1644
|
+
return this->members_.m_map &&
|
1645
|
+
(this->members_.m_start.m_cur != this->members_.m_start.m_first);
|
1646
|
+
}
|
1647
|
+
|
1648
|
+
T *priv_push_front_simple_pos() const
|
1649
|
+
{ return container_detail::to_raw_pointer(this->members_.m_start.m_cur) - 1; }
|
1650
|
+
|
1651
|
+
void priv_push_front_simple_commit()
|
1652
|
+
{ --this->members_.m_start.m_cur; }
|
1653
|
+
|
1654
|
+
void priv_destroy_range(iterator p, iterator p2)
|
1655
|
+
{
|
1656
|
+
for(;p != p2; ++p){
|
1657
|
+
allocator_traits_type::destroy
|
1658
|
+
( this->alloc()
|
1659
|
+
, container_detail::to_raw_pointer(&*p)
|
1660
|
+
);
|
1661
|
+
}
|
1662
|
+
}
|
1663
|
+
|
1664
|
+
void priv_destroy_range(pointer p, pointer p2)
|
1665
|
+
{
|
1666
|
+
for(;p != p2; ++p){
|
1667
|
+
allocator_traits_type::destroy
|
1668
|
+
( this->alloc()
|
1669
|
+
, container_detail::to_raw_pointer(&*p)
|
1670
|
+
);
|
1671
|
+
}
|
1672
|
+
}
|
1673
|
+
|
1674
|
+
template<class InsertProxy>
|
1675
|
+
iterator priv_insert_aux_impl(const_iterator p, size_type n, InsertProxy interf)
|
1676
|
+
{
|
1677
|
+
iterator pos(p);
|
1678
|
+
const size_type pos_n = p - this->cbegin();
|
1679
|
+
if(!this->members_.m_map){
|
1680
|
+
this->priv_initialize_map(0);
|
1681
|
+
pos = this->begin();
|
1682
|
+
}
|
1683
|
+
|
1684
|
+
const size_type elemsbefore = static_cast<size_type>(pos - this->members_.m_start);
|
1685
|
+
const size_type length = this->size();
|
1686
|
+
if (elemsbefore < length / 2) {
|
1687
|
+
const iterator new_start = this->priv_reserve_elements_at_front(n);
|
1688
|
+
const iterator old_start = this->members_.m_start;
|
1689
|
+
if(!elemsbefore){
|
1690
|
+
interf.uninitialized_copy_n_and_update(new_start, n);
|
1691
|
+
this->members_.m_start = new_start;
|
1692
|
+
}
|
1693
|
+
else{
|
1694
|
+
pos = this->members_.m_start + elemsbefore;
|
1695
|
+
if (elemsbefore >= n) {
|
1696
|
+
const iterator start_n = this->members_.m_start + n;
|
1697
|
+
::boost::container::uninitialized_move_alloc
|
1698
|
+
(this->alloc(), this->members_.m_start, start_n, new_start);
|
1699
|
+
this->members_.m_start = new_start;
|
1700
|
+
boost::move(start_n, pos, old_start);
|
1701
|
+
interf.copy_n_and_update(pos - n, n);
|
1702
|
+
}
|
1703
|
+
else {
|
1704
|
+
const size_type mid_count = n - elemsbefore;
|
1705
|
+
const iterator mid_start = old_start - mid_count;
|
1706
|
+
interf.uninitialized_copy_n_and_update(mid_start, mid_count);
|
1707
|
+
this->members_.m_start = mid_start;
|
1708
|
+
::boost::container::uninitialized_move_alloc
|
1709
|
+
(this->alloc(), old_start, pos, new_start);
|
1710
|
+
this->members_.m_start = new_start;
|
1711
|
+
interf.copy_n_and_update(old_start, elemsbefore);
|
1712
|
+
}
|
1713
|
+
}
|
1714
|
+
}
|
1715
|
+
else {
|
1716
|
+
const iterator new_finish = this->priv_reserve_elements_at_back(n);
|
1717
|
+
const iterator old_finish = this->members_.m_finish;
|
1718
|
+
const size_type elemsafter = length - elemsbefore;
|
1719
|
+
if(!elemsafter){
|
1720
|
+
interf.uninitialized_copy_n_and_update(old_finish, n);
|
1721
|
+
this->members_.m_finish = new_finish;
|
1722
|
+
}
|
1723
|
+
else{
|
1724
|
+
pos = old_finish - elemsafter;
|
1725
|
+
if (elemsafter >= n) {
|
1726
|
+
iterator finish_n = old_finish - difference_type(n);
|
1727
|
+
::boost::container::uninitialized_move_alloc
|
1728
|
+
(this->alloc(), finish_n, old_finish, old_finish);
|
1729
|
+
this->members_.m_finish = new_finish;
|
1730
|
+
boost::move_backward(pos, finish_n, old_finish);
|
1731
|
+
interf.copy_n_and_update(pos, n);
|
1732
|
+
}
|
1733
|
+
else {
|
1734
|
+
const size_type raw_gap = n - elemsafter;
|
1735
|
+
::boost::container::uninitialized_move_alloc
|
1736
|
+
(this->alloc(), pos, old_finish, old_finish + raw_gap);
|
1737
|
+
BOOST_TRY{
|
1738
|
+
interf.copy_n_and_update(pos, elemsafter);
|
1739
|
+
interf.uninitialized_copy_n_and_update(old_finish, raw_gap);
|
1740
|
+
}
|
1741
|
+
BOOST_CATCH(...){
|
1742
|
+
this->priv_destroy_range(old_finish, old_finish + elemsafter);
|
1743
|
+
BOOST_RETHROW
|
1744
|
+
}
|
1745
|
+
BOOST_CATCH_END
|
1746
|
+
this->members_.m_finish = new_finish;
|
1747
|
+
}
|
1748
|
+
}
|
1749
|
+
}
|
1750
|
+
return this->begin() + pos_n;
|
1751
|
+
}
|
1752
|
+
|
1753
|
+
template <class InsertProxy>
|
1754
|
+
iterator priv_insert_back_aux_impl(size_type n, InsertProxy interf)
|
1755
|
+
{
|
1756
|
+
if(!this->members_.m_map){
|
1757
|
+
this->priv_initialize_map(0);
|
1758
|
+
}
|
1759
|
+
|
1760
|
+
iterator new_finish = this->priv_reserve_elements_at_back(n);
|
1761
|
+
iterator old_finish = this->members_.m_finish;
|
1762
|
+
interf.uninitialized_copy_n_and_update(old_finish, n);
|
1763
|
+
this->members_.m_finish = new_finish;
|
1764
|
+
return iterator(this->members_.m_finish - n);
|
1765
|
+
}
|
1766
|
+
|
1767
|
+
template <class InsertProxy>
|
1768
|
+
iterator priv_insert_front_aux_impl(size_type n, InsertProxy interf)
|
1769
|
+
{
|
1770
|
+
if(!this->members_.m_map){
|
1771
|
+
this->priv_initialize_map(0);
|
1772
|
+
}
|
1773
|
+
|
1774
|
+
iterator new_start = this->priv_reserve_elements_at_front(n);
|
1775
|
+
interf.uninitialized_copy_n_and_update(new_start, n);
|
1776
|
+
this->members_.m_start = new_start;
|
1777
|
+
return new_start;
|
1778
|
+
}
|
1779
|
+
|
1780
|
+
iterator priv_fill_insert(const_iterator pos, size_type n, const value_type& x)
|
1781
|
+
{
|
1782
|
+
typedef constant_iterator<value_type, difference_type> c_it;
|
1783
|
+
return this->insert(pos, c_it(x, n), c_it());
|
1784
|
+
}
|
1785
|
+
|
1786
|
+
// Precondition: this->members_.m_start and this->members_.m_finish have already been initialized,
|
1787
|
+
// but none of the deque's elements have yet been constructed.
|
1788
|
+
void priv_fill_initialize(const value_type& value)
|
1789
|
+
{
|
1790
|
+
index_pointer cur;
|
1791
|
+
BOOST_TRY {
|
1792
|
+
for (cur = this->members_.m_start.m_node; cur < this->members_.m_finish.m_node; ++cur){
|
1793
|
+
boost::container::uninitialized_fill_alloc
|
1794
|
+
(this->alloc(), *cur, *cur + this->s_buffer_size(), value);
|
1795
|
+
}
|
1796
|
+
boost::container::uninitialized_fill_alloc
|
1797
|
+
(this->alloc(), this->members_.m_finish.m_first, this->members_.m_finish.m_cur, value);
|
1798
|
+
}
|
1799
|
+
BOOST_CATCH(...){
|
1800
|
+
this->priv_destroy_range(this->members_.m_start, iterator(*cur, cur));
|
1801
|
+
BOOST_RETHROW
|
1802
|
+
}
|
1803
|
+
BOOST_CATCH_END
|
1804
|
+
}
|
1805
|
+
|
1806
|
+
template <class InIt>
|
1807
|
+
void priv_range_initialize(InIt first, InIt last, std::input_iterator_tag)
|
1808
|
+
{
|
1809
|
+
this->priv_initialize_map(0);
|
1810
|
+
BOOST_TRY {
|
1811
|
+
for ( ; first != last; ++first)
|
1812
|
+
this->emplace_back(*first);
|
1813
|
+
}
|
1814
|
+
BOOST_CATCH(...){
|
1815
|
+
this->clear();
|
1816
|
+
BOOST_RETHROW
|
1817
|
+
}
|
1818
|
+
BOOST_CATCH_END
|
1819
|
+
}
|
1820
|
+
|
1821
|
+
template <class FwdIt>
|
1822
|
+
void priv_range_initialize(FwdIt first, FwdIt last, std::forward_iterator_tag)
|
1823
|
+
{
|
1824
|
+
size_type n = 0;
|
1825
|
+
n = std::distance(first, last);
|
1826
|
+
this->priv_initialize_map(n);
|
1827
|
+
|
1828
|
+
index_pointer cur_node;
|
1829
|
+
BOOST_TRY {
|
1830
|
+
for (cur_node = this->members_.m_start.m_node;
|
1831
|
+
cur_node < this->members_.m_finish.m_node;
|
1832
|
+
++cur_node) {
|
1833
|
+
FwdIt mid = first;
|
1834
|
+
std::advance(mid, this->s_buffer_size());
|
1835
|
+
::boost::container::uninitialized_copy_alloc(this->alloc(), first, mid, *cur_node);
|
1836
|
+
first = mid;
|
1837
|
+
}
|
1838
|
+
::boost::container::uninitialized_copy_alloc(this->alloc(), first, last, this->members_.m_finish.m_first);
|
1839
|
+
}
|
1840
|
+
BOOST_CATCH(...){
|
1841
|
+
this->priv_destroy_range(this->members_.m_start, iterator(*cur_node, cur_node));
|
1842
|
+
BOOST_RETHROW
|
1843
|
+
}
|
1844
|
+
BOOST_CATCH_END
|
1845
|
+
}
|
1846
|
+
|
1847
|
+
// Called only if this->members_.m_finish.m_cur == this->members_.m_finish.m_first.
|
1848
|
+
void priv_pop_back_aux()
|
1849
|
+
{
|
1850
|
+
this->priv_deallocate_node(this->members_.m_finish.m_first);
|
1851
|
+
this->members_.m_finish.priv_set_node(this->members_.m_finish.m_node - 1);
|
1852
|
+
this->members_.m_finish.m_cur = this->members_.m_finish.m_last - 1;
|
1853
|
+
allocator_traits_type::destroy
|
1854
|
+
( this->alloc()
|
1855
|
+
, container_detail::to_raw_pointer(this->members_.m_finish.m_cur)
|
1856
|
+
);
|
1857
|
+
}
|
1858
|
+
|
1859
|
+
// Called only if this->members_.m_start.m_cur == this->members_.m_start.m_last - 1. Note that
|
1860
|
+
// if the deque has at least one element (a precondition for this member
|
1861
|
+
// function), and if this->members_.m_start.m_cur == this->members_.m_start.m_last, then the deque
|
1862
|
+
// must have at least two nodes.
|
1863
|
+
void priv_pop_front_aux()
|
1864
|
+
{
|
1865
|
+
allocator_traits_type::destroy
|
1866
|
+
( this->alloc()
|
1867
|
+
, container_detail::to_raw_pointer(this->members_.m_start.m_cur)
|
1868
|
+
);
|
1869
|
+
this->priv_deallocate_node(this->members_.m_start.m_first);
|
1870
|
+
this->members_.m_start.priv_set_node(this->members_.m_start.m_node + 1);
|
1871
|
+
this->members_.m_start.m_cur = this->members_.m_start.m_first;
|
1872
|
+
}
|
1873
|
+
|
1874
|
+
iterator priv_reserve_elements_at_front(size_type n)
|
1875
|
+
{
|
1876
|
+
size_type vacancies = this->members_.m_start.m_cur - this->members_.m_start.m_first;
|
1877
|
+
if (n > vacancies){
|
1878
|
+
size_type new_elems = n-vacancies;
|
1879
|
+
size_type new_nodes = (new_elems + this->s_buffer_size() - 1) /
|
1880
|
+
this->s_buffer_size();
|
1881
|
+
size_type s = (size_type)(this->members_.m_start.m_node - this->members_.m_map);
|
1882
|
+
if (new_nodes > s){
|
1883
|
+
this->priv_reallocate_map(new_nodes, true);
|
1884
|
+
}
|
1885
|
+
size_type i = 1;
|
1886
|
+
BOOST_TRY {
|
1887
|
+
for (; i <= new_nodes; ++i)
|
1888
|
+
*(this->members_.m_start.m_node - i) = this->priv_allocate_node();
|
1889
|
+
}
|
1890
|
+
BOOST_CATCH(...) {
|
1891
|
+
for (size_type j = 1; j < i; ++j)
|
1892
|
+
this->priv_deallocate_node(*(this->members_.m_start.m_node - j));
|
1893
|
+
BOOST_RETHROW
|
1894
|
+
}
|
1895
|
+
BOOST_CATCH_END
|
1896
|
+
}
|
1897
|
+
return this->members_.m_start - difference_type(n);
|
1898
|
+
}
|
1899
|
+
|
1900
|
+
iterator priv_reserve_elements_at_back(size_type n)
|
1901
|
+
{
|
1902
|
+
size_type vacancies = (this->members_.m_finish.m_last - this->members_.m_finish.m_cur) - 1;
|
1903
|
+
if (n > vacancies){
|
1904
|
+
size_type new_elems = n - vacancies;
|
1905
|
+
size_type new_nodes = (new_elems + this->s_buffer_size() - 1)/s_buffer_size();
|
1906
|
+
size_type s = (size_type)(this->members_.m_map_size - (this->members_.m_finish.m_node - this->members_.m_map));
|
1907
|
+
if (new_nodes + 1 > s){
|
1908
|
+
this->priv_reallocate_map(new_nodes, false);
|
1909
|
+
}
|
1910
|
+
size_type i;
|
1911
|
+
BOOST_TRY {
|
1912
|
+
for (i = 1; i <= new_nodes; ++i)
|
1913
|
+
*(this->members_.m_finish.m_node + i) = this->priv_allocate_node();
|
1914
|
+
}
|
1915
|
+
BOOST_CATCH(...) {
|
1916
|
+
for (size_type j = 1; j < i; ++j)
|
1917
|
+
this->priv_deallocate_node(*(this->members_.m_finish.m_node + j));
|
1918
|
+
BOOST_RETHROW
|
1919
|
+
}
|
1920
|
+
BOOST_CATCH_END
|
1921
|
+
}
|
1922
|
+
return this->members_.m_finish + difference_type(n);
|
1923
|
+
}
|
1924
|
+
|
1925
|
+
void priv_reallocate_map(size_type nodes_to_add, bool add_at_front)
|
1926
|
+
{
|
1927
|
+
size_type old_num_nodes = this->members_.m_finish.m_node - this->members_.m_start.m_node + 1;
|
1928
|
+
size_type new_num_nodes = old_num_nodes + nodes_to_add;
|
1929
|
+
|
1930
|
+
index_pointer new_nstart;
|
1931
|
+
if (this->members_.m_map_size > 2 * new_num_nodes) {
|
1932
|
+
new_nstart = this->members_.m_map + (this->members_.m_map_size - new_num_nodes) / 2
|
1933
|
+
+ (add_at_front ? nodes_to_add : 0);
|
1934
|
+
if (new_nstart < this->members_.m_start.m_node)
|
1935
|
+
boost::move(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1, new_nstart);
|
1936
|
+
else
|
1937
|
+
boost::move_backward
|
1938
|
+
(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1, new_nstart + old_num_nodes);
|
1939
|
+
}
|
1940
|
+
else {
|
1941
|
+
size_type new_map_size =
|
1942
|
+
this->members_.m_map_size + container_detail::max_value(this->members_.m_map_size, nodes_to_add) + 2;
|
1943
|
+
|
1944
|
+
index_pointer new_map = this->priv_allocate_map(new_map_size);
|
1945
|
+
new_nstart = new_map + (new_map_size - new_num_nodes) / 2
|
1946
|
+
+ (add_at_front ? nodes_to_add : 0);
|
1947
|
+
boost::move(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1, new_nstart);
|
1948
|
+
this->priv_deallocate_map(this->members_.m_map, this->members_.m_map_size);
|
1949
|
+
|
1950
|
+
this->members_.m_map = new_map;
|
1951
|
+
this->members_.m_map_size = new_map_size;
|
1952
|
+
}
|
1953
|
+
|
1954
|
+
this->members_.m_start.priv_set_node(new_nstart);
|
1955
|
+
this->members_.m_finish.priv_set_node(new_nstart + old_num_nodes - 1);
|
1956
|
+
}
|
1957
|
+
/// @endcond
|
1958
|
+
};
|
1959
|
+
|
1960
|
+
// Nonmember functions.
|
1961
|
+
template <class T, class Allocator>
|
1962
|
+
inline bool operator==(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
|
1963
|
+
{
|
1964
|
+
return x.size() == y.size() && equal(x.begin(), x.end(), y.begin());
|
1965
|
+
}
|
1966
|
+
|
1967
|
+
template <class T, class Allocator>
|
1968
|
+
inline bool operator<(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
|
1969
|
+
{
|
1970
|
+
return lexicographical_compare(x.begin(), x.end(), y.begin(), y.end());
|
1971
|
+
}
|
1972
|
+
|
1973
|
+
template <class T, class Allocator>
|
1974
|
+
inline bool operator!=(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
|
1975
|
+
{ return !(x == y); }
|
1976
|
+
|
1977
|
+
template <class T, class Allocator>
|
1978
|
+
inline bool operator>(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
|
1979
|
+
{ return y < x; }
|
1980
|
+
|
1981
|
+
template <class T, class Allocator>
|
1982
|
+
inline bool operator>=(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
|
1983
|
+
{ return !(x < y); }
|
1984
|
+
|
1985
|
+
template <class T, class Allocator>
|
1986
|
+
inline bool operator<=(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
|
1987
|
+
{ return !(y < x); }
|
1988
|
+
|
1989
|
+
template <class T, class Allocator>
|
1990
|
+
inline void swap(deque<T, Allocator>& x, deque<T, Allocator>& y)
|
1991
|
+
{ x.swap(y); }
|
1992
|
+
|
1993
|
+
}}
|
1994
|
+
|
1995
|
+
/// @cond
|
1996
|
+
|
1997
|
+
namespace boost {
|
1998
|
+
|
1999
|
+
//!has_trivial_destructor_after_move<> == true_type
|
2000
|
+
//!specialization for optimizations
|
2001
|
+
template <class T, class Allocator>
|
2002
|
+
struct has_trivial_destructor_after_move<boost::container::deque<T, Allocator> >
|
2003
|
+
: public ::boost::has_trivial_destructor_after_move<Allocator>
|
2004
|
+
{};
|
2005
|
+
|
2006
|
+
}
|
2007
|
+
|
2008
|
+
/// @endcond
|
2009
|
+
|
2010
|
+
#include <boost/container/detail/config_end.hpp>
|
2011
|
+
|
2012
|
+
#endif // #ifndef BOOST_CONTAINER_DEQUE_HPP
|