passenger 4.0.20 → 4.0.21
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/.gitignore +1 -0
- data/.travis.yml +1 -1
- data/NEWS +15 -0
- data/README.md +5 -3
- data/Rakefile +1 -0
- data/bin/passenger-config +1 -5
- data/bin/passenger-install-apache2-module +53 -5
- data/bin/passenger-install-nginx-module +19 -6
- data/bin/passenger-memory-stats +3 -3
- data/build/agents.rb +11 -8
- data/build/apache2.rb +9 -5
- data/build/basics.rb +15 -21
- data/build/common_library.rb +16 -6
- data/build/cplusplus_support.rb +5 -5
- data/build/cxx_tests.rb +3 -3
- data/build/documentation.rb +1 -1
- data/build/misc.rb +4 -37
- data/build/node_tests.rb +29 -0
- data/build/oxt_tests.rb +1 -1
- data/build/packaging.rb +29 -10
- data/build/preprocessor.rb +2 -1
- data/build/test_basics.rb +15 -6
- data/debian.template/locations.ini.template +1 -0
- data/debian.template/passenger.install.template +1 -0
- data/dev/copy_boost_headers.rb +7 -3
- data/dev/run_travis.sh +32 -16
- data/doc/Users guide Apache.idmap.txt +22 -34
- data/doc/Users guide Apache.txt +20 -234
- data/doc/Users guide Nginx.idmap.txt +84 -66
- data/doc/Users guide Nginx.txt +50 -1
- data/doc/Users guide Standalone.idmap.txt +74 -0
- data/doc/Users guide Standalone.txt +22 -9
- data/doc/Users guide.txt +51 -0
- data/doc/users_guide_snippets/environment_variables.txt +0 -3
- data/doc/users_guide_snippets/installation.txt +337 -380
- data/doc/users_guide_snippets/installation/run_installer.txt +58 -0
- data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +6 -0
- data/doc/users_guide_snippets/support_information.txt +2 -9
- data/doc/users_guide_snippets/troubleshooting/default.txt +112 -0
- data/doc/users_guide_snippets/troubleshooting/rails.txt +56 -0
- data/doc/users_guide_snippets/where_to_get_support.txt +9 -0
- data/ext/apache2/Bucket.h +1 -1
- data/ext/apache2/Configuration.hpp +0 -44
- data/ext/apache2/CreateDirConfig.cpp +1 -1
- data/ext/apache2/CreateDirConfig.cpp.erb +1 -1
- data/ext/apache2/Hooks.cpp +28 -21
- data/ext/apache2/MergeDirConfig.cpp +1 -0
- data/ext/apache2/MergeDirConfig.cpp.erb +1 -1
- data/ext/apache2/SetHeaders.cpp +73 -0
- data/ext/apache2/SetHeaders.cpp.erb +88 -0
- data/ext/boost/algorithm/string/detail/find_format.hpp +5 -5
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +5 -5
- data/ext/boost/algorithm/string/detail/finder.hpp +1 -1
- data/ext/boost/algorithm/string/formatter.hpp +2 -2
- data/ext/boost/assert.hpp +6 -1
- data/ext/boost/atomic.hpp +18 -0
- data/ext/boost/atomic/atomic.hpp +241 -0
- data/ext/boost/atomic/detail/base.hpp +585 -0
- data/ext/boost/atomic/detail/cas32strong.hpp +885 -0
- data/ext/boost/atomic/detail/cas32weak.hpp +947 -0
- data/ext/boost/atomic/detail/cas64strong.hpp +443 -0
- data/ext/boost/atomic/detail/config.hpp +54 -0
- data/ext/boost/atomic/detail/gcc-alpha.hpp +368 -0
- data/ext/boost/atomic/detail/gcc-armv6plus.hpp +252 -0
- data/ext/boost/atomic/detail/gcc-cas.hpp +157 -0
- data/ext/boost/atomic/detail/gcc-ppc.hpp +2850 -0
- data/ext/boost/atomic/detail/gcc-sparcv9.hpp +1259 -0
- data/ext/boost/atomic/detail/gcc-x86.hpp +1766 -0
- data/ext/boost/atomic/detail/generic-cas.hpp +206 -0
- data/ext/boost/atomic/detail/interlocked.hpp +200 -0
- data/ext/boost/atomic/detail/linux-arm.hpp +189 -0
- data/ext/boost/atomic/detail/lockpool.hpp +97 -0
- data/ext/boost/atomic/detail/platform.hpp +62 -0
- data/ext/boost/atomic/detail/type-classification.hpp +45 -0
- data/ext/boost/chrono/config.hpp +8 -3
- data/ext/boost/chrono/duration.hpp +9 -10
- data/ext/boost/chrono/system_clocks.hpp +1 -1
- data/ext/boost/chrono/time_point.hpp +4 -3
- data/ext/boost/config/auto_link.hpp +53 -52
- data/ext/boost/config/compiler/borland.hpp +1 -0
- data/ext/boost/config/compiler/clang.hpp +24 -1
- data/ext/boost/config/compiler/codegear.hpp +1 -0
- data/ext/boost/config/compiler/common_edg.hpp +1 -0
- data/ext/boost/config/compiler/cray.hpp +1 -0
- data/ext/boost/config/compiler/digitalmars.hpp +1 -0
- data/ext/boost/config/compiler/gcc.hpp +29 -3
- data/ext/boost/config/compiler/gcc_xml.hpp +2 -1
- data/ext/boost/config/compiler/hp_acc.hpp +1 -0
- data/ext/boost/config/compiler/intel.hpp +1 -1
- data/ext/boost/config/compiler/metrowerks.hpp +1 -0
- data/ext/boost/config/compiler/mpw.hpp +1 -0
- data/ext/boost/config/compiler/pathscale.hpp +1 -0
- data/ext/boost/config/compiler/pgi.hpp +1 -0
- data/ext/boost/config/compiler/sunpro_cc.hpp +1 -0
- data/ext/boost/config/compiler/vacpp.hpp +3 -2
- data/ext/boost/config/compiler/visualc.hpp +25 -11
- data/ext/boost/config/platform/vxworks.hpp +353 -15
- data/ext/boost/config/select_compiler_config.hpp +4 -4
- data/ext/boost/config/stdlib/dinkumware.hpp +10 -3
- data/ext/boost/config/stdlib/libstdcpp3.hpp +2 -1
- data/ext/boost/config/suffix.hpp +45 -19
- data/ext/boost/date_time/format_date_parser.hpp +1 -11
- data/ext/boost/date_time/strings_from_facet.hpp +5 -3
- data/ext/boost/detail/atomic_redef_macros.hpp +19 -0
- data/ext/boost/detail/atomic_undef_macros.hpp +39 -0
- data/ext/boost/detail/endian.hpp +52 -4
- data/ext/boost/detail/scoped_enum_emulation.hpp +10 -10
- data/ext/boost/detail/select_type.hpp +36 -0
- data/ext/boost/exception/current_exception_cast.hpp +1 -1
- data/ext/boost/exception/detail/error_info_impl.hpp +3 -5
- data/ext/boost/exception/detail/exception_ptr.hpp +3 -3
- data/ext/boost/exception/detail/is_output_streamable.hpp +1 -1
- data/ext/boost/exception/detail/object_hex_dump.hpp +1 -1
- data/ext/boost/exception/detail/type_info.hpp +1 -1
- data/ext/boost/exception/diagnostic_information.hpp +15 -14
- data/ext/boost/exception/exception.hpp +1 -1
- data/ext/boost/exception/get_error_info.hpp +1 -1
- data/ext/boost/exception/info.hpp +12 -13
- data/ext/boost/exception/to_string.hpp +6 -1
- data/ext/boost/exception/to_string_stub.hpp +9 -1
- data/ext/boost/foreach.hpp +5 -5
- data/ext/boost/function/function_template.hpp +6 -6
- data/ext/boost/functional/hash/detail/float_functions.hpp +90 -0
- data/ext/boost/functional/hash/detail/hash_float.hpp +11 -2
- data/ext/boost/functional/hash/extensions.hpp +14 -2
- data/ext/boost/functional/hash/hash.hpp +26 -5
- data/ext/boost/get_pointer.hpp +17 -2
- data/ext/boost/integer_traits.hpp +1 -1
- data/ext/boost/lexical_cast.hpp +615 -395
- data/ext/boost/libs/atomic/lockpool.cpp +24 -0
- data/ext/boost/libs/system/src/error_code.cpp +25 -18
- data/ext/boost/libs/thread/src/future.cpp +7 -5
- data/ext/boost/libs/thread/src/pthread/once.cpp +9 -3
- data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +90 -0
- data/ext/boost/libs/thread/src/pthread/thread.cpp +129 -95
- data/ext/boost/libs/thread/src/pthread/timeconv.inl +20 -1
- data/ext/boost/limits.hpp +1 -1
- data/ext/boost/math/policies/policy.hpp +10 -0
- data/ext/boost/math/special_functions/detail/round_fwd.hpp +17 -4
- data/ext/boost/math/special_functions/fpclassify.hpp +114 -45
- data/ext/boost/math/special_functions/math_fwd.hpp +195 -83
- data/ext/boost/math/special_functions/sign.hpp +13 -8
- data/ext/boost/math/tools/config.hpp +38 -16
- data/ext/boost/move/algorithm.hpp +275 -0
- data/ext/boost/move/core.hpp +332 -0
- data/ext/boost/move/detail/config_begin.hpp +23 -0
- data/ext/boost/move/detail/config_end.hpp +20 -0
- data/ext/boost/move/detail/meta_utils.hpp +158 -0
- data/ext/boost/move/iterator.hpp +298 -0
- data/ext/boost/move/move.hpp +10 -1256
- data/ext/boost/move/traits.hpp +142 -0
- data/ext/boost/move/utility.hpp +194 -0
- data/ext/boost/mpl/assert.hpp +72 -4
- data/ext/boost/noncopyable.hpp +15 -3
- data/ext/boost/pointer_to_other.hpp +55 -0
- data/ext/boost/range/concepts.hpp +4 -4
- data/ext/boost/range/detail/extract_optional_type.hpp +1 -1
- data/ext/boost/range/empty.hpp +1 -1
- data/ext/boost/range/iterator_range_core.hpp +4 -1
- data/ext/boost/range/iterator_range_io.hpp +2 -2
- data/ext/boost/ratio/config.hpp +6 -0
- data/ext/boost/ratio/detail/overflow_helpers.hpp +2 -2
- data/ext/boost/smart_ptr/allocate_shared_array.hpp +250 -0
- data/ext/boost/smart_ptr/detail/allocate_array_helper.hpp +169 -0
- data/ext/boost/smart_ptr/detail/array_deleter.hpp +124 -0
- data/ext/boost/smart_ptr/detail/array_traits.hpp +53 -0
- data/ext/boost/smart_ptr/detail/array_utility.hpp +178 -0
- data/ext/boost/smart_ptr/detail/make_array_helper.hpp +157 -0
- data/ext/boost/smart_ptr/detail/operator_bool.hpp +16 -9
- data/ext/boost/smart_ptr/detail/shared_count.hpp +78 -7
- data/ext/boost/smart_ptr/detail/sp_convertible.hpp +15 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +12 -6
- data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +162 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +15 -0
- data/ext/boost/smart_ptr/detail/sp_forward.hpp +39 -0
- data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +19 -3
- data/ext/boost/smart_ptr/detail/sp_if_array.hpp +31 -0
- data/ext/boost/smart_ptr/detail/sp_nullptr_t.hpp +45 -0
- data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +5 -12
- data/ext/boost/smart_ptr/enable_shared_from_this.hpp +4 -4
- data/ext/boost/smart_ptr/make_shared.hpp +5 -1060
- data/ext/boost/smart_ptr/make_shared_array.hpp +247 -0
- data/ext/boost/smart_ptr/make_shared_object.hpp +1128 -0
- data/ext/boost/smart_ptr/scoped_array.hpp +32 -7
- data/ext/boost/smart_ptr/scoped_ptr.hpp +31 -5
- data/ext/boost/smart_ptr/shared_array.hpp +135 -20
- data/ext/boost/smart_ptr/shared_ptr.hpp +444 -126
- data/ext/boost/smart_ptr/weak_ptr.hpp +39 -28
- data/ext/boost/static_assert.hpp +74 -17
- data/ext/boost/system/error_code.hpp +76 -68
- data/ext/boost/system/system_error.hpp +5 -1
- data/ext/boost/thread/barrier.hpp +6 -2
- data/ext/boost/thread/completion_latch.hpp +233 -0
- data/ext/boost/thread/condition.hpp +6 -1
- data/ext/boost/thread/detail/async_func.hpp +571 -0
- data/ext/boost/thread/detail/config.hpp +248 -40
- data/ext/boost/thread/detail/counter.hpp +93 -0
- data/ext/boost/thread/detail/delete.hpp +12 -0
- data/ext/boost/thread/detail/invoke.hpp +1351 -0
- data/ext/boost/thread/detail/is_convertible.hpp +48 -0
- data/ext/boost/thread/detail/lockable_wrapper.hpp +45 -0
- data/ext/boost/thread/detail/log.hpp +83 -0
- data/ext/boost/thread/detail/make_tuple_indices.hpp +224 -0
- data/ext/boost/thread/detail/move.hpp +32 -16
- data/ext/boost/thread/detail/thread.hpp +236 -41
- data/ext/boost/thread/detail/thread_group.hpp +55 -9
- data/ext/boost/thread/detail/thread_interruption.hpp +4 -1
- data/ext/boost/thread/exceptions.hpp +2 -0
- data/ext/boost/thread/externally_locked.hpp +351 -0
- data/ext/boost/thread/externally_locked_stream.hpp +170 -0
- data/ext/boost/thread/future.hpp +2517 -455
- data/ext/boost/thread/future_error_code.hpp +61 -0
- data/ext/boost/thread/is_locked_by_this_thread.hpp +39 -0
- data/ext/boost/thread/latch.hpp +142 -0
- data/ext/boost/thread/lock_algorithms.hpp +468 -0
- data/ext/boost/thread/lock_concepts.hpp +197 -0
- data/ext/boost/thread/lock_factories.hpp +78 -0
- data/ext/boost/thread/lock_guard.hpp +88 -0
- data/ext/boost/thread/lock_options.hpp +31 -0
- data/ext/boost/thread/lock_traits.hpp +45 -0
- data/ext/boost/thread/lock_types.hpp +1226 -0
- data/ext/boost/thread/lockable_adapter.hpp +226 -0
- data/ext/boost/thread/lockable_concepts.hpp +157 -0
- data/ext/boost/thread/lockable_traits.hpp +207 -0
- data/ext/boost/thread/locks.hpp +5 -1816
- data/ext/boost/thread/mutex.hpp +33 -1
- data/ext/boost/thread/null_mutex.hpp +243 -0
- data/ext/boost/thread/once.hpp +10 -1
- data/ext/boost/thread/poly_lockable.hpp +68 -0
- data/ext/boost/thread/poly_lockable_adapter.hpp +89 -0
- data/ext/boost/thread/poly_shared_lockable.hpp +135 -0
- data/ext/boost/thread/poly_shared_lockable_adapter.hpp +170 -0
- data/ext/boost/thread/pthread/condition_variable.hpp +74 -26
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +54 -27
- data/ext/boost/thread/pthread/mutex.hpp +101 -38
- data/ext/boost/thread/pthread/once.hpp +459 -44
- data/ext/boost/thread/pthread/once_atomic.hpp +313 -0
- data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -10
- data/ext/boost/thread/pthread/shared_mutex.hpp +226 -61
- data/ext/boost/thread/pthread/shared_mutex_assert.hpp +724 -0
- data/ext/boost/thread/pthread/thread_data.hpp +53 -50
- data/ext/boost/thread/pthread/timespec.hpp +96 -12
- data/ext/boost/thread/recursive_mutex.hpp +44 -1
- data/ext/boost/thread/reverse_lock.hpp +3 -2
- data/ext/boost/thread/scoped_thread.hpp +285 -0
- data/ext/boost/thread/shared_lock_guard.hpp +2 -1
- data/ext/boost/thread/shared_mutex.hpp +23 -0
- data/ext/boost/thread/strict_lock.hpp +235 -0
- data/ext/boost/thread/sync_bounded_queue.hpp +594 -0
- data/ext/boost/thread/sync_queue.hpp +516 -0
- data/ext/boost/thread/synchronized_value.hpp +1001 -0
- data/ext/boost/thread/testable_mutex.hpp +148 -0
- data/ext/boost/thread/thread.hpp +1 -13
- data/ext/boost/thread/thread_functors.hpp +57 -0
- data/ext/boost/thread/thread_guard.hpp +46 -0
- data/ext/boost/thread/thread_only.hpp +29 -0
- data/ext/boost/thread/v2/shared_mutex.hpp +1062 -0
- data/ext/boost/thread/v2/thread.hpp +37 -10
- data/ext/boost/thread/xtime.hpp +2 -1
- data/ext/boost/token_functions.hpp +16 -16
- data/ext/boost/type_traits/add_lvalue_reference.hpp +26 -0
- data/ext/boost/type_traits/add_reference.hpp +1 -1
- data/ext/boost/type_traits/add_rvalue_reference.hpp +4 -4
- data/ext/boost/type_traits/aligned_storage.hpp +13 -0
- data/ext/boost/type_traits/common_type.hpp +11 -12
- data/ext/boost/type_traits/config.hpp +1 -1
- data/ext/boost/type_traits/detail/common_type_imp.hpp +1 -1
- data/ext/boost/type_traits/detail/has_binary_operator.hpp +1 -1
- data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +1 -1
- data/ext/boost/type_traits/has_left_shift.hpp +49 -0
- data/ext/boost/type_traits/has_right_shift.hpp +49 -0
- data/ext/boost/type_traits/has_trivial_move_assign.hpp +57 -0
- data/ext/boost/type_traits/has_trivial_move_constructor.hpp +57 -0
- data/ext/boost/type_traits/intrinsics.hpp +18 -2
- data/ext/boost/type_traits/is_abstract.hpp +1 -1
- data/ext/boost/type_traits/is_array.hpp +1 -1
- data/ext/boost/type_traits/is_const.hpp +1 -1
- data/ext/boost/type_traits/is_convertible.hpp +78 -17
- data/ext/boost/type_traits/is_function.hpp +6 -1
- data/ext/boost/type_traits/is_integral.hpp +6 -1
- data/ext/boost/type_traits/is_nothrow_move_assignable.hpp +84 -0
- data/ext/boost/type_traits/is_nothrow_move_constructible.hpp +84 -0
- data/ext/boost/type_traits/is_pod.hpp +3 -1
- data/ext/boost/type_traits/is_rvalue_reference.hpp +1 -1
- data/ext/boost/type_traits/is_volatile.hpp +1 -1
- data/ext/boost/type_traits/make_signed.hpp +153 -0
- data/ext/boost/type_traits/make_unsigned.hpp +16 -0
- data/ext/boost/type_traits/remove_const.hpp +1 -1
- data/ext/boost/type_traits/remove_cv.hpp +1 -1
- data/ext/boost/type_traits/remove_reference.hpp +1 -1
- data/ext/boost/type_traits/remove_volatile.hpp +1 -1
- data/ext/boost/unordered/detail/allocate.hpp +1120 -0
- data/ext/boost/unordered/detail/buckets.hpp +876 -0
- data/ext/boost/unordered/detail/equivalent.hpp +680 -0
- data/ext/boost/unordered/detail/extract_key.hpp +183 -0
- data/ext/boost/unordered/detail/fwd.hpp +23 -0
- data/ext/boost/unordered/detail/table.hpp +861 -0
- data/ext/boost/unordered/detail/unique.hpp +622 -0
- data/ext/boost/unordered/detail/util.hpp +260 -0
- data/ext/boost/unordered/unordered_map.hpp +1652 -0
- data/ext/boost/unordered/unordered_map_fwd.hpp +65 -0
- data/ext/boost/unordered/unordered_set.hpp +1549 -0
- data/ext/boost/unordered/unordered_set_fwd.hpp +63 -0
- data/ext/boost/unordered_map.hpp +18 -0
- data/ext/boost/unordered_set.hpp +18 -0
- data/ext/boost/utility/addressof.hpp +2 -2
- data/ext/boost/utility/result_of.hpp +8 -1
- data/ext/boost/version.hpp +2 -2
- data/ext/common/Account.h +1 -1
- data/ext/common/AccountsDatabase.h +1 -1
- data/ext/common/AgentsStarter.cpp +3 -1
- data/ext/common/AgentsStarter.h +2 -2
- data/ext/common/ApplicationPool2/AppTypes.cpp +24 -6
- data/ext/common/ApplicationPool2/AppTypes.h +17 -8
- data/ext/common/ApplicationPool2/Common.h +12 -12
- data/ext/common/ApplicationPool2/DirectSpawner.h +2 -2
- data/ext/common/ApplicationPool2/DummySpawner.h +3 -3
- data/ext/common/ApplicationPool2/Group.h +6 -6
- data/ext/common/ApplicationPool2/Implementation.cpp +19 -19
- data/ext/common/ApplicationPool2/PipeWatcher.h +5 -5
- data/ext/common/ApplicationPool2/Pool.h +21 -21
- data/ext/common/ApplicationPool2/Process.h +6 -6
- data/ext/common/ApplicationPool2/Session.h +1 -1
- data/ext/common/ApplicationPool2/SmartSpawner.h +24 -12
- data/ext/common/ApplicationPool2/Socket.h +2 -2
- data/ext/common/ApplicationPool2/Spawner.h +64 -14
- data/ext/common/ApplicationPool2/SpawnerFactory.h +7 -7
- data/ext/common/ApplicationPool2/SuperGroup.h +5 -5
- data/ext/common/BackgroundEventLoop.cpp +4 -4
- data/ext/common/BackgroundEventLoop.h +1 -1
- data/ext/common/Constants.h +13 -1
- data/ext/common/EventedBufferedInput.h +8 -8
- data/ext/common/Exceptions.cpp +71 -0
- data/ext/common/Exceptions.h +60 -7
- data/ext/common/FileDescriptor.h +4 -4
- data/ext/common/MessageClient.h +1 -1
- data/ext/common/MessageServer.h +5 -5
- data/ext/common/MultiLibeio.cpp +3 -3
- data/ext/common/MultiLibeio.h +2 -2
- data/ext/common/RandomGenerator.h +11 -11
- data/ext/common/ResourceLocator.h +8 -1
- data/ext/common/SafeLibev.h +12 -12
- data/ext/common/ServerInstanceDir.h +11 -3
- data/ext/common/UnionStation.h +10 -10
- data/ext/common/Utils.cpp +11 -13
- data/ext/common/Utils.h +9 -9
- data/ext/common/Utils/BlockingQueue.h +10 -10
- data/ext/common/Utils/BufferedIO.h +1 -1
- data/ext/common/Utils/CachedFileStat.hpp +2 -2
- data/ext/common/Utils/FileChangeChecker.h +1 -1
- data/ext/common/Utils/HashMap.h +13 -4
- data/ext/common/Utils/IOUtils.cpp +33 -10
- data/ext/common/Utils/IniFile.h +3 -3
- data/ext/common/Utils/Lock.h +2 -2
- data/ext/common/Utils/MessagePassing.h +10 -10
- data/ext/common/Utils/ProcessMetricsCollector.h +24 -6
- data/ext/common/Utils/ScopeGuard.h +5 -5
- data/ext/common/Utils/jsoncpp.cpp +2 -0
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +26 -26
- data/ext/common/agents/HelperAgent/Main.cpp +18 -18
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
- data/ext/common/agents/HelperAgent/RequestHandler.h +30 -21
- data/ext/common/agents/LoggingAgent/AdminController.h +1 -1
- data/ext/common/agents/LoggingAgent/FilterSupport.h +13 -11
- data/ext/common/agents/LoggingAgent/LoggingServer.h +11 -11
- data/ext/common/agents/LoggingAgent/Main.cpp +9 -9
- data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
- data/ext/common/agents/SpawnPreparer.cpp +1 -0
- data/ext/common/agents/Watchdog/AgentWatcher.cpp +8 -7
- data/ext/common/agents/Watchdog/Main.cpp +81 -73
- data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +1 -1
- data/ext/libev/Changes +57 -0
- data/ext/libev/LICENSE +2 -1
- data/ext/libev/Makefile.in +110 -50
- data/ext/libev/README +8 -8
- data/ext/libev/aclocal.m4 +1503 -861
- data/ext/libev/config.guess +290 -304
- data/ext/libev/config.sub +77 -198
- data/ext/libev/configure +1735 -890
- data/ext/libev/configure.ac +3 -2
- data/ext/libev/ev++.h +6 -6
- data/ext/libev/ev.c +541 -214
- data/ext/libev/ev.h +106 -100
- data/ext/libev/ev_epoll.c +1 -1
- data/ext/libev/ev_kqueue.c +20 -4
- data/ext/libev/ev_vars.h +15 -16
- data/ext/libev/ev_win32.c +12 -2
- data/ext/libev/ev_wrap.h +162 -160
- data/ext/libev/event.c +29 -6
- data/ext/libev/event.h +9 -2
- data/ext/libev/ltmain.sh +2632 -1384
- data/ext/nginx/ConfigurationCommands.c +1 -1
- data/ext/nginx/ConfigurationCommands.c.erb +3 -1
- data/ext/nginx/ContentHandler.c +25 -2
- data/ext/nginx/CreateLocationConfig.c +1 -0
- data/ext/nginx/CreateLocationConfig.c.erb +1 -1
- data/ext/nginx/MergeLocationConfig.c +1 -0
- data/ext/nginx/MergeLocationConfig.c.erb +1 -1
- data/ext/nginx/config +12 -0
- data/ext/oxt/dynamic_thread_group.hpp +7 -4
- data/ext/oxt/system_calls.cpp +5 -1
- data/ext/oxt/system_calls.hpp +3 -0
- data/helper-scripts/node-loader.js +117 -249
- data/lib/phusion_passenger.rb +27 -5
- data/lib/phusion_passenger/abstract_installer.rb +104 -9
- data/lib/phusion_passenger/admin_tools/memory_stats.rb +10 -9
- data/lib/phusion_passenger/apache2/config_options.rb +6 -3
- data/lib/phusion_passenger/common_library.rb +7 -1
- data/lib/phusion_passenger/constants.rb +6 -0
- data/lib/phusion_passenger/loader_shared_helpers.rb +7 -4
- data/lib/phusion_passenger/nginx/config_options.rb +2 -1
- data/lib/phusion_passenger/packaging.rb +3 -0
- data/lib/phusion_passenger/platform_info/apache.rb +43 -6
- data/lib/phusion_passenger/platform_info/apache_detector.rb +15 -5
- data/lib/phusion_passenger/platform_info/compiler.rb +167 -32
- data/lib/phusion_passenger/platform_info/cxx_portability.rb +133 -77
- data/lib/phusion_passenger/platform_info/depcheck.rb +17 -7
- data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +3 -3
- data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
- data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -6
- data/lib/phusion_passenger/platform_info/linux.rb +2 -1
- data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
- data/lib/phusion_passenger/platform_info/ruby.rb +18 -3
- data/lib/phusion_passenger/standalone/runtime_installer.rb +6 -2
- data/lib/phusion_passenger/standalone/start_command.rb +8 -2
- data/lib/phusion_passenger/utils/ansi_colors.rb +9 -0
- data/lib/phusion_passenger/utils/hosts_file_parser.rb +4 -2
- data/node_lib/phusion_passenger/httplib_emulation.js +141 -0
- data/node_lib/phusion_passenger/line_reader.js +154 -0
- data/node_lib/phusion_passenger/request_handler.js +65 -0
- data/node_lib/phusion_passenger/session_protocol_parser.js +113 -0
- data/resources/templates/apache2/deployment_example.txt.erb +2 -1
- data/resources/templates/apache2/installing_against_a_different_apache.txt.erb +14 -0
- data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +15 -0
- data/resources/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
- data/resources/templates/general_error_with_html.html.template +1 -1
- data/resources/templates/installer_common/gem_install_permission_problems.txt.erb +17 -0
- data/resources/templates/installer_common/low_amount_of_memory_warning.txt.erb +6 -4
- data/resources/templates/installer_common/world_inaccessible_directories.txt.erb +16 -0
- data/resources/templates/nginx/deployment_example.txt.erb +2 -1
- data/resources/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
- data/resources/templates/standalone/config.erb +1 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -3
- data/test/cxx/ApplicationPool2/PoolTest.cpp +4 -4
- data/test/cxx/ApplicationPool2/ProcessTest.cpp +5 -5
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -5
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +1 -1
- data/test/cxx/EventedBufferedInputTest.cpp +6 -6
- data/test/cxx/FileBackedPipeTest.cpp +1 -1
- data/test/cxx/MessagePassingTest.cpp +1 -1
- data/test/cxx/MessageServerTest.cpp +4 -4
- data/test/cxx/RequestHandlerTest.cpp +7 -7
- data/test/cxx/UnionStationTest.cpp +2 -2
- data/test/node/line_reader_spec.js +338 -0
- data/test/node/spec_helper.js +27 -0
- data/test/ruby/standalone/runtime_installer_spec.rb +2 -1
- metadata +131 -22
- metadata.gz.asc +7 -7
- data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +0 -29
- data/ext/boost/lambda/core.hpp +0 -79
- data/ext/boost/lambda/detail/actions.hpp +0 -174
- data/ext/boost/lambda/detail/arity_code.hpp +0 -110
- data/ext/boost/lambda/detail/function_adaptors.hpp +0 -789
- data/ext/boost/lambda/detail/is_instance_of.hpp +0 -104
- data/ext/boost/lambda/detail/lambda_config.hpp +0 -48
- data/ext/boost/lambda/detail/lambda_functor_base.hpp +0 -615
- data/ext/boost/lambda/detail/lambda_functors.hpp +0 -324
- data/ext/boost/lambda/detail/lambda_fwd.hpp +0 -74
- data/ext/boost/lambda/detail/lambda_traits.hpp +0 -578
- data/ext/boost/lambda/detail/member_ptr.hpp +0 -737
- data/ext/boost/lambda/detail/operator_actions.hpp +0 -139
- data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +0 -271
- data/ext/boost/lambda/detail/operator_return_type_traits.hpp +0 -917
- data/ext/boost/lambda/detail/operators.hpp +0 -370
- data/ext/boost/lambda/detail/ret.hpp +0 -325
- data/ext/boost/lambda/detail/return_type_traits.hpp +0 -282
- data/ext/boost/lambda/detail/select_functions.hpp +0 -74
- data/ext/boost/lambda/lambda.hpp +0 -34
@@ -1,104 +0,0 @@
|
|
1
|
-
// Boost Lambda Library - is_instance_of.hpp ---------------------
|
2
|
-
|
3
|
-
// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
4
|
-
//
|
5
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
6
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
7
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
8
|
-
//
|
9
|
-
// For more information, see www.boost.org
|
10
|
-
|
11
|
-
// ---------------------------------------------------------------
|
12
|
-
|
13
|
-
#ifndef BOOST_LAMBDA_IS_INSTANCE_OF
|
14
|
-
#define BOOST_LAMBDA_IS_INSTANCE_OF
|
15
|
-
|
16
|
-
#include "boost/config.hpp" // for BOOST_STATIC_CONSTANT
|
17
|
-
#include "boost/type_traits/conversion_traits.hpp" // for is_convertible
|
18
|
-
#include "boost/preprocessor/enum_shifted_params.hpp"
|
19
|
-
#include "boost/preprocessor/repeat_2nd.hpp"
|
20
|
-
|
21
|
-
// is_instance_of --------------------------------
|
22
|
-
//
|
23
|
-
// is_instance_of_n<A, B>::value is true, if type A is
|
24
|
-
// an instantiation of a template B, or A derives from an instantiation
|
25
|
-
// of template B
|
26
|
-
//
|
27
|
-
// n is the number of template arguments for B
|
28
|
-
//
|
29
|
-
// Example:
|
30
|
-
// is_instance_of_2<std::istream, basic_stream>::value == true
|
31
|
-
|
32
|
-
// The original implementation was somewhat different, with different versions
|
33
|
-
// for different compilers. However, there was still a problem
|
34
|
-
// with gcc.3.0.2 and 3.0.3 compilers, which didn't think regard
|
35
|
-
// is_instance_of_N<...>::value was a constant.
|
36
|
-
// John Maddock suggested the way around this problem by building
|
37
|
-
// is_instance_of templates using boost::is_convertible.
|
38
|
-
// Now we only have one version of is_instance_of templates, which delagate
|
39
|
-
// all the nasty compiler tricks to is_convertible.
|
40
|
-
|
41
|
-
#define BOOST_LAMBDA_CLASS(z, N,A) BOOST_PP_COMMA_IF(N) class
|
42
|
-
#define BOOST_LAMBDA_CLASS_ARG(z, N,A) BOOST_PP_COMMA_IF(N) class A##N
|
43
|
-
#define BOOST_LAMBDA_ARG(z, N,A) BOOST_PP_COMMA_IF(N) A##N
|
44
|
-
|
45
|
-
#define BOOST_LAMBDA_CLASS_LIST(n, NAME) BOOST_PP_REPEAT(n, BOOST_LAMBDA_CLASS, NAME)
|
46
|
-
|
47
|
-
#define BOOST_LAMBDA_CLASS_ARG_LIST(n, NAME) BOOST_PP_REPEAT(n, BOOST_LAMBDA_CLASS_ARG, NAME)
|
48
|
-
|
49
|
-
#define BOOST_LAMBDA_ARG_LIST(n, NAME) BOOST_PP_REPEAT(n, BOOST_LAMBDA_ARG, NAME)
|
50
|
-
|
51
|
-
namespace boost {
|
52
|
-
namespace lambda {
|
53
|
-
|
54
|
-
#define BOOST_LAMBDA_IS_INSTANCE_OF_TEMPLATE(INDEX) \
|
55
|
-
\
|
56
|
-
namespace detail { \
|
57
|
-
\
|
58
|
-
template <template<BOOST_LAMBDA_CLASS_LIST(INDEX,T)> class F> \
|
59
|
-
struct BOOST_PP_CAT(conversion_tester_,INDEX) { \
|
60
|
-
template<BOOST_LAMBDA_CLASS_ARG_LIST(INDEX,A)> \
|
61
|
-
BOOST_PP_CAT(conversion_tester_,INDEX) \
|
62
|
-
(const F<BOOST_LAMBDA_ARG_LIST(INDEX,A)>&); \
|
63
|
-
}; \
|
64
|
-
\
|
65
|
-
} /* end detail */ \
|
66
|
-
\
|
67
|
-
template <class From, template <BOOST_LAMBDA_CLASS_LIST(INDEX,T)> class To> \
|
68
|
-
struct BOOST_PP_CAT(is_instance_of_,INDEX) \
|
69
|
-
{ \
|
70
|
-
private: \
|
71
|
-
typedef ::boost::is_convertible< \
|
72
|
-
From, \
|
73
|
-
BOOST_PP_CAT(detail::conversion_tester_,INDEX)<To> \
|
74
|
-
> helper_type; \
|
75
|
-
\
|
76
|
-
public: \
|
77
|
-
BOOST_STATIC_CONSTANT(bool, value = helper_type::value); \
|
78
|
-
};
|
79
|
-
|
80
|
-
|
81
|
-
#define BOOST_LAMBDA_HELPER(z, N, A) BOOST_LAMBDA_IS_INSTANCE_OF_TEMPLATE( BOOST_PP_INC(N) )
|
82
|
-
|
83
|
-
// Generate the traits for 1-4 argument templates
|
84
|
-
|
85
|
-
BOOST_PP_REPEAT_2ND(4,BOOST_LAMBDA_HELPER,FOO)
|
86
|
-
|
87
|
-
#undef BOOST_LAMBDA_HELPER
|
88
|
-
#undef BOOST_LAMBDA_IS_INSTANCE_OF_TEMPLATE
|
89
|
-
#undef BOOST_LAMBDA_CLASS
|
90
|
-
#undef BOOST_LAMBDA_ARG
|
91
|
-
#undef BOOST_LAMBDA_CLASS_ARG
|
92
|
-
#undef BOOST_LAMBDA_CLASS_LIST
|
93
|
-
#undef BOOST_LAMBDA_ARG_LIST
|
94
|
-
#undef BOOST_LAMBDA_CLASS_ARG_LIST
|
95
|
-
|
96
|
-
} // lambda
|
97
|
-
} // boost
|
98
|
-
|
99
|
-
#endif
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
@@ -1,48 +0,0 @@
|
|
1
|
-
// Boost Lambda Library - lambda_config.hpp ------------------------------
|
2
|
-
|
3
|
-
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
4
|
-
//
|
5
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
6
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
7
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
8
|
-
//
|
9
|
-
// For more information, see www.boost.org
|
10
|
-
|
11
|
-
// ---------------------------------------------------------------
|
12
|
-
|
13
|
-
#ifndef BOOST_LAMBDA_LAMBDA_CONFIG_HPP
|
14
|
-
#define BOOST_LAMBDA_LAMBDA_CONFIG_HPP
|
15
|
-
|
16
|
-
// add to boost/config.hpp
|
17
|
-
// for now
|
18
|
-
|
19
|
-
|
20
|
-
# if defined __GNUC__
|
21
|
-
# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
22
|
-
# define BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
|
23
|
-
# define BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
|
24
|
-
# endif
|
25
|
-
# if (__GNUC__ == 2 && __GNUC_MINOR__ <= 97)
|
26
|
-
# define BOOST_NO_TEMPLATED_STREAMS
|
27
|
-
# define BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
|
28
|
-
# endif
|
29
|
-
# if (__GNUC__ == 2 && __GNUC_MINOR__ <= 95)
|
30
|
-
# define BOOST_LAMBDA_FAILS_IN_TEMPLATE_KEYWORD_AFTER_SCOPE_OPER
|
31
|
-
# endif
|
32
|
-
# endif // __GNUC__
|
33
|
-
|
34
|
-
|
35
|
-
#if defined __KCC
|
36
|
-
|
37
|
-
#define BOOST_NO_FDECL_TEMPLATES_AS_TEMPLATE_TEMPLATE_PARAMS
|
38
|
-
|
39
|
-
#endif // __KCC
|
40
|
-
|
41
|
-
#endif
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
@@ -1,615 +0,0 @@
|
|
1
|
-
// Boost Lambda Library lambda_functor_base.hpp -----------------------------
|
2
|
-
//
|
3
|
-
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
4
|
-
//
|
5
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
6
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
7
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
8
|
-
//
|
9
|
-
// For more information, see www.boost.org
|
10
|
-
|
11
|
-
// ------------------------------------------------------------
|
12
|
-
|
13
|
-
#ifndef BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_HPP
|
14
|
-
#define BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_HPP
|
15
|
-
|
16
|
-
#include "boost/type_traits/add_reference.hpp"
|
17
|
-
#include "boost/type_traits/add_const.hpp"
|
18
|
-
#include "boost/type_traits/remove_const.hpp"
|
19
|
-
#include "boost/lambda/detail/lambda_fwd.hpp"
|
20
|
-
#include "boost/lambda/detail/lambda_traits.hpp"
|
21
|
-
|
22
|
-
namespace boost {
|
23
|
-
namespace lambda {
|
24
|
-
|
25
|
-
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
|
26
|
-
#pragma warning(push)
|
27
|
-
#pragma warning(disable:4512) //assignment operator could not be generated
|
28
|
-
#endif
|
29
|
-
|
30
|
-
// for return type deductions we wrap bound argument to this class,
|
31
|
-
// which fulfils the base class contract for lambda_functors
|
32
|
-
template <class T>
|
33
|
-
class identity {
|
34
|
-
|
35
|
-
T elem;
|
36
|
-
public:
|
37
|
-
|
38
|
-
typedef T element_t;
|
39
|
-
|
40
|
-
// take all parameters as const references. Note that non-const references
|
41
|
-
// stay as they are.
|
42
|
-
typedef typename boost::add_reference<
|
43
|
-
typename boost::add_const<T>::type
|
44
|
-
>::type par_t;
|
45
|
-
|
46
|
-
explicit identity(par_t t) : elem(t) {}
|
47
|
-
|
48
|
-
template <typename SigArgs>
|
49
|
-
struct sig { typedef typename boost::remove_const<element_t>::type type; };
|
50
|
-
|
51
|
-
template<class RET, CALL_TEMPLATE_ARGS>
|
52
|
-
RET call(CALL_FORMAL_ARGS) const { CALL_USE_ARGS; return elem; }
|
53
|
-
};
|
54
|
-
|
55
|
-
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
|
56
|
-
#pragma warning(pop)
|
57
|
-
#endif
|
58
|
-
|
59
|
-
template <class T>
|
60
|
-
inline lambda_functor<identity<T&> > var(T& t) { return identity<T&>(t); }
|
61
|
-
|
62
|
-
// for lambda functors, var is an identity operator. It was forbidden
|
63
|
-
// at some point, but we might want to var something that can be a
|
64
|
-
// non-lambda functor or a lambda functor.
|
65
|
-
template <class T>
|
66
|
-
lambda_functor<T> var(const lambda_functor<T>& t) { return t; }
|
67
|
-
|
68
|
-
template <class T> struct var_type {
|
69
|
-
typedef lambda_functor<identity<T&> > type;
|
70
|
-
};
|
71
|
-
|
72
|
-
|
73
|
-
template <class T>
|
74
|
-
inline
|
75
|
-
lambda_functor<identity<typename bound_argument_conversion<const T>::type> >
|
76
|
-
constant(const T& t) {
|
77
|
-
return identity<typename bound_argument_conversion<const T>::type>(t);
|
78
|
-
}
|
79
|
-
template <class T>
|
80
|
-
lambda_functor<T> constant(const lambda_functor<T>& t) { return t; }
|
81
|
-
|
82
|
-
template <class T> struct constant_type {
|
83
|
-
typedef
|
84
|
-
lambda_functor<
|
85
|
-
identity<typename bound_argument_conversion<const T>::type>
|
86
|
-
> type;
|
87
|
-
};
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
template <class T>
|
92
|
-
inline lambda_functor<identity<const T&> > constant_ref(const T& t) {
|
93
|
-
return identity<const T&>(t);
|
94
|
-
}
|
95
|
-
template <class T>
|
96
|
-
lambda_functor<T> constant_ref(const lambda_functor<T>& t) { return t; }
|
97
|
-
|
98
|
-
template <class T> struct constant_ref_type {
|
99
|
-
typedef
|
100
|
-
lambda_functor<identity<const T&> > type;
|
101
|
-
};
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
// as_lambda_functor turns any types to lambda functors
|
106
|
-
// non-lambda_functors will be bound argument types
|
107
|
-
template <class T>
|
108
|
-
struct as_lambda_functor {
|
109
|
-
typedef typename
|
110
|
-
detail::remove_reference_and_cv<T>::type plain_T;
|
111
|
-
typedef typename
|
112
|
-
detail::IF<is_lambda_functor<plain_T>::value,
|
113
|
-
plain_T,
|
114
|
-
lambda_functor<
|
115
|
-
identity<typename bound_argument_conversion<T>::type>
|
116
|
-
>
|
117
|
-
>::RET type;
|
118
|
-
};
|
119
|
-
|
120
|
-
// turns arbitrary objects into lambda functors
|
121
|
-
template <class T>
|
122
|
-
inline
|
123
|
-
lambda_functor<identity<typename bound_argument_conversion<const T>::type> >
|
124
|
-
to_lambda_functor(const T& t) {
|
125
|
-
return identity<typename bound_argument_conversion<const T>::type>(t);
|
126
|
-
}
|
127
|
-
|
128
|
-
template <class T>
|
129
|
-
inline lambda_functor<T>
|
130
|
-
to_lambda_functor(const lambda_functor<T>& t) {
|
131
|
-
return t;
|
132
|
-
}
|
133
|
-
|
134
|
-
namespace detail {
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
// In a call constify_rvals<T>::go(x)
|
139
|
-
// x should be of type T. If T is a non-reference type, do
|
140
|
-
// returns x as const reference.
|
141
|
-
// Otherwise the type doesn't change.
|
142
|
-
// The purpose of this class is to avoid
|
143
|
-
// 'cannot bind temporaries to non-const references' errors.
|
144
|
-
template <class T> struct constify_rvals {
|
145
|
-
template<class U>
|
146
|
-
static inline const U& go(const U& u) { return u; }
|
147
|
-
};
|
148
|
-
|
149
|
-
template <class T> struct constify_rvals<T&> {
|
150
|
-
template<class U>
|
151
|
-
static inline U& go(U& u) { return u; }
|
152
|
-
};
|
153
|
-
|
154
|
-
// check whether one of the elements of a tuple (cons list) is of type
|
155
|
-
// null_type. Needed, because the compiler goes ahead and instantiates
|
156
|
-
// sig template for nullary case even if the nullary operator() is not
|
157
|
-
// called
|
158
|
-
template <class T> struct is_null_type
|
159
|
-
{ BOOST_STATIC_CONSTANT(bool, value = false); };
|
160
|
-
|
161
|
-
template <> struct is_null_type<null_type>
|
162
|
-
{ BOOST_STATIC_CONSTANT(bool, value = true); };
|
163
|
-
|
164
|
-
template<class Tuple> struct has_null_type {
|
165
|
-
BOOST_STATIC_CONSTANT(bool, value = (is_null_type<typename Tuple::head_type>::value || has_null_type<typename Tuple::tail_type>::value));
|
166
|
-
};
|
167
|
-
template<> struct has_null_type<null_type> {
|
168
|
-
BOOST_STATIC_CONSTANT(bool, value = false);
|
169
|
-
};
|
170
|
-
|
171
|
-
|
172
|
-
// helpers -------------------
|
173
|
-
|
174
|
-
|
175
|
-
template<class Args, class SigArgs>
|
176
|
-
class deduce_argument_types_ {
|
177
|
-
typedef typename as_lambda_functor<typename Args::head_type>::type lf_t;
|
178
|
-
typedef typename lf_t::inherited::template sig<SigArgs>::type el_t;
|
179
|
-
public:
|
180
|
-
typedef
|
181
|
-
boost::tuples::cons<
|
182
|
-
el_t,
|
183
|
-
typename deduce_argument_types_<typename Args::tail_type, SigArgs>::type
|
184
|
-
> type;
|
185
|
-
};
|
186
|
-
|
187
|
-
template<class SigArgs>
|
188
|
-
class deduce_argument_types_<null_type, SigArgs> {
|
189
|
-
public:
|
190
|
-
typedef null_type type;
|
191
|
-
};
|
192
|
-
|
193
|
-
|
194
|
-
// // note that tuples cannot have plain function types as elements.
|
195
|
-
// // Hence, all other types will be non-const, except references to
|
196
|
-
// // functions.
|
197
|
-
// template <class T> struct remove_reference_except_from_functions {
|
198
|
-
// typedef typename boost::remove_reference<T>::type t;
|
199
|
-
// typedef typename detail::IF<boost::is_function<t>::value, T, t>::RET type;
|
200
|
-
// };
|
201
|
-
|
202
|
-
template<class Args, class SigArgs>
|
203
|
-
class deduce_non_ref_argument_types_ {
|
204
|
-
typedef typename as_lambda_functor<typename Args::head_type>::type lf_t;
|
205
|
-
typedef typename lf_t::inherited::template sig<SigArgs>::type el_t;
|
206
|
-
public:
|
207
|
-
typedef
|
208
|
-
boost::tuples::cons<
|
209
|
-
// typename detail::remove_reference_except_from_functions<el_t>::type,
|
210
|
-
typename boost::remove_reference<el_t>::type,
|
211
|
-
typename deduce_non_ref_argument_types_<typename Args::tail_type, SigArgs>::type
|
212
|
-
> type;
|
213
|
-
};
|
214
|
-
|
215
|
-
template<class SigArgs>
|
216
|
-
class deduce_non_ref_argument_types_<null_type, SigArgs> {
|
217
|
-
public:
|
218
|
-
typedef null_type type;
|
219
|
-
};
|
220
|
-
|
221
|
-
// -------------
|
222
|
-
|
223
|
-
// take stored Args and Open Args, and return a const list with
|
224
|
-
// deduced elements (real return types)
|
225
|
-
template<class Args, class SigArgs>
|
226
|
-
class deduce_argument_types {
|
227
|
-
typedef typename deduce_argument_types_<Args, SigArgs>::type t1;
|
228
|
-
public:
|
229
|
-
typedef typename detail::IF<
|
230
|
-
has_null_type<t1>::value, null_type, t1
|
231
|
-
>::RET type;
|
232
|
-
};
|
233
|
-
|
234
|
-
// take stored Args and Open Args, and return a const list with
|
235
|
-
// deduced elements (references are stripped from the element types)
|
236
|
-
|
237
|
-
template<class Args, class SigArgs>
|
238
|
-
class deduce_non_ref_argument_types {
|
239
|
-
typedef typename deduce_non_ref_argument_types_<Args, SigArgs>::type t1;
|
240
|
-
public:
|
241
|
-
typedef typename detail::IF<
|
242
|
-
has_null_type<t1>::value, null_type, t1
|
243
|
-
>::RET type;
|
244
|
-
};
|
245
|
-
|
246
|
-
template <int N, class Args, class SigArgs>
|
247
|
-
struct nth_return_type_sig {
|
248
|
-
typedef typename
|
249
|
-
as_lambda_functor<
|
250
|
-
typename boost::tuples::element<N, Args>::type
|
251
|
-
// typename tuple_element_as_reference<N, Args>::type
|
252
|
-
>::type lf_type;
|
253
|
-
|
254
|
-
typedef typename lf_type::inherited::template sig<SigArgs>::type type;
|
255
|
-
};
|
256
|
-
|
257
|
-
template<int N, class Tuple> struct element_or_null {
|
258
|
-
typedef typename boost::tuples::element<N, Tuple>::type type;
|
259
|
-
};
|
260
|
-
|
261
|
-
template<int N> struct element_or_null<N, null_type> {
|
262
|
-
typedef null_type type;
|
263
|
-
};
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
} // end detail
|
269
|
-
|
270
|
-
// -- lambda_functor base ---------------------
|
271
|
-
|
272
|
-
// the explicit_return_type_action case -----------------------------------
|
273
|
-
template<class RET, class Args>
|
274
|
-
class lambda_functor_base<explicit_return_type_action<RET>, Args>
|
275
|
-
{
|
276
|
-
public:
|
277
|
-
Args args;
|
278
|
-
|
279
|
-
typedef RET result_type;
|
280
|
-
|
281
|
-
explicit lambda_functor_base(const Args& a) : args(a) {}
|
282
|
-
|
283
|
-
template <class SigArgs> struct sig { typedef RET type; };
|
284
|
-
|
285
|
-
template<class RET_, CALL_TEMPLATE_ARGS>
|
286
|
-
RET call(CALL_FORMAL_ARGS) const
|
287
|
-
{
|
288
|
-
return detail::constify_rvals<RET>::go(
|
289
|
-
detail::r_select<RET>::go(boost::tuples::get<0>(args), CALL_ACTUAL_ARGS));
|
290
|
-
}
|
291
|
-
};
|
292
|
-
|
293
|
-
// the protect_action case -----------------------------------
|
294
|
-
template<class Args>
|
295
|
-
class lambda_functor_base<protect_action, Args>
|
296
|
-
{
|
297
|
-
public:
|
298
|
-
Args args;
|
299
|
-
public:
|
300
|
-
|
301
|
-
explicit lambda_functor_base(const Args& a) : args(a) {}
|
302
|
-
|
303
|
-
|
304
|
-
template<class RET, CALL_TEMPLATE_ARGS>
|
305
|
-
RET call(CALL_FORMAL_ARGS) const
|
306
|
-
{
|
307
|
-
CALL_USE_ARGS;
|
308
|
-
return boost::tuples::get<0>(args);
|
309
|
-
}
|
310
|
-
|
311
|
-
template<class SigArgs> struct sig {
|
312
|
-
// typedef typename detail::tuple_element_as_reference<0, SigArgs>::type type;
|
313
|
-
typedef typename boost::tuples::element<0, Args>::type type;
|
314
|
-
};
|
315
|
-
};
|
316
|
-
|
317
|
-
// Do nothing --------------------------------------------------------
|
318
|
-
class do_nothing_action {};
|
319
|
-
|
320
|
-
template<class Args>
|
321
|
-
class lambda_functor_base<do_nothing_action, Args> {
|
322
|
-
// Args args;
|
323
|
-
public:
|
324
|
-
// explicit lambda_functor_base(const Args& a) {}
|
325
|
-
lambda_functor_base() {}
|
326
|
-
|
327
|
-
|
328
|
-
template<class RET, CALL_TEMPLATE_ARGS> RET call(CALL_FORMAL_ARGS) const {
|
329
|
-
return CALL_USE_ARGS;
|
330
|
-
}
|
331
|
-
|
332
|
-
template<class SigArgs> struct sig { typedef void type; };
|
333
|
-
};
|
334
|
-
|
335
|
-
|
336
|
-
// These specializations provide a shorter notation to define actions.
|
337
|
-
// These lambda_functor_base instances take care of the recursive evaluation
|
338
|
-
// of the arguments and pass the evaluated arguments to the apply function
|
339
|
-
// of an action class. To make action X work with these classes, one must
|
340
|
-
// instantiate the lambda_functor_base as:
|
341
|
-
// lambda_functor_base<action<ARITY, X>, Args>
|
342
|
-
// Where ARITY is the arity of the apply function in X
|
343
|
-
|
344
|
-
// The return type is queried as:
|
345
|
-
// return_type_N<X, EvaluatedArgumentTypes>::type
|
346
|
-
// for which there must be a specialization.
|
347
|
-
|
348
|
-
// Function actions, casts, throws,... all go via these classes.
|
349
|
-
|
350
|
-
|
351
|
-
template<class Act, class Args>
|
352
|
-
class lambda_functor_base<action<0, Act>, Args>
|
353
|
-
{
|
354
|
-
public:
|
355
|
-
// Args args; not needed
|
356
|
-
explicit lambda_functor_base(const Args& /*a*/) {}
|
357
|
-
|
358
|
-
template<class SigArgs> struct sig {
|
359
|
-
typedef typename return_type_N<Act, null_type>::type type;
|
360
|
-
};
|
361
|
-
|
362
|
-
template<class RET, CALL_TEMPLATE_ARGS>
|
363
|
-
RET call(CALL_FORMAL_ARGS) const {
|
364
|
-
CALL_USE_ARGS;
|
365
|
-
return Act::template apply<RET>();
|
366
|
-
}
|
367
|
-
};
|
368
|
-
|
369
|
-
|
370
|
-
#if defined BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART
|
371
|
-
#error "Multiple defines of BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART"
|
372
|
-
#endif
|
373
|
-
|
374
|
-
|
375
|
-
#define BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(ARITY) \
|
376
|
-
template<class Act, class Args> \
|
377
|
-
class lambda_functor_base<action<ARITY, Act>, Args> \
|
378
|
-
{ \
|
379
|
-
public: \
|
380
|
-
Args args; \
|
381
|
-
\
|
382
|
-
explicit lambda_functor_base(const Args& a) : args(a) {} \
|
383
|
-
\
|
384
|
-
template<class SigArgs> struct sig { \
|
385
|
-
typedef typename \
|
386
|
-
detail::deduce_argument_types<Args, SigArgs>::type rets_t; \
|
387
|
-
public: \
|
388
|
-
typedef typename \
|
389
|
-
return_type_N_prot<Act, rets_t>::type type; \
|
390
|
-
}; \
|
391
|
-
\
|
392
|
-
\
|
393
|
-
template<class RET, CALL_TEMPLATE_ARGS> \
|
394
|
-
RET call(CALL_FORMAL_ARGS) const { \
|
395
|
-
using boost::tuples::get; \
|
396
|
-
using detail::constify_rvals; \
|
397
|
-
using detail::r_select; \
|
398
|
-
using detail::element_or_null; \
|
399
|
-
using detail::deduce_argument_types;
|
400
|
-
|
401
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(1)
|
402
|
-
|
403
|
-
typedef typename
|
404
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
405
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
406
|
-
|
407
|
-
return Act::template apply<RET>(
|
408
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS))
|
409
|
-
);
|
410
|
-
}
|
411
|
-
};
|
412
|
-
|
413
|
-
|
414
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(2)
|
415
|
-
|
416
|
-
typedef typename
|
417
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
418
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
419
|
-
typedef typename element_or_null<1, rets_t>::type rt1;
|
420
|
-
|
421
|
-
return Act::template apply<RET>(
|
422
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS)),
|
423
|
-
constify_rvals<rt1>::go(r_select<rt1>::go(get<1>(args), CALL_ACTUAL_ARGS))
|
424
|
-
);
|
425
|
-
}
|
426
|
-
};
|
427
|
-
|
428
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(3)
|
429
|
-
|
430
|
-
typedef typename
|
431
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
432
|
-
|
433
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
434
|
-
typedef typename element_or_null<1, rets_t>::type rt1;
|
435
|
-
typedef typename element_or_null<2, rets_t>::type rt2;
|
436
|
-
|
437
|
-
return Act::template apply<RET>(
|
438
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS)),
|
439
|
-
constify_rvals<rt1>::go(r_select<rt1>::go(get<1>(args), CALL_ACTUAL_ARGS)),
|
440
|
-
constify_rvals<rt2>::go(r_select<rt2>::go(get<2>(args), CALL_ACTUAL_ARGS))
|
441
|
-
);
|
442
|
-
}
|
443
|
-
};
|
444
|
-
|
445
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(4)
|
446
|
-
typedef typename
|
447
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
448
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
449
|
-
typedef typename element_or_null<1, rets_t>::type rt1;
|
450
|
-
typedef typename element_or_null<2, rets_t>::type rt2;
|
451
|
-
typedef typename element_or_null<3, rets_t>::type rt3;
|
452
|
-
|
453
|
-
return Act::template apply<RET>(
|
454
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS)),
|
455
|
-
constify_rvals<rt1>::go(r_select<rt1>::go(get<1>(args), CALL_ACTUAL_ARGS)),
|
456
|
-
constify_rvals<rt2>::go(r_select<rt2>::go(get<2>(args), CALL_ACTUAL_ARGS)),
|
457
|
-
constify_rvals<rt3>::go(r_select<rt3>::go(get<3>(args), CALL_ACTUAL_ARGS))
|
458
|
-
);
|
459
|
-
}
|
460
|
-
};
|
461
|
-
|
462
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(5)
|
463
|
-
typedef typename
|
464
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
465
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
466
|
-
typedef typename element_or_null<1, rets_t>::type rt1;
|
467
|
-
typedef typename element_or_null<2, rets_t>::type rt2;
|
468
|
-
typedef typename element_or_null<3, rets_t>::type rt3;
|
469
|
-
typedef typename element_or_null<4, rets_t>::type rt4;
|
470
|
-
|
471
|
-
return Act::template apply<RET>(
|
472
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS)),
|
473
|
-
constify_rvals<rt1>::go(r_select<rt1>::go(get<1>(args), CALL_ACTUAL_ARGS)),
|
474
|
-
constify_rvals<rt2>::go(r_select<rt2>::go(get<2>(args), CALL_ACTUAL_ARGS)),
|
475
|
-
constify_rvals<rt3>::go(r_select<rt3>::go(get<3>(args), CALL_ACTUAL_ARGS)),
|
476
|
-
constify_rvals<rt4>::go(r_select<rt4>::go(get<4>(args), CALL_ACTUAL_ARGS))
|
477
|
-
);
|
478
|
-
}
|
479
|
-
};
|
480
|
-
|
481
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(6)
|
482
|
-
|
483
|
-
typedef typename
|
484
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
485
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
486
|
-
typedef typename element_or_null<1, rets_t>::type rt1;
|
487
|
-
typedef typename element_or_null<2, rets_t>::type rt2;
|
488
|
-
typedef typename element_or_null<3, rets_t>::type rt3;
|
489
|
-
typedef typename element_or_null<4, rets_t>::type rt4;
|
490
|
-
typedef typename element_or_null<5, rets_t>::type rt5;
|
491
|
-
|
492
|
-
|
493
|
-
return Act::template apply<RET>(
|
494
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS)),
|
495
|
-
constify_rvals<rt1>::go(r_select<rt1>::go(get<1>(args), CALL_ACTUAL_ARGS)),
|
496
|
-
constify_rvals<rt2>::go(r_select<rt2>::go(get<2>(args), CALL_ACTUAL_ARGS)),
|
497
|
-
constify_rvals<rt3>::go(r_select<rt3>::go(get<3>(args), CALL_ACTUAL_ARGS)),
|
498
|
-
constify_rvals<rt4>::go(r_select<rt4>::go(get<4>(args), CALL_ACTUAL_ARGS)),
|
499
|
-
constify_rvals<rt5>::go(r_select<rt5>::go(get<5>(args), CALL_ACTUAL_ARGS))
|
500
|
-
);
|
501
|
-
}
|
502
|
-
};
|
503
|
-
|
504
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(7)
|
505
|
-
typedef typename
|
506
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
507
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
508
|
-
typedef typename element_or_null<1, rets_t>::type rt1;
|
509
|
-
typedef typename element_or_null<2, rets_t>::type rt2;
|
510
|
-
typedef typename element_or_null<3, rets_t>::type rt3;
|
511
|
-
typedef typename element_or_null<4, rets_t>::type rt4;
|
512
|
-
typedef typename element_or_null<5, rets_t>::type rt5;
|
513
|
-
typedef typename element_or_null<6, rets_t>::type rt6;
|
514
|
-
|
515
|
-
|
516
|
-
return Act::template apply<RET>(
|
517
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS)),
|
518
|
-
constify_rvals<rt1>::go(r_select<rt1>::go(get<1>(args), CALL_ACTUAL_ARGS)),
|
519
|
-
constify_rvals<rt2>::go(r_select<rt2>::go(get<2>(args), CALL_ACTUAL_ARGS)),
|
520
|
-
constify_rvals<rt3>::go(r_select<rt3>::go(get<3>(args), CALL_ACTUAL_ARGS)),
|
521
|
-
constify_rvals<rt4>::go(r_select<rt4>::go(get<4>(args), CALL_ACTUAL_ARGS)),
|
522
|
-
constify_rvals<rt5>::go(r_select<rt5>::go(get<5>(args), CALL_ACTUAL_ARGS)),
|
523
|
-
constify_rvals<rt6>::go(r_select<rt6>::go(get<6>(args), CALL_ACTUAL_ARGS))
|
524
|
-
);
|
525
|
-
}
|
526
|
-
};
|
527
|
-
|
528
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(8)
|
529
|
-
typedef typename
|
530
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
531
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
532
|
-
typedef typename element_or_null<1, rets_t>::type rt1;
|
533
|
-
typedef typename element_or_null<2, rets_t>::type rt2;
|
534
|
-
typedef typename element_or_null<3, rets_t>::type rt3;
|
535
|
-
typedef typename element_or_null<4, rets_t>::type rt4;
|
536
|
-
typedef typename element_or_null<5, rets_t>::type rt5;
|
537
|
-
typedef typename element_or_null<6, rets_t>::type rt6;
|
538
|
-
typedef typename element_or_null<7, rets_t>::type rt7;
|
539
|
-
|
540
|
-
return Act::template apply<RET>(
|
541
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS)),
|
542
|
-
constify_rvals<rt1>::go(r_select<rt1>::go(get<1>(args), CALL_ACTUAL_ARGS)),
|
543
|
-
constify_rvals<rt2>::go(r_select<rt2>::go(get<2>(args), CALL_ACTUAL_ARGS)),
|
544
|
-
constify_rvals<rt3>::go(r_select<rt3>::go(get<3>(args), CALL_ACTUAL_ARGS)),
|
545
|
-
constify_rvals<rt4>::go(r_select<rt4>::go(get<4>(args), CALL_ACTUAL_ARGS)),
|
546
|
-
constify_rvals<rt5>::go(r_select<rt5>::go(get<5>(args), CALL_ACTUAL_ARGS)),
|
547
|
-
constify_rvals<rt6>::go(r_select<rt6>::go(get<6>(args), CALL_ACTUAL_ARGS)),
|
548
|
-
constify_rvals<rt7>::go(r_select<rt7>::go(get<7>(args), CALL_ACTUAL_ARGS))
|
549
|
-
);
|
550
|
-
}
|
551
|
-
};
|
552
|
-
|
553
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(9)
|
554
|
-
typedef typename
|
555
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
556
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
557
|
-
typedef typename element_or_null<1, rets_t>::type rt1;
|
558
|
-
typedef typename element_or_null<2, rets_t>::type rt2;
|
559
|
-
typedef typename element_or_null<3, rets_t>::type rt3;
|
560
|
-
typedef typename element_or_null<4, rets_t>::type rt4;
|
561
|
-
typedef typename element_or_null<5, rets_t>::type rt5;
|
562
|
-
typedef typename element_or_null<6, rets_t>::type rt6;
|
563
|
-
typedef typename element_or_null<7, rets_t>::type rt7;
|
564
|
-
typedef typename element_or_null<8, rets_t>::type rt8;
|
565
|
-
|
566
|
-
return Act::template apply<RET>(
|
567
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS)),
|
568
|
-
constify_rvals<rt1>::go(r_select<rt1>::go(get<1>(args), CALL_ACTUAL_ARGS)),
|
569
|
-
constify_rvals<rt2>::go(r_select<rt2>::go(get<2>(args), CALL_ACTUAL_ARGS)),
|
570
|
-
constify_rvals<rt3>::go(r_select<rt3>::go(get<3>(args), CALL_ACTUAL_ARGS)),
|
571
|
-
constify_rvals<rt4>::go(r_select<rt4>::go(get<4>(args), CALL_ACTUAL_ARGS)),
|
572
|
-
constify_rvals<rt5>::go(r_select<rt5>::go(get<5>(args), CALL_ACTUAL_ARGS)),
|
573
|
-
constify_rvals<rt6>::go(r_select<rt6>::go(get<6>(args), CALL_ACTUAL_ARGS)),
|
574
|
-
constify_rvals<rt7>::go(r_select<rt7>::go(get<7>(args), CALL_ACTUAL_ARGS)),
|
575
|
-
constify_rvals<rt8>::go(r_select<rt8>::go(get<8>(args), CALL_ACTUAL_ARGS))
|
576
|
-
);
|
577
|
-
}
|
578
|
-
};
|
579
|
-
|
580
|
-
BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART(10)
|
581
|
-
typedef typename
|
582
|
-
deduce_argument_types<Args, tuple<CALL_REFERENCE_TYPES> >::type rets_t;
|
583
|
-
typedef typename element_or_null<0, rets_t>::type rt0;
|
584
|
-
typedef typename element_or_null<1, rets_t>::type rt1;
|
585
|
-
typedef typename element_or_null<2, rets_t>::type rt2;
|
586
|
-
typedef typename element_or_null<3, rets_t>::type rt3;
|
587
|
-
typedef typename element_or_null<4, rets_t>::type rt4;
|
588
|
-
typedef typename element_or_null<5, rets_t>::type rt5;
|
589
|
-
typedef typename element_or_null<6, rets_t>::type rt6;
|
590
|
-
typedef typename element_or_null<7, rets_t>::type rt7;
|
591
|
-
typedef typename element_or_null<8, rets_t>::type rt8;
|
592
|
-
typedef typename element_or_null<9, rets_t>::type rt9;
|
593
|
-
|
594
|
-
return Act::template apply<RET>(
|
595
|
-
constify_rvals<rt0>::go(r_select<rt0>::go(get<0>(args), CALL_ACTUAL_ARGS)),
|
596
|
-
constify_rvals<rt1>::go(r_select<rt1>::go(get<1>(args), CALL_ACTUAL_ARGS)),
|
597
|
-
constify_rvals<rt2>::go(r_select<rt2>::go(get<2>(args), CALL_ACTUAL_ARGS)),
|
598
|
-
constify_rvals<rt3>::go(r_select<rt3>::go(get<3>(args), CALL_ACTUAL_ARGS)),
|
599
|
-
constify_rvals<rt4>::go(r_select<rt4>::go(get<4>(args), CALL_ACTUAL_ARGS)),
|
600
|
-
constify_rvals<rt5>::go(r_select<rt5>::go(get<5>(args), CALL_ACTUAL_ARGS)),
|
601
|
-
constify_rvals<rt6>::go(r_select<rt6>::go(get<6>(args), CALL_ACTUAL_ARGS)),
|
602
|
-
constify_rvals<rt7>::go(r_select<rt7>::go(get<7>(args), CALL_ACTUAL_ARGS)),
|
603
|
-
constify_rvals<rt8>::go(r_select<rt8>::go(get<8>(args), CALL_ACTUAL_ARGS)),
|
604
|
-
constify_rvals<rt9>::go(r_select<rt9>::go(get<9>(args), CALL_ACTUAL_ARGS))
|
605
|
-
);
|
606
|
-
}
|
607
|
-
};
|
608
|
-
|
609
|
-
#undef BOOST_LAMBDA_LAMBDA_FUNCTOR_BASE_FIRST_PART
|
610
|
-
|
611
|
-
|
612
|
-
} // namespace lambda
|
613
|
-
} // namespace boost
|
614
|
-
|
615
|
-
#endif
|