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,45 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2005-2012.
|
4
|
+
//
|
5
|
+
// Distributed under the Boost Software License, Version 1.0.
|
6
|
+
// (See accompanying file LICENSE_1_0.txt or copy at
|
7
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
8
|
+
//
|
9
|
+
// See http://www.boost.org/libs/container for documentation.
|
10
|
+
//
|
11
|
+
//////////////////////////////////////////////////////////////////////////////
|
12
|
+
|
13
|
+
#ifndef BOOST_CONTAINER_DETAIL_VALUE_INIT_HPP
|
14
|
+
#define BOOST_CONTAINER_DETAIL_VALUE_INIT_HPP
|
15
|
+
|
16
|
+
#if (defined _MSC_VER) && (_MSC_VER >= 1200)
|
17
|
+
# pragma once
|
18
|
+
#endif
|
19
|
+
|
20
|
+
#include "config_begin.hpp"
|
21
|
+
#include <boost/container/detail/workaround.hpp>
|
22
|
+
|
23
|
+
namespace boost {
|
24
|
+
namespace container {
|
25
|
+
namespace container_detail {
|
26
|
+
|
27
|
+
template<class T>
|
28
|
+
struct value_init
|
29
|
+
{
|
30
|
+
value_init()
|
31
|
+
: m_t()
|
32
|
+
{}
|
33
|
+
|
34
|
+
operator T &() { return m_t; }
|
35
|
+
|
36
|
+
T m_t;
|
37
|
+
};
|
38
|
+
|
39
|
+
} //namespace container_detail {
|
40
|
+
} //namespace container {
|
41
|
+
} //namespace boost {
|
42
|
+
|
43
|
+
#include <boost/container/detail/config_end.hpp>
|
44
|
+
|
45
|
+
#endif //#ifndef BOOST_CONTAINER_DETAIL_VALUE_INIT_HPP
|
@@ -0,0 +1,153 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
//
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
8
|
+
//
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
10
|
+
|
11
|
+
#ifndef BOOST_CONTAINER_DETAIL_VARIADIC_TEMPLATES_TOOLS_HPP
|
12
|
+
#define BOOST_CONTAINER_DETAIL_VARIADIC_TEMPLATES_TOOLS_HPP
|
13
|
+
|
14
|
+
#if (defined _MSC_VER) && (_MSC_VER >= 1200)
|
15
|
+
# pragma once
|
16
|
+
#endif
|
17
|
+
|
18
|
+
#include "config_begin.hpp"
|
19
|
+
#include <boost/container/detail/workaround.hpp>
|
20
|
+
#include <boost/container/detail/type_traits.hpp>
|
21
|
+
#include <cstddef> //std::size_t
|
22
|
+
|
23
|
+
namespace boost {
|
24
|
+
namespace container {
|
25
|
+
namespace container_detail {
|
26
|
+
|
27
|
+
template<typename... Values>
|
28
|
+
class tuple;
|
29
|
+
|
30
|
+
template<> class tuple<>
|
31
|
+
{};
|
32
|
+
|
33
|
+
template<typename Head, typename... Tail>
|
34
|
+
class tuple<Head, Tail...>
|
35
|
+
: private tuple<Tail...>
|
36
|
+
{
|
37
|
+
typedef tuple<Tail...> inherited;
|
38
|
+
|
39
|
+
public:
|
40
|
+
tuple() { }
|
41
|
+
|
42
|
+
// implicit copy-constructor is okay
|
43
|
+
// Construct tuple from separate arguments.
|
44
|
+
tuple(typename add_const_reference<Head>::type v,
|
45
|
+
typename add_const_reference<Tail>::type... vtail)
|
46
|
+
: inherited(vtail...), m_head(v)
|
47
|
+
{}
|
48
|
+
|
49
|
+
// Construct tuple from another tuple.
|
50
|
+
template<typename... VValues>
|
51
|
+
tuple(const tuple<VValues...>& other)
|
52
|
+
: m_head(other.head()), inherited(other.tail())
|
53
|
+
{}
|
54
|
+
|
55
|
+
template<typename... VValues>
|
56
|
+
tuple& operator=(const tuple<VValues...>& other)
|
57
|
+
{
|
58
|
+
m_head = other.head();
|
59
|
+
tail() = other.tail();
|
60
|
+
return this;
|
61
|
+
}
|
62
|
+
|
63
|
+
typename add_reference<Head>::type head() { return m_head; }
|
64
|
+
typename add_reference<const Head>::type head() const { return m_head; }
|
65
|
+
|
66
|
+
inherited& tail() { return *this; }
|
67
|
+
const inherited& tail() const { return *this; }
|
68
|
+
|
69
|
+
protected:
|
70
|
+
Head m_head;
|
71
|
+
};
|
72
|
+
|
73
|
+
|
74
|
+
template<typename... Values>
|
75
|
+
tuple<Values&&...> tie_forward(Values&&... values)
|
76
|
+
{ return tuple<Values&&...>(values...); }
|
77
|
+
|
78
|
+
template<int I, typename Tuple>
|
79
|
+
struct tuple_element;
|
80
|
+
|
81
|
+
template<int I, typename Head, typename... Tail>
|
82
|
+
struct tuple_element<I, tuple<Head, Tail...> >
|
83
|
+
{
|
84
|
+
typedef typename tuple_element<I-1, tuple<Tail...> >::type type;
|
85
|
+
};
|
86
|
+
|
87
|
+
template<typename Head, typename... Tail>
|
88
|
+
struct tuple_element<0, tuple<Head, Tail...> >
|
89
|
+
{
|
90
|
+
typedef Head type;
|
91
|
+
};
|
92
|
+
|
93
|
+
template<int I, typename Tuple>
|
94
|
+
class get_impl;
|
95
|
+
|
96
|
+
template<int I, typename Head, typename... Values>
|
97
|
+
class get_impl<I, tuple<Head, Values...> >
|
98
|
+
{
|
99
|
+
typedef typename tuple_element<I-1, tuple<Values...> >::type Element;
|
100
|
+
typedef get_impl<I-1, tuple<Values...> > Next;
|
101
|
+
|
102
|
+
public:
|
103
|
+
typedef typename add_reference<Element>::type type;
|
104
|
+
typedef typename add_const_reference<Element>::type const_type;
|
105
|
+
static type get(tuple<Head, Values...>& t) { return Next::get(t.tail()); }
|
106
|
+
static const_type get(const tuple<Head, Values...>& t) { return Next::get(t.tail()); }
|
107
|
+
};
|
108
|
+
|
109
|
+
template<typename Head, typename... Values>
|
110
|
+
class get_impl<0, tuple<Head, Values...> >
|
111
|
+
{
|
112
|
+
public:
|
113
|
+
typedef typename add_reference<Head>::type type;
|
114
|
+
typedef typename add_const_reference<Head>::type const_type;
|
115
|
+
static type get(tuple<Head, Values...>& t) { return t.head(); }
|
116
|
+
static const_type get(const tuple<Head, Values...>& t){ return t.head(); }
|
117
|
+
};
|
118
|
+
|
119
|
+
template<int I, typename... Values>
|
120
|
+
typename get_impl<I, tuple<Values...> >::type get(tuple<Values...>& t)
|
121
|
+
{ return get_impl<I, tuple<Values...> >::get(t); }
|
122
|
+
|
123
|
+
template<int I, typename... Values>
|
124
|
+
typename get_impl<I, tuple<Values...> >::const_type get(const tuple<Values...>& t)
|
125
|
+
{ return get_impl<I, tuple<Values...> >::get(t); }
|
126
|
+
|
127
|
+
////////////////////////////////////////////////////
|
128
|
+
// Builds an index_tuple<0, 1, 2, ..., Num-1>, that will
|
129
|
+
// be used to "unpack" into comma-separated values
|
130
|
+
// in a function call.
|
131
|
+
////////////////////////////////////////////////////
|
132
|
+
|
133
|
+
template<int... Indexes>
|
134
|
+
struct index_tuple{};
|
135
|
+
|
136
|
+
template<std::size_t Num, typename Tuple = index_tuple<> >
|
137
|
+
struct build_number_seq;
|
138
|
+
|
139
|
+
template<std::size_t Num, int... Indexes>
|
140
|
+
struct build_number_seq<Num, index_tuple<Indexes...> >
|
141
|
+
: build_number_seq<Num - 1, index_tuple<Indexes..., sizeof...(Indexes)> >
|
142
|
+
{};
|
143
|
+
|
144
|
+
template<int... Indexes>
|
145
|
+
struct build_number_seq<0, index_tuple<Indexes...> >
|
146
|
+
{ typedef index_tuple<Indexes...> type; };
|
147
|
+
|
148
|
+
|
149
|
+
}}} //namespace boost { namespace container { namespace container_detail {
|
150
|
+
|
151
|
+
#include <boost/container/detail/config_end.hpp>
|
152
|
+
|
153
|
+
#endif //#ifndef BOOST_CONTAINER_DETAIL_VARIADIC_TEMPLATES_TOOLS_HPP
|
@@ -0,0 +1,92 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
//
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
8
|
+
//
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
10
|
+
//
|
11
|
+
// This code comes from N1953 document by Howard E. Hinnant
|
12
|
+
//
|
13
|
+
//////////////////////////////////////////////////////////////////////////////
|
14
|
+
|
15
|
+
|
16
|
+
#ifndef BOOST_CONTAINER_DETAIL_VERSION_TYPE_HPP
|
17
|
+
#define BOOST_CONTAINER_DETAIL_VERSION_TYPE_HPP
|
18
|
+
|
19
|
+
#include "config_begin.hpp"
|
20
|
+
|
21
|
+
#include <boost/container/detail/mpl.hpp>
|
22
|
+
#include <boost/container/detail/type_traits.hpp>
|
23
|
+
|
24
|
+
namespace boost{
|
25
|
+
namespace container {
|
26
|
+
namespace container_detail {
|
27
|
+
|
28
|
+
//using namespace boost;
|
29
|
+
|
30
|
+
template <class T, unsigned V>
|
31
|
+
struct version_type
|
32
|
+
: public container_detail::integral_constant<unsigned, V>
|
33
|
+
{
|
34
|
+
typedef T type;
|
35
|
+
|
36
|
+
version_type(const version_type<T, 0>&);
|
37
|
+
};
|
38
|
+
|
39
|
+
namespace impl{
|
40
|
+
|
41
|
+
template <class T,
|
42
|
+
bool = container_detail::is_convertible<version_type<T, 0>, typename T::version>::value>
|
43
|
+
struct extract_version
|
44
|
+
{
|
45
|
+
static const unsigned value = 1;
|
46
|
+
};
|
47
|
+
|
48
|
+
template <class T>
|
49
|
+
struct extract_version<T, true>
|
50
|
+
{
|
51
|
+
static const unsigned value = T::version::value;
|
52
|
+
};
|
53
|
+
|
54
|
+
template <class T>
|
55
|
+
struct has_version
|
56
|
+
{
|
57
|
+
private:
|
58
|
+
struct two {char _[2];};
|
59
|
+
template <class U> static two test(...);
|
60
|
+
template <class U> static char test(const typename U::version*);
|
61
|
+
public:
|
62
|
+
static const bool value = sizeof(test<T>(0)) == 1;
|
63
|
+
void dummy(){}
|
64
|
+
};
|
65
|
+
|
66
|
+
template <class T, bool = has_version<T>::value>
|
67
|
+
struct version
|
68
|
+
{
|
69
|
+
static const unsigned value = 1;
|
70
|
+
};
|
71
|
+
|
72
|
+
template <class T>
|
73
|
+
struct version<T, true>
|
74
|
+
{
|
75
|
+
static const unsigned value = extract_version<T>::value;
|
76
|
+
};
|
77
|
+
|
78
|
+
} //namespace impl
|
79
|
+
|
80
|
+
template <class T>
|
81
|
+
struct version
|
82
|
+
: public container_detail::integral_constant<unsigned, impl::version<T>::value>
|
83
|
+
{
|
84
|
+
};
|
85
|
+
|
86
|
+
} //namespace container_detail {
|
87
|
+
} //namespace container {
|
88
|
+
} //namespace boost{
|
89
|
+
|
90
|
+
#include "config_end.hpp"
|
91
|
+
|
92
|
+
#endif //#define BOOST_CONTAINER_DETAIL_VERSION_TYPE_HPP
|
@@ -0,0 +1,44 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
//
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
8
|
+
//
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
10
|
+
|
11
|
+
#ifndef BOOST_CONTAINER_DETAIL_WORKAROUND_HPP
|
12
|
+
#define BOOST_CONTAINER_DETAIL_WORKAROUND_HPP
|
13
|
+
|
14
|
+
#include <boost/container/detail/config_begin.hpp>
|
15
|
+
|
16
|
+
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)\
|
17
|
+
&& !defined(BOOST_INTERPROCESS_DISABLE_VARIADIC_TMPL)
|
18
|
+
#define BOOST_CONTAINER_PERFECT_FORWARDING
|
19
|
+
#endif
|
20
|
+
|
21
|
+
#if defined(BOOST_NO_CXX11_NOEXCEPT)
|
22
|
+
#if defined(BOOST_MSVC)
|
23
|
+
#define BOOST_CONTAINER_NOEXCEPT throw()
|
24
|
+
#else
|
25
|
+
#define BOOST_CONTAINER_NOEXCEPT
|
26
|
+
#endif
|
27
|
+
#define BOOST_CONTAINER_NOEXCEPT_IF(x)
|
28
|
+
#else
|
29
|
+
#define BOOST_CONTAINER_NOEXCEPT noexcept
|
30
|
+
#define BOOST_CONTAINER_NOEXCEPT_IF(x) noexcept(x)
|
31
|
+
#endif
|
32
|
+
|
33
|
+
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && defined(__GXX_EXPERIMENTAL_CXX0X__)\
|
34
|
+
&& (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40700)
|
35
|
+
#define BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST
|
36
|
+
#endif
|
37
|
+
|
38
|
+
//Macros for documentation purposes. For code, expands to the argument
|
39
|
+
#define BOOST_CONTAINER_IMPDEF(TYPE) TYPE
|
40
|
+
#define BOOST_CONTAINER_SEEDOC(TYPE) TYPE
|
41
|
+
|
42
|
+
#include <boost/container/detail/config_end.hpp>
|
43
|
+
|
44
|
+
#endif //#ifndef BOOST_CONTAINER_DETAIL_WORKAROUND_HPP
|
@@ -0,0 +1,1674 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
//
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
8
|
+
//
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
10
|
+
|
11
|
+
#ifndef BOOST_CONTAINER_FLAT_MAP_HPP
|
12
|
+
#define BOOST_CONTAINER_FLAT_MAP_HPP
|
13
|
+
|
14
|
+
#if (defined _MSC_VER) && (_MSC_VER >= 1200)
|
15
|
+
# pragma once
|
16
|
+
#endif
|
17
|
+
|
18
|
+
#include <boost/container/detail/config_begin.hpp>
|
19
|
+
#include <boost/container/detail/workaround.hpp>
|
20
|
+
|
21
|
+
#include <boost/container/container_fwd.hpp>
|
22
|
+
#include <utility>
|
23
|
+
#include <functional>
|
24
|
+
#include <memory>
|
25
|
+
#include <boost/container/detail/flat_tree.hpp>
|
26
|
+
#include <boost/type_traits/has_trivial_destructor.hpp>
|
27
|
+
#include <boost/container/detail/mpl.hpp>
|
28
|
+
#include <boost/container/allocator_traits.hpp>
|
29
|
+
#include <boost/container/throw_exception.hpp>
|
30
|
+
#include <boost/move/utility.hpp>
|
31
|
+
#include <boost/move/detail/move_helpers.hpp>
|
32
|
+
#include <boost/detail/no_exceptions_support.hpp>
|
33
|
+
|
34
|
+
namespace boost {
|
35
|
+
namespace container {
|
36
|
+
|
37
|
+
/// @cond
|
38
|
+
// Forward declarations of operators == and <, needed for friend declarations.
|
39
|
+
template <class Key, class T, class Compare, class Allocator>
|
40
|
+
class flat_map;
|
41
|
+
|
42
|
+
template <class Key, class T, class Compare, class Allocator>
|
43
|
+
inline bool operator==(const flat_map<Key,T,Compare,Allocator>& x,
|
44
|
+
const flat_map<Key,T,Compare,Allocator>& y);
|
45
|
+
|
46
|
+
template <class Key, class T, class Compare, class Allocator>
|
47
|
+
inline bool operator<(const flat_map<Key,T,Compare,Allocator>& x,
|
48
|
+
const flat_map<Key,T,Compare,Allocator>& y);
|
49
|
+
|
50
|
+
namespace container_detail{
|
51
|
+
|
52
|
+
template<class D, class S>
|
53
|
+
static D &force(const S &s)
|
54
|
+
{ return *const_cast<D*>((reinterpret_cast<const D*>(&s))); }
|
55
|
+
|
56
|
+
template<class D, class S>
|
57
|
+
static D force_copy(S s)
|
58
|
+
{
|
59
|
+
D *vp = reinterpret_cast<D *>(&s);
|
60
|
+
return D(*vp);
|
61
|
+
}
|
62
|
+
|
63
|
+
} //namespace container_detail{
|
64
|
+
|
65
|
+
|
66
|
+
/// @endcond
|
67
|
+
|
68
|
+
//! A flat_map is a kind of associative container that supports unique keys (contains at
|
69
|
+
//! most one of each key value) and provides for fast retrieval of values of another
|
70
|
+
//! type T based on the keys. The flat_map class supports random-access iterators.
|
71
|
+
//!
|
72
|
+
//! A flat_map satisfies all of the requirements of a container and of a reversible
|
73
|
+
//! container and of an associative container. A flat_map also provides
|
74
|
+
//! most operations described for unique keys. For a
|
75
|
+
//! flat_map<Key,T> the key_type is Key and the value_type is std::pair<Key,T>
|
76
|
+
//! (unlike std::map<Key, T> which value_type is std::pair<<b>const</b> Key, T>).
|
77
|
+
//!
|
78
|
+
//! Compare is the ordering function for Keys (e.g. <i>std::less<Key></i>).
|
79
|
+
//!
|
80
|
+
//! Allocator is the allocator to allocate the value_types
|
81
|
+
//! (e.g. <i>allocator< std::pair<Key, T> ></i>).
|
82
|
+
//!
|
83
|
+
//! flat_map is similar to std::map but it's implemented like an ordered vector.
|
84
|
+
//! This means that inserting a new element into a flat_map invalidates
|
85
|
+
//! previous iterators and references
|
86
|
+
//!
|
87
|
+
//! Erasing an element of a flat_map invalidates iterators and references
|
88
|
+
//! pointing to elements that come after (their keys are bigger) the erased element.
|
89
|
+
#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
|
90
|
+
template <class Key, class T, class Compare = std::less<Key>, class Allocator = std::allocator< std::pair< Key, T> > >
|
91
|
+
#else
|
92
|
+
template <class Key, class T, class Compare, class Allocator>
|
93
|
+
#endif
|
94
|
+
class flat_map
|
95
|
+
{
|
96
|
+
/// @cond
|
97
|
+
private:
|
98
|
+
BOOST_COPYABLE_AND_MOVABLE(flat_map)
|
99
|
+
//This is the tree that we should store if pair was movable
|
100
|
+
typedef container_detail::flat_tree<Key,
|
101
|
+
std::pair<Key, T>,
|
102
|
+
container_detail::select1st< std::pair<Key, T> >,
|
103
|
+
Compare,
|
104
|
+
Allocator> tree_t;
|
105
|
+
|
106
|
+
//This is the real tree stored here. It's based on a movable pair
|
107
|
+
typedef container_detail::flat_tree<Key,
|
108
|
+
container_detail::pair<Key, T>,
|
109
|
+
container_detail::select1st<container_detail::pair<Key, T> >,
|
110
|
+
Compare,
|
111
|
+
typename allocator_traits<Allocator>::template portable_rebind_alloc
|
112
|
+
<container_detail::pair<Key, T> >::type> impl_tree_t;
|
113
|
+
impl_tree_t m_flat_tree; // flat tree representing flat_map
|
114
|
+
|
115
|
+
typedef typename impl_tree_t::value_type impl_value_type;
|
116
|
+
typedef typename impl_tree_t::const_iterator impl_const_iterator;
|
117
|
+
typedef typename impl_tree_t::allocator_type impl_allocator_type;
|
118
|
+
typedef container_detail::flat_tree_value_compare
|
119
|
+
< Compare
|
120
|
+
, container_detail::select1st< std::pair<Key, T> >
|
121
|
+
, std::pair<Key, T> > value_compare_impl;
|
122
|
+
typedef typename container_detail::get_flat_tree_iterators
|
123
|
+
<typename allocator_traits<Allocator>::pointer>::iterator iterator_impl;
|
124
|
+
typedef typename container_detail::get_flat_tree_iterators
|
125
|
+
<typename allocator_traits<Allocator>::pointer>::const_iterator const_iterator_impl;
|
126
|
+
typedef typename container_detail::get_flat_tree_iterators
|
127
|
+
<typename allocator_traits<Allocator>::pointer>::reverse_iterator reverse_iterator_impl;
|
128
|
+
typedef typename container_detail::get_flat_tree_iterators
|
129
|
+
<typename allocator_traits<Allocator>::pointer>::const_reverse_iterator const_reverse_iterator_impl;
|
130
|
+
/// @endcond
|
131
|
+
|
132
|
+
public:
|
133
|
+
|
134
|
+
//////////////////////////////////////////////
|
135
|
+
//
|
136
|
+
// types
|
137
|
+
//
|
138
|
+
//////////////////////////////////////////////
|
139
|
+
typedef Key key_type;
|
140
|
+
typedef T mapped_type;
|
141
|
+
typedef std::pair<Key, T> value_type;
|
142
|
+
typedef typename boost::container::allocator_traits<Allocator>::pointer pointer;
|
143
|
+
typedef typename boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
|
144
|
+
typedef typename boost::container::allocator_traits<Allocator>::reference reference;
|
145
|
+
typedef typename boost::container::allocator_traits<Allocator>::const_reference const_reference;
|
146
|
+
typedef typename boost::container::allocator_traits<Allocator>::size_type size_type;
|
147
|
+
typedef typename boost::container::allocator_traits<Allocator>::difference_type difference_type;
|
148
|
+
typedef Allocator allocator_type;
|
149
|
+
typedef BOOST_CONTAINER_IMPDEF(Allocator) stored_allocator_type;
|
150
|
+
typedef BOOST_CONTAINER_IMPDEF(value_compare_impl) value_compare;
|
151
|
+
typedef Compare key_compare;
|
152
|
+
typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator;
|
153
|
+
typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator;
|
154
|
+
typedef BOOST_CONTAINER_IMPDEF(reverse_iterator_impl) reverse_iterator;
|
155
|
+
typedef BOOST_CONTAINER_IMPDEF(const_reverse_iterator_impl) const_reverse_iterator;
|
156
|
+
typedef BOOST_CONTAINER_IMPDEF(impl_value_type) movable_value_type;
|
157
|
+
|
158
|
+
public:
|
159
|
+
//////////////////////////////////////////////
|
160
|
+
//
|
161
|
+
// construct/copy/destroy
|
162
|
+
//
|
163
|
+
//////////////////////////////////////////////
|
164
|
+
|
165
|
+
//! <b>Effects</b>: Default constructs an empty flat_map.
|
166
|
+
//!
|
167
|
+
//! <b>Complexity</b>: Constant.
|
168
|
+
flat_map()
|
169
|
+
: m_flat_tree() {}
|
170
|
+
|
171
|
+
//! <b>Effects</b>: Constructs an empty flat_map using the specified
|
172
|
+
//! comparison object and allocator.
|
173
|
+
//!
|
174
|
+
//! <b>Complexity</b>: Constant.
|
175
|
+
explicit flat_map(const Compare& comp, const allocator_type& a = allocator_type())
|
176
|
+
: m_flat_tree(comp, container_detail::force<impl_allocator_type>(a)) {}
|
177
|
+
|
178
|
+
//! <b>Effects</b>: Constructs an empty flat_map using the specified comparison object and
|
179
|
+
//! allocator, and inserts elements from the range [first ,last ).
|
180
|
+
//!
|
181
|
+
//! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using
|
182
|
+
//! comp and otherwise N logN, where N is last - first.
|
183
|
+
template <class InputIterator>
|
184
|
+
flat_map(InputIterator first, InputIterator last, const Compare& comp = Compare(),
|
185
|
+
const allocator_type& a = allocator_type())
|
186
|
+
: m_flat_tree(true, first, last, comp, container_detail::force<impl_allocator_type>(a))
|
187
|
+
{}
|
188
|
+
|
189
|
+
//! <b>Effects</b>: Constructs an empty flat_map using the specified comparison object and
|
190
|
+
//! allocator, and inserts elements from the ordered unique range [first ,last). This function
|
191
|
+
//! is more efficient than the normal range creation for ordered ranges.
|
192
|
+
//!
|
193
|
+
//! <b>Requires</b>: [first ,last) must be ordered according to the predicate and must be
|
194
|
+
//! unique values.
|
195
|
+
//!
|
196
|
+
//! <b>Complexity</b>: Linear in N.
|
197
|
+
//!
|
198
|
+
//! <b>Note</b>: Non-standard extension.
|
199
|
+
template <class InputIterator>
|
200
|
+
flat_map( ordered_unique_range_t, InputIterator first, InputIterator last
|
201
|
+
, const Compare& comp = Compare(), const allocator_type& a = allocator_type())
|
202
|
+
: m_flat_tree(ordered_range, first, last, comp, a)
|
203
|
+
{}
|
204
|
+
|
205
|
+
//! <b>Effects</b>: Copy constructs a flat_map.
|
206
|
+
//!
|
207
|
+
//! <b>Complexity</b>: Linear in x.size().
|
208
|
+
flat_map(const flat_map& x)
|
209
|
+
: m_flat_tree(x.m_flat_tree) {}
|
210
|
+
|
211
|
+
//! <b>Effects</b>: Move constructs a flat_map.
|
212
|
+
//! Constructs *this using x's resources.
|
213
|
+
//!
|
214
|
+
//! <b>Complexity</b>: Constant.
|
215
|
+
//!
|
216
|
+
//! <b>Postcondition</b>: x is emptied.
|
217
|
+
flat_map(BOOST_RV_REF(flat_map) x)
|
218
|
+
: m_flat_tree(boost::move(x.m_flat_tree))
|
219
|
+
{}
|
220
|
+
|
221
|
+
//! <b>Effects</b>: Copy constructs a flat_map using the specified allocator.
|
222
|
+
//!
|
223
|
+
//! <b>Complexity</b>: Linear in x.size().
|
224
|
+
flat_map(const flat_map& x, const allocator_type &a)
|
225
|
+
: m_flat_tree(x.m_flat_tree, a)
|
226
|
+
{}
|
227
|
+
|
228
|
+
//! <b>Effects</b>: Move constructs a flat_map using the specified allocator.
|
229
|
+
//! Constructs *this using x's resources.
|
230
|
+
//!
|
231
|
+
//! <b>Complexity</b>: Constant if x.get_allocator() == a, linear otherwise.
|
232
|
+
flat_map(BOOST_RV_REF(flat_map) x, const allocator_type &a)
|
233
|
+
: m_flat_tree(boost::move(x.m_flat_tree), a)
|
234
|
+
{}
|
235
|
+
|
236
|
+
//! <b>Effects</b>: Makes *this a copy of x.
|
237
|
+
//!
|
238
|
+
//! <b>Complexity</b>: Linear in x.size().
|
239
|
+
flat_map& operator=(BOOST_COPY_ASSIGN_REF(flat_map) x)
|
240
|
+
{ m_flat_tree = x.m_flat_tree; return *this; }
|
241
|
+
|
242
|
+
//! <b>Effects</b>: Move constructs a flat_map.
|
243
|
+
//! Constructs *this using x's resources.
|
244
|
+
//!
|
245
|
+
//! <b>Complexity</b>: Construct.
|
246
|
+
//!
|
247
|
+
//! <b>Postcondition</b>: x is emptied.
|
248
|
+
flat_map& operator=(BOOST_RV_REF(flat_map) mx)
|
249
|
+
{ m_flat_tree = boost::move(mx.m_flat_tree); return *this; }
|
250
|
+
|
251
|
+
//! <b>Effects</b>: Returns a copy of the Allocator that
|
252
|
+
//! was passed to the object's constructor.
|
253
|
+
//!
|
254
|
+
//! <b>Complexity</b>: Constant.
|
255
|
+
allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT
|
256
|
+
{ return container_detail::force_copy<allocator_type>(m_flat_tree.get_allocator()); }
|
257
|
+
|
258
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
259
|
+
//!
|
260
|
+
//! <b>Throws</b>: Nothing
|
261
|
+
//!
|
262
|
+
//! <b>Complexity</b>: Constant.
|
263
|
+
//!
|
264
|
+
//! <b>Note</b>: Non-standard extension.
|
265
|
+
stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT
|
266
|
+
{ return container_detail::force<stored_allocator_type>(m_flat_tree.get_stored_allocator()); }
|
267
|
+
|
268
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
269
|
+
//!
|
270
|
+
//! <b>Throws</b>: Nothing
|
271
|
+
//!
|
272
|
+
//! <b>Complexity</b>: Constant.
|
273
|
+
//!
|
274
|
+
//! <b>Note</b>: Non-standard extension.
|
275
|
+
const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT
|
276
|
+
{ return container_detail::force<stored_allocator_type>(m_flat_tree.get_stored_allocator()); }
|
277
|
+
|
278
|
+
//////////////////////////////////////////////
|
279
|
+
//
|
280
|
+
// iterators
|
281
|
+
//
|
282
|
+
//////////////////////////////////////////////
|
283
|
+
|
284
|
+
//! <b>Effects</b>: Returns an iterator to the first element contained in the container.
|
285
|
+
//!
|
286
|
+
//! <b>Throws</b>: Nothing.
|
287
|
+
//!
|
288
|
+
//! <b>Complexity</b>: Constant.
|
289
|
+
iterator begin() BOOST_CONTAINER_NOEXCEPT
|
290
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.begin()); }
|
291
|
+
|
292
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the container.
|
293
|
+
//!
|
294
|
+
//! <b>Throws</b>: Nothing.
|
295
|
+
//!
|
296
|
+
//! <b>Complexity</b>: Constant.
|
297
|
+
const_iterator begin() const BOOST_CONTAINER_NOEXCEPT
|
298
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.begin()); }
|
299
|
+
|
300
|
+
//! <b>Effects</b>: Returns an iterator to the end of the container.
|
301
|
+
//!
|
302
|
+
//! <b>Throws</b>: Nothing.
|
303
|
+
//!
|
304
|
+
//! <b>Complexity</b>: Constant.
|
305
|
+
iterator end() BOOST_CONTAINER_NOEXCEPT
|
306
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.end()); }
|
307
|
+
|
308
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the container.
|
309
|
+
//!
|
310
|
+
//! <b>Throws</b>: Nothing.
|
311
|
+
//!
|
312
|
+
//! <b>Complexity</b>: Constant.
|
313
|
+
const_iterator end() const BOOST_CONTAINER_NOEXCEPT
|
314
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.end()); }
|
315
|
+
|
316
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
317
|
+
//! of the reversed container.
|
318
|
+
//!
|
319
|
+
//! <b>Throws</b>: Nothing.
|
320
|
+
//!
|
321
|
+
//! <b>Complexity</b>: Constant.
|
322
|
+
reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT
|
323
|
+
{ return container_detail::force_copy<reverse_iterator>(m_flat_tree.rbegin()); }
|
324
|
+
|
325
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
326
|
+
//! of the reversed container.
|
327
|
+
//!
|
328
|
+
//! <b>Throws</b>: Nothing.
|
329
|
+
//!
|
330
|
+
//! <b>Complexity</b>: Constant.
|
331
|
+
const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT
|
332
|
+
{ return container_detail::force_copy<const_reverse_iterator>(m_flat_tree.rbegin()); }
|
333
|
+
|
334
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
335
|
+
//! of the reversed container.
|
336
|
+
//!
|
337
|
+
//! <b>Throws</b>: Nothing.
|
338
|
+
//!
|
339
|
+
//! <b>Complexity</b>: Constant.
|
340
|
+
reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT
|
341
|
+
{ return container_detail::force_copy<reverse_iterator>(m_flat_tree.rend()); }
|
342
|
+
|
343
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
344
|
+
//! of the reversed container.
|
345
|
+
//!
|
346
|
+
//! <b>Throws</b>: Nothing.
|
347
|
+
//!
|
348
|
+
//! <b>Complexity</b>: Constant.
|
349
|
+
const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT
|
350
|
+
{ return container_detail::force_copy<const_reverse_iterator>(m_flat_tree.rend()); }
|
351
|
+
|
352
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the container.
|
353
|
+
//!
|
354
|
+
//! <b>Throws</b>: Nothing.
|
355
|
+
//!
|
356
|
+
//! <b>Complexity</b>: Constant.
|
357
|
+
const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT
|
358
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.cbegin()); }
|
359
|
+
|
360
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the container.
|
361
|
+
//!
|
362
|
+
//! <b>Throws</b>: Nothing.
|
363
|
+
//!
|
364
|
+
//! <b>Complexity</b>: Constant.
|
365
|
+
const_iterator cend() const BOOST_CONTAINER_NOEXCEPT
|
366
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.cend()); }
|
367
|
+
|
368
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
369
|
+
//! of the reversed container.
|
370
|
+
//!
|
371
|
+
//! <b>Throws</b>: Nothing.
|
372
|
+
//!
|
373
|
+
//! <b>Complexity</b>: Constant.
|
374
|
+
const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT
|
375
|
+
{ return container_detail::force_copy<const_reverse_iterator>(m_flat_tree.crbegin()); }
|
376
|
+
|
377
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
378
|
+
//! of the reversed container.
|
379
|
+
//!
|
380
|
+
//! <b>Throws</b>: Nothing.
|
381
|
+
//!
|
382
|
+
//! <b>Complexity</b>: Constant.
|
383
|
+
const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT
|
384
|
+
{ return container_detail::force_copy<const_reverse_iterator>(m_flat_tree.crend()); }
|
385
|
+
|
386
|
+
//////////////////////////////////////////////
|
387
|
+
//
|
388
|
+
// capacity
|
389
|
+
//
|
390
|
+
//////////////////////////////////////////////
|
391
|
+
|
392
|
+
//! <b>Effects</b>: Returns true if the container contains no elements.
|
393
|
+
//!
|
394
|
+
//! <b>Throws</b>: Nothing.
|
395
|
+
//!
|
396
|
+
//! <b>Complexity</b>: Constant.
|
397
|
+
bool empty() const BOOST_CONTAINER_NOEXCEPT
|
398
|
+
{ return m_flat_tree.empty(); }
|
399
|
+
|
400
|
+
//! <b>Effects</b>: Returns the number of the elements contained in the container.
|
401
|
+
//!
|
402
|
+
//! <b>Throws</b>: Nothing.
|
403
|
+
//!
|
404
|
+
//! <b>Complexity</b>: Constant.
|
405
|
+
size_type size() const BOOST_CONTAINER_NOEXCEPT
|
406
|
+
{ return m_flat_tree.size(); }
|
407
|
+
|
408
|
+
//! <b>Effects</b>: Returns the largest possible size of the container.
|
409
|
+
//!
|
410
|
+
//! <b>Throws</b>: Nothing.
|
411
|
+
//!
|
412
|
+
//! <b>Complexity</b>: Constant.
|
413
|
+
size_type max_size() const BOOST_CONTAINER_NOEXCEPT
|
414
|
+
{ return m_flat_tree.max_size(); }
|
415
|
+
|
416
|
+
//! <b>Effects</b>: Number of elements for which memory has been allocated.
|
417
|
+
//! capacity() is always greater than or equal to size().
|
418
|
+
//!
|
419
|
+
//! <b>Throws</b>: Nothing.
|
420
|
+
//!
|
421
|
+
//! <b>Complexity</b>: Constant.
|
422
|
+
size_type capacity() const BOOST_CONTAINER_NOEXCEPT
|
423
|
+
{ return m_flat_tree.capacity(); }
|
424
|
+
|
425
|
+
//! <b>Effects</b>: If n is less than or equal to capacity(), this call has no
|
426
|
+
//! effect. Otherwise, it is a request for allocation of additional memory.
|
427
|
+
//! If the request is successful, then capacity() is greater than or equal to
|
428
|
+
//! n; otherwise, capacity() is unchanged. In either case, size() is unchanged.
|
429
|
+
//!
|
430
|
+
//! <b>Throws</b>: If memory allocation allocation throws or T's copy constructor throws.
|
431
|
+
//!
|
432
|
+
//! <b>Note</b>: If capacity() is less than "cnt", iterators and references to
|
433
|
+
//! to values might be invalidated.
|
434
|
+
void reserve(size_type cnt)
|
435
|
+
{ m_flat_tree.reserve(cnt); }
|
436
|
+
|
437
|
+
//! <b>Effects</b>: Tries to deallocate the excess of memory created
|
438
|
+
// with previous allocations. The size of the vector is unchanged
|
439
|
+
//!
|
440
|
+
//! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
|
441
|
+
//!
|
442
|
+
//! <b>Complexity</b>: Linear to size().
|
443
|
+
void shrink_to_fit()
|
444
|
+
{ m_flat_tree.shrink_to_fit(); }
|
445
|
+
|
446
|
+
//////////////////////////////////////////////
|
447
|
+
//
|
448
|
+
// element access
|
449
|
+
//
|
450
|
+
//////////////////////////////////////////////
|
451
|
+
|
452
|
+
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
453
|
+
//! Effects: If there is no key equivalent to x in the flat_map, inserts
|
454
|
+
//! value_type(x, T()) into the flat_map.
|
455
|
+
//!
|
456
|
+
//! Returns: Allocator reference to the mapped_type corresponding to x in *this.
|
457
|
+
//!
|
458
|
+
//! Complexity: Logarithmic.
|
459
|
+
mapped_type &operator[](const key_type& k);
|
460
|
+
|
461
|
+
//! Effects: If there is no key equivalent to x in the flat_map, inserts
|
462
|
+
//! value_type(move(x), T()) into the flat_map (the key is move-constructed)
|
463
|
+
//!
|
464
|
+
//! Returns: Allocator reference to the mapped_type corresponding to x in *this.
|
465
|
+
//!
|
466
|
+
//! Complexity: Logarithmic.
|
467
|
+
mapped_type &operator[](key_type &&k) ;
|
468
|
+
|
469
|
+
#else
|
470
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH( operator[] , key_type, mapped_type&, this->priv_subscript)
|
471
|
+
#endif
|
472
|
+
|
473
|
+
//! Returns: Allocator reference to the element whose key is equivalent to x.
|
474
|
+
//!
|
475
|
+
//! Throws: An exception object of type out_of_range if no such element is present.
|
476
|
+
//!
|
477
|
+
//! Complexity: logarithmic.
|
478
|
+
T& at(const key_type& k)
|
479
|
+
{
|
480
|
+
iterator i = this->find(k);
|
481
|
+
if(i == this->end()){
|
482
|
+
throw_out_of_range("flat_map::at key not found");
|
483
|
+
}
|
484
|
+
return i->second;
|
485
|
+
}
|
486
|
+
|
487
|
+
//! Returns: Allocator reference to the element whose key is equivalent to x.
|
488
|
+
//!
|
489
|
+
//! Throws: An exception object of type out_of_range if no such element is present.
|
490
|
+
//!
|
491
|
+
//! Complexity: logarithmic.
|
492
|
+
const T& at(const key_type& k) const
|
493
|
+
{
|
494
|
+
const_iterator i = this->find(k);
|
495
|
+
if(i == this->end()){
|
496
|
+
throw_out_of_range("flat_map::at key not found");
|
497
|
+
}
|
498
|
+
return i->second;
|
499
|
+
}
|
500
|
+
|
501
|
+
//////////////////////////////////////////////
|
502
|
+
//
|
503
|
+
// modifiers
|
504
|
+
//
|
505
|
+
//////////////////////////////////////////////
|
506
|
+
|
507
|
+
#if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
508
|
+
|
509
|
+
//! <b>Effects</b>: Inserts an object x of type T constructed with
|
510
|
+
//! std::forward<Args>(args)... if and only if there is no element in the container
|
511
|
+
//! with key equivalent to the key of x.
|
512
|
+
//!
|
513
|
+
//! <b>Returns</b>: The bool component of the returned pair is true if and only
|
514
|
+
//! if the insertion takes place, and the iterator component of the pair
|
515
|
+
//! points to the element with key equivalent to the key of x.
|
516
|
+
//!
|
517
|
+
//! <b>Complexity</b>: Logarithmic search time plus linear insertion
|
518
|
+
//! to the elements with bigger keys than x.
|
519
|
+
//!
|
520
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
521
|
+
template <class... Args>
|
522
|
+
std::pair<iterator,bool> emplace(Args&&... args)
|
523
|
+
{ return container_detail::force_copy< std::pair<iterator, bool> >(m_flat_tree.emplace_unique(boost::forward<Args>(args)...)); }
|
524
|
+
|
525
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
526
|
+
//! std::forward<Args>(args)... in the container if and only if there is
|
527
|
+
//! no element in the container with key equivalent to the key of x.
|
528
|
+
//! p is a hint pointing to where the insert should start to search.
|
529
|
+
//!
|
530
|
+
//! <b>Returns</b>: An iterator pointing to the element with key equivalent
|
531
|
+
//! to the key of x.
|
532
|
+
//!
|
533
|
+
//! <b>Complexity</b>: Logarithmic search time (constant if x is inserted
|
534
|
+
//! right before p) plus insertion linear to the elements with bigger keys than x.
|
535
|
+
//!
|
536
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
537
|
+
template <class... Args>
|
538
|
+
iterator emplace_hint(const_iterator hint, Args&&... args)
|
539
|
+
{
|
540
|
+
return container_detail::force_copy<iterator>
|
541
|
+
(m_flat_tree.emplace_hint_unique( container_detail::force_copy<impl_const_iterator>(hint)
|
542
|
+
, boost::forward<Args>(args)...));
|
543
|
+
}
|
544
|
+
|
545
|
+
#else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
546
|
+
|
547
|
+
#define BOOST_PP_LOCAL_MACRO(n) \
|
548
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
549
|
+
std::pair<iterator,bool> emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
550
|
+
{ return container_detail::force_copy< std::pair<iterator, bool> > \
|
551
|
+
(m_flat_tree.emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); } \
|
552
|
+
\
|
553
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
554
|
+
iterator emplace_hint(const_iterator hint \
|
555
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
556
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.emplace_hint_unique \
|
557
|
+
(container_detail::force_copy<impl_const_iterator>(hint) \
|
558
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); } \
|
559
|
+
//!
|
560
|
+
#define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
|
561
|
+
#include BOOST_PP_LOCAL_ITERATE()
|
562
|
+
|
563
|
+
#endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
564
|
+
|
565
|
+
//! <b>Effects</b>: Inserts x if and only if there is no element in the container
|
566
|
+
//! with key equivalent to the key of x.
|
567
|
+
//!
|
568
|
+
//! <b>Returns</b>: The bool component of the returned pair is true if and only
|
569
|
+
//! if the insertion takes place, and the iterator component of the pair
|
570
|
+
//! points to the element with key equivalent to the key of x.
|
571
|
+
//!
|
572
|
+
//! <b>Complexity</b>: Logarithmic search time plus linear insertion
|
573
|
+
//! to the elements with bigger keys than x.
|
574
|
+
//!
|
575
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
576
|
+
std::pair<iterator,bool> insert(const value_type& x)
|
577
|
+
{ return container_detail::force_copy<std::pair<iterator,bool> >(
|
578
|
+
m_flat_tree.insert_unique(container_detail::force<impl_value_type>(x))); }
|
579
|
+
|
580
|
+
//! <b>Effects</b>: Inserts a new value_type move constructed from the pair if and
|
581
|
+
//! only if there is no element in the container with key equivalent to the key of x.
|
582
|
+
//!
|
583
|
+
//! <b>Returns</b>: The bool component of the returned pair is true if and only
|
584
|
+
//! if the insertion takes place, and the iterator component of the pair
|
585
|
+
//! points to the element with key equivalent to the key of x.
|
586
|
+
//!
|
587
|
+
//! <b>Complexity</b>: Logarithmic search time plus linear insertion
|
588
|
+
//! to the elements with bigger keys than x.
|
589
|
+
//!
|
590
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
591
|
+
std::pair<iterator,bool> insert(BOOST_RV_REF(value_type) x)
|
592
|
+
{ return container_detail::force_copy<std::pair<iterator,bool> >(
|
593
|
+
m_flat_tree.insert_unique(boost::move(container_detail::force<impl_value_type>(x)))); }
|
594
|
+
|
595
|
+
//! <b>Effects</b>: Inserts a new value_type move constructed from the pair if and
|
596
|
+
//! only if there is no element in the container with key equivalent to the key of x.
|
597
|
+
//!
|
598
|
+
//! <b>Returns</b>: The bool component of the returned pair is true if and only
|
599
|
+
//! if the insertion takes place, and the iterator component of the pair
|
600
|
+
//! points to the element with key equivalent to the key of x.
|
601
|
+
//!
|
602
|
+
//! <b>Complexity</b>: Logarithmic search time plus linear insertion
|
603
|
+
//! to the elements with bigger keys than x.
|
604
|
+
//!
|
605
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
606
|
+
std::pair<iterator,bool> insert(BOOST_RV_REF(movable_value_type) x)
|
607
|
+
{
|
608
|
+
return container_detail::force_copy<std::pair<iterator,bool> >
|
609
|
+
(m_flat_tree.insert_unique(boost::move(x)));
|
610
|
+
}
|
611
|
+
|
612
|
+
//! <b>Effects</b>: Inserts a copy of x in the container if and only if there is
|
613
|
+
//! no element in the container with key equivalent to the key of x.
|
614
|
+
//! p is a hint pointing to where the insert should start to search.
|
615
|
+
//!
|
616
|
+
//! <b>Returns</b>: An iterator pointing to the element with key equivalent
|
617
|
+
//! to the key of x.
|
618
|
+
//!
|
619
|
+
//! <b>Complexity</b>: Logarithmic search time (constant if x is inserted
|
620
|
+
//! right before p) plus insertion linear to the elements with bigger keys than x.
|
621
|
+
//!
|
622
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
623
|
+
iterator insert(const_iterator position, const value_type& x)
|
624
|
+
{
|
625
|
+
return container_detail::force_copy<iterator>(
|
626
|
+
m_flat_tree.insert_unique( container_detail::force_copy<impl_const_iterator>(position)
|
627
|
+
, container_detail::force<impl_value_type>(x)));
|
628
|
+
}
|
629
|
+
|
630
|
+
//! <b>Effects</b>: Inserts an element move constructed from x in the container.
|
631
|
+
//! p is a hint pointing to where the insert should start to search.
|
632
|
+
//!
|
633
|
+
//! <b>Returns</b>: An iterator pointing to the element with key equivalent to the key of x.
|
634
|
+
//!
|
635
|
+
//! <b>Complexity</b>: Logarithmic search time (constant if x is inserted
|
636
|
+
//! right before p) plus insertion linear to the elements with bigger keys than x.
|
637
|
+
//!
|
638
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
639
|
+
iterator insert(const_iterator position, BOOST_RV_REF(value_type) x)
|
640
|
+
{
|
641
|
+
return container_detail::force_copy<iterator>
|
642
|
+
(m_flat_tree.insert_unique( container_detail::force_copy<impl_const_iterator>(position)
|
643
|
+
, boost::move(container_detail::force<impl_value_type>(x))));
|
644
|
+
}
|
645
|
+
|
646
|
+
//! <b>Effects</b>: Inserts an element move constructed from x in the container.
|
647
|
+
//! p is a hint pointing to where the insert should start to search.
|
648
|
+
//!
|
649
|
+
//! <b>Returns</b>: An iterator pointing to the element with key equivalent to the key of x.
|
650
|
+
//!
|
651
|
+
//! <b>Complexity</b>: Logarithmic search time (constant if x is inserted
|
652
|
+
//! right before p) plus insertion linear to the elements with bigger keys than x.
|
653
|
+
//!
|
654
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
655
|
+
iterator insert(const_iterator position, BOOST_RV_REF(movable_value_type) x)
|
656
|
+
{
|
657
|
+
return container_detail::force_copy<iterator>(
|
658
|
+
m_flat_tree.insert_unique(container_detail::force_copy<impl_const_iterator>(position), boost::move(x)));
|
659
|
+
}
|
660
|
+
|
661
|
+
//! <b>Requires</b>: first, last are not iterators into *this.
|
662
|
+
//!
|
663
|
+
//! <b>Effects</b>: inserts each element from the range [first,last) if and only
|
664
|
+
//! if there is no element with key equivalent to the key of that element.
|
665
|
+
//!
|
666
|
+
//! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
|
667
|
+
//! search time plus N*size() insertion time.
|
668
|
+
//!
|
669
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
670
|
+
template <class InputIterator>
|
671
|
+
void insert(InputIterator first, InputIterator last)
|
672
|
+
{ m_flat_tree.insert_unique(first, last); }
|
673
|
+
|
674
|
+
//! <b>Requires</b>: first, last are not iterators into *this.
|
675
|
+
//!
|
676
|
+
//! <b>Requires</b>: [first ,last) must be ordered according to the predicate and must be
|
677
|
+
//! unique values.
|
678
|
+
//!
|
679
|
+
//! <b>Effects</b>: inserts each element from the range [first,last) if and only
|
680
|
+
//! if there is no element with key equivalent to the key of that element. This
|
681
|
+
//! function is more efficient than the normal range creation for ordered ranges.
|
682
|
+
//!
|
683
|
+
//! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
|
684
|
+
//! search time plus N*size() insertion time.
|
685
|
+
//!
|
686
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
687
|
+
template <class InputIterator>
|
688
|
+
void insert(ordered_unique_range_t, InputIterator first, InputIterator last)
|
689
|
+
{ m_flat_tree.insert_unique(ordered_unique_range, first, last); }
|
690
|
+
|
691
|
+
//! <b>Effects</b>: Erases the element pointed to by position.
|
692
|
+
//!
|
693
|
+
//! <b>Returns</b>: Returns an iterator pointing to the element immediately
|
694
|
+
//! following q prior to the element being erased. If no such element exists,
|
695
|
+
//! returns end().
|
696
|
+
//!
|
697
|
+
//! <b>Complexity</b>: Linear to the elements with keys bigger than position
|
698
|
+
//!
|
699
|
+
//! <b>Note</b>: Invalidates elements with keys
|
700
|
+
//! not less than the erased element.
|
701
|
+
iterator erase(const_iterator position)
|
702
|
+
{
|
703
|
+
return container_detail::force_copy<iterator>
|
704
|
+
(m_flat_tree.erase(container_detail::force_copy<impl_const_iterator>(position)));
|
705
|
+
}
|
706
|
+
|
707
|
+
//! <b>Effects</b>: Erases all elements in the container with key equivalent to x.
|
708
|
+
//!
|
709
|
+
//! <b>Returns</b>: Returns the number of erased elements.
|
710
|
+
//!
|
711
|
+
//! <b>Complexity</b>: Logarithmic search time plus erasure time
|
712
|
+
//! linear to the elements with bigger keys.
|
713
|
+
size_type erase(const key_type& x)
|
714
|
+
{ return m_flat_tree.erase(x); }
|
715
|
+
|
716
|
+
//! <b>Effects</b>: Erases all the elements in the range [first, last).
|
717
|
+
//!
|
718
|
+
//! <b>Returns</b>: Returns last.
|
719
|
+
//!
|
720
|
+
//! <b>Complexity</b>: size()*N where N is the distance from first to last.
|
721
|
+
//!
|
722
|
+
//! <b>Complexity</b>: Logarithmic search time plus erasure time
|
723
|
+
//! linear to the elements with bigger keys.
|
724
|
+
iterator erase(const_iterator first, const_iterator last)
|
725
|
+
{
|
726
|
+
return container_detail::force_copy<iterator>(
|
727
|
+
m_flat_tree.erase( container_detail::force_copy<impl_const_iterator>(first)
|
728
|
+
, container_detail::force_copy<impl_const_iterator>(last)));
|
729
|
+
}
|
730
|
+
|
731
|
+
//! <b>Effects</b>: Swaps the contents of *this and x.
|
732
|
+
//!
|
733
|
+
//! <b>Throws</b>: Nothing.
|
734
|
+
//!
|
735
|
+
//! <b>Complexity</b>: Constant.
|
736
|
+
void swap(flat_map& x)
|
737
|
+
{ m_flat_tree.swap(x.m_flat_tree); }
|
738
|
+
|
739
|
+
//! <b>Effects</b>: erase(a.begin(),a.end()).
|
740
|
+
//!
|
741
|
+
//! <b>Postcondition</b>: size() == 0.
|
742
|
+
//!
|
743
|
+
//! <b>Complexity</b>: linear in size().
|
744
|
+
void clear() BOOST_CONTAINER_NOEXCEPT
|
745
|
+
{ m_flat_tree.clear(); }
|
746
|
+
|
747
|
+
//////////////////////////////////////////////
|
748
|
+
//
|
749
|
+
// observers
|
750
|
+
//
|
751
|
+
//////////////////////////////////////////////
|
752
|
+
|
753
|
+
//! <b>Effects</b>: Returns the comparison object out
|
754
|
+
//! of which a was constructed.
|
755
|
+
//!
|
756
|
+
//! <b>Complexity</b>: Constant.
|
757
|
+
key_compare key_comp() const
|
758
|
+
{ return container_detail::force_copy<key_compare>(m_flat_tree.key_comp()); }
|
759
|
+
|
760
|
+
//! <b>Effects</b>: Returns an object of value_compare constructed out
|
761
|
+
//! of the comparison object.
|
762
|
+
//!
|
763
|
+
//! <b>Complexity</b>: Constant.
|
764
|
+
value_compare value_comp() const
|
765
|
+
{ return value_compare(container_detail::force_copy<key_compare>(m_flat_tree.key_comp())); }
|
766
|
+
|
767
|
+
//////////////////////////////////////////////
|
768
|
+
//
|
769
|
+
// map operations
|
770
|
+
//
|
771
|
+
//////////////////////////////////////////////
|
772
|
+
|
773
|
+
//! <b>Returns</b>: An iterator pointing to an element with the key
|
774
|
+
//! equivalent to x, or end() if such an element is not found.
|
775
|
+
//!
|
776
|
+
//! <b>Complexity</b>: Logarithmic.
|
777
|
+
iterator find(const key_type& x)
|
778
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.find(x)); }
|
779
|
+
|
780
|
+
//! <b>Returns</b>: Allocator const_iterator pointing to an element with the key
|
781
|
+
//! equivalent to x, or end() if such an element is not found.
|
782
|
+
//!
|
783
|
+
//! <b>Complexity</b>: Logarithmic.s
|
784
|
+
const_iterator find(const key_type& x) const
|
785
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.find(x)); }
|
786
|
+
|
787
|
+
//! <b>Returns</b>: The number of elements with key equivalent to x.
|
788
|
+
//!
|
789
|
+
//! <b>Complexity</b>: log(size())+count(k)
|
790
|
+
size_type count(const key_type& x) const
|
791
|
+
{ return m_flat_tree.find(x) == m_flat_tree.end() ? 0 : 1; }
|
792
|
+
|
793
|
+
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
794
|
+
//! than k, or a.end() if such an element is not found.
|
795
|
+
//!
|
796
|
+
//! <b>Complexity</b>: Logarithmic
|
797
|
+
iterator lower_bound(const key_type& x)
|
798
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.lower_bound(x)); }
|
799
|
+
|
800
|
+
//! <b>Returns</b>: Allocator const iterator pointing to the first element with key not
|
801
|
+
//! less than k, or a.end() if such an element is not found.
|
802
|
+
//!
|
803
|
+
//! <b>Complexity</b>: Logarithmic
|
804
|
+
const_iterator lower_bound(const key_type& x) const
|
805
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.lower_bound(x)); }
|
806
|
+
|
807
|
+
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
808
|
+
//! than x, or end() if such an element is not found.
|
809
|
+
//!
|
810
|
+
//! <b>Complexity</b>: Logarithmic
|
811
|
+
iterator upper_bound(const key_type& x)
|
812
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.upper_bound(x)); }
|
813
|
+
|
814
|
+
//! <b>Returns</b>: Allocator const iterator pointing to the first element with key not
|
815
|
+
//! less than x, or end() if such an element is not found.
|
816
|
+
//!
|
817
|
+
//! <b>Complexity</b>: Logarithmic
|
818
|
+
const_iterator upper_bound(const key_type& x) const
|
819
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.upper_bound(x)); }
|
820
|
+
|
821
|
+
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
822
|
+
//!
|
823
|
+
//! <b>Complexity</b>: Logarithmic
|
824
|
+
std::pair<iterator,iterator> equal_range(const key_type& x)
|
825
|
+
{ return container_detail::force_copy<std::pair<iterator,iterator> >(m_flat_tree.equal_range(x)); }
|
826
|
+
|
827
|
+
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
828
|
+
//!
|
829
|
+
//! <b>Complexity</b>: Logarithmic
|
830
|
+
std::pair<const_iterator,const_iterator> equal_range(const key_type& x) const
|
831
|
+
{ return container_detail::force_copy<std::pair<const_iterator,const_iterator> >(m_flat_tree.equal_range(x)); }
|
832
|
+
|
833
|
+
/// @cond
|
834
|
+
template <class K1, class T1, class C1, class A1>
|
835
|
+
friend bool operator== (const flat_map<K1, T1, C1, A1>&,
|
836
|
+
const flat_map<K1, T1, C1, A1>&);
|
837
|
+
template <class K1, class T1, class C1, class A1>
|
838
|
+
friend bool operator< (const flat_map<K1, T1, C1, A1>&,
|
839
|
+
const flat_map<K1, T1, C1, A1>&);
|
840
|
+
|
841
|
+
private:
|
842
|
+
mapped_type &priv_subscript(const key_type& k)
|
843
|
+
{
|
844
|
+
iterator i = lower_bound(k);
|
845
|
+
// i->first is greater than or equivalent to k.
|
846
|
+
if (i == end() || key_comp()(k, (*i).first)){
|
847
|
+
container_detail::value_init<mapped_type> m;
|
848
|
+
i = insert(i, impl_value_type(k, ::boost::move(m.m_t)));
|
849
|
+
}
|
850
|
+
return (*i).second;
|
851
|
+
}
|
852
|
+
mapped_type &priv_subscript(BOOST_RV_REF(key_type) mk)
|
853
|
+
{
|
854
|
+
key_type &k = mk;
|
855
|
+
iterator i = lower_bound(k);
|
856
|
+
// i->first is greater than or equivalent to k.
|
857
|
+
if (i == end() || key_comp()(k, (*i).first)){
|
858
|
+
container_detail::value_init<mapped_type> m;
|
859
|
+
i = insert(i, impl_value_type(boost::move(k), ::boost::move(m.m_t)));
|
860
|
+
}
|
861
|
+
return (*i).second;
|
862
|
+
}
|
863
|
+
/// @endcond
|
864
|
+
};
|
865
|
+
|
866
|
+
template <class Key, class T, class Compare, class Allocator>
|
867
|
+
inline bool operator==(const flat_map<Key,T,Compare,Allocator>& x,
|
868
|
+
const flat_map<Key,T,Compare,Allocator>& y)
|
869
|
+
{ return x.m_flat_tree == y.m_flat_tree; }
|
870
|
+
|
871
|
+
template <class Key, class T, class Compare, class Allocator>
|
872
|
+
inline bool operator<(const flat_map<Key,T,Compare,Allocator>& x,
|
873
|
+
const flat_map<Key,T,Compare,Allocator>& y)
|
874
|
+
{ return x.m_flat_tree < y.m_flat_tree; }
|
875
|
+
|
876
|
+
template <class Key, class T, class Compare, class Allocator>
|
877
|
+
inline bool operator!=(const flat_map<Key,T,Compare,Allocator>& x,
|
878
|
+
const flat_map<Key,T,Compare,Allocator>& y)
|
879
|
+
{ return !(x == y); }
|
880
|
+
|
881
|
+
template <class Key, class T, class Compare, class Allocator>
|
882
|
+
inline bool operator>(const flat_map<Key,T,Compare,Allocator>& x,
|
883
|
+
const flat_map<Key,T,Compare,Allocator>& y)
|
884
|
+
{ return y < x; }
|
885
|
+
|
886
|
+
template <class Key, class T, class Compare, class Allocator>
|
887
|
+
inline bool operator<=(const flat_map<Key,T,Compare,Allocator>& x,
|
888
|
+
const flat_map<Key,T,Compare,Allocator>& y)
|
889
|
+
{ return !(y < x); }
|
890
|
+
|
891
|
+
template <class Key, class T, class Compare, class Allocator>
|
892
|
+
inline bool operator>=(const flat_map<Key,T,Compare,Allocator>& x,
|
893
|
+
const flat_map<Key,T,Compare,Allocator>& y)
|
894
|
+
{ return !(x < y); }
|
895
|
+
|
896
|
+
template <class Key, class T, class Compare, class Allocator>
|
897
|
+
inline void swap(flat_map<Key,T,Compare,Allocator>& x,
|
898
|
+
flat_map<Key,T,Compare,Allocator>& y)
|
899
|
+
{ x.swap(y); }
|
900
|
+
|
901
|
+
/// @cond
|
902
|
+
|
903
|
+
} //namespace container {
|
904
|
+
|
905
|
+
//!has_trivial_destructor_after_move<> == true_type
|
906
|
+
//!specialization for optimizations
|
907
|
+
template <class K, class T, class C, class Allocator>
|
908
|
+
struct has_trivial_destructor_after_move<boost::container::flat_map<K, T, C, Allocator> >
|
909
|
+
{
|
910
|
+
static const bool value = has_trivial_destructor_after_move<Allocator>::value && has_trivial_destructor_after_move<C>::value;
|
911
|
+
};
|
912
|
+
|
913
|
+
namespace container {
|
914
|
+
|
915
|
+
// Forward declaration of operators < and ==, needed for friend declaration.
|
916
|
+
template <class Key, class T, class Compare, class Allocator>
|
917
|
+
class flat_multimap;
|
918
|
+
|
919
|
+
template <class Key, class T, class Compare, class Allocator>
|
920
|
+
inline bool operator==(const flat_multimap<Key,T,Compare,Allocator>& x,
|
921
|
+
const flat_multimap<Key,T,Compare,Allocator>& y);
|
922
|
+
|
923
|
+
template <class Key, class T, class Compare, class Allocator>
|
924
|
+
inline bool operator<(const flat_multimap<Key,T,Compare,Allocator>& x,
|
925
|
+
const flat_multimap<Key,T,Compare,Allocator>& y);
|
926
|
+
/// @endcond
|
927
|
+
|
928
|
+
//! A flat_multimap is a kind of associative container that supports equivalent keys
|
929
|
+
//! (possibly containing multiple copies of the same key value) and provides for
|
930
|
+
//! fast retrieval of values of another type T based on the keys. The flat_multimap
|
931
|
+
//! class supports random-access iterators.
|
932
|
+
//!
|
933
|
+
//! A flat_multimap satisfies all of the requirements of a container and of a reversible
|
934
|
+
//! container and of an associative container. For a
|
935
|
+
//! flat_multimap<Key,T> the key_type is Key and the value_type is std::pair<Key,T>
|
936
|
+
//! (unlike std::multimap<Key, T> which value_type is std::pair<<b>const</b> Key, T>).
|
937
|
+
//!
|
938
|
+
//! Compare is the ordering function for Keys (e.g. <i>std::less<Key></i>).
|
939
|
+
//!
|
940
|
+
//! Allocator is the allocator to allocate the value_types
|
941
|
+
//! (e.g. <i>allocator< std::pair<Key, T> ></i>).
|
942
|
+
#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
|
943
|
+
template <class Key, class T, class Compare = std::less<Key>, class Allocator = std::allocator< std::pair< Key, T> > >
|
944
|
+
#else
|
945
|
+
template <class Key, class T, class Compare, class Allocator>
|
946
|
+
#endif
|
947
|
+
class flat_multimap
|
948
|
+
{
|
949
|
+
/// @cond
|
950
|
+
private:
|
951
|
+
BOOST_COPYABLE_AND_MOVABLE(flat_multimap)
|
952
|
+
typedef container_detail::flat_tree<Key,
|
953
|
+
std::pair<Key, T>,
|
954
|
+
container_detail::select1st< std::pair<Key, T> >,
|
955
|
+
Compare,
|
956
|
+
Allocator> tree_t;
|
957
|
+
//This is the real tree stored here. It's based on a movable pair
|
958
|
+
typedef container_detail::flat_tree<Key,
|
959
|
+
container_detail::pair<Key, T>,
|
960
|
+
container_detail::select1st<container_detail::pair<Key, T> >,
|
961
|
+
Compare,
|
962
|
+
typename allocator_traits<Allocator>::template portable_rebind_alloc
|
963
|
+
<container_detail::pair<Key, T> >::type> impl_tree_t;
|
964
|
+
impl_tree_t m_flat_tree; // flat tree representing flat_map
|
965
|
+
|
966
|
+
typedef typename impl_tree_t::value_type impl_value_type;
|
967
|
+
typedef typename impl_tree_t::const_iterator impl_const_iterator;
|
968
|
+
typedef typename impl_tree_t::allocator_type impl_allocator_type;
|
969
|
+
typedef container_detail::flat_tree_value_compare
|
970
|
+
< Compare
|
971
|
+
, container_detail::select1st< std::pair<Key, T> >
|
972
|
+
, std::pair<Key, T> > value_compare_impl;
|
973
|
+
typedef typename container_detail::get_flat_tree_iterators
|
974
|
+
<typename allocator_traits<Allocator>::pointer>::iterator iterator_impl;
|
975
|
+
typedef typename container_detail::get_flat_tree_iterators
|
976
|
+
<typename allocator_traits<Allocator>::pointer>::const_iterator const_iterator_impl;
|
977
|
+
typedef typename container_detail::get_flat_tree_iterators
|
978
|
+
<typename allocator_traits<Allocator>::pointer>::reverse_iterator reverse_iterator_impl;
|
979
|
+
typedef typename container_detail::get_flat_tree_iterators
|
980
|
+
<typename allocator_traits<Allocator>::pointer>::const_reverse_iterator const_reverse_iterator_impl;
|
981
|
+
/// @endcond
|
982
|
+
|
983
|
+
public:
|
984
|
+
|
985
|
+
//////////////////////////////////////////////
|
986
|
+
//
|
987
|
+
// types
|
988
|
+
//
|
989
|
+
//////////////////////////////////////////////
|
990
|
+
typedef Key key_type;
|
991
|
+
typedef T mapped_type;
|
992
|
+
typedef std::pair<Key, T> value_type;
|
993
|
+
typedef typename boost::container::allocator_traits<Allocator>::pointer pointer;
|
994
|
+
typedef typename boost::container::allocator_traits<Allocator>::const_pointer const_pointer;
|
995
|
+
typedef typename boost::container::allocator_traits<Allocator>::reference reference;
|
996
|
+
typedef typename boost::container::allocator_traits<Allocator>::const_reference const_reference;
|
997
|
+
typedef typename boost::container::allocator_traits<Allocator>::size_type size_type;
|
998
|
+
typedef typename boost::container::allocator_traits<Allocator>::difference_type difference_type;
|
999
|
+
typedef Allocator allocator_type;
|
1000
|
+
typedef BOOST_CONTAINER_IMPDEF(Allocator) stored_allocator_type;
|
1001
|
+
typedef BOOST_CONTAINER_IMPDEF(value_compare_impl) value_compare;
|
1002
|
+
typedef Compare key_compare;
|
1003
|
+
typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator;
|
1004
|
+
typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator;
|
1005
|
+
typedef BOOST_CONTAINER_IMPDEF(reverse_iterator_impl) reverse_iterator;
|
1006
|
+
typedef BOOST_CONTAINER_IMPDEF(const_reverse_iterator_impl) const_reverse_iterator;
|
1007
|
+
typedef BOOST_CONTAINER_IMPDEF(impl_value_type) movable_value_type;
|
1008
|
+
|
1009
|
+
//////////////////////////////////////////////
|
1010
|
+
//
|
1011
|
+
// construct/copy/destroy
|
1012
|
+
//
|
1013
|
+
//////////////////////////////////////////////
|
1014
|
+
|
1015
|
+
//! <b>Effects</b>: Default constructs an empty flat_map.
|
1016
|
+
//!
|
1017
|
+
//! <b>Complexity</b>: Constant.
|
1018
|
+
flat_multimap()
|
1019
|
+
: m_flat_tree() {}
|
1020
|
+
|
1021
|
+
//! <b>Effects</b>: Constructs an empty flat_multimap using the specified comparison
|
1022
|
+
//! object and allocator.
|
1023
|
+
//!
|
1024
|
+
//! <b>Complexity</b>: Constant.
|
1025
|
+
explicit flat_multimap(const Compare& comp,
|
1026
|
+
const allocator_type& a = allocator_type())
|
1027
|
+
: m_flat_tree(comp, container_detail::force<impl_allocator_type>(a)) { }
|
1028
|
+
|
1029
|
+
//! <b>Effects</b>: Constructs an empty flat_multimap using the specified comparison object
|
1030
|
+
//! and allocator, and inserts elements from the range [first ,last ).
|
1031
|
+
//!
|
1032
|
+
//! <b>Complexity</b>: Linear in N if the range [first ,last ) is already sorted using
|
1033
|
+
//! comp and otherwise N logN, where N is last - first.
|
1034
|
+
template <class InputIterator>
|
1035
|
+
flat_multimap(InputIterator first, InputIterator last,
|
1036
|
+
const Compare& comp = Compare(),
|
1037
|
+
const allocator_type& a = allocator_type())
|
1038
|
+
: m_flat_tree(false, first, last, comp, container_detail::force<impl_allocator_type>(a))
|
1039
|
+
{}
|
1040
|
+
|
1041
|
+
//! <b>Effects</b>: Constructs an empty flat_multimap using the specified comparison object and
|
1042
|
+
//! allocator, and inserts elements from the ordered range [first ,last). This function
|
1043
|
+
//! is more efficient than the normal range creation for ordered ranges.
|
1044
|
+
//!
|
1045
|
+
//! <b>Requires</b>: [first ,last) must be ordered according to the predicate.
|
1046
|
+
//!
|
1047
|
+
//! <b>Complexity</b>: Linear in N.
|
1048
|
+
//!
|
1049
|
+
//! <b>Note</b>: Non-standard extension.
|
1050
|
+
template <class InputIterator>
|
1051
|
+
flat_multimap(ordered_range_t, InputIterator first, InputIterator last,
|
1052
|
+
const Compare& comp = Compare(),
|
1053
|
+
const allocator_type& a = allocator_type())
|
1054
|
+
: m_flat_tree(ordered_range, first, last, comp, a)
|
1055
|
+
{}
|
1056
|
+
|
1057
|
+
//! <b>Effects</b>: Copy constructs a flat_multimap.
|
1058
|
+
//!
|
1059
|
+
//! <b>Complexity</b>: Linear in x.size().
|
1060
|
+
flat_multimap(const flat_multimap& x)
|
1061
|
+
: m_flat_tree(x.m_flat_tree) { }
|
1062
|
+
|
1063
|
+
//! <b>Effects</b>: Move constructs a flat_multimap. Constructs *this using x's resources.
|
1064
|
+
//!
|
1065
|
+
//! <b>Complexity</b>: Constant.
|
1066
|
+
//!
|
1067
|
+
//! <b>Postcondition</b>: x is emptied.
|
1068
|
+
flat_multimap(BOOST_RV_REF(flat_multimap) x)
|
1069
|
+
: m_flat_tree(boost::move(x.m_flat_tree))
|
1070
|
+
{}
|
1071
|
+
|
1072
|
+
//! <b>Effects</b>: Copy constructs a flat_multimap using the specified allocator.
|
1073
|
+
//!
|
1074
|
+
//! <b>Complexity</b>: Linear in x.size().
|
1075
|
+
flat_multimap(const flat_multimap& x, const allocator_type &a)
|
1076
|
+
: m_flat_tree(x.m_flat_tree, a)
|
1077
|
+
{}
|
1078
|
+
|
1079
|
+
//! <b>Effects</b>: Move constructs a flat_multimap using the specified allocator.
|
1080
|
+
//! Constructs *this using x's resources.
|
1081
|
+
//!
|
1082
|
+
//! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise.
|
1083
|
+
flat_multimap(BOOST_RV_REF(flat_multimap) x, const allocator_type &a)
|
1084
|
+
: m_flat_tree(boost::move(x.m_flat_tree), a)
|
1085
|
+
{ }
|
1086
|
+
|
1087
|
+
//! <b>Effects</b>: Makes *this a copy of x.
|
1088
|
+
//!
|
1089
|
+
//! <b>Complexity</b>: Linear in x.size().
|
1090
|
+
flat_multimap& operator=(BOOST_COPY_ASSIGN_REF(flat_multimap) x)
|
1091
|
+
{ m_flat_tree = x.m_flat_tree; return *this; }
|
1092
|
+
|
1093
|
+
//! <b>Effects</b>: this->swap(x.get()).
|
1094
|
+
//!
|
1095
|
+
//! <b>Complexity</b>: Constant.
|
1096
|
+
flat_multimap& operator=(BOOST_RV_REF(flat_multimap) mx)
|
1097
|
+
{ m_flat_tree = boost::move(mx.m_flat_tree); return *this; }
|
1098
|
+
|
1099
|
+
//! <b>Effects</b>: Returns a copy of the Allocator that
|
1100
|
+
//! was passed to the object's constructor.
|
1101
|
+
//!
|
1102
|
+
//! <b>Complexity</b>: Constant.
|
1103
|
+
allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT
|
1104
|
+
{ return container_detail::force_copy<allocator_type>(m_flat_tree.get_allocator()); }
|
1105
|
+
|
1106
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
1107
|
+
//!
|
1108
|
+
//! <b>Throws</b>: Nothing
|
1109
|
+
//!
|
1110
|
+
//! <b>Complexity</b>: Constant.
|
1111
|
+
//!
|
1112
|
+
//! <b>Note</b>: Non-standard extension.
|
1113
|
+
stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT
|
1114
|
+
{ return container_detail::force<stored_allocator_type>(m_flat_tree.get_stored_allocator()); }
|
1115
|
+
|
1116
|
+
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
1117
|
+
//!
|
1118
|
+
//! <b>Throws</b>: Nothing
|
1119
|
+
//!
|
1120
|
+
//! <b>Complexity</b>: Constant.
|
1121
|
+
//!
|
1122
|
+
//! <b>Note</b>: Non-standard extension.
|
1123
|
+
const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT
|
1124
|
+
{ return container_detail::force<stored_allocator_type>(m_flat_tree.get_stored_allocator()); }
|
1125
|
+
|
1126
|
+
//////////////////////////////////////////////
|
1127
|
+
//
|
1128
|
+
// iterators
|
1129
|
+
//
|
1130
|
+
//////////////////////////////////////////////
|
1131
|
+
|
1132
|
+
//! <b>Effects</b>: Returns an iterator to the first element contained in the container.
|
1133
|
+
//!
|
1134
|
+
//! <b>Throws</b>: Nothing.
|
1135
|
+
//!
|
1136
|
+
//! <b>Complexity</b>: Constant.
|
1137
|
+
iterator begin() BOOST_CONTAINER_NOEXCEPT
|
1138
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.begin()); }
|
1139
|
+
|
1140
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the container.
|
1141
|
+
//!
|
1142
|
+
//! <b>Throws</b>: Nothing.
|
1143
|
+
//!
|
1144
|
+
//! <b>Complexity</b>: Constant.
|
1145
|
+
const_iterator begin() const BOOST_CONTAINER_NOEXCEPT
|
1146
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.begin()); }
|
1147
|
+
|
1148
|
+
//! <b>Effects</b>: Returns an iterator to the end of the container.
|
1149
|
+
//!
|
1150
|
+
//! <b>Throws</b>: Nothing.
|
1151
|
+
//!
|
1152
|
+
//! <b>Complexity</b>: Constant.
|
1153
|
+
iterator end() BOOST_CONTAINER_NOEXCEPT
|
1154
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.end()); }
|
1155
|
+
|
1156
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the container.
|
1157
|
+
//!
|
1158
|
+
//! <b>Throws</b>: Nothing.
|
1159
|
+
//!
|
1160
|
+
//! <b>Complexity</b>: Constant.
|
1161
|
+
const_iterator end() const BOOST_CONTAINER_NOEXCEPT
|
1162
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.end()); }
|
1163
|
+
|
1164
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
1165
|
+
//! of the reversed container.
|
1166
|
+
//!
|
1167
|
+
//! <b>Throws</b>: Nothing.
|
1168
|
+
//!
|
1169
|
+
//! <b>Complexity</b>: Constant.
|
1170
|
+
reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT
|
1171
|
+
{ return container_detail::force_copy<reverse_iterator>(m_flat_tree.rbegin()); }
|
1172
|
+
|
1173
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
1174
|
+
//! of the reversed container.
|
1175
|
+
//!
|
1176
|
+
//! <b>Throws</b>: Nothing.
|
1177
|
+
//!
|
1178
|
+
//! <b>Complexity</b>: Constant.
|
1179
|
+
const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT
|
1180
|
+
{ return container_detail::force_copy<const_reverse_iterator>(m_flat_tree.rbegin()); }
|
1181
|
+
|
1182
|
+
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
1183
|
+
//! of the reversed container.
|
1184
|
+
//!
|
1185
|
+
//! <b>Throws</b>: Nothing.
|
1186
|
+
//!
|
1187
|
+
//! <b>Complexity</b>: Constant.
|
1188
|
+
reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT
|
1189
|
+
{ return container_detail::force_copy<reverse_iterator>(m_flat_tree.rend()); }
|
1190
|
+
|
1191
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
1192
|
+
//! of the reversed container.
|
1193
|
+
//!
|
1194
|
+
//! <b>Throws</b>: Nothing.
|
1195
|
+
//!
|
1196
|
+
//! <b>Complexity</b>: Constant.
|
1197
|
+
const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT
|
1198
|
+
{ return container_detail::force_copy<const_reverse_iterator>(m_flat_tree.rend()); }
|
1199
|
+
|
1200
|
+
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the container.
|
1201
|
+
//!
|
1202
|
+
//! <b>Throws</b>: Nothing.
|
1203
|
+
//!
|
1204
|
+
//! <b>Complexity</b>: Constant.
|
1205
|
+
const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT
|
1206
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.cbegin()); }
|
1207
|
+
|
1208
|
+
//! <b>Effects</b>: Returns a const_iterator to the end of the container.
|
1209
|
+
//!
|
1210
|
+
//! <b>Throws</b>: Nothing.
|
1211
|
+
//!
|
1212
|
+
//! <b>Complexity</b>: Constant.
|
1213
|
+
const_iterator cend() const BOOST_CONTAINER_NOEXCEPT
|
1214
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.cend()); }
|
1215
|
+
|
1216
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
1217
|
+
//! of the reversed container.
|
1218
|
+
//!
|
1219
|
+
//! <b>Throws</b>: Nothing.
|
1220
|
+
//!
|
1221
|
+
//! <b>Complexity</b>: Constant.
|
1222
|
+
const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT
|
1223
|
+
{ return container_detail::force_copy<const_reverse_iterator>(m_flat_tree.crbegin()); }
|
1224
|
+
|
1225
|
+
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
1226
|
+
//! of the reversed container.
|
1227
|
+
//!
|
1228
|
+
//! <b>Throws</b>: Nothing.
|
1229
|
+
//!
|
1230
|
+
//! <b>Complexity</b>: Constant.
|
1231
|
+
const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT
|
1232
|
+
{ return container_detail::force_copy<const_reverse_iterator>(m_flat_tree.crend()); }
|
1233
|
+
|
1234
|
+
//////////////////////////////////////////////
|
1235
|
+
//
|
1236
|
+
// capacity
|
1237
|
+
//
|
1238
|
+
//////////////////////////////////////////////
|
1239
|
+
|
1240
|
+
//! <b>Effects</b>: Returns true if the container contains no elements.
|
1241
|
+
//!
|
1242
|
+
//! <b>Throws</b>: Nothing.
|
1243
|
+
//!
|
1244
|
+
//! <b>Complexity</b>: Constant.
|
1245
|
+
bool empty() const BOOST_CONTAINER_NOEXCEPT
|
1246
|
+
{ return m_flat_tree.empty(); }
|
1247
|
+
|
1248
|
+
//! <b>Effects</b>: Returns the number of the elements contained in the container.
|
1249
|
+
//!
|
1250
|
+
//! <b>Throws</b>: Nothing.
|
1251
|
+
//!
|
1252
|
+
//! <b>Complexity</b>: Constant.
|
1253
|
+
size_type size() const BOOST_CONTAINER_NOEXCEPT
|
1254
|
+
{ return m_flat_tree.size(); }
|
1255
|
+
|
1256
|
+
//! <b>Effects</b>: Returns the largest possible size of the container.
|
1257
|
+
//!
|
1258
|
+
//! <b>Throws</b>: Nothing.
|
1259
|
+
//!
|
1260
|
+
//! <b>Complexity</b>: Constant.
|
1261
|
+
size_type max_size() const BOOST_CONTAINER_NOEXCEPT
|
1262
|
+
{ return m_flat_tree.max_size(); }
|
1263
|
+
|
1264
|
+
//! <b>Effects</b>: Number of elements for which memory has been allocated.
|
1265
|
+
//! capacity() is always greater than or equal to size().
|
1266
|
+
//!
|
1267
|
+
//! <b>Throws</b>: Nothing.
|
1268
|
+
//!
|
1269
|
+
//! <b>Complexity</b>: Constant.
|
1270
|
+
size_type capacity() const BOOST_CONTAINER_NOEXCEPT
|
1271
|
+
{ return m_flat_tree.capacity(); }
|
1272
|
+
|
1273
|
+
//! <b>Effects</b>: If n is less than or equal to capacity(), this call has no
|
1274
|
+
//! effect. Otherwise, it is a request for allocation of additional memory.
|
1275
|
+
//! If the request is successful, then capacity() is greater than or equal to
|
1276
|
+
//! n; otherwise, capacity() is unchanged. In either case, size() is unchanged.
|
1277
|
+
//!
|
1278
|
+
//! <b>Throws</b>: If memory allocation allocation throws or T's copy constructor throws.
|
1279
|
+
//!
|
1280
|
+
//! <b>Note</b>: If capacity() is less than "cnt", iterators and references to
|
1281
|
+
//! to values might be invalidated.
|
1282
|
+
void reserve(size_type cnt)
|
1283
|
+
{ m_flat_tree.reserve(cnt); }
|
1284
|
+
|
1285
|
+
//! <b>Effects</b>: Tries to deallocate the excess of memory created
|
1286
|
+
// with previous allocations. The size of the vector is unchanged
|
1287
|
+
//!
|
1288
|
+
//! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
|
1289
|
+
//!
|
1290
|
+
//! <b>Complexity</b>: Linear to size().
|
1291
|
+
void shrink_to_fit()
|
1292
|
+
{ m_flat_tree.shrink_to_fit(); }
|
1293
|
+
|
1294
|
+
//////////////////////////////////////////////
|
1295
|
+
//
|
1296
|
+
// modifiers
|
1297
|
+
//
|
1298
|
+
//////////////////////////////////////////////
|
1299
|
+
|
1300
|
+
#if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
1301
|
+
|
1302
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
1303
|
+
//! std::forward<Args>(args)... and returns the iterator pointing to the
|
1304
|
+
//! newly inserted element.
|
1305
|
+
//!
|
1306
|
+
//! <b>Complexity</b>: Logarithmic search time plus linear insertion
|
1307
|
+
//! to the elements with bigger keys than x.
|
1308
|
+
//!
|
1309
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1310
|
+
template <class... Args>
|
1311
|
+
iterator emplace(Args&&... args)
|
1312
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.emplace_equal(boost::forward<Args>(args)...)); }
|
1313
|
+
|
1314
|
+
//! <b>Effects</b>: Inserts an object of type T constructed with
|
1315
|
+
//! std::forward<Args>(args)... in the container.
|
1316
|
+
//! p is a hint pointing to where the insert should start to search.
|
1317
|
+
//!
|
1318
|
+
//! <b>Returns</b>: An iterator pointing to the element with key equivalent
|
1319
|
+
//! to the key of x.
|
1320
|
+
//!
|
1321
|
+
//! <b>Complexity</b>: Logarithmic search time (constant time if the value
|
1322
|
+
//! is to be inserted before p) plus linear insertion
|
1323
|
+
//! to the elements with bigger keys than x.
|
1324
|
+
//!
|
1325
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1326
|
+
template <class... Args>
|
1327
|
+
iterator emplace_hint(const_iterator hint, Args&&... args)
|
1328
|
+
{
|
1329
|
+
return container_detail::force_copy<iterator>(m_flat_tree.emplace_hint_equal
|
1330
|
+
(container_detail::force_copy<impl_const_iterator>(hint), boost::forward<Args>(args)...));
|
1331
|
+
}
|
1332
|
+
|
1333
|
+
#else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
1334
|
+
|
1335
|
+
#define BOOST_PP_LOCAL_MACRO(n) \
|
1336
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
1337
|
+
iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
1338
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.emplace_equal \
|
1339
|
+
(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); } \
|
1340
|
+
\
|
1341
|
+
BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
|
1342
|
+
iterator emplace_hint(const_iterator hint \
|
1343
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
|
1344
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.emplace_hint_equal \
|
1345
|
+
(container_detail::force_copy<impl_const_iterator>(hint) \
|
1346
|
+
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); } \
|
1347
|
+
//!
|
1348
|
+
#define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
|
1349
|
+
#include BOOST_PP_LOCAL_ITERATE()
|
1350
|
+
|
1351
|
+
#endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
|
1352
|
+
|
1353
|
+
//! <b>Effects</b>: Inserts x and returns the iterator pointing to the
|
1354
|
+
//! newly inserted element.
|
1355
|
+
//!
|
1356
|
+
//! <b>Complexity</b>: Logarithmic search time plus linear insertion
|
1357
|
+
//! to the elements with bigger keys than x.
|
1358
|
+
//!
|
1359
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1360
|
+
iterator insert(const value_type& x)
|
1361
|
+
{
|
1362
|
+
return container_detail::force_copy<iterator>(
|
1363
|
+
m_flat_tree.insert_equal(container_detail::force<impl_value_type>(x)));
|
1364
|
+
}
|
1365
|
+
|
1366
|
+
//! <b>Effects</b>: Inserts a new value move-constructed from x and returns
|
1367
|
+
//! the iterator pointing to the newly inserted element.
|
1368
|
+
//!
|
1369
|
+
//! <b>Complexity</b>: Logarithmic search time plus linear insertion
|
1370
|
+
//! to the elements with bigger keys than x.
|
1371
|
+
//!
|
1372
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1373
|
+
iterator insert(BOOST_RV_REF(value_type) x)
|
1374
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.insert_equal(boost::move(x))); }
|
1375
|
+
|
1376
|
+
//! <b>Effects</b>: Inserts a new value move-constructed from x and returns
|
1377
|
+
//! the iterator pointing to the newly inserted element.
|
1378
|
+
//!
|
1379
|
+
//! <b>Complexity</b>: Logarithmic search time plus linear insertion
|
1380
|
+
//! to the elements with bigger keys than x.
|
1381
|
+
//!
|
1382
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1383
|
+
iterator insert(BOOST_RV_REF(impl_value_type) x)
|
1384
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.insert_equal(boost::move(x))); }
|
1385
|
+
|
1386
|
+
//! <b>Effects</b>: Inserts a copy of x in the container.
|
1387
|
+
//! p is a hint pointing to where the insert should start to search.
|
1388
|
+
//!
|
1389
|
+
//! <b>Returns</b>: An iterator pointing to the element with key equivalent
|
1390
|
+
//! to the key of x.
|
1391
|
+
//!
|
1392
|
+
//! <b>Complexity</b>: Logarithmic search time (constant time if the value
|
1393
|
+
//! is to be inserted before p) plus linear insertion
|
1394
|
+
//! to the elements with bigger keys than x.
|
1395
|
+
//!
|
1396
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1397
|
+
iterator insert(const_iterator position, const value_type& x)
|
1398
|
+
{
|
1399
|
+
return container_detail::force_copy<iterator>
|
1400
|
+
(m_flat_tree.insert_equal( container_detail::force_copy<impl_const_iterator>(position)
|
1401
|
+
, container_detail::force<impl_value_type>(x)));
|
1402
|
+
}
|
1403
|
+
|
1404
|
+
//! <b>Effects</b>: Inserts a value move constructed from x in the container.
|
1405
|
+
//! p is a hint pointing to where the insert should start to search.
|
1406
|
+
//!
|
1407
|
+
//! <b>Returns</b>: An iterator pointing to the element with key equivalent
|
1408
|
+
//! to the key of x.
|
1409
|
+
//!
|
1410
|
+
//! <b>Complexity</b>: Logarithmic search time (constant time if the value
|
1411
|
+
//! is to be inserted before p) plus linear insertion
|
1412
|
+
//! to the elements with bigger keys than x.
|
1413
|
+
//!
|
1414
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1415
|
+
iterator insert(const_iterator position, BOOST_RV_REF(value_type) x)
|
1416
|
+
{
|
1417
|
+
return container_detail::force_copy<iterator>
|
1418
|
+
(m_flat_tree.insert_equal(container_detail::force_copy<impl_const_iterator>(position)
|
1419
|
+
, boost::move(x)));
|
1420
|
+
}
|
1421
|
+
|
1422
|
+
//! <b>Effects</b>: Inserts a value move constructed from x in the container.
|
1423
|
+
//! p is a hint pointing to where the insert should start to search.
|
1424
|
+
//!
|
1425
|
+
//! <b>Returns</b>: An iterator pointing to the element with key equivalent
|
1426
|
+
//! to the key of x.
|
1427
|
+
//!
|
1428
|
+
//! <b>Complexity</b>: Logarithmic search time (constant time if the value
|
1429
|
+
//! is to be inserted before p) plus linear insertion
|
1430
|
+
//! to the elements with bigger keys than x.
|
1431
|
+
//!
|
1432
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1433
|
+
iterator insert(const_iterator position, BOOST_RV_REF(impl_value_type) x)
|
1434
|
+
{
|
1435
|
+
return container_detail::force_copy<iterator>(
|
1436
|
+
m_flat_tree.insert_equal(container_detail::force_copy<impl_const_iterator>(position), boost::move(x)));
|
1437
|
+
}
|
1438
|
+
|
1439
|
+
//! <b>Requires</b>: first, last are not iterators into *this.
|
1440
|
+
//!
|
1441
|
+
//! <b>Effects</b>: inserts each element from the range [first,last) .
|
1442
|
+
//!
|
1443
|
+
//! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
|
1444
|
+
//! search time plus N*size() insertion time.
|
1445
|
+
//!
|
1446
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1447
|
+
template <class InputIterator>
|
1448
|
+
void insert(InputIterator first, InputIterator last)
|
1449
|
+
{ m_flat_tree.insert_equal(first, last); }
|
1450
|
+
|
1451
|
+
//! <b>Requires</b>: first, last are not iterators into *this.
|
1452
|
+
//!
|
1453
|
+
//! <b>Requires</b>: [first ,last) must be ordered according to the predicate.
|
1454
|
+
//!
|
1455
|
+
//! <b>Effects</b>: inserts each element from the range [first,last) if and only
|
1456
|
+
//! if there is no element with key equivalent to the key of that element. This
|
1457
|
+
//! function is more efficient than the normal range creation for ordered ranges.
|
1458
|
+
//!
|
1459
|
+
//! <b>Complexity</b>: At most N log(size()+N) (N is the distance from first to last)
|
1460
|
+
//! search time plus N*size() insertion time.
|
1461
|
+
//!
|
1462
|
+
//! <b>Note</b>: If an element is inserted it might invalidate elements.
|
1463
|
+
template <class InputIterator>
|
1464
|
+
void insert(ordered_range_t, InputIterator first, InputIterator last)
|
1465
|
+
{ m_flat_tree.insert_equal(ordered_range, first, last); }
|
1466
|
+
|
1467
|
+
//! <b>Effects</b>: Erases the element pointed to by position.
|
1468
|
+
//!
|
1469
|
+
//! <b>Returns</b>: Returns an iterator pointing to the element immediately
|
1470
|
+
//! following q prior to the element being erased. If no such element exists,
|
1471
|
+
//! returns end().
|
1472
|
+
//!
|
1473
|
+
//! <b>Complexity</b>: Linear to the elements with keys bigger than position
|
1474
|
+
//!
|
1475
|
+
//! <b>Note</b>: Invalidates elements with keys
|
1476
|
+
//! not less than the erased element.
|
1477
|
+
iterator erase(const_iterator position)
|
1478
|
+
{
|
1479
|
+
return container_detail::force_copy<iterator>(
|
1480
|
+
m_flat_tree.erase(container_detail::force_copy<impl_const_iterator>(position)));
|
1481
|
+
}
|
1482
|
+
|
1483
|
+
//! <b>Effects</b>: Erases all elements in the container with key equivalent to x.
|
1484
|
+
//!
|
1485
|
+
//! <b>Returns</b>: Returns the number of erased elements.
|
1486
|
+
//!
|
1487
|
+
//! <b>Complexity</b>: Logarithmic search time plus erasure time
|
1488
|
+
//! linear to the elements with bigger keys.
|
1489
|
+
size_type erase(const key_type& x)
|
1490
|
+
{ return m_flat_tree.erase(x); }
|
1491
|
+
|
1492
|
+
//! <b>Effects</b>: Erases all the elements in the range [first, last).
|
1493
|
+
//!
|
1494
|
+
//! <b>Returns</b>: Returns last.
|
1495
|
+
//!
|
1496
|
+
//! <b>Complexity</b>: size()*N where N is the distance from first to last.
|
1497
|
+
//!
|
1498
|
+
//! <b>Complexity</b>: Logarithmic search time plus erasure time
|
1499
|
+
//! linear to the elements with bigger keys.
|
1500
|
+
iterator erase(const_iterator first, const_iterator last)
|
1501
|
+
{
|
1502
|
+
return container_detail::force_copy<iterator>
|
1503
|
+
(m_flat_tree.erase( container_detail::force_copy<impl_const_iterator>(first)
|
1504
|
+
, container_detail::force_copy<impl_const_iterator>(last)));
|
1505
|
+
}
|
1506
|
+
|
1507
|
+
//! <b>Effects</b>: Swaps the contents of *this and x.
|
1508
|
+
//!
|
1509
|
+
//! <b>Throws</b>: Nothing.
|
1510
|
+
//!
|
1511
|
+
//! <b>Complexity</b>: Constant.
|
1512
|
+
void swap(flat_multimap& x)
|
1513
|
+
{ m_flat_tree.swap(x.m_flat_tree); }
|
1514
|
+
|
1515
|
+
//! <b>Effects</b>: erase(a.begin(),a.end()).
|
1516
|
+
//!
|
1517
|
+
//! <b>Postcondition</b>: size() == 0.
|
1518
|
+
//!
|
1519
|
+
//! <b>Complexity</b>: linear in size().
|
1520
|
+
void clear() BOOST_CONTAINER_NOEXCEPT
|
1521
|
+
{ m_flat_tree.clear(); }
|
1522
|
+
|
1523
|
+
//////////////////////////////////////////////
|
1524
|
+
//
|
1525
|
+
// observers
|
1526
|
+
//
|
1527
|
+
//////////////////////////////////////////////
|
1528
|
+
|
1529
|
+
//! <b>Effects</b>: Returns the comparison object out
|
1530
|
+
//! of which a was constructed.
|
1531
|
+
//!
|
1532
|
+
//! <b>Complexity</b>: Constant.
|
1533
|
+
key_compare key_comp() const
|
1534
|
+
{ return container_detail::force_copy<key_compare>(m_flat_tree.key_comp()); }
|
1535
|
+
|
1536
|
+
//! <b>Effects</b>: Returns an object of value_compare constructed out
|
1537
|
+
//! of the comparison object.
|
1538
|
+
//!
|
1539
|
+
//! <b>Complexity</b>: Constant.
|
1540
|
+
value_compare value_comp() const
|
1541
|
+
{ return value_compare(container_detail::force_copy<key_compare>(m_flat_tree.key_comp())); }
|
1542
|
+
|
1543
|
+
//////////////////////////////////////////////
|
1544
|
+
//
|
1545
|
+
// map operations
|
1546
|
+
//
|
1547
|
+
//////////////////////////////////////////////
|
1548
|
+
|
1549
|
+
//! <b>Returns</b>: An iterator pointing to an element with the key
|
1550
|
+
//! equivalent to x, or end() if such an element is not found.
|
1551
|
+
//!
|
1552
|
+
//! <b>Complexity</b>: Logarithmic.
|
1553
|
+
iterator find(const key_type& x)
|
1554
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.find(x)); }
|
1555
|
+
|
1556
|
+
//! <b>Returns</b>: An const_iterator pointing to an element with the key
|
1557
|
+
//! equivalent to x, or end() if such an element is not found.
|
1558
|
+
//!
|
1559
|
+
//! <b>Complexity</b>: Logarithmic.
|
1560
|
+
const_iterator find(const key_type& x) const
|
1561
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.find(x)); }
|
1562
|
+
|
1563
|
+
//! <b>Returns</b>: The number of elements with key equivalent to x.
|
1564
|
+
//!
|
1565
|
+
//! <b>Complexity</b>: log(size())+count(k)
|
1566
|
+
size_type count(const key_type& x) const
|
1567
|
+
{ return m_flat_tree.count(x); }
|
1568
|
+
|
1569
|
+
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
1570
|
+
//! than k, or a.end() if such an element is not found.
|
1571
|
+
//!
|
1572
|
+
//! <b>Complexity</b>: Logarithmic
|
1573
|
+
iterator lower_bound(const key_type& x)
|
1574
|
+
{ return container_detail::force_copy<iterator>(m_flat_tree.lower_bound(x)); }
|
1575
|
+
|
1576
|
+
//! <b>Returns</b>: Allocator const iterator pointing to the first element with key
|
1577
|
+
//! not less than k, or a.end() if such an element is not found.
|
1578
|
+
//!
|
1579
|
+
//! <b>Complexity</b>: Logarithmic
|
1580
|
+
const_iterator lower_bound(const key_type& x) const
|
1581
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.lower_bound(x)); }
|
1582
|
+
|
1583
|
+
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
1584
|
+
//! than x, or end() if such an element is not found.
|
1585
|
+
//!
|
1586
|
+
//! <b>Complexity</b>: Logarithmic
|
1587
|
+
iterator upper_bound(const key_type& x)
|
1588
|
+
{return container_detail::force_copy<iterator>(m_flat_tree.upper_bound(x)); }
|
1589
|
+
|
1590
|
+
//! <b>Returns</b>: Allocator const iterator pointing to the first element with key
|
1591
|
+
//! not less than x, or end() if such an element is not found.
|
1592
|
+
//!
|
1593
|
+
//! <b>Complexity</b>: Logarithmic
|
1594
|
+
const_iterator upper_bound(const key_type& x) const
|
1595
|
+
{ return container_detail::force_copy<const_iterator>(m_flat_tree.upper_bound(x)); }
|
1596
|
+
|
1597
|
+
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
1598
|
+
//!
|
1599
|
+
//! <b>Complexity</b>: Logarithmic
|
1600
|
+
std::pair<iterator,iterator> equal_range(const key_type& x)
|
1601
|
+
{ return container_detail::force_copy<std::pair<iterator,iterator> >(m_flat_tree.equal_range(x)); }
|
1602
|
+
|
1603
|
+
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
1604
|
+
//!
|
1605
|
+
//! <b>Complexity</b>: Logarithmic
|
1606
|
+
std::pair<const_iterator,const_iterator> equal_range(const key_type& x) const
|
1607
|
+
{ return container_detail::force_copy<std::pair<const_iterator,const_iterator> >(m_flat_tree.equal_range(x)); }
|
1608
|
+
|
1609
|
+
/// @cond
|
1610
|
+
template <class K1, class T1, class C1, class A1>
|
1611
|
+
friend bool operator== (const flat_multimap<K1, T1, C1, A1>& x,
|
1612
|
+
const flat_multimap<K1, T1, C1, A1>& y);
|
1613
|
+
|
1614
|
+
template <class K1, class T1, class C1, class A1>
|
1615
|
+
friend bool operator< (const flat_multimap<K1, T1, C1, A1>& x,
|
1616
|
+
const flat_multimap<K1, T1, C1, A1>& y);
|
1617
|
+
/// @endcond
|
1618
|
+
};
|
1619
|
+
|
1620
|
+
template <class Key, class T, class Compare, class Allocator>
|
1621
|
+
inline bool operator==(const flat_multimap<Key,T,Compare,Allocator>& x,
|
1622
|
+
const flat_multimap<Key,T,Compare,Allocator>& y)
|
1623
|
+
{ return x.m_flat_tree == y.m_flat_tree; }
|
1624
|
+
|
1625
|
+
template <class Key, class T, class Compare, class Allocator>
|
1626
|
+
inline bool operator<(const flat_multimap<Key,T,Compare,Allocator>& x,
|
1627
|
+
const flat_multimap<Key,T,Compare,Allocator>& y)
|
1628
|
+
{ return x.m_flat_tree < y.m_flat_tree; }
|
1629
|
+
|
1630
|
+
template <class Key, class T, class Compare, class Allocator>
|
1631
|
+
inline bool operator!=(const flat_multimap<Key,T,Compare,Allocator>& x,
|
1632
|
+
const flat_multimap<Key,T,Compare,Allocator>& y)
|
1633
|
+
{ return !(x == y); }
|
1634
|
+
|
1635
|
+
template <class Key, class T, class Compare, class Allocator>
|
1636
|
+
inline bool operator>(const flat_multimap<Key,T,Compare,Allocator>& x,
|
1637
|
+
const flat_multimap<Key,T,Compare,Allocator>& y)
|
1638
|
+
{ return y < x; }
|
1639
|
+
|
1640
|
+
template <class Key, class T, class Compare, class Allocator>
|
1641
|
+
inline bool operator<=(const flat_multimap<Key,T,Compare,Allocator>& x,
|
1642
|
+
const flat_multimap<Key,T,Compare,Allocator>& y)
|
1643
|
+
{ return !(y < x); }
|
1644
|
+
|
1645
|
+
template <class Key, class T, class Compare, class Allocator>
|
1646
|
+
inline bool operator>=(const flat_multimap<Key,T,Compare,Allocator>& x,
|
1647
|
+
const flat_multimap<Key,T,Compare,Allocator>& y)
|
1648
|
+
{ return !(x < y); }
|
1649
|
+
|
1650
|
+
template <class Key, class T, class Compare, class Allocator>
|
1651
|
+
inline void swap(flat_multimap<Key,T,Compare,Allocator>& x, flat_multimap<Key,T,Compare,Allocator>& y)
|
1652
|
+
{ x.swap(y); }
|
1653
|
+
|
1654
|
+
}}
|
1655
|
+
|
1656
|
+
/// @cond
|
1657
|
+
|
1658
|
+
namespace boost {
|
1659
|
+
|
1660
|
+
//!has_trivial_destructor_after_move<> == true_type
|
1661
|
+
//!specialization for optimizations
|
1662
|
+
template <class K, class T, class C, class Allocator>
|
1663
|
+
struct has_trivial_destructor_after_move< boost::container::flat_multimap<K, T, C, Allocator> >
|
1664
|
+
{
|
1665
|
+
static const bool value = has_trivial_destructor_after_move<Allocator>::value && has_trivial_destructor_after_move<C>::value;
|
1666
|
+
};
|
1667
|
+
|
1668
|
+
} //namespace boost {
|
1669
|
+
|
1670
|
+
/// @endcond
|
1671
|
+
|
1672
|
+
#include <boost/container/detail/config_end.hpp>
|
1673
|
+
|
1674
|
+
#endif /* BOOST_CONTAINER_FLAT_MAP_HPP */
|