passenger 3.9.1.beta → 3.9.2.beta
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.
- data/.travis.yml +13 -0
- data/CONTRIBUTING.md +287 -0
- data/INSTALL.md +7 -0
- data/NEWS +32 -0
- data/README.md +46 -0
- data/Rakefile +2 -2
- data/bin/passenger +1 -1
- data/bin/passenger-config +1 -1
- data/bin/passenger-install-apache2-module +1 -1
- data/bin/passenger-install-nginx-module +1 -1
- data/bin/passenger-memory-stats +1 -1
- data/bin/passenger-status +1 -1
- data/build/agents.rb +7 -7
- data/build/apache2.rb +2 -2
- data/build/basics.rb +3 -7
- data/build/common_library.rb +14 -7
- data/build/cplusplus_support.rb +1 -1
- data/build/cxx_tests.rb +19 -7
- data/build/documentation.rb +1 -1
- data/build/integration_tests.rb +2 -2
- data/build/misc.rb +6 -6
- data/build/nginx.rb +1 -1
- data/build/oxt_tests.rb +1 -1
- data/build/packaging.rb +13 -23
- data/build/rake_extensions.rb +1 -1
- data/build/rpm.rb +1 -1
- data/build/ruby_extension.rb +2 -2
- data/build/ruby_tests.rb +4 -4
- data/build/test_basics.rb +15 -2
- data/dev/copy_boost_headers.rb +18 -8
- data/dev/find_owner_pipe_leaks.rb +1 -1
- data/dev/render_error_pages.rb +1 -1
- data/dev/run_travis.sh +39 -0
- data/doc/Architectural overview.html +55 -21
- data/doc/{DebuggingAndStressTesting.txt.md → DebuggingAndStressTesting.md} +12 -1
- data/doc/Security of user switching support.html +47 -16
- data/doc/Users guide Apache.html +802 -378
- data/doc/Users guide Apache.idmap.txt +85 -209
- data/doc/Users guide Apache.txt +65 -338
- data/doc/Users guide Nginx.html +715 -252
- data/doc/Users guide Nginx.idmap.txt +71 -147
- data/doc/Users guide Nginx.txt +29 -245
- data/doc/Users guide Standalone.html +45 -14
- data/doc/Users guide Standalone.idmap.txt +0 -2
- data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +1 -1
- data/doc/users_guide_snippets/installation.txt +604 -0
- data/doc/users_guide_snippets/support_information.txt +5 -4
- data/doc/users_guide_snippets/tips.txt +54 -1
- data/ext/apache2/Bucket.cpp +1 -1
- data/ext/apache2/Bucket.h +1 -1
- data/ext/apache2/Configuration.cpp +2 -14
- data/ext/apache2/Configuration.h +1 -1
- data/ext/apache2/Configuration.hpp +3 -22
- data/ext/apache2/DirectoryMapper.h +1 -1
- data/ext/apache2/Hooks.cpp +5 -5
- data/ext/apache2/Hooks.h +1 -1
- data/ext/apache2/mod_passenger.c +1 -1
- data/ext/boost/aligned_storage.hpp +181 -0
- data/ext/boost/array.hpp +446 -0
- data/ext/boost/cerrno.hpp +331 -0
- data/ext/boost/chrono/ceil.hpp +36 -0
- data/ext/boost/chrono/clock_string.hpp +25 -0
- data/ext/boost/chrono/config.hpp +215 -0
- data/ext/boost/chrono/detail/is_evenly_divisible_by.hpp +31 -0
- data/ext/boost/chrono/detail/static_assert.hpp +30 -0
- data/ext/boost/chrono/detail/system.hpp +29 -0
- data/ext/boost/chrono/duration.hpp +795 -0
- data/ext/boost/chrono/system_clocks.hpp +233 -0
- data/ext/boost/chrono/time_point.hpp +379 -0
- data/ext/boost/concept_check.hpp +5 -5
- data/ext/boost/config/compiler/borland.hpp +29 -27
- data/ext/boost/config/compiler/clang.hpp +40 -26
- data/ext/boost/config/compiler/codegear.hpp +20 -19
- data/ext/boost/config/compiler/common_edg.hpp +27 -25
- data/ext/boost/config/compiler/cray.hpp +24 -22
- data/ext/boost/config/compiler/digitalmars.hpp +26 -24
- data/ext/boost/config/compiler/gcc.hpp +32 -30
- data/ext/boost/config/compiler/gcc_xml.hpp +26 -25
- data/ext/boost/config/compiler/hp_acc.hpp +26 -24
- data/ext/boost/config/compiler/intel.hpp +26 -24
- data/ext/boost/config/compiler/metrowerks.hpp +27 -25
- data/ext/boost/config/compiler/mpw.hpp +27 -25
- data/ext/boost/config/compiler/pathscale.hpp +41 -41
- data/ext/boost/config/compiler/pgi.hpp +70 -29
- data/ext/boost/config/compiler/sunpro_cc.hpp +27 -25
- data/ext/boost/config/compiler/vacpp.hpp +36 -26
- data/ext/boost/config/compiler/visualc.hpp +80 -57
- data/ext/boost/config/stdlib/dinkumware.hpp +25 -22
- data/ext/boost/config/stdlib/libcomo.hpp +23 -20
- data/ext/boost/config/stdlib/libcpp.hpp +5 -4
- data/ext/boost/config/stdlib/libstdcpp3.hpp +34 -25
- data/ext/boost/config/stdlib/modena.hpp +23 -20
- data/ext/boost/config/stdlib/msl.hpp +23 -20
- data/ext/boost/config/stdlib/roguewave.hpp +23 -20
- data/ext/boost/config/stdlib/sgi.hpp +23 -20
- data/ext/boost/config/stdlib/stlport.hpp +23 -24
- data/ext/boost/config/stdlib/vacpp.hpp +23 -20
- data/ext/boost/config/suffix.hpp +266 -75
- data/ext/boost/container/container_fwd.hpp +39 -43
- data/ext/boost/date_time/adjust_functors.hpp +1 -1
- data/ext/boost/date_time/c_time.hpp +1 -1
- data/ext/boost/date_time/compiler_config.hpp +1 -1
- data/ext/boost/date_time/constrained_value.hpp +1 -1
- data/ext/boost/date_time/date.hpp +3 -3
- data/ext/boost/date_time/date_clock_device.hpp +1 -1
- data/ext/boost/date_time/date_defs.hpp +1 -1
- data/ext/boost/date_time/date_duration.hpp +9 -9
- data/ext/boost/date_time/date_duration_types.hpp +1 -1
- data/ext/boost/date_time/date_facet.hpp +7 -4
- data/ext/boost/date_time/date_format_simple.hpp +1 -1
- data/ext/boost/date_time/date_formatting.hpp +4 -2
- data/ext/boost/date_time/date_formatting_limited.hpp +1 -1
- data/ext/boost/date_time/date_formatting_locales.hpp +1 -1
- data/ext/boost/date_time/date_generator_formatter.hpp +1 -1
- data/ext/boost/date_time/date_generator_parser.hpp +1 -1
- data/ext/boost/date_time/date_generators.hpp +35 -35
- data/ext/boost/date_time/date_iterator.hpp +15 -15
- data/ext/boost/date_time/date_names_put.hpp +26 -26
- data/ext/boost/date_time/date_parsing.hpp +3 -1
- data/ext/boost/date_time/dst_rules.hpp +2 -2
- data/ext/boost/date_time/filetime_functions.hpp +1 -1
- data/ext/boost/date_time/format_date_parser.hpp +1 -7
- data/ext/boost/date_time/gregorian/conversion.hpp +1 -1
- data/ext/boost/date_time/gregorian/formatters.hpp +1 -1
- data/ext/boost/date_time/gregorian/formatters_limited.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_calendar.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_date.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_day.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_day_of_year.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_duration.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_duration_types.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_month.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_weekday.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_year.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_ymd.hpp +1 -1
- data/ext/boost/date_time/gregorian/gregorian.hpp +1 -1
- data/ext/boost/date_time/gregorian/gregorian_io.hpp +1 -1
- data/ext/boost/date_time/gregorian/gregorian_types.hpp +1 -1
- data/ext/boost/date_time/gregorian/parsers.hpp +1 -1
- data/ext/boost/date_time/gregorian_calendar.hpp +1 -1
- data/ext/boost/date_time/gregorian_calendar.ipp +1 -1
- data/ext/boost/date_time/int_adapter.hpp +1 -1
- data/ext/boost/date_time/iso_format.hpp +1 -1
- data/ext/boost/date_time/locale_config.hpp +1 -1
- data/ext/boost/date_time/microsec_time_clock.hpp +1 -1
- data/ext/boost/date_time/parse_format_base.hpp +1 -1
- data/ext/boost/date_time/period.hpp +1 -1
- data/ext/boost/date_time/period_formatter.hpp +5 -5
- data/ext/boost/date_time/period_parser.hpp +1 -1
- data/ext/boost/date_time/posix_time/conversion.hpp +1 -1
- data/ext/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time_config.hpp +2 -2
- data/ext/boost/date_time/posix_time/posix_time_duration.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time_io.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time_system.hpp +1 -1
- data/ext/boost/date_time/posix_time/ptime.hpp +1 -1
- data/ext/boost/date_time/posix_time/time_formatters.hpp +1 -1
- data/ext/boost/date_time/posix_time/time_parsers.hpp +1 -1
- data/ext/boost/date_time/posix_time/time_period.hpp +1 -1
- data/ext/boost/date_time/special_defs.hpp +1 -1
- data/ext/boost/date_time/special_values_formatter.hpp +1 -1
- data/ext/boost/date_time/string_convert.hpp +1 -1
- data/ext/boost/date_time/string_parse_tree.hpp +1 -1
- data/ext/boost/date_time/strings_from_facet.hpp +1 -1
- data/ext/boost/date_time/time.hpp +1 -1
- data/ext/boost/date_time/time_clock.hpp +1 -1
- data/ext/boost/date_time/time_defs.hpp +1 -1
- data/ext/boost/date_time/time_duration.hpp +17 -6
- data/ext/boost/date_time/time_facet.hpp +1 -1
- data/ext/boost/date_time/time_formatting_streams.hpp +1 -1
- data/ext/boost/date_time/time_iterator.hpp +17 -17
- data/ext/boost/date_time/time_parsing.hpp +6 -3
- data/ext/boost/date_time/time_resolution_traits.hpp +1 -1
- data/ext/boost/date_time/time_system_counted.hpp +1 -1
- data/ext/boost/date_time/time_system_split.hpp +1 -1
- data/ext/boost/date_time/wrapping_int.hpp +27 -27
- data/ext/boost/date_time/year_month_day.hpp +1 -1
- data/ext/boost/detail/container_fwd.hpp +162 -0
- data/ext/boost/detail/is_incrementable.hpp +134 -0
- data/ext/boost/detail/scoped_enum_emulation.hpp +337 -0
- data/ext/boost/exception/detail/attribute_noreturn.hpp +1 -1
- data/ext/boost/exception/detail/error_info_impl.hpp +2 -1
- data/ext/boost/exception/detail/exception_ptr.hpp +7 -2
- data/ext/boost/exception/exception.hpp +29 -2
- data/ext/boost/exception/info.hpp +1 -1
- data/ext/boost/foreach.hpp +1128 -0
- data/ext/boost/foreach_fwd.hpp +51 -0
- data/ext/boost/function/function_template.hpp +50 -1
- data/ext/boost/functional/hash.hpp +7 -0
- data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +29 -0
- data/ext/boost/functional/hash/detail/float_functions.hpp +246 -0
- data/ext/boost/functional/hash/detail/hash_float.hpp +268 -0
- data/ext/boost/functional/hash/detail/limits.hpp +61 -0
- data/ext/boost/functional/hash/extensions.hpp +367 -0
- data/ext/boost/functional/hash/hash.hpp +509 -0
- data/ext/boost/functional/hash/hash_fwd.hpp +40 -0
- data/ext/boost/functional/hash_fwd.hpp +7 -0
- data/ext/boost/indirect_reference.hpp +43 -0
- data/ext/boost/integer.hpp +19 -15
- data/ext/boost/integer/static_log2.hpp +127 -0
- data/ext/boost/integer_traits.hpp +1 -1
- data/ext/boost/iterator/iterator_facade.hpp +32 -36
- data/ext/boost/iterator/reverse_iterator.hpp +1 -1
- data/ext/boost/iterator/transform_iterator.hpp +1 -1
- data/ext/boost/lambda/core.hpp +79 -0
- data/ext/boost/lambda/detail/actions.hpp +174 -0
- data/ext/boost/lambda/detail/arity_code.hpp +110 -0
- data/ext/boost/lambda/detail/function_adaptors.hpp +789 -0
- data/ext/boost/lambda/detail/is_instance_of.hpp +104 -0
- data/ext/boost/lambda/detail/lambda_config.hpp +48 -0
- data/ext/boost/lambda/detail/lambda_functor_base.hpp +615 -0
- data/ext/boost/lambda/detail/lambda_functors.hpp +324 -0
- data/ext/boost/lambda/detail/lambda_fwd.hpp +74 -0
- data/ext/boost/lambda/detail/lambda_traits.hpp +578 -0
- data/ext/boost/lambda/detail/member_ptr.hpp +737 -0
- data/ext/boost/lambda/detail/operator_actions.hpp +139 -0
- data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +271 -0
- data/ext/boost/lambda/detail/operator_return_type_traits.hpp +917 -0
- data/ext/boost/lambda/detail/operators.hpp +370 -0
- data/ext/boost/lambda/detail/ret.hpp +325 -0
- data/ext/boost/lambda/detail/return_type_traits.hpp +282 -0
- data/ext/boost/lambda/detail/select_functions.hpp +74 -0
- data/ext/boost/lambda/lambda.hpp +34 -0
- data/ext/boost/lexical_cast.hpp +807 -497
- data/ext/boost/libs/system/src/error_code.cpp +430 -0
- data/ext/boost/libs/system/src/local_free_on_destruction.hpp +40 -0
- data/ext/boost/libs/thread/src/future.cpp +61 -0
- data/ext/boost/{src → libs/thread/src}/pthread/once.cpp +28 -9
- data/ext/boost/{src → libs/thread/src}/pthread/thread.cpp +139 -47
- data/ext/boost/{src → libs/thread/src}/pthread/timeconv.inl +0 -0
- data/ext/boost/{src → libs/thread/src}/tss_null.cpp +2 -2
- data/ext/boost/math/policies/policy.hpp +4 -4
- data/ext/boost/math/special_functions/fpclassify.hpp +10 -6
- data/ext/boost/math/special_functions/math_fwd.hpp +226 -0
- data/ext/boost/math/tools/config.hpp +10 -1
- data/ext/boost/move/move.hpp +70 -19
- data/ext/boost/mpl/O1_size.hpp +1 -1
- data/ext/boost/mpl/O1_size_fwd.hpp +1 -1
- data/ext/boost/mpl/accumulate.hpp +39 -0
- data/ext/boost/mpl/advance.hpp +1 -1
- data/ext/boost/mpl/advance_fwd.hpp +1 -1
- data/ext/boost/mpl/alias.hpp +21 -0
- data/ext/boost/mpl/always.hpp +1 -1
- data/ext/boost/mpl/and.hpp +1 -1
- data/ext/boost/mpl/apply.hpp +1 -1
- data/ext/boost/mpl/apply_fwd.hpp +1 -1
- data/ext/boost/mpl/apply_wrap.hpp +1 -1
- data/ext/boost/mpl/arg.hpp +1 -1
- data/ext/boost/mpl/arg_fwd.hpp +1 -1
- data/ext/boost/mpl/arithmetic.hpp +25 -0
- data/ext/boost/mpl/as_sequence.hpp +38 -0
- data/ext/boost/mpl/assert.hpp +1 -1
- data/ext/boost/mpl/at.hpp +1 -1
- data/ext/boost/mpl/at_fwd.hpp +1 -1
- data/ext/boost/mpl/aux_/O1_size_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/adl_barrier.hpp +1 -1
- data/ext/boost/mpl/aux_/advance_backward.hpp +1 -1
- data/ext/boost/mpl/aux_/advance_forward.hpp +1 -1
- data/ext/boost/mpl/aux_/apply_1st.hpp +35 -0
- data/ext/boost/mpl/aux_/arg_typedef.hpp +1 -1
- data/ext/boost/mpl/aux_/arithmetic_op.hpp +1 -1
- data/ext/boost/mpl/aux_/arity.hpp +1 -1
- data/ext/boost/mpl/aux_/arity_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/at_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/back_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/basic_bind.hpp +21 -0
- data/ext/boost/mpl/aux_/begin_end_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/clear_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/common_name_wknd.hpp +1 -1
- data/ext/boost/mpl/aux_/comparison_op.hpp +1 -1
- data/ext/boost/mpl/aux_/config/adl.hpp +1 -1
- data/ext/boost/mpl/aux_/config/arrays.hpp +1 -1
- data/ext/boost/mpl/aux_/config/bind.hpp +1 -1
- data/ext/boost/mpl/aux_/config/compiler.hpp +1 -1
- data/ext/boost/mpl/aux_/config/ctps.hpp +1 -1
- data/ext/boost/mpl/aux_/config/dependent_nttp.hpp +35 -0
- data/ext/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp +27 -0
- data/ext/boost/mpl/aux_/config/dtp.hpp +1 -1
- data/ext/boost/mpl/aux_/config/eti.hpp +1 -1
- data/ext/boost/mpl/aux_/config/forwarding.hpp +1 -1
- data/ext/boost/mpl/aux_/config/gcc.hpp +1 -1
- data/ext/boost/mpl/aux_/config/has_apply.hpp +1 -1
- data/ext/boost/mpl/aux_/config/has_xxx.hpp +1 -1
- data/ext/boost/mpl/aux_/config/integral.hpp +1 -1
- data/ext/boost/mpl/aux_/config/intel.hpp +1 -1
- data/ext/boost/mpl/aux_/config/lambda.hpp +1 -1
- data/ext/boost/mpl/aux_/config/msvc.hpp +1 -1
- data/ext/boost/mpl/aux_/config/msvc_typename.hpp +1 -1
- data/ext/boost/mpl/aux_/config/nttp.hpp +1 -1
- data/ext/boost/mpl/aux_/config/operators.hpp +33 -0
- data/ext/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
- data/ext/boost/mpl/aux_/config/pp_counter.hpp +1 -1
- data/ext/boost/mpl/aux_/config/preprocessor.hpp +1 -1
- data/ext/boost/mpl/aux_/config/static_constant.hpp +1 -1
- data/ext/boost/mpl/aux_/config/ttp.hpp +1 -1
- data/ext/boost/mpl/aux_/config/typeof.hpp +1 -1
- data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +1 -1
- data/ext/boost/mpl/aux_/config/workaround.hpp +1 -1
- data/ext/boost/mpl/aux_/contains_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/count_args.hpp +105 -0
- data/ext/boost/mpl/aux_/count_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/empty_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/erase_impl.hpp +69 -0
- data/ext/boost/mpl/aux_/erase_key_impl.hpp +32 -0
- data/ext/boost/mpl/aux_/filter_iter.hpp +140 -0
- data/ext/boost/mpl/aux_/fold_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/fold_impl_body.hpp +365 -0
- data/ext/boost/mpl/aux_/fold_op.hpp +37 -0
- data/ext/boost/mpl/aux_/fold_pred.hpp +37 -0
- data/ext/boost/mpl/aux_/front_impl.hpp +41 -0
- data/ext/boost/mpl/aux_/full_lambda.hpp +1 -1
- data/ext/boost/mpl/aux_/has_apply.hpp +1 -1
- data/ext/boost/mpl/aux_/has_begin.hpp +1 -1
- data/ext/boost/mpl/aux_/has_key_impl.hpp +34 -0
- data/ext/boost/mpl/aux_/has_rebind.hpp +99 -0
- data/ext/boost/mpl/aux_/has_size.hpp +1 -1
- data/ext/boost/mpl/aux_/has_tag.hpp +1 -1
- data/ext/boost/mpl/aux_/has_type.hpp +1 -1
- data/ext/boost/mpl/aux_/include_preprocessed.hpp +1 -1
- data/ext/boost/mpl/aux_/insert_impl.hpp +68 -0
- data/ext/boost/mpl/aux_/insert_range_impl.hpp +77 -0
- data/ext/boost/mpl/aux_/inserter_algorithm.hpp +1 -1
- data/ext/boost/mpl/aux_/integral_wrapper.hpp +1 -1
- data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_apply.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_fold_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_push_front.hpp +36 -0
- data/ext/boost/mpl/aux_/joint_iter.hpp +120 -0
- data/ext/boost/mpl/aux_/lambda_arity_param.hpp +1 -1
- data/ext/boost/mpl/aux_/lambda_no_ctps.hpp +193 -0
- data/ext/boost/mpl/aux_/lambda_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/lambda_support.hpp +1 -1
- data/ext/boost/mpl/aux_/largest_int.hpp +1 -1
- data/ext/boost/mpl/aux_/logical_op.hpp +165 -0
- data/ext/boost/mpl/aux_/msvc_dtw.hpp +68 -0
- data/ext/boost/mpl/aux_/msvc_eti_base.hpp +1 -1
- data/ext/boost/mpl/aux_/msvc_is_class.hpp +58 -0
- data/ext/boost/mpl/aux_/msvc_never_true.hpp +1 -1
- data/ext/boost/mpl/aux_/msvc_type.hpp +1 -1
- data/ext/boost/mpl/aux_/na.hpp +1 -1
- data/ext/boost/mpl/aux_/na_assert.hpp +1 -1
- data/ext/boost/mpl/aux_/na_fwd.hpp +1 -1
- data/ext/boost/mpl/aux_/na_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
- data/ext/boost/mpl/aux_/nttp_decl.hpp +1 -1
- data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +1 -1
- data/ext/boost/mpl/aux_/numeric_op.hpp +1 -1
- data/ext/boost/mpl/aux_/order_impl.hpp +76 -0
- data/ext/boost/mpl/aux_/overload_names.hpp +48 -0
- data/ext/boost/mpl/aux_/partition_op.hpp +58 -0
- data/ext/boost/mpl/aux_/pop_back_impl.hpp +34 -0
- data/ext/boost/mpl/aux_/pop_front_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp +461 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/arg.hpp +117 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp +300 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bind.hpp +397 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/inherit.hpp +139 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/quote.hpp +119 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp +306 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bind.hpp +403 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp +117 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp +300 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp +397 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp +139 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp +406 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bind.hpp +515 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp +53 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp +536 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp +440 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp +132 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp +132 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/and.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/apply.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp +247 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bind.hpp +432 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp +149 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp +149 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp +149 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/deque.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/divides.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp +293 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/greater.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp +293 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/less.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/list.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/map.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/minus.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp +115 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/or.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/plus.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp +343 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp +343 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/set.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/times.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp +109 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/vector.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/and.hpp +71 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/apply.hpp +160 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp +138 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bind.hpp +432 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp +151 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp +151 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp +151 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/deque.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/divides.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/greater.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/less.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/list.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/map.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/minus.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp +115 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/or.hpp +71 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/plus.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/quote.hpp +116 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/set.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/times.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp +109 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/vector.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp +440 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bind.hpp +561 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/and.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp +268 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp +50 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp +78 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp +486 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp +590 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp +134 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp +134 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp +134 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/list.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/map.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/or.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp +116 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/set.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/times.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp +109 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp +369 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp +466 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp +157 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp +157 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp +157 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/less.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp +111 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp +110 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp +110 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/times.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/and.hpp +64 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/apply.hpp +139 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp +440 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bind.hpp +561 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bitand.hpp +142 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bitor.hpp +142 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bitxor.hpp +142 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/divides.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/equal_to.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/greater.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/inherit.hpp +125 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp +228 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/less.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/less_equal.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/minus.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/modulus.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/or.hpp +64 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/plus.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/shift_left.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/shift_right.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/template_arity.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/times.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessor/add.hpp +65 -0
- data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/enum.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/ext_params.hpp +78 -0
- data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/is_seq.hpp +54 -0
- data/ext/boost/mpl/aux_/preprocessor/params.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/partial_spec_params.hpp +32 -0
- data/ext/boost/mpl/aux_/preprocessor/range.hpp +23 -0
- data/ext/boost/mpl/aux_/preprocessor/repeat.hpp +51 -0
- data/ext/boost/mpl/aux_/preprocessor/sub.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/token_equal.hpp +56 -0
- data/ext/boost/mpl/aux_/preprocessor/tuple.hpp +29 -0
- data/ext/boost/mpl/aux_/ptr_to_ref.hpp +46 -0
- data/ext/boost/mpl/aux_/push_back_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/push_front_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/range_c/O1_size.hpp +31 -0
- data/ext/boost/mpl/aux_/range_c/back.hpp +34 -0
- data/ext/boost/mpl/aux_/range_c/empty.hpp +37 -0
- data/ext/boost/mpl/aux_/range_c/front.hpp +33 -0
- data/ext/boost/mpl/aux_/range_c/iterator.hpp +106 -0
- data/ext/boost/mpl/aux_/range_c/size.hpp +37 -0
- data/ext/boost/mpl/aux_/range_c/tag.hpp +24 -0
- data/ext/boost/mpl/aux_/reverse_fold_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/reverse_fold_impl_body.hpp +412 -0
- data/ext/boost/mpl/aux_/reverse_iter_fold_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/sequence_wrapper.hpp +292 -0
- data/ext/boost/mpl/aux_/shift_op.hpp +87 -0
- data/ext/boost/mpl/aux_/single_element_iter.hpp +118 -0
- data/ext/boost/mpl/aux_/size_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/sort_impl.hpp +121 -0
- data/ext/boost/mpl/aux_/static_cast.hpp +1 -1
- data/ext/boost/mpl/aux_/template_arity.hpp +1 -1
- data/ext/boost/mpl/aux_/template_arity_fwd.hpp +1 -1
- data/ext/boost/mpl/aux_/test.hpp +32 -0
- data/ext/boost/mpl/aux_/test/assert.hpp +29 -0
- data/ext/boost/mpl/aux_/test/data.hpp +25 -0
- data/ext/boost/mpl/aux_/test/test_case.hpp +21 -0
- data/ext/boost/mpl/aux_/traits_lambda_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/transform_iter.hpp +123 -0
- data/ext/boost/mpl/aux_/type_wrapper.hpp +1 -1
- data/ext/boost/mpl/aux_/unwrap.hpp +47 -0
- data/ext/boost/mpl/aux_/value_wknd.hpp +1 -1
- data/ext/boost/mpl/aux_/yes_no.hpp +1 -1
- data/ext/boost/mpl/back.hpp +39 -0
- data/ext/boost/mpl/back_fwd.hpp +1 -1
- data/ext/boost/mpl/back_inserter.hpp +1 -1
- data/ext/boost/mpl/base.hpp +35 -0
- data/ext/boost/mpl/begin.hpp +19 -0
- data/ext/boost/mpl/begin_end.hpp +1 -1
- data/ext/boost/mpl/begin_end_fwd.hpp +1 -1
- data/ext/boost/mpl/bind.hpp +1 -1
- data/ext/boost/mpl/bind_fwd.hpp +1 -1
- data/ext/boost/mpl/bitand.hpp +45 -0
- data/ext/boost/mpl/bitor.hpp +45 -0
- data/ext/boost/mpl/bitwise.hpp +24 -0
- data/ext/boost/mpl/bitxor.hpp +23 -0
- data/ext/boost/mpl/bool.hpp +1 -1
- data/ext/boost/mpl/bool_fwd.hpp +1 -1
- data/ext/boost/mpl/char.hpp +22 -0
- data/ext/boost/mpl/char_fwd.hpp +27 -0
- data/ext/boost/mpl/clear.hpp +1 -1
- data/ext/boost/mpl/clear_fwd.hpp +1 -1
- data/ext/boost/mpl/comparison.hpp +1 -1
- data/ext/boost/mpl/contains.hpp +1 -1
- data/ext/boost/mpl/contains_fwd.hpp +1 -1
- data/ext/boost/mpl/copy.hpp +58 -0
- data/ext/boost/mpl/copy_if.hpp +96 -0
- data/ext/boost/mpl/count.hpp +40 -0
- data/ext/boost/mpl/count_fwd.hpp +24 -0
- data/ext/boost/mpl/count_if.hpp +79 -0
- data/ext/boost/mpl/deque.hpp +58 -0
- data/ext/boost/mpl/deref.hpp +1 -1
- data/ext/boost/mpl/distance.hpp +1 -1
- data/ext/boost/mpl/distance_fwd.hpp +1 -1
- data/ext/boost/mpl/divides.hpp +21 -0
- data/ext/boost/mpl/empty.hpp +39 -0
- data/ext/boost/mpl/empty_base.hpp +59 -0
- data/ext/boost/mpl/empty_fwd.hpp +1 -1
- data/ext/boost/mpl/empty_sequence.hpp +42 -0
- data/ext/boost/mpl/end.hpp +19 -0
- data/ext/boost/mpl/equal.hpp +112 -0
- data/ext/boost/mpl/equal_to.hpp +1 -1
- data/ext/boost/mpl/erase.hpp +42 -0
- data/ext/boost/mpl/erase_fwd.hpp +24 -0
- data/ext/boost/mpl/erase_key.hpp +41 -0
- data/ext/boost/mpl/erase_key_fwd.hpp +24 -0
- data/ext/boost/mpl/eval_if.hpp +1 -1
- data/ext/boost/mpl/filter_view.hpp +46 -0
- data/ext/boost/mpl/find.hpp +1 -1
- data/ext/boost/mpl/find_if.hpp +1 -1
- data/ext/boost/mpl/fold.hpp +1 -1
- data/ext/boost/mpl/for_each.hpp +116 -0
- data/ext/boost/mpl/front.hpp +39 -0
- data/ext/boost/mpl/front_fwd.hpp +1 -1
- data/ext/boost/mpl/front_inserter.hpp +1 -1
- data/ext/boost/mpl/greater.hpp +1 -1
- data/ext/boost/mpl/greater_equal.hpp +1 -1
- data/ext/boost/mpl/has_key.hpp +41 -0
- data/ext/boost/mpl/has_key_fwd.hpp +25 -0
- data/ext/boost/mpl/has_xxx.hpp +1 -1
- data/ext/boost/mpl/identity.hpp +1 -1
- data/ext/boost/mpl/if.hpp +1 -1
- data/ext/boost/mpl/index_if.hpp +60 -0
- data/ext/boost/mpl/index_of.hpp +39 -0
- data/ext/boost/mpl/inherit.hpp +229 -0
- data/ext/boost/mpl/inherit_linearly.hpp +39 -0
- data/ext/boost/mpl/insert.hpp +41 -0
- data/ext/boost/mpl/insert_fwd.hpp +24 -0
- data/ext/boost/mpl/insert_range.hpp +41 -0
- data/ext/boost/mpl/insert_range_fwd.hpp +24 -0
- data/ext/boost/mpl/inserter.hpp +1 -1
- data/ext/boost/mpl/int.hpp +1 -1
- data/ext/boost/mpl/int_fwd.hpp +1 -1
- data/ext/boost/mpl/integral_c.hpp +1 -1
- data/ext/boost/mpl/integral_c_fwd.hpp +1 -1
- data/ext/boost/mpl/integral_c_tag.hpp +1 -1
- data/ext/boost/mpl/is_placeholder.hpp +67 -0
- data/ext/boost/mpl/is_sequence.hpp +112 -0
- data/ext/boost/mpl/iter_fold.hpp +1 -1
- data/ext/boost/mpl/iter_fold_if.hpp +1 -1
- data/ext/boost/mpl/iterator_category.hpp +35 -0
- data/ext/boost/mpl/iterator_range.hpp +1 -1
- data/ext/boost/mpl/iterator_tags.hpp +1 -1
- data/ext/boost/mpl/joint_view.hpp +65 -0
- data/ext/boost/mpl/key_type.hpp +42 -0
- data/ext/boost/mpl/key_type_fwd.hpp +25 -0
- data/ext/boost/mpl/lambda.hpp +1 -1
- data/ext/boost/mpl/lambda_fwd.hpp +1 -1
- data/ext/boost/mpl/less.hpp +1 -1
- data/ext/boost/mpl/less_equal.hpp +1 -1
- data/ext/boost/mpl/limits/arity.hpp +1 -1
- data/ext/boost/mpl/limits/list.hpp +1 -1
- data/ext/boost/mpl/limits/map.hpp +21 -0
- data/ext/boost/mpl/limits/set.hpp +21 -0
- data/ext/boost/mpl/limits/string.hpp +21 -0
- data/ext/boost/mpl/limits/unrolling.hpp +21 -0
- data/ext/boost/mpl/limits/vector.hpp +1 -1
- data/ext/boost/mpl/list.hpp +1 -1
- data/ext/boost/mpl/list/aux_/O1_size.hpp +1 -1
- data/ext/boost/mpl/list/aux_/begin_end.hpp +1 -1
- data/ext/boost/mpl/list/aux_/clear.hpp +1 -1
- data/ext/boost/mpl/list/aux_/empty.hpp +1 -1
- data/ext/boost/mpl/list/aux_/front.hpp +1 -1
- data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +1 -1
- data/ext/boost/mpl/list/aux_/item.hpp +1 -1
- data/ext/boost/mpl/list/aux_/iterator.hpp +1 -1
- data/ext/boost/mpl/list/aux_/numbered.hpp +68 -0
- data/ext/boost/mpl/list/aux_/numbered_c.hpp +71 -0
- data/ext/boost/mpl/list/aux_/pop_front.hpp +1 -1
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp +164 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp +173 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list30.hpp +189 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp +183 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list40.hpp +209 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp +193 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list50.hpp +229 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp +203 -0
- data/ext/boost/mpl/list/aux_/push_back.hpp +1 -1
- data/ext/boost/mpl/list/aux_/push_front.hpp +1 -1
- data/ext/boost/mpl/list/aux_/size.hpp +1 -1
- data/ext/boost/mpl/list/aux_/tag.hpp +1 -1
- data/ext/boost/mpl/list/list0.hpp +1 -1
- data/ext/boost/mpl/list/list0_c.hpp +31 -0
- data/ext/boost/mpl/list/list10.hpp +1 -1
- data/ext/boost/mpl/list/list10_c.hpp +43 -0
- data/ext/boost/mpl/list/list20.hpp +1 -1
- data/ext/boost/mpl/list/list20_c.hpp +43 -0
- data/ext/boost/mpl/list/list30.hpp +43 -0
- data/ext/boost/mpl/list/list30_c.hpp +43 -0
- data/ext/boost/mpl/list/list40.hpp +43 -0
- data/ext/boost/mpl/list/list40_c.hpp +43 -0
- data/ext/boost/mpl/list/list50.hpp +43 -0
- data/ext/boost/mpl/list/list50_c.hpp +43 -0
- data/ext/boost/mpl/list_c.hpp +60 -0
- data/ext/boost/mpl/logical.hpp +1 -1
- data/ext/boost/mpl/long.hpp +1 -1
- data/ext/boost/mpl/long_fwd.hpp +1 -1
- data/ext/boost/mpl/lower_bound.hpp +143 -0
- data/ext/boost/mpl/map.hpp +57 -0
- data/ext/boost/mpl/map/aux_/at_impl.hpp +144 -0
- data/ext/boost/mpl/map/aux_/begin_end_impl.hpp +50 -0
- data/ext/boost/mpl/map/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/map/aux_/contains_impl.hpp +43 -0
- data/ext/boost/mpl/map/aux_/empty_impl.hpp +34 -0
- data/ext/boost/mpl/map/aux_/erase_impl.hpp +41 -0
- data/ext/boost/mpl/map/aux_/erase_key_impl.hpp +53 -0
- data/ext/boost/mpl/map/aux_/has_key_impl.hpp +44 -0
- data/ext/boost/mpl/map/aux_/include_preprocessed.hpp +53 -0
- data/ext/boost/mpl/map/aux_/insert_impl.hpp +72 -0
- data/ext/boost/mpl/map/aux_/item.hpp +138 -0
- data/ext/boost/mpl/map/aux_/iterator.hpp +169 -0
- data/ext/boost/mpl/map/aux_/key_type_impl.hpp +36 -0
- data/ext/boost/mpl/map/aux_/map0.hpp +74 -0
- data/ext/boost/mpl/map/aux_/numbered.hpp +110 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp +350 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp +370 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp +390 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp +410 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp +430 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map10.hpp +290 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map20.hpp +310 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map30.hpp +330 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map40.hpp +350 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map50.hpp +370 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp +150 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp +170 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp +190 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp +210 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp +230 -0
- data/ext/boost/mpl/map/aux_/size_impl.hpp +33 -0
- data/ext/boost/mpl/map/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/map/aux_/value_type_impl.hpp +36 -0
- data/ext/boost/mpl/map/map0.hpp +36 -0
- data/ext/boost/mpl/map/map10.hpp +44 -0
- data/ext/boost/mpl/map/map20.hpp +44 -0
- data/ext/boost/mpl/map/map30.hpp +44 -0
- data/ext/boost/mpl/map/map40.hpp +44 -0
- data/ext/boost/mpl/map/map50.hpp +44 -0
- data/ext/boost/mpl/math/fixed_c.hpp +36 -0
- data/ext/boost/mpl/math/is_even.hpp +54 -0
- data/ext/boost/mpl/math/rational_c.hpp +37 -0
- data/ext/boost/mpl/max.hpp +19 -0
- data/ext/boost/mpl/max_element.hpp +72 -0
- data/ext/boost/mpl/min.hpp +19 -0
- data/ext/boost/mpl/min_element.hpp +40 -0
- data/ext/boost/mpl/min_max.hpp +46 -0
- data/ext/boost/mpl/minus.hpp +1 -1
- data/ext/boost/mpl/modulus.hpp +22 -0
- data/ext/boost/mpl/multiplies.hpp +1 -1
- data/ext/boost/mpl/multiset/aux_/count_impl.hpp +82 -0
- data/ext/boost/mpl/multiset/aux_/insert_impl.hpp +34 -0
- data/ext/boost/mpl/multiset/aux_/item.hpp +114 -0
- data/ext/boost/mpl/multiset/aux_/multiset0.hpp +34 -0
- data/ext/boost/mpl/multiset/aux_/tag.hpp +23 -0
- data/ext/boost/mpl/multiset/multiset0.hpp +36 -0
- data/ext/boost/mpl/negate.hpp +1 -1
- data/ext/boost/mpl/next.hpp +1 -1
- data/ext/boost/mpl/next_prior.hpp +1 -1
- data/ext/boost/mpl/not.hpp +1 -1
- data/ext/boost/mpl/not_equal_to.hpp +1 -1
- data/ext/boost/mpl/numeric_cast.hpp +1 -1
- data/ext/boost/mpl/or.hpp +1 -1
- data/ext/boost/mpl/order.hpp +41 -0
- data/ext/boost/mpl/order_fwd.hpp +25 -0
- data/ext/boost/mpl/pair.hpp +1 -1
- data/ext/boost/mpl/pair_view.hpp +169 -0
- data/ext/boost/mpl/partition.hpp +53 -0
- data/ext/boost/mpl/placeholders.hpp +1 -1
- data/ext/boost/mpl/plus.hpp +1 -1
- data/ext/boost/mpl/pop_back.hpp +39 -0
- data/ext/boost/mpl/pop_back_fwd.hpp +1 -1
- data/ext/boost/mpl/pop_front.hpp +39 -0
- data/ext/boost/mpl/pop_front_fwd.hpp +1 -1
- data/ext/boost/mpl/print.hpp +74 -0
- data/ext/boost/mpl/prior.hpp +1 -1
- data/ext/boost/mpl/protect.hpp +1 -1
- data/ext/boost/mpl/push_back.hpp +1 -1
- data/ext/boost/mpl/push_back_fwd.hpp +1 -1
- data/ext/boost/mpl/push_front.hpp +1 -1
- data/ext/boost/mpl/push_front_fwd.hpp +1 -1
- data/ext/boost/mpl/quote.hpp +1 -1
- data/ext/boost/mpl/range_c.hpp +48 -0
- data/ext/boost/mpl/remove.hpp +52 -0
- data/ext/boost/mpl/remove_if.hpp +1 -1
- data/ext/boost/mpl/replace.hpp +55 -0
- data/ext/boost/mpl/replace_if.hpp +88 -0
- data/ext/boost/mpl/reverse.hpp +38 -0
- data/ext/boost/mpl/reverse_fold.hpp +1 -1
- data/ext/boost/mpl/reverse_iter_fold.hpp +56 -0
- data/ext/boost/mpl/same_as.hpp +1 -1
- data/ext/boost/mpl/sequence_tag.hpp +1 -1
- data/ext/boost/mpl/sequence_tag_fwd.hpp +1 -1
- data/ext/boost/mpl/set.hpp +57 -0
- data/ext/boost/mpl/set/aux_/at_impl.hpp +40 -0
- data/ext/boost/mpl/set/aux_/begin_end_impl.hpp +43 -0
- data/ext/boost/mpl/set/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/set/aux_/empty_impl.hpp +34 -0
- data/ext/boost/mpl/set/aux_/erase_impl.hpp +41 -0
- data/ext/boost/mpl/set/aux_/erase_key_impl.hpp +53 -0
- data/ext/boost/mpl/set/aux_/has_key_impl.hpp +60 -0
- data/ext/boost/mpl/set/aux_/include_preprocessed.hpp +42 -0
- data/ext/boost/mpl/set/aux_/insert_impl.hpp +65 -0
- data/ext/boost/mpl/set/aux_/item.hpp +80 -0
- data/ext/boost/mpl/set/aux_/iterator.hpp +98 -0
- data/ext/boost/mpl/set/aux_/key_type_impl.hpp +34 -0
- data/ext/boost/mpl/set/aux_/numbered.hpp +48 -0
- data/ext/boost/mpl/set/aux_/numbered_c.hpp +48 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set10.hpp +140 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp +145 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set20.hpp +168 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp +154 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set30.hpp +195 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp +164 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set40.hpp +221 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp +174 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set50.hpp +250 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp +184 -0
- data/ext/boost/mpl/set/aux_/set0.hpp +69 -0
- data/ext/boost/mpl/set/aux_/size_impl.hpp +33 -0
- data/ext/boost/mpl/set/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/set/aux_/value_type_impl.hpp +34 -0
- data/ext/boost/mpl/set/set0.hpp +35 -0
- data/ext/boost/mpl/set/set0_c.hpp +32 -0
- data/ext/boost/mpl/set/set10.hpp +44 -0
- data/ext/boost/mpl/set/set10_c.hpp +45 -0
- data/ext/boost/mpl/set/set20.hpp +44 -0
- data/ext/boost/mpl/set/set20_c.hpp +45 -0
- data/ext/boost/mpl/set/set30.hpp +44 -0
- data/ext/boost/mpl/set/set30_c.hpp +45 -0
- data/ext/boost/mpl/set/set40.hpp +44 -0
- data/ext/boost/mpl/set/set40_c.hpp +45 -0
- data/ext/boost/mpl/set/set50.hpp +44 -0
- data/ext/boost/mpl/set/set50_c.hpp +45 -0
- data/ext/boost/mpl/set_c.hpp +60 -0
- data/ext/boost/mpl/shift_left.hpp +22 -0
- data/ext/boost/mpl/shift_right.hpp +22 -0
- data/ext/boost/mpl/single_view.hpp +38 -0
- data/ext/boost/mpl/size.hpp +1 -1
- data/ext/boost/mpl/size_fwd.hpp +1 -1
- data/ext/boost/mpl/size_t.hpp +1 -1
- data/ext/boost/mpl/size_t_fwd.hpp +1 -1
- data/ext/boost/mpl/sizeof.hpp +36 -0
- data/ext/boost/mpl/sort.hpp +27 -0
- data/ext/boost/mpl/stable_partition.hpp +75 -0
- data/ext/boost/mpl/string.hpp +607 -0
- data/ext/boost/mpl/switch.hpp +49 -0
- data/ext/boost/mpl/tag.hpp +1 -1
- data/ext/boost/mpl/times.hpp +1 -1
- data/ext/boost/mpl/transform.hpp +145 -0
- data/ext/boost/mpl/transform_view.hpp +46 -0
- data/ext/boost/mpl/unique.hpp +85 -0
- data/ext/boost/mpl/unpack_args.hpp +150 -0
- data/ext/boost/mpl/upper_bound.hpp +141 -0
- data/ext/boost/mpl/value_type.hpp +42 -0
- data/ext/boost/mpl/value_type_fwd.hpp +25 -0
- data/ext/boost/mpl/vector.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/O1_size.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/at.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/back.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/begin_end.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/clear.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/empty.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/front.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/item.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/iterator.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/numbered.hpp +218 -0
- data/ext/boost/mpl/vector/aux_/numbered_c.hpp +77 -0
- data/ext/boost/mpl/vector/aux_/pop_back.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/pop_front.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp +1528 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp +149 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp +1804 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp +195 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp +2124 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp +238 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp +2444 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp +281 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp +2764 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp +325 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp +149 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp +195 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp +1464 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp +238 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp +1784 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp +281 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp +2104 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp +325 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp +154 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp +163 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp +179 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp +173 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp +199 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp +183 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp +219 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp +193 -0
- data/ext/boost/mpl/vector/aux_/push_back.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/push_front.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/size.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/tag.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/vector0.hpp +1 -1
- data/ext/boost/mpl/vector/vector0.hpp +1 -1
- data/ext/boost/mpl/vector/vector0_c.hpp +31 -0
- data/ext/boost/mpl/vector/vector10.hpp +1 -1
- data/ext/boost/mpl/vector/vector10_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector20.hpp +1 -1
- data/ext/boost/mpl/vector/vector20_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector30.hpp +45 -0
- data/ext/boost/mpl/vector/vector30_c.hpp +47 -0
- data/ext/boost/mpl/vector/vector40.hpp +45 -0
- data/ext/boost/mpl/vector/vector40_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector50.hpp +45 -0
- data/ext/boost/mpl/vector/vector50_c.hpp +46 -0
- data/ext/boost/mpl/vector_c.hpp +61 -0
- data/ext/boost/mpl/void.hpp +1 -1
- data/ext/boost/mpl/void_fwd.hpp +1 -1
- data/ext/boost/mpl/zip_view.hpp +65 -0
- data/ext/boost/numeric/conversion/converter_policies.hpp +8 -0
- data/ext/boost/optional/optional.hpp +2 -2
- data/ext/boost/pointee.hpp +74 -0
- data/ext/boost/preprocessor/{control/deduce_d.hpp → dec.hpp} +3 -8
- data/ext/boost/preprocessor/enum_params_with_a_default.hpp +17 -0
- data/ext/boost/preprocessor/enum_shifted_params.hpp +17 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower2.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper2.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward2.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse1.hpp +1296 -0
- data/ext/boost/preprocessor/repeat_2nd.hpp +17 -0
- data/ext/boost/preprocessor/repetition/enum_params_with_a_default.hpp +25 -0
- data/ext/boost/range/algorithm/equal.hpp +15 -5
- data/ext/boost/range/as_literal.hpp +1 -1
- data/ext/boost/range/size.hpp +3 -3
- data/ext/boost/range/size_type.hpp +33 -23
- data/ext/boost/ratio/config.hpp +86 -0
- data/ext/boost/ratio/detail/mpl/abs.hpp +89 -0
- data/ext/boost/ratio/detail/mpl/gcd.hpp +124 -0
- data/ext/boost/ratio/detail/mpl/lcm.hpp +126 -0
- data/ext/boost/ratio/detail/mpl/sign.hpp +89 -0
- data/ext/boost/ratio/detail/overflow_helpers.hpp +367 -0
- data/ext/boost/ratio/ratio.hpp +233 -0
- data/ext/boost/ratio/ratio_fwd.hpp +84 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +3 -3
- data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +150 -0
- data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +27 -2
- data/ext/boost/swap.hpp +12 -0
- data/ext/boost/system/api_config.hpp +42 -0
- data/ext/boost/system/config.hpp +69 -0
- data/ext/boost/system/error_code.hpp +513 -0
- data/ext/boost/system/system_error.hpp +80 -0
- data/ext/boost/thread/barrier.hpp +4 -4
- data/ext/boost/thread/cv_status.hpp +26 -0
- data/ext/boost/thread/detail/config.hpp +119 -5
- data/ext/boost/thread/detail/delete.hpp +45 -0
- data/ext/boost/thread/detail/memory.hpp +156 -0
- data/ext/boost/thread/detail/move.hpp +181 -1
- data/ext/boost/thread/detail/platform.hpp +3 -1
- data/ext/boost/thread/detail/thread.hpp +254 -157
- data/ext/boost/thread/detail/thread_interruption.hpp +12 -11
- data/ext/boost/thread/exceptions.hpp +125 -136
- data/ext/boost/thread/future.hpp +778 -353
- data/ext/boost/thread/locks.hpp +548 -347
- data/ext/boost/thread/once.hpp +3 -1
- data/ext/boost/thread/pthread/condition_variable.hpp +140 -31
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +143 -15
- data/ext/boost/thread/pthread/mutex.hpp +76 -24
- data/ext/boost/thread/pthread/once.hpp +53 -22
- data/ext/boost/thread/pthread/recursive_mutex.hpp +74 -27
- data/ext/boost/thread/pthread/shared_mutex.hpp +250 -2
- data/ext/boost/thread/pthread/thread_data.hpp +109 -6
- data/ext/boost/thread/pthread/thread_heap_alloc.hpp +4 -4
- data/ext/boost/thread/reverse_lock.hpp +58 -0
- data/ext/boost/thread/shared_lock_guard.hpp +52 -0
- data/ext/boost/thread/shared_mutex.hpp +7 -2
- data/ext/boost/thread/thread.hpp +2 -1
- data/ext/boost/thread/v2/thread.hpp +56 -0
- data/ext/boost/thread/xtime.hpp +4 -4
- data/ext/boost/throw_exception.hpp +13 -4
- data/ext/boost/tuple/detail/tuple_basic.hpp +980 -0
- data/ext/boost/tuple/tuple.hpp +90 -0
- data/ext/boost/type_traits/add_cv.hpp +48 -0
- data/ext/boost/type_traits/common_type.hpp +158 -0
- data/ext/boost/type_traits/cv_traits.hpp +24 -0
- data/ext/boost/type_traits/decay.hpp +44 -0
- data/ext/boost/type_traits/detail/bool_trait_def.hpp +1 -1
- data/ext/boost/type_traits/detail/bool_trait_undef.hpp +1 -1
- data/ext/boost/type_traits/detail/size_t_trait_def.hpp +1 -1
- data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +1 -1
- data/ext/boost/type_traits/detail/type_trait_def.hpp +1 -1
- data/ext/boost/type_traits/detail/type_trait_undef.hpp +1 -1
- data/ext/boost/type_traits/has_nothrow_assign.hpp +44 -0
- data/ext/boost/type_traits/has_trivial_assign.hpp +57 -0
- data/ext/boost/type_traits/intrinsics.hpp +4 -3
- data/ext/boost/type_traits/is_compound.hpp +46 -0
- data/ext/boost/type_traits/is_empty.hpp +229 -0
- data/ext/boost/type_traits/is_object.hpp +53 -0
- data/ext/boost/type_traits/is_stateless.hpp +48 -0
- data/ext/boost/type_traits/object_traits.hpp +33 -0
- data/ext/boost/type_traits/remove_bounds.hpp +48 -0
- data/ext/boost/type_traits/remove_volatile.hpp +88 -0
- data/ext/boost/type_traits/same_traits.hpp +15 -0
- data/ext/boost/type_traits/transform_traits.hpp +21 -0
- data/ext/boost/typeof/message.hpp +8 -0
- data/ext/boost/typeof/native.hpp +60 -0
- data/ext/boost/typeof/typeof.hpp +218 -0
- data/ext/boost/utility/declval.hpp +7 -2
- data/ext/boost/utility/detail/result_of_iterate.hpp +98 -32
- data/ext/boost/utility/result_of.hpp +92 -8
- data/ext/boost/version.hpp +32 -0
- data/ext/common/Account.h +1 -1
- data/ext/common/AccountsDatabase.cpp +1 -1
- data/ext/common/AccountsDatabase.h +1 -1
- data/ext/common/AgentsStarter.cpp +5 -6
- data/ext/common/AgentsStarter.h +4 -4
- data/ext/common/AgentsStarter.hpp +4 -6
- data/ext/common/AnsiColorConstants.h +1 -1
- data/ext/common/ApplicationPool2/Common.h +62 -2
- data/ext/common/ApplicationPool2/ComponentInfo.h +1 -1
- data/ext/common/ApplicationPool2/Group.h +411 -150
- data/ext/common/ApplicationPool2/Implementation.cpp +367 -86
- data/ext/common/ApplicationPool2/Options.h +6 -2
- data/ext/common/ApplicationPool2/PipeWatcher.h +1 -1
- data/ext/common/ApplicationPool2/Pool.h +260 -137
- data/ext/common/ApplicationPool2/Process.h +28 -27
- data/ext/common/ApplicationPool2/Session.h +4 -2
- data/ext/common/ApplicationPool2/Socket.h +1 -1
- data/ext/common/ApplicationPool2/Spawner.h +133 -77
- data/ext/common/ApplicationPool2/SuperGroup.h +16 -15
- data/ext/common/BackgroundEventLoop.cpp +1 -1
- data/ext/common/BackgroundEventLoop.h +1 -1
- data/ext/common/Constants.h +2 -2
- data/ext/common/EventedBufferedInput.h +1 -1
- data/ext/common/EventedClient.h +1 -1
- data/ext/common/EventedMessageServer.h +1 -1
- data/ext/common/EventedServer.h +1 -1
- data/ext/common/Exceptions.h +1 -1
- data/ext/common/FileDescriptor.h +1 -1
- data/ext/common/HttpConstants.h +8 -8
- data/ext/common/IniFile.h +1 -1
- data/ext/common/Logging.cpp +45 -20
- data/ext/common/Logging.h +16 -65
- data/ext/common/MessageClient.h +1 -1
- data/ext/common/MessageReadersWriters.h +1 -1
- data/ext/common/MessageServer.h +1 -1
- data/ext/common/MultiLibeio.cpp +1 -1
- data/ext/common/MultiLibeio.h +1 -1
- data/ext/common/RandomGenerator.h +1 -1
- data/ext/common/ResourceLocator.h +1 -1
- data/ext/common/SafeLibev.h +1 -1
- data/ext/common/ServerInstanceDir.h +1 -1
- data/ext/common/StaticString.h +1 -1
- data/ext/common/StringListCreator.h +1 -1
- data/ext/common/UnionStation.h +1 -1
- data/ext/common/Utils.cpp +6 -1
- data/ext/common/Utils.h +9 -1
- data/ext/common/Utils/BlockingQueue.h +1 -1
- data/ext/common/Utils/CachedFileStat.cpp +1 -1
- data/ext/common/Utils/CachedFileStat.h +1 -1
- data/ext/common/Utils/CachedFileStat.hpp +1 -1
- data/ext/common/Utils/FileChangeChecker.h +1 -1
- data/ext/common/Utils/HashMap.h +1 -1
- data/ext/common/Utils/HttpHeaderBufferer.h +1 -1
- data/ext/common/Utils/IOUtils.cpp +3 -3
- data/ext/common/Utils/IOUtils.h +1 -1
- data/ext/common/Utils/MemZeroGuard.h +1 -1
- data/ext/common/Utils/MemoryBarrier.h +1 -1
- data/ext/common/Utils/MessageIO.h +1 -1
- data/ext/common/Utils/MessagePassing.h +304 -0
- data/ext/common/Utils/ProcessMetricsCollector.h +1 -1
- data/ext/common/Utils/ScopeGuard.h +1 -1
- data/ext/common/Utils/StrIntUtils.cpp +40 -1
- data/ext/common/Utils/StrIntUtils.h +7 -1
- data/ext/common/Utils/StringMap.h +1 -1
- data/ext/common/Utils/SystemTime.cpp +1 -1
- data/ext/common/Utils/SystemTime.h +1 -1
- data/ext/common/Utils/Timer.h +1 -1
- data/ext/common/Utils/VariantMap.h +1 -1
- data/ext/common/agents/Base.cpp +182 -10
- data/ext/common/agents/Base.h +1 -1
- data/ext/common/agents/HelperAgent/AgentOptions.h +1 -1
- data/ext/common/agents/HelperAgent/BacktracesServer.h +1 -1
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +1 -1
- data/ext/common/agents/HelperAgent/Main.cpp +13 -5
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +1 -1
- data/ext/common/agents/HelperAgent/RequestHandler.h +23 -9
- data/ext/common/agents/HelperAgent/ScgiRequestParser.h +1 -1
- data/ext/common/agents/LoggingAgent/DataStoreId.h +1 -1
- data/ext/common/agents/LoggingAgent/FilterSupport.cpp +1 -1
- data/ext/common/agents/LoggingAgent/FilterSupport.h +1 -1
- data/ext/common/agents/LoggingAgent/LoggingServer.h +89 -214
- data/ext/common/agents/LoggingAgent/Main.cpp +9 -19
- data/ext/common/agents/LoggingAgent/RemoteSender.h +9 -2
- data/ext/common/agents/SpawnPreparer.cpp +70 -30
- data/ext/common/agents/Watchdog/Main.cpp +1 -1
- data/ext/libeio/Changes +4 -0
- data/ext/libeio/ecb.h +281 -24
- data/ext/libeio/eio.c +48 -63
- data/ext/libeio/eio.h +7 -6
- data/ext/libeio/libeio.m4 +0 -16
- data/ext/libeio/xthread.h +2 -2
- data/ext/libev/configure +299 -271
- data/ext/nginx/Configuration.c +15 -52
- data/ext/nginx/Configuration.h +0 -2
- data/ext/nginx/ContentHandler.c +13 -2
- data/ext/nginx/ngx_http_passenger_module.c +2 -19
- data/ext/oxt/detail/spin_lock_pthreads.hpp +1 -1
- data/ext/oxt/dynamic_thread_group.hpp +2 -2
- data/ext/oxt/spin_lock.hpp +1 -1
- data/ext/oxt/system_calls.cpp +36 -13
- data/ext/oxt/thread.hpp +11 -5
- data/ext/ruby/extconf.rb +1 -1
- data/ext/ruby/passenger_native_support.c +3 -2
- data/helper-scripts/classic-rails-loader.rb +3 -1
- data/helper-scripts/classic-rails-preloader.rb +4 -1
- data/helper-scripts/node-loader.js +1 -1
- data/helper-scripts/prespawn +1 -1
- data/helper-scripts/rack-loader.rb +3 -1
- data/helper-scripts/rack-preloader.rb +4 -1
- data/helper-scripts/system-memory-stats.py +185 -0
- data/helper-scripts/wsgi-loader.py +1 -1
- data/lib/phusion_passenger.rb +3 -3
- data/lib/phusion_passenger/abstract_installer.rb +1 -1
- data/lib/phusion_passenger/admin_tools.rb +1 -1
- data/lib/phusion_passenger/admin_tools/memory_stats.rb +1 -1
- data/lib/phusion_passenger/admin_tools/server_instance.rb +1 -1
- data/lib/phusion_passenger/analytics_logger.rb +10 -4
- data/lib/phusion_passenger/classic_rails/thread_handler_extension.rb +3 -2
- data/lib/phusion_passenger/common_library.rb +1 -1
- data/lib/phusion_passenger/console_text_template.rb +1 -1
- data/lib/phusion_passenger/constants.rb +6 -5
- data/lib/phusion_passenger/debug_logging.rb +5 -1
- data/lib/phusion_passenger/dependencies.rb +3 -3
- data/lib/phusion_passenger/loader_shared_helpers.rb +12 -7
- data/lib/phusion_passenger/message_channel.rb +1 -1
- data/lib/phusion_passenger/message_client.rb +1 -1
- data/lib/phusion_passenger/native_support.rb +1 -1
- data/lib/phusion_passenger/packaging.rb +7 -4
- data/lib/phusion_passenger/platform_info.rb +1 -1
- data/lib/phusion_passenger/platform_info/apache.rb +2 -2
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +14 -5
- data/lib/phusion_passenger/platform_info/compiler.rb +8 -1
- data/lib/phusion_passenger/platform_info/curl.rb +1 -1
- data/lib/phusion_passenger/platform_info/linux.rb +1 -1
- data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
- data/lib/phusion_passenger/platform_info/ruby.rb +2 -2
- data/lib/phusion_passenger/platform_info/zlib.rb +1 -1
- data/lib/phusion_passenger/plugin.rb +2 -2
- data/lib/phusion_passenger/preloader_shared_helpers.rb +14 -1
- data/lib/phusion_passenger/public_api.rb +8 -2
- data/lib/phusion_passenger/{classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb → rack/out_of_band_gc.rb} +35 -28
- data/lib/phusion_passenger/rack/thread_handler_extension.rb +31 -6
- data/lib/phusion_passenger/rails3_extensions/init.rb +15 -9
- data/lib/phusion_passenger/request_handler.rb +104 -47
- data/lib/phusion_passenger/request_handler/thread_handler.rb +28 -7
- data/lib/phusion_passenger/ruby_core_enhancements.rb +34 -5
- data/lib/phusion_passenger/simple_benchmarking.rb +1 -1
- data/lib/phusion_passenger/standalone/app_finder.rb +1 -1
- data/lib/phusion_passenger/standalone/command.rb +5 -5
- data/lib/phusion_passenger/standalone/config_file.rb +1 -1
- data/lib/phusion_passenger/standalone/help_command.rb +1 -1
- data/lib/phusion_passenger/standalone/main.rb +1 -1
- data/lib/phusion_passenger/standalone/package_runtime_command.rb +1 -1
- data/lib/phusion_passenger/standalone/runtime_installer.rb +1 -1
- data/lib/phusion_passenger/standalone/start_command.rb +73 -21
- data/lib/phusion_passenger/standalone/status_command.rb +1 -1
- data/lib/phusion_passenger/standalone/stop_command.rb +1 -1
- data/lib/phusion_passenger/standalone/utils.rb +2 -2
- data/lib/phusion_passenger/standalone/version_command.rb +1 -1
- data/lib/phusion_passenger/utils.rb +1 -1
- data/lib/phusion_passenger/utils/ansi_colors.rb +2 -2
- data/lib/phusion_passenger/utils/file_system_watcher.rb +1 -1
- data/lib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
- data/lib/phusion_passenger/utils/robust_interruption.rb +10 -6
- data/lib/phusion_passenger/utils/tmpdir.rb +2 -2
- data/lib/phusion_passenger/utils/unseekable_socket.rb +1 -1
- data/lib/phusion_passenger/wsgi/request_handler.py +1 -1
- data/resources/templates/error_layout.html.template +4 -0
- data/resources/templates/nginx/not_available_when_natively_packaged.txt.erb +1 -1
- data/resources/templates/standalone/config.erb +1 -0
- data/test/.rspec +3 -0
- data/test/config.json.travis +15 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -2
- data/test/cxx/ApplicationPool2/PoolTest.cpp +349 -128
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +21 -18
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +141 -118
- data/test/cxx/BufferedIOTest.cpp +11 -11
- data/test/cxx/CxxTestMain.cpp +40 -11
- data/test/cxx/EventedClientTest.cpp +18 -18
- data/test/cxx/FilterSupportTest.cpp +1 -1
- data/test/cxx/IOUtilsTest.cpp +18 -10
- data/test/cxx/MessageIOTest.cpp +9 -9
- data/test/cxx/MessagePassingTest.cpp +81 -0
- data/test/cxx/MessageReadersWritersTest.cpp +3 -4
- data/test/cxx/RequestHandlerTest.cpp +69 -9
- data/test/cxx/TestSupport.h +3 -1
- data/test/cxx/UnionStationTest.cpp +43 -82
- data/test/gdbinit.example +31 -0
- data/test/integration_tests/nginx_tests.rb +48 -0
- data/test/integration_tests/spec_helper.rb +1 -0
- data/test/ruby/analytics_logger_spec.rb +11 -19
- data/test/ruby/classic_rails/loader_spec.rb +3 -4
- data/test/ruby/classic_rails/preloader_spec.rb +3 -4
- data/test/ruby/rack/loader_spec.rb +2 -22
- data/test/ruby/rack/preloader_spec.rb +2 -28
- data/test/ruby/rails3.0/loader_spec.rb +26 -0
- data/test/ruby/rails3.0/preloader_spec.rb +32 -0
- data/test/ruby/rails3.1/loader_spec.rb +26 -0
- data/test/ruby/rails3.1/preloader_spec.rb +32 -0
- data/test/ruby/rails3.2/loader_spec.rb +26 -0
- data/test/ruby/rails3.2/preloader_spec.rb +32 -0
- data/test/ruby/request_handler_spec.rb +104 -13
- data/test/ruby/shared/{loader_spec.rb → loader_sharedspec.rb} +1 -1
- data/test/ruby/shared/rails/{analytics_logging_extensions_spec.rb → analytics_logging_extensions_sharedspec.rb} +26 -27
- data/test/ruby/shared/{ruby_loader_spec.rb → ruby_loader_sharedspec.rb} +1 -1
- data/test/ruby/spec_helper.rb +3 -3
- data/test/stub/rails2.3/app/helpers/bar_helper.rb +2 -0
- data/test/stub/rails2.3/app/helpers/foo_helper.rb +2 -0
- data/test/stub/rails3.0/config/environments/production.rb +1 -1
- data/test/stub/rails3.1/Gemfile +37 -0
- data/test/stub/rails3.1/Gemfile.lock +115 -0
- data/test/stub/rails3.1/README +261 -0
- data/test/stub/rails3.1/Rakefile +7 -0
- data/test/stub/rails3.1/app/assets/images/rails.png +0 -0
- data/test/stub/rails3.1/app/assets/javascripts/application.js +9 -0
- data/test/stub/rails3.1/app/assets/stylesheets/application.css +7 -0
- data/test/stub/rails3.1/app/controllers/application_controller.rb +3 -0
- data/test/stub/rails3.1/app/helpers/application_helper.rb +2 -0
- data/test/stub/rails3.1/app/views/layouts/application.html.erb +14 -0
- data/test/stub/rails3.1/config.ru +4 -0
- data/test/stub/rails3.1/config/application.rb +48 -0
- data/test/stub/rails3.1/config/boot.rb +6 -0
- data/test/stub/rails3.1/config/database.yml +25 -0
- data/test/stub/rails3.1/config/environment.rb +5 -0
- data/test/stub/rails3.1/config/environments/development.rb +30 -0
- data/test/stub/rails3.1/config/environments/production.rb +60 -0
- data/test/stub/rails3.1/config/environments/test.rb +39 -0
- data/test/stub/rails3.1/config/initializers/backtrace_silencers.rb +7 -0
- data/test/stub/rails3.1/config/initializers/inflections.rb +10 -0
- data/test/stub/rails3.1/config/initializers/mime_types.rb +5 -0
- data/test/stub/rails3.1/config/initializers/passenger.rb +1 -0
- data/test/stub/rails3.1/config/initializers/secret_token.rb +7 -0
- data/test/stub/rails3.1/config/initializers/session_store.rb +8 -0
- data/test/stub/rails3.1/config/initializers/wrap_parameters.rb +14 -0
- data/test/stub/rails3.1/config/locales/en.yml +5 -0
- data/test/stub/rails3.1/config/routes.rb +58 -0
- data/test/stub/rails3.1/db/seeds.rb +7 -0
- data/test/stub/rails3.1/doc/README_FOR_APP +2 -0
- data/test/stub/rails3.1/public/404.html +26 -0
- data/test/stub/rails3.1/public/422.html +26 -0
- data/test/stub/rails3.1/public/500.html +26 -0
- data/test/stub/rails3.1/public/favicon.ico +0 -0
- data/test/stub/rails3.1/public/index.html +241 -0
- data/test/stub/rails3.1/public/robots.txt +5 -0
- data/test/stub/rails3.1/script/rails +6 -0
- data/test/stub/rails3.1/test/performance/browsing_test.rb +12 -0
- data/test/stub/rails3.1/test/test_helper.rb +13 -0
- data/test/stub/rails3.2/Gemfile +39 -0
- data/test/stub/rails3.2/Gemfile.lock +113 -0
- data/test/stub/rails3.2/Rakefile +7 -0
- data/test/stub/rails3.2/app/assets/images/rails.png +0 -0
- data/test/stub/rails3.2/app/assets/javascripts/application.js +15 -0
- data/test/stub/rails3.2/app/assets/stylesheets/application.css +13 -0
- data/test/stub/rails3.2/app/controllers/application_controller.rb +3 -0
- data/test/stub/rails3.2/app/helpers/application_helper.rb +2 -0
- data/test/stub/rails3.2/app/views/layouts/application.html.erb +14 -0
- data/test/stub/rails3.2/config.ru +4 -0
- data/test/stub/rails3.2/config/application.rb +62 -0
- data/test/stub/rails3.2/config/boot.rb +6 -0
- data/test/stub/rails3.2/config/database.yml +25 -0
- data/test/stub/rails3.2/config/environment.rb +5 -0
- data/test/stub/rails3.2/config/environments/development.rb +37 -0
- data/test/stub/rails3.2/config/environments/production.rb +67 -0
- data/test/stub/rails3.2/config/environments/test.rb +37 -0
- data/test/stub/rails3.2/config/initializers/backtrace_silencers.rb +7 -0
- data/test/stub/rails3.2/config/initializers/inflections.rb +15 -0
- data/test/stub/rails3.2/config/initializers/mime_types.rb +5 -0
- data/test/stub/rails3.2/config/initializers/passenger.rb +1 -0
- data/test/stub/rails3.2/config/initializers/secret_token.rb +7 -0
- data/test/stub/rails3.2/config/initializers/session_store.rb +8 -0
- data/test/stub/rails3.2/config/initializers/wrap_parameters.rb +14 -0
- data/test/stub/rails3.2/config/locales/en.yml +5 -0
- data/test/stub/rails3.2/config/routes.rb +58 -0
- data/test/stub/rails3.2/db/seeds.rb +7 -0
- data/test/stub/rails3.2/doc/README_FOR_APP +2 -0
- data/test/stub/rails3.2/public/404.html +26 -0
- data/test/stub/rails3.2/public/422.html +26 -0
- data/test/stub/rails3.2/public/500.html +25 -0
- data/test/stub/rails3.2/public/favicon.ico +0 -0
- data/test/stub/rails3.2/public/index.html +241 -0
- data/test/stub/rails3.2/public/robots.txt +5 -0
- data/test/stub/rails3.2/script/rails +6 -0
- data/test/stub/rails3.2/test/performance/browsing_test.rb +12 -0
- data/test/stub/rails3.2/test/test_helper.rb +13 -0
- data/test/stub/wsgi/passenger_wsgi.py +12 -3
- data/test/support/test_helper.rb +5 -3
- data/test/tut/tut.h +61 -0
- metadata +1173 -236
- data/DEVELOPERS.TXT +0 -108
- data/INSTALL +0 -6
- data/README +0 -45
- data/ext/boost/config/platform/win32.hpp +0 -71
- data/ext/boost/implicit_cast.hpp +0 -29
- data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +0 -61
- data/ext/boost/preprocessor/arithmetic/mod.hpp +0 -39
- data/ext/boost/preprocessor/comparison/less_equal.hpp +0 -39
- data/ext/boost/preprocessor/logical/not.hpp +0 -30
- data/ext/boost/preprocessor/seq/cat.hpp +0 -49
- data/ext/boost/preprocessor/seq/fold_left.hpp +0 -1070
- data/ext/boost/preprocessor/seq/transform.hpp +0 -48
- data/ext/boost/smart_ptr/detail/atomic_count_win32.hpp +0 -63
- data/ext/boost/smart_ptr/detail/sp_counted_base_w32.hpp +0 -130
- data/ext/boost/utility.hpp +0 -20
- data/ext/boost/utility/base_from_member.hpp +0 -87
- data/ext/boost/utility/binary.hpp +0 -708
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +0 -67
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +0 -48
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +0 -59
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +0 -130
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +0 -47
- data/lib/phusion_passenger/classic_rails_extensions/init.rb +0 -125
@@ -4,6 +4,10 @@
|
|
4
4
|
// accompanying file LICENSE_1_0.txt or copy at
|
5
5
|
// http://www.boost.org/LICENSE_1_0.txt)
|
6
6
|
// (C) Copyright 2007-9 Anthony Williams
|
7
|
+
// (C) Copyright 2012 Vicente J. Botet Escriba
|
8
|
+
|
9
|
+
#include <boost/thread/detail/config.hpp>
|
10
|
+
#include <boost/thread/detail/delete.hpp>
|
7
11
|
|
8
12
|
namespace boost
|
9
13
|
{
|
@@ -11,23 +15,20 @@ namespace boost
|
|
11
15
|
{
|
12
16
|
class BOOST_THREAD_DECL disable_interruption
|
13
17
|
{
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
bool interruption_was_enabled;
|
18
|
-
friend class restore_interruption;
|
18
|
+
bool interruption_was_enabled;
|
19
|
+
friend class restore_interruption;
|
19
20
|
public:
|
20
|
-
disable_interruption
|
21
|
-
|
21
|
+
BOOST_THREAD_NO_COPYABLE(disable_interruption)
|
22
|
+
disable_interruption() BOOST_NOEXCEPT;
|
23
|
+
~disable_interruption() BOOST_NOEXCEPT;
|
22
24
|
};
|
23
25
|
|
24
26
|
class BOOST_THREAD_DECL restore_interruption
|
25
27
|
{
|
26
|
-
restore_interruption(const restore_interruption&);
|
27
|
-
restore_interruption& operator=(const restore_interruption&);
|
28
28
|
public:
|
29
|
-
|
30
|
-
|
29
|
+
BOOST_THREAD_NO_COPYABLE(restore_interruption)
|
30
|
+
explicit restore_interruption(disable_interruption& d) BOOST_NOEXCEPT;
|
31
|
+
~restore_interruption() BOOST_NOEXCEPT;
|
31
32
|
};
|
32
33
|
}
|
33
34
|
}
|
@@ -1,15 +1,15 @@
|
|
1
1
|
// Copyright (C) 2001-2003
|
2
2
|
// William E. Kempf
|
3
3
|
// Copyright (C) 2007-9 Anthony Williams
|
4
|
+
// (C) Copyright 2011-2012 Vicente J. Botet Escriba
|
4
5
|
//
|
5
|
-
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
6
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
6
7
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
7
8
|
|
8
9
|
#ifndef BOOST_THREAD_EXCEPTIONS_PDM070801_H
|
9
10
|
#define BOOST_THREAD_EXCEPTIONS_PDM070801_H
|
10
11
|
|
11
12
|
#include <boost/thread/detail/config.hpp>
|
12
|
-
#include <oxt/tracable_exception.hpp>
|
13
13
|
|
14
14
|
// pdm: Sorry, but this class is used all over the place & I end up
|
15
15
|
// with recursive headers if I don't separate it
|
@@ -19,214 +19,203 @@
|
|
19
19
|
|
20
20
|
#include <string>
|
21
21
|
#include <stdexcept>
|
22
|
-
#include <
|
23
|
-
#include <
|
22
|
+
#include <boost/system/system_error.hpp>
|
23
|
+
#include <boost/system/error_code.hpp>
|
24
|
+
#include <oxt/tracable_exception.hpp>
|
25
|
+
|
24
26
|
|
25
27
|
#include <boost/config/abi_prefix.hpp>
|
26
28
|
|
27
29
|
namespace boost
|
28
30
|
{
|
29
31
|
|
30
|
-
class BOOST_SYMBOL_VISIBLE thread_interrupted
|
31
|
-
|
32
|
+
class BOOST_SYMBOL_VISIBLE thread_interrupted
|
33
|
+
: public oxt::tracable_exception
|
32
34
|
{};
|
33
35
|
|
34
36
|
class BOOST_SYMBOL_VISIBLE thread_exception:
|
35
|
-
public
|
37
|
+
public system::system_error
|
38
|
+
//public std::exception
|
36
39
|
{
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
40
|
+
typedef system::system_error base_type;
|
41
|
+
public:
|
42
|
+
thread_exception()
|
43
|
+
: base_type(0,system::system_category())
|
44
|
+
{}
|
45
|
+
|
46
|
+
thread_exception(int sys_error_code)
|
47
|
+
: base_type(sys_error_code, system::system_category())
|
42
48
|
{}
|
43
|
-
|
44
|
-
thread_exception(
|
45
|
-
|
49
|
+
|
50
|
+
thread_exception( int ev, const char * what_arg )
|
51
|
+
: base_type(system::error_code(ev, system::system_category()), what_arg)
|
46
52
|
{
|
47
|
-
std::ostringstream s;
|
48
|
-
s << description << ": ";
|
49
|
-
s << strerror(sys_err_code) << " (" << sys_err_code << ")";
|
50
|
-
message.assign(s.str());
|
51
53
|
}
|
52
|
-
|
53
|
-
|
54
|
-
m_sys_err(sys_err_code)
|
54
|
+
thread_exception( int ev, const std::string & what_arg )
|
55
|
+
: base_type(system::error_code(ev, system::system_category()), what_arg)
|
55
56
|
{
|
56
|
-
std::ostringstream s;
|
57
|
-
s << strerror(sys_err_code) << " (" << sys_err_code << ")";
|
58
|
-
message.assign(s.str());
|
59
57
|
}
|
60
|
-
|
61
58
|
|
62
|
-
public:
|
63
59
|
~thread_exception() throw()
|
64
60
|
{}
|
65
|
-
|
61
|
+
|
66
62
|
|
67
63
|
int native_error() const
|
68
64
|
{
|
69
|
-
return
|
65
|
+
return code().value();
|
70
66
|
}
|
71
|
-
|
72
|
-
virtual const char *what() const throw()
|
73
|
-
{
|
74
|
-
if(message.empty())
|
75
|
-
{
|
76
|
-
return std::exception::what();
|
77
|
-
}
|
78
|
-
else
|
79
|
-
{
|
80
|
-
return message.c_str();
|
81
|
-
}
|
82
|
-
}
|
83
|
-
|
84
|
-
private:
|
85
|
-
int m_sys_err;
|
67
|
+
|
86
68
|
};
|
87
69
|
|
88
70
|
class BOOST_SYMBOL_VISIBLE condition_error:
|
89
|
-
public
|
71
|
+
public system::system_error
|
72
|
+
//public std::exception
|
90
73
|
{
|
74
|
+
typedef system::system_error base_type;
|
91
75
|
public:
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
76
|
+
condition_error()
|
77
|
+
: base_type(system::error_code(0, system::system_category()), "Condition error")
|
78
|
+
{}
|
79
|
+
condition_error( int ev )
|
80
|
+
: base_type(system::error_code(ev, system::system_category()), "Condition error")
|
81
|
+
{
|
82
|
+
}
|
83
|
+
condition_error( int ev, const char * what_arg )
|
84
|
+
: base_type(system::error_code(ev, system::system_category()), what_arg)
|
85
|
+
{
|
86
|
+
}
|
87
|
+
condition_error( int ev, const std::string & what_arg )
|
88
|
+
: base_type(system::error_code(ev, system::system_category()), what_arg)
|
89
|
+
{
|
90
|
+
}
|
96
91
|
};
|
97
|
-
|
92
|
+
|
98
93
|
|
99
94
|
class BOOST_SYMBOL_VISIBLE lock_error:
|
100
95
|
public thread_exception
|
101
96
|
{
|
97
|
+
typedef thread_exception base_type;
|
102
98
|
public:
|
103
99
|
lock_error()
|
100
|
+
: base_type(0, "boost::lock_error")
|
104
101
|
{}
|
105
|
-
|
106
|
-
lock_error(int
|
107
|
-
|
108
|
-
{
|
109
|
-
|
110
|
-
lock_error(const
|
102
|
+
|
103
|
+
lock_error( int ev )
|
104
|
+
: base_type(ev, "boost::lock_error")
|
105
|
+
{
|
106
|
+
}
|
107
|
+
lock_error( int ev, const char * what_arg )
|
108
|
+
: base_type(ev, what_arg)
|
109
|
+
{
|
110
|
+
}
|
111
|
+
lock_error( int ev, const std::string & what_arg )
|
112
|
+
: base_type(ev, what_arg)
|
111
113
|
{
|
112
|
-
this->message = "boost::lock_error: ";
|
113
|
-
this->message.append(message);
|
114
114
|
}
|
115
|
-
|
115
|
+
|
116
116
|
~lock_error() throw()
|
117
117
|
{}
|
118
|
-
|
119
118
|
|
120
|
-
virtual const char* what() const throw()
|
121
|
-
{
|
122
|
-
if(message.empty())
|
123
|
-
{
|
124
|
-
return "boost::lock_error";
|
125
|
-
}
|
126
|
-
else
|
127
|
-
{
|
128
|
-
return message.c_str();
|
129
|
-
}
|
130
|
-
}
|
131
119
|
};
|
132
120
|
|
133
121
|
class BOOST_SYMBOL_VISIBLE thread_resource_error:
|
134
122
|
public thread_exception
|
135
123
|
{
|
124
|
+
typedef thread_exception base_type;
|
136
125
|
public:
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
126
|
+
thread_resource_error()
|
127
|
+
: base_type(system::errc::resource_unavailable_try_again, "boost::thread_resource_error")
|
128
|
+
{}
|
129
|
+
|
130
|
+
thread_resource_error( int ev )
|
131
|
+
: base_type(ev, "boost::thread_resource_error")
|
132
|
+
{
|
133
|
+
}
|
134
|
+
thread_resource_error( int ev, const char * what_arg )
|
135
|
+
: base_type(ev, what_arg)
|
136
|
+
{
|
137
|
+
}
|
138
|
+
thread_resource_error( int ev, const std::string & what_arg )
|
139
|
+
: base_type(ev, what_arg)
|
140
|
+
{
|
141
|
+
}
|
142
|
+
|
143
|
+
|
148
144
|
~thread_resource_error() throw()
|
149
145
|
{}
|
150
|
-
|
151
146
|
|
152
|
-
virtual const char* what() const throw()
|
153
|
-
{
|
154
|
-
if(message.empty())
|
155
|
-
{
|
156
|
-
return "boost::thread_resource_error";
|
157
|
-
}
|
158
|
-
else
|
159
|
-
{
|
160
|
-
return message.c_str();
|
161
|
-
}
|
162
|
-
}
|
163
|
-
|
164
147
|
};
|
165
148
|
|
166
149
|
class BOOST_SYMBOL_VISIBLE unsupported_thread_option:
|
167
150
|
public thread_exception
|
168
151
|
{
|
152
|
+
typedef thread_exception base_type;
|
169
153
|
public:
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
154
|
+
unsupported_thread_option()
|
155
|
+
: base_type(system::errc::invalid_argument, "boost::unsupported_thread_option")
|
156
|
+
{}
|
157
|
+
|
158
|
+
unsupported_thread_option( int ev )
|
159
|
+
: base_type(ev, "boost::unsupported_thread_option")
|
160
|
+
{
|
161
|
+
}
|
162
|
+
unsupported_thread_option( int ev, const char * what_arg )
|
163
|
+
: base_type(ev, what_arg)
|
164
|
+
{
|
165
|
+
}
|
166
|
+
unsupported_thread_option( int ev, const std::string & what_arg )
|
167
|
+
: base_type(ev, what_arg)
|
168
|
+
{
|
169
|
+
}
|
180
170
|
|
181
|
-
virtual const char* what() const throw()
|
182
|
-
{
|
183
|
-
return "boost::unsupported_thread_option";
|
184
|
-
}
|
185
|
-
|
186
171
|
};
|
187
172
|
|
188
173
|
class BOOST_SYMBOL_VISIBLE invalid_thread_argument:
|
189
174
|
public thread_exception
|
190
175
|
{
|
176
|
+
typedef thread_exception base_type;
|
191
177
|
public:
|
192
178
|
invalid_thread_argument()
|
179
|
+
: base_type(system::errc::invalid_argument, "boost::invalid_thread_argument")
|
193
180
|
{}
|
194
|
-
|
195
|
-
invalid_thread_argument(int sys_err_code):
|
196
|
-
thread_exception(sys_err_code)
|
197
|
-
{}
|
198
|
-
|
199
|
-
~invalid_thread_argument() throw()
|
200
|
-
{}
|
201
|
-
|
202
181
|
|
203
|
-
|
182
|
+
invalid_thread_argument( int ev )
|
183
|
+
: base_type(ev, "boost::invalid_thread_argument")
|
184
|
+
{
|
185
|
+
}
|
186
|
+
invalid_thread_argument( int ev, const char * what_arg )
|
187
|
+
: base_type(ev, what_arg)
|
188
|
+
{
|
189
|
+
}
|
190
|
+
invalid_thread_argument( int ev, const std::string & what_arg )
|
191
|
+
: base_type(ev, what_arg)
|
204
192
|
{
|
205
|
-
return "boost::invalid_thread_argument";
|
206
193
|
}
|
207
|
-
|
194
|
+
|
208
195
|
};
|
209
196
|
|
210
197
|
class BOOST_SYMBOL_VISIBLE thread_permission_error:
|
211
198
|
public thread_exception
|
212
199
|
{
|
200
|
+
typedef thread_exception base_type;
|
213
201
|
public:
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
202
|
+
thread_permission_error()
|
203
|
+
: base_type(system::errc::permission_denied, "boost::thread_permission_error")
|
204
|
+
{}
|
205
|
+
|
206
|
+
thread_permission_error( int ev )
|
207
|
+
: base_type(ev, "boost::thread_permission_error")
|
208
|
+
{
|
209
|
+
}
|
210
|
+
thread_permission_error( int ev, const char * what_arg )
|
211
|
+
: base_type(ev, what_arg)
|
212
|
+
{
|
213
|
+
}
|
214
|
+
thread_permission_error( int ev, const std::string & what_arg )
|
215
|
+
: base_type(ev, what_arg)
|
216
|
+
{
|
217
|
+
}
|
224
218
|
|
225
|
-
virtual const char* what() const throw()
|
226
|
-
{
|
227
|
-
return "boost::thread_permission_error";
|
228
|
-
}
|
229
|
-
|
230
219
|
};
|
231
220
|
|
232
221
|
} // namespace boost
|
data/ext/boost/thread/future.hpp
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
// (C) Copyright 2008-10 Anthony Williams
|
2
|
+
// (C) Copyright 2011-2012 Vicente J. Botet Escriba
|
2
3
|
//
|
3
4
|
// Distributed under the Boost Software License, Version 1.0. (See
|
4
5
|
// accompanying file LICENSE_1_0.txt or copy at
|
@@ -6,6 +7,15 @@
|
|
6
7
|
|
7
8
|
#ifndef BOOST_THREAD_FUTURE_HPP
|
8
9
|
#define BOOST_THREAD_FUTURE_HPP
|
10
|
+
|
11
|
+
#include <boost/thread/detail/config.hpp>
|
12
|
+
|
13
|
+
// boost::thread::future requires exception handling
|
14
|
+
// due to boost::exception::exception_ptr dependency
|
15
|
+
|
16
|
+
#ifndef BOOST_NO_EXCEPTIONS
|
17
|
+
|
18
|
+
#include <boost/detail/scoped_enum_emulation.hpp>
|
9
19
|
#include <stdexcept>
|
10
20
|
#include <boost/thread/detail/move.hpp>
|
11
21
|
#include <boost/thread/thread_time.hpp>
|
@@ -16,6 +26,8 @@
|
|
16
26
|
#include <boost/scoped_ptr.hpp>
|
17
27
|
#include <boost/type_traits/is_fundamental.hpp>
|
18
28
|
#include <boost/type_traits/is_convertible.hpp>
|
29
|
+
#include <boost/type_traits/remove_reference.hpp>
|
30
|
+
#include <boost/type_traits/remove_cv.hpp>
|
19
31
|
#include <boost/mpl/if.hpp>
|
20
32
|
#include <boost/config.hpp>
|
21
33
|
#include <boost/throw_exception.hpp>
|
@@ -28,59 +40,168 @@
|
|
28
40
|
#include <list>
|
29
41
|
#include <boost/next_prior.hpp>
|
30
42
|
#include <vector>
|
43
|
+
#include <boost/system/error_code.hpp>
|
44
|
+
#ifdef BOOST_THREAD_USES_CHRONO
|
45
|
+
#include <boost/chrono/system_clocks.hpp>
|
46
|
+
#endif
|
47
|
+
|
48
|
+
#if defined BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
|
49
|
+
#include <boost/thread/detail/memory.hpp>
|
50
|
+
#endif
|
51
|
+
|
52
|
+
#include <boost/utility/result_of.hpp>
|
53
|
+
#include <boost/thread/thread.hpp>
|
54
|
+
|
55
|
+
#if defined BOOST_THREAD_PROVIDES_FUTURE
|
56
|
+
#define BOOST_THREAD_FUTURE future
|
57
|
+
#else
|
58
|
+
#define BOOST_THREAD_FUTURE unique_future
|
59
|
+
#endif
|
60
|
+
|
31
61
|
|
32
62
|
namespace boost
|
33
63
|
{
|
34
|
-
|
35
|
-
|
64
|
+
|
65
|
+
//enum class future_errc
|
66
|
+
BOOST_SCOPED_ENUM_DECLARE_BEGIN(future_errc)
|
67
|
+
{
|
68
|
+
broken_promise,
|
69
|
+
future_already_retrieved,
|
70
|
+
promise_already_satisfied,
|
71
|
+
no_state
|
72
|
+
}
|
73
|
+
BOOST_SCOPED_ENUM_DECLARE_END(future_errc)
|
74
|
+
|
75
|
+
namespace system
|
76
|
+
{
|
77
|
+
template <>
|
78
|
+
struct BOOST_SYMBOL_VISIBLE is_error_code_enum<future_errc> : public true_type {};
|
79
|
+
|
80
|
+
#ifdef BOOST_NO_CXX11_SCOPED_ENUMS
|
81
|
+
template <>
|
82
|
+
struct BOOST_SYMBOL_VISIBLE is_error_code_enum<future_errc::enum_type> : public true_type { };
|
83
|
+
#endif
|
84
|
+
}
|
85
|
+
|
86
|
+
//enum class launch
|
87
|
+
BOOST_SCOPED_ENUM_DECLARE_BEGIN(launch)
|
88
|
+
{
|
89
|
+
async = 1,
|
90
|
+
deferred = 2,
|
91
|
+
any = async | deferred
|
92
|
+
}
|
93
|
+
BOOST_SCOPED_ENUM_DECLARE_END(launch)
|
94
|
+
|
95
|
+
//enum class future_status
|
96
|
+
BOOST_SCOPED_ENUM_DECLARE_BEGIN(future_status)
|
97
|
+
{
|
98
|
+
ready,
|
99
|
+
timeout,
|
100
|
+
deferred
|
101
|
+
}
|
102
|
+
BOOST_SCOPED_ENUM_DECLARE_END(future_status)
|
103
|
+
|
104
|
+
BOOST_THREAD_DECL
|
105
|
+
const system::error_category& future_category() BOOST_NOEXCEPT;
|
106
|
+
|
107
|
+
namespace system
|
108
|
+
{
|
109
|
+
inline
|
110
|
+
error_code
|
111
|
+
make_error_code(future_errc e) //BOOST_NOEXCEPT
|
112
|
+
{
|
113
|
+
return error_code(underlying_cast<int>(e), boost::future_category());
|
114
|
+
}
|
115
|
+
|
116
|
+
inline
|
117
|
+
error_condition
|
118
|
+
make_error_condition(future_errc e) //BOOST_NOEXCEPT
|
119
|
+
{
|
120
|
+
return error_condition(underlying_cast<int>(e), future_category());
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
class BOOST_SYMBOL_VISIBLE future_error
|
125
|
+
: public std::logic_error
|
126
|
+
{
|
127
|
+
system::error_code ec_;
|
128
|
+
public:
|
129
|
+
future_error(system::error_code ec)
|
130
|
+
: logic_error(ec.message()),
|
131
|
+
ec_(ec)
|
132
|
+
{
|
133
|
+
}
|
134
|
+
|
135
|
+
const system::error_code& code() const BOOST_NOEXCEPT
|
136
|
+
{
|
137
|
+
return ec_;
|
138
|
+
}
|
139
|
+
const char* what() const BOOST_THREAD_NOEXCEPT_OR_THROW
|
140
|
+
{
|
141
|
+
return code().message().c_str();
|
142
|
+
}
|
143
|
+
|
144
|
+
};
|
145
|
+
|
146
|
+
class BOOST_SYMBOL_VISIBLE future_uninitialized:
|
147
|
+
public future_error
|
36
148
|
{
|
37
149
|
public:
|
38
|
-
future_uninitialized():
|
39
|
-
|
150
|
+
future_uninitialized() :
|
151
|
+
future_error(system::make_error_code(future_errc::no_state))
|
40
152
|
{}
|
41
153
|
};
|
42
|
-
class broken_promise:
|
43
|
-
public
|
154
|
+
class BOOST_SYMBOL_VISIBLE broken_promise:
|
155
|
+
public future_error
|
44
156
|
{
|
45
157
|
public:
|
46
158
|
broken_promise():
|
47
|
-
|
159
|
+
future_error(system::make_error_code(future_errc::broken_promise))
|
48
160
|
{}
|
49
161
|
};
|
50
|
-
class future_already_retrieved:
|
51
|
-
public
|
162
|
+
class BOOST_SYMBOL_VISIBLE future_already_retrieved:
|
163
|
+
public future_error
|
52
164
|
{
|
53
165
|
public:
|
54
166
|
future_already_retrieved():
|
55
|
-
|
167
|
+
future_error(system::make_error_code(future_errc::future_already_retrieved))
|
56
168
|
{}
|
57
169
|
};
|
58
|
-
class promise_already_satisfied:
|
59
|
-
public
|
170
|
+
class BOOST_SYMBOL_VISIBLE promise_already_satisfied:
|
171
|
+
public future_error
|
60
172
|
{
|
61
173
|
public:
|
62
174
|
promise_already_satisfied():
|
63
|
-
|
175
|
+
future_error(system::make_error_code(future_errc::promise_already_satisfied))
|
64
176
|
{}
|
65
177
|
};
|
66
178
|
|
67
|
-
class task_already_started:
|
68
|
-
public
|
179
|
+
class BOOST_SYMBOL_VISIBLE task_already_started:
|
180
|
+
public future_error
|
69
181
|
{
|
70
182
|
public:
|
71
183
|
task_already_started():
|
72
|
-
|
184
|
+
future_error(system::make_error_code(future_errc::promise_already_satisfied))
|
73
185
|
{}
|
74
186
|
};
|
75
187
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
188
|
+
class BOOST_SYMBOL_VISIBLE task_moved:
|
189
|
+
public future_error
|
190
|
+
{
|
191
|
+
public:
|
192
|
+
task_moved():
|
193
|
+
future_error(system::make_error_code(future_errc::no_state))
|
194
|
+
{}
|
195
|
+
};
|
196
|
+
|
197
|
+
class promise_moved:
|
198
|
+
public future_error
|
199
|
+
{
|
200
|
+
public:
|
201
|
+
promise_moved():
|
202
|
+
future_error(system::make_error_code(future_errc::no_state))
|
203
|
+
{}
|
204
|
+
};
|
84
205
|
|
85
206
|
namespace future_state
|
86
207
|
{
|
@@ -93,6 +214,7 @@ namespace boost
|
|
93
214
|
{
|
94
215
|
boost::exception_ptr exception;
|
95
216
|
bool done;
|
217
|
+
bool thread_was_interrupted;
|
96
218
|
boost::mutex mutex;
|
97
219
|
boost::condition_variable waiters;
|
98
220
|
typedef std::list<boost::condition_variable_any*> waiter_list;
|
@@ -100,7 +222,8 @@ namespace boost
|
|
100
222
|
boost::function<void()> callback;
|
101
223
|
|
102
224
|
future_object_base():
|
103
|
-
done(false)
|
225
|
+
done(false),
|
226
|
+
thread_was_interrupted(false)
|
104
227
|
{}
|
105
228
|
virtual ~future_object_base()
|
106
229
|
{}
|
@@ -165,6 +288,10 @@ namespace boost
|
|
165
288
|
{
|
166
289
|
waiters.wait(lock);
|
167
290
|
}
|
291
|
+
if(rethrow && thread_was_interrupted)
|
292
|
+
{
|
293
|
+
throw boost::thread_interrupted();
|
294
|
+
}
|
168
295
|
if(rethrow && exception)
|
169
296
|
{
|
170
297
|
boost::rethrow_exception(exception);
|
@@ -186,6 +313,25 @@ namespace boost
|
|
186
313
|
return true;
|
187
314
|
}
|
188
315
|
|
316
|
+
#ifdef BOOST_THREAD_USES_CHRONO
|
317
|
+
|
318
|
+
template <class Clock, class Duration>
|
319
|
+
future_status
|
320
|
+
wait_until(const chrono::time_point<Clock, Duration>& abs_time)
|
321
|
+
{
|
322
|
+
boost::unique_lock<boost::mutex> lock(mutex);
|
323
|
+
do_callback(lock);
|
324
|
+
while(!done)
|
325
|
+
{
|
326
|
+
cv_status const st=waiters.wait_until(lock,abs_time);
|
327
|
+
if(st==cv_status::timeout && !done)
|
328
|
+
{
|
329
|
+
return future_status::timeout;
|
330
|
+
}
|
331
|
+
}
|
332
|
+
return future_status::ready;
|
333
|
+
}
|
334
|
+
#endif
|
189
335
|
void mark_exceptional_finish_internal(boost::exception_ptr const& e)
|
190
336
|
{
|
191
337
|
exception=e;
|
@@ -196,16 +342,21 @@ namespace boost
|
|
196
342
|
boost::lock_guard<boost::mutex> lock(mutex);
|
197
343
|
mark_exceptional_finish_internal(boost::current_exception());
|
198
344
|
}
|
199
|
-
|
345
|
+
void mark_interrupted_finish()
|
346
|
+
{
|
347
|
+
boost::lock_guard<boost::mutex> lock(mutex);
|
348
|
+
thread_was_interrupted=true;
|
349
|
+
mark_finished_internal();
|
350
|
+
}
|
200
351
|
bool has_value()
|
201
352
|
{
|
202
353
|
boost::lock_guard<boost::mutex> lock(mutex);
|
203
|
-
return done && !exception;
|
354
|
+
return done && !(exception || thread_was_interrupted);
|
204
355
|
}
|
205
356
|
bool has_exception()
|
206
357
|
{
|
207
358
|
boost::lock_guard<boost::mutex> lock(mutex);
|
208
|
-
return done && exception;
|
359
|
+
return done && (exception || thread_was_interrupted);
|
209
360
|
}
|
210
361
|
|
211
362
|
template<typename F,typename U>
|
@@ -223,17 +374,23 @@ namespace boost
|
|
223
374
|
struct future_traits
|
224
375
|
{
|
225
376
|
typedef boost::scoped_ptr<T> storage_type;
|
226
|
-
#ifndef
|
377
|
+
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
227
378
|
typedef T const& source_reference_type;
|
228
379
|
struct dummy;
|
229
|
-
typedef typename boost::mpl::if_<boost::is_fundamental<T>,dummy&,T
|
230
|
-
typedef typename boost::mpl::if_<boost::is_fundamental<T>,T,T
|
380
|
+
typedef typename boost::mpl::if_<boost::is_fundamental<T>,dummy&,BOOST_THREAD_RV_REF(T)>::type rvalue_source_type;
|
381
|
+
typedef typename boost::mpl::if_<boost::is_fundamental<T>,T,BOOST_THREAD_RV_REF(T)>::type move_dest_type;
|
382
|
+
#elif defined BOOST_THREAD_USES_MOVE
|
383
|
+
typedef T& source_reference_type;
|
384
|
+
typedef typename boost::mpl::if_<boost::has_move_emulation_enabled<T>,BOOST_THREAD_RV_REF(T),T const&>::type rvalue_source_type;
|
385
|
+
typedef typename boost::mpl::if_<boost::has_move_emulation_enabled<T>,BOOST_THREAD_RV_REF(T),T>::type move_dest_type;
|
231
386
|
#else
|
232
387
|
typedef T& source_reference_type;
|
233
|
-
typedef typename boost::mpl::if_<boost::is_convertible<T&,
|
234
|
-
typedef typename boost::mpl::if_<boost::is_convertible<T&,
|
388
|
+
typedef typename boost::mpl::if_<boost::is_convertible<T&,BOOST_THREAD_RV_REF(T) >,BOOST_THREAD_RV_REF(T),T const&>::type rvalue_source_type;
|
389
|
+
typedef typename boost::mpl::if_<boost::is_convertible<T&,BOOST_THREAD_RV_REF(T) >,BOOST_THREAD_RV_REF(T),T>::type move_dest_type;
|
235
390
|
#endif
|
236
391
|
|
392
|
+
typedef const T& shared_future_get_result_type;
|
393
|
+
|
237
394
|
static void init(storage_type& storage,source_reference_type t)
|
238
395
|
{
|
239
396
|
storage.reset(new T(t));
|
@@ -241,7 +398,7 @@ namespace boost
|
|
241
398
|
|
242
399
|
static void init(storage_type& storage,rvalue_source_type t)
|
243
400
|
{
|
244
|
-
|
401
|
+
storage.reset(new T(static_cast<rvalue_source_type>(t)));
|
245
402
|
}
|
246
403
|
|
247
404
|
static void cleanup(storage_type& storage)
|
@@ -258,6 +415,7 @@ namespace boost
|
|
258
415
|
struct rvalue_source_type
|
259
416
|
{};
|
260
417
|
typedef T& move_dest_type;
|
418
|
+
typedef T& shared_future_get_result_type;
|
261
419
|
|
262
420
|
static void init(storage_type& storage,T& t)
|
263
421
|
{
|
@@ -275,6 +433,7 @@ namespace boost
|
|
275
433
|
{
|
276
434
|
typedef bool storage_type;
|
277
435
|
typedef void move_dest_type;
|
436
|
+
typedef void shared_future_get_result_type;
|
278
437
|
|
279
438
|
static void init(storage_type& storage)
|
280
439
|
{
|
@@ -296,6 +455,7 @@ namespace boost
|
|
296
455
|
typedef typename future_traits<T>::source_reference_type source_reference_type;
|
297
456
|
typedef typename future_traits<T>::rvalue_source_type rvalue_source_type;
|
298
457
|
typedef typename future_traits<T>::move_dest_type move_dest_type;
|
458
|
+
typedef typename future_traits<T>::shared_future_get_result_type shared_future_get_result_type;
|
299
459
|
|
300
460
|
storage_type result;
|
301
461
|
|
@@ -308,6 +468,7 @@ namespace boost
|
|
308
468
|
future_traits<T>::init(result,result_);
|
309
469
|
mark_finished_internal();
|
310
470
|
}
|
471
|
+
|
311
472
|
void mark_finished_with_result_internal(rvalue_source_type result_)
|
312
473
|
{
|
313
474
|
future_traits<T>::init(result,static_cast<rvalue_source_type>(result_));
|
@@ -319,10 +480,11 @@ namespace boost
|
|
319
480
|
boost::lock_guard<boost::mutex> lock(mutex);
|
320
481
|
mark_finished_with_result_internal(result_);
|
321
482
|
}
|
483
|
+
|
322
484
|
void mark_finished_with_result(rvalue_source_type result_)
|
323
485
|
{
|
324
486
|
boost::lock_guard<boost::mutex> lock(mutex);
|
325
|
-
mark_finished_with_result_internal(result_);
|
487
|
+
mark_finished_with_result_internal(static_cast<rvalue_source_type>(result_));
|
326
488
|
}
|
327
489
|
|
328
490
|
move_dest_type get()
|
@@ -331,6 +493,12 @@ namespace boost
|
|
331
493
|
return static_cast<move_dest_type>(*result);
|
332
494
|
}
|
333
495
|
|
496
|
+
shared_future_get_result_type get_sh()
|
497
|
+
{
|
498
|
+
wait();
|
499
|
+
return static_cast<shared_future_get_result_type>(*result);
|
500
|
+
}
|
501
|
+
|
334
502
|
future_state::state get_state()
|
335
503
|
{
|
336
504
|
boost::lock_guard<boost::mutex> guard(mutex);
|
@@ -353,7 +521,7 @@ namespace boost
|
|
353
521
|
struct future_object<void>:
|
354
522
|
detail::future_object_base
|
355
523
|
{
|
356
|
-
typedef void
|
524
|
+
typedef void shared_future_get_result_type;
|
357
525
|
|
358
526
|
future_object()
|
359
527
|
{}
|
@@ -373,7 +541,10 @@ namespace boost
|
|
373
541
|
{
|
374
542
|
wait();
|
375
543
|
}
|
376
|
-
|
544
|
+
void get_sh()
|
545
|
+
{
|
546
|
+
wait();
|
547
|
+
}
|
377
548
|
future_state::state get_state()
|
378
549
|
{
|
379
550
|
boost::lock_guard<boost::mutex> guard(mutex);
|
@@ -386,27 +557,37 @@ namespace boost
|
|
386
557
|
return future_state::ready;
|
387
558
|
}
|
388
559
|
}
|
389
|
-
|
390
560
|
private:
|
391
561
|
future_object(future_object const&);
|
392
562
|
future_object& operator=(future_object const&);
|
393
563
|
};
|
394
564
|
|
565
|
+
// template<typename T, typename Allocator>
|
566
|
+
// struct future_object_alloc: public future_object<T>
|
567
|
+
// {
|
568
|
+
// typedef future_object<T> base;
|
569
|
+
// Allocator alloc_;
|
570
|
+
//
|
571
|
+
// public:
|
572
|
+
// explicit future_object_alloc(const Allocator& a)
|
573
|
+
// : alloc_(a) {}
|
574
|
+
//
|
575
|
+
// };
|
395
576
|
class future_waiter
|
396
577
|
{
|
397
578
|
struct registered_waiter;
|
398
|
-
typedef std::vector<
|
579
|
+
typedef std::vector<int>::size_type count_type;
|
399
580
|
|
400
581
|
struct registered_waiter
|
401
582
|
{
|
402
|
-
boost::shared_ptr<detail::future_object_base>
|
583
|
+
boost::shared_ptr<detail::future_object_base> future_;
|
403
584
|
detail::future_object_base::waiter_list::iterator wait_iterator;
|
404
585
|
count_type index;
|
405
586
|
|
406
|
-
registered_waiter(boost::shared_ptr<detail::future_object_base> const&
|
587
|
+
registered_waiter(boost::shared_ptr<detail::future_object_base> const& a_future,
|
407
588
|
detail::future_object_base::waiter_list::iterator wait_iterator_,
|
408
589
|
count_type index_):
|
409
|
-
|
590
|
+
future_(a_future),wait_iterator(wait_iterator_),index(index_)
|
410
591
|
{}
|
411
592
|
|
412
593
|
};
|
@@ -419,7 +600,6 @@ namespace boost
|
|
419
600
|
typedef count_type count_type_portable;
|
420
601
|
#endif
|
421
602
|
count_type_portable count;
|
422
|
-
|
423
603
|
boost::scoped_array<boost::unique_lock<boost::mutex> > locks;
|
424
604
|
|
425
605
|
all_futures_lock(std::vector<registered_waiter>& futures):
|
@@ -427,10 +607,10 @@ namespace boost
|
|
427
607
|
{
|
428
608
|
for(count_type_portable i=0;i<count;++i)
|
429
609
|
{
|
430
|
-
#if defined __DECCXX || defined __SUNPRO_CC
|
431
|
-
locks[i]=boost::unique_lock<boost::mutex>(futures[i].
|
610
|
+
#if defined __DECCXX || defined __SUNPRO_CC || defined __hpux
|
611
|
+
locks[i]=boost::unique_lock<boost::mutex>(futures[i].future_->mutex).move();
|
432
612
|
#else
|
433
|
-
locks[i]=boost::unique_lock<boost::mutex>(futures[i].
|
613
|
+
locks[i]=boost::unique_lock<boost::mutex>(futures[i].future_->mutex);
|
434
614
|
#endif
|
435
615
|
}
|
436
616
|
}
|
@@ -461,9 +641,9 @@ namespace boost
|
|
461
641
|
template<typename F>
|
462
642
|
void add(F& f)
|
463
643
|
{
|
464
|
-
if(f.
|
644
|
+
if(f.future_)
|
465
645
|
{
|
466
|
-
futures.push_back(registered_waiter(f.
|
646
|
+
futures.push_back(registered_waiter(f.future_,f.future_->register_external_waiter(cv),future_count));
|
467
647
|
}
|
468
648
|
++future_count;
|
469
649
|
}
|
@@ -475,7 +655,7 @@ namespace boost
|
|
475
655
|
{
|
476
656
|
for(count_type i=0;i<futures.size();++i)
|
477
657
|
{
|
478
|
-
if(futures[i].
|
658
|
+
if(futures[i].future_->done)
|
479
659
|
{
|
480
660
|
return futures[i].index;
|
481
661
|
}
|
@@ -488,7 +668,7 @@ namespace boost
|
|
488
668
|
{
|
489
669
|
for(count_type i=0;i<futures.size();++i)
|
490
670
|
{
|
491
|
-
futures[i].
|
671
|
+
futures[i].future_->remove_external_waiter(futures[i].wait_iterator);
|
492
672
|
}
|
493
673
|
}
|
494
674
|
|
@@ -497,7 +677,7 @@ namespace boost
|
|
497
677
|
}
|
498
678
|
|
499
679
|
template <typename R>
|
500
|
-
class
|
680
|
+
class BOOST_THREAD_FUTURE;
|
501
681
|
|
502
682
|
template <typename R>
|
503
683
|
class shared_future;
|
@@ -509,7 +689,7 @@ namespace boost
|
|
509
689
|
};
|
510
690
|
|
511
691
|
template<typename T>
|
512
|
-
struct is_future_type<
|
692
|
+
struct is_future_type<BOOST_THREAD_FUTURE<T> >
|
513
693
|
{
|
514
694
|
BOOST_STATIC_CONSTANT(bool, value=true);
|
515
695
|
};
|
@@ -626,14 +806,13 @@ namespace boost
|
|
626
806
|
class packaged_task;
|
627
807
|
|
628
808
|
template <typename R>
|
629
|
-
class
|
809
|
+
class BOOST_THREAD_FUTURE
|
630
810
|
{
|
631
|
-
|
632
|
-
unique_future& operator=(unique_future& rhs);// = delete;
|
811
|
+
private:
|
633
812
|
|
634
813
|
typedef boost::shared_ptr<detail::future_object<R> > future_ptr;
|
635
814
|
|
636
|
-
future_ptr
|
815
|
+
future_ptr future_;
|
637
816
|
|
638
817
|
friend class shared_future<R>;
|
639
818
|
friend class promise<R>;
|
@@ -642,99 +821,92 @@ namespace boost
|
|
642
821
|
|
643
822
|
typedef typename detail::future_traits<R>::move_dest_type move_dest_type;
|
644
823
|
|
645
|
-
|
646
|
-
|
824
|
+
BOOST_THREAD_FUTURE(future_ptr a_future):
|
825
|
+
future_(a_future)
|
647
826
|
{}
|
648
827
|
|
649
828
|
public:
|
829
|
+
BOOST_THREAD_MOVABLE_ONLY(BOOST_THREAD_FUTURE)
|
650
830
|
typedef future_state::state state;
|
651
831
|
|
652
|
-
|
832
|
+
BOOST_THREAD_FUTURE()
|
653
833
|
{}
|
654
834
|
|
655
|
-
~
|
835
|
+
~BOOST_THREAD_FUTURE()
|
656
836
|
{}
|
657
837
|
|
658
|
-
|
659
|
-
|
838
|
+
BOOST_THREAD_FUTURE(BOOST_THREAD_RV_REF(BOOST_THREAD_FUTURE) other) BOOST_NOEXCEPT:
|
839
|
+
future_(BOOST_THREAD_RV(other).future_)
|
660
840
|
{
|
661
|
-
|
662
|
-
}
|
663
|
-
unique_future& operator=(unique_future && other)
|
664
|
-
{
|
665
|
-
future=other.future;
|
666
|
-
other.future.reset();
|
667
|
-
return *this;
|
668
|
-
}
|
669
|
-
#else
|
670
|
-
unique_future(boost::detail::thread_move_t<unique_future> other):
|
671
|
-
future(other->future)
|
672
|
-
{
|
673
|
-
other->future.reset();
|
841
|
+
BOOST_THREAD_RV(other).future_.reset();
|
674
842
|
}
|
675
843
|
|
676
|
-
|
844
|
+
BOOST_THREAD_FUTURE& operator=(BOOST_THREAD_RV_REF(BOOST_THREAD_FUTURE) other) BOOST_NOEXCEPT
|
677
845
|
{
|
678
|
-
|
679
|
-
other
|
846
|
+
future_=BOOST_THREAD_RV(other).future_;
|
847
|
+
BOOST_THREAD_RV(other).future_.reset();
|
680
848
|
return *this;
|
681
849
|
}
|
682
850
|
|
683
|
-
|
851
|
+
shared_future<R> share()
|
684
852
|
{
|
685
|
-
|
853
|
+
return shared_future<R>(::boost::move(*this));
|
686
854
|
}
|
687
|
-
#endif
|
688
855
|
|
689
|
-
void swap(
|
856
|
+
void swap(BOOST_THREAD_FUTURE& other)
|
690
857
|
{
|
691
|
-
|
858
|
+
future_.swap(other.future_);
|
692
859
|
}
|
693
860
|
|
694
861
|
// retrieving the value
|
695
862
|
move_dest_type get()
|
696
863
|
{
|
697
|
-
if(!
|
864
|
+
if(!future_)
|
698
865
|
{
|
699
866
|
boost::throw_exception(future_uninitialized());
|
700
867
|
}
|
701
868
|
|
702
|
-
return
|
869
|
+
return future_->get();
|
703
870
|
}
|
704
871
|
|
705
872
|
// functions to check state, and wait for ready
|
706
|
-
state get_state() const
|
873
|
+
state get_state() const BOOST_NOEXCEPT
|
707
874
|
{
|
708
|
-
if(!
|
875
|
+
if(!future_)
|
709
876
|
{
|
710
877
|
return future_state::uninitialized;
|
711
878
|
}
|
712
|
-
return
|
879
|
+
return future_->get_state();
|
713
880
|
}
|
714
881
|
|
715
|
-
|
716
|
-
bool is_ready() const
|
882
|
+
bool is_ready() const BOOST_NOEXCEPT
|
717
883
|
{
|
718
884
|
return get_state()==future_state::ready;
|
719
885
|
}
|
720
886
|
|
721
|
-
bool has_exception() const
|
887
|
+
bool has_exception() const BOOST_NOEXCEPT
|
888
|
+
{
|
889
|
+
return future_ && future_->has_exception();
|
890
|
+
}
|
891
|
+
|
892
|
+
bool has_value() const BOOST_NOEXCEPT
|
722
893
|
{
|
723
|
-
return
|
894
|
+
return future_ && future_->has_value();
|
724
895
|
}
|
725
896
|
|
726
|
-
bool
|
897
|
+
bool valid() const BOOST_NOEXCEPT
|
727
898
|
{
|
728
|
-
return
|
899
|
+
return future_ != 0;
|
729
900
|
}
|
730
901
|
|
902
|
+
|
731
903
|
void wait() const
|
732
904
|
{
|
733
|
-
if(!
|
905
|
+
if(!future_)
|
734
906
|
{
|
735
907
|
boost::throw_exception(future_uninitialized());
|
736
908
|
}
|
737
|
-
|
909
|
+
future_->wait(false);
|
738
910
|
}
|
739
911
|
|
740
912
|
template<typename Duration>
|
@@ -745,43 +917,55 @@ namespace boost
|
|
745
917
|
|
746
918
|
bool timed_wait_until(boost::system_time const& abs_time) const
|
747
919
|
{
|
748
|
-
if(!
|
920
|
+
if(!future_)
|
749
921
|
{
|
750
922
|
boost::throw_exception(future_uninitialized());
|
751
923
|
}
|
752
|
-
return
|
924
|
+
return future_->timed_wait_until(abs_time);
|
753
925
|
}
|
926
|
+
#ifdef BOOST_THREAD_USES_CHRONO
|
927
|
+
template <class Rep, class Period>
|
928
|
+
future_status
|
929
|
+
wait_for(const chrono::duration<Rep, Period>& rel_time) const
|
930
|
+
{
|
931
|
+
return wait_until(chrono::steady_clock::now() + rel_time);
|
754
932
|
|
933
|
+
}
|
934
|
+
template <class Clock, class Duration>
|
935
|
+
future_status
|
936
|
+
wait_until(const chrono::time_point<Clock, Duration>& abs_time) const
|
937
|
+
{
|
938
|
+
if(!future_)
|
939
|
+
{
|
940
|
+
boost::throw_exception(future_uninitialized());
|
941
|
+
}
|
942
|
+
return future_->wait_until(abs_time);
|
943
|
+
}
|
944
|
+
#endif
|
755
945
|
};
|
756
946
|
|
757
|
-
|
758
|
-
template <typename T>
|
759
|
-
struct has_move_emulation_enabled_aux<unique_future<T> >
|
760
|
-
: BOOST_MOVE_BOOST_NS::integral_constant<bool, true>
|
761
|
-
{};
|
762
|
-
#endif
|
947
|
+
BOOST_THREAD_DCL_MOVABLE_BEG(T) BOOST_THREAD_FUTURE<T> BOOST_THREAD_DCL_MOVABLE_END
|
763
948
|
|
764
949
|
template <typename R>
|
765
950
|
class shared_future
|
766
951
|
{
|
767
952
|
typedef boost::shared_ptr<detail::future_object<R> > future_ptr;
|
768
953
|
|
769
|
-
future_ptr
|
770
|
-
|
771
|
-
// shared_future(const unique_future<R>& other);
|
772
|
-
// shared_future& operator=(const unique_future<R>& other);
|
954
|
+
future_ptr future_;
|
773
955
|
|
774
956
|
friend class detail::future_waiter;
|
775
957
|
friend class promise<R>;
|
776
958
|
friend class packaged_task<R>;
|
777
959
|
|
778
|
-
shared_future(future_ptr
|
779
|
-
|
960
|
+
shared_future(future_ptr a_future):
|
961
|
+
future_(a_future)
|
780
962
|
{}
|
781
963
|
|
782
964
|
public:
|
965
|
+
BOOST_THREAD_MOVABLE(shared_future)
|
966
|
+
|
783
967
|
shared_future(shared_future const& other):
|
784
|
-
|
968
|
+
future_(other.future_)
|
785
969
|
{}
|
786
970
|
|
787
971
|
typedef future_state::state state;
|
@@ -794,112 +978,85 @@ namespace boost
|
|
794
978
|
|
795
979
|
shared_future& operator=(shared_future const& other)
|
796
980
|
{
|
797
|
-
|
798
|
-
return *this;
|
799
|
-
}
|
800
|
-
#ifndef BOOST_NO_RVALUE_REFERENCES
|
801
|
-
shared_future(shared_future && other)
|
802
|
-
{
|
803
|
-
future.swap(other.future);
|
804
|
-
}
|
805
|
-
shared_future(unique_future<R> && other)
|
806
|
-
{
|
807
|
-
future.swap(other.future);
|
808
|
-
}
|
809
|
-
shared_future& operator=(shared_future && other)
|
810
|
-
{
|
811
|
-
future.swap(other.future);
|
812
|
-
other.future.reset();
|
813
|
-
return *this;
|
814
|
-
}
|
815
|
-
shared_future& operator=(unique_future<R> && other)
|
816
|
-
{
|
817
|
-
future.swap(other.future);
|
818
|
-
other.future.reset();
|
981
|
+
future_=other.future_;
|
819
982
|
return *this;
|
820
983
|
}
|
821
|
-
|
822
|
-
|
823
|
-
future(other->future)
|
984
|
+
shared_future(BOOST_THREAD_RV_REF(shared_future) other) BOOST_NOEXCEPT :
|
985
|
+
future_(BOOST_THREAD_RV(other).future_)
|
824
986
|
{
|
825
|
-
other
|
987
|
+
BOOST_THREAD_RV(other).future_.reset();
|
826
988
|
}
|
827
|
-
|
828
|
-
|
829
|
-
future(other->future)
|
989
|
+
shared_future(BOOST_THREAD_RV_REF_BEG BOOST_THREAD_FUTURE<R> BOOST_THREAD_RV_REF_END other) BOOST_NOEXCEPT :
|
990
|
+
future_(BOOST_THREAD_RV(other).future_)
|
830
991
|
{
|
831
|
-
other
|
992
|
+
BOOST_THREAD_RV(other).future_.reset();
|
832
993
|
}
|
833
|
-
shared_future& operator=(
|
994
|
+
shared_future& operator=(BOOST_THREAD_RV_REF(shared_future) other) BOOST_NOEXCEPT
|
834
995
|
{
|
835
|
-
|
836
|
-
other
|
996
|
+
future_.swap(BOOST_THREAD_RV(other).future_);
|
997
|
+
BOOST_THREAD_RV(other).future_.reset();
|
837
998
|
return *this;
|
838
999
|
}
|
839
|
-
shared_future& operator=(
|
1000
|
+
shared_future& operator=(BOOST_THREAD_RV_REF_BEG BOOST_THREAD_FUTURE<R> BOOST_THREAD_RV_REF_END other) BOOST_NOEXCEPT
|
840
1001
|
{
|
841
|
-
|
842
|
-
other
|
1002
|
+
future_.swap(BOOST_THREAD_RV(other).future_);
|
1003
|
+
BOOST_THREAD_RV(other).future_.reset();
|
843
1004
|
return *this;
|
844
1005
|
}
|
845
1006
|
|
846
|
-
|
1007
|
+
void swap(shared_future& other) BOOST_NOEXCEPT
|
847
1008
|
{
|
848
|
-
|
849
|
-
}
|
850
|
-
|
851
|
-
#endif
|
852
|
-
|
853
|
-
void swap(shared_future& other)
|
854
|
-
{
|
855
|
-
future.swap(other.future);
|
1009
|
+
future_.swap(other.future_);
|
856
1010
|
}
|
857
1011
|
|
858
1012
|
// retrieving the value
|
859
|
-
|
860
|
-
R get()
|
1013
|
+
typename detail::future_object<R>::shared_future_get_result_type get()
|
861
1014
|
{
|
862
|
-
if(!
|
1015
|
+
if(!future_)
|
863
1016
|
{
|
864
1017
|
boost::throw_exception(future_uninitialized());
|
865
1018
|
}
|
866
1019
|
|
867
|
-
return
|
1020
|
+
return future_->get_sh();
|
868
1021
|
}
|
869
1022
|
|
870
1023
|
// functions to check state, and wait for ready
|
871
|
-
state get_state() const
|
1024
|
+
state get_state() const BOOST_NOEXCEPT
|
872
1025
|
{
|
873
|
-
if(!
|
1026
|
+
if(!future_)
|
874
1027
|
{
|
875
1028
|
return future_state::uninitialized;
|
876
1029
|
}
|
877
|
-
return
|
1030
|
+
return future_->get_state();
|
878
1031
|
}
|
879
1032
|
|
1033
|
+
bool valid() const BOOST_NOEXCEPT
|
1034
|
+
{
|
1035
|
+
return future_ != 0;
|
1036
|
+
}
|
880
1037
|
|
881
|
-
bool is_ready() const
|
1038
|
+
bool is_ready() const BOOST_NOEXCEPT
|
882
1039
|
{
|
883
1040
|
return get_state()==future_state::ready;
|
884
1041
|
}
|
885
1042
|
|
886
|
-
bool has_exception() const
|
1043
|
+
bool has_exception() const BOOST_NOEXCEPT
|
887
1044
|
{
|
888
|
-
return
|
1045
|
+
return future_ && future_->has_exception();
|
889
1046
|
}
|
890
1047
|
|
891
|
-
bool has_value() const
|
1048
|
+
bool has_value() const BOOST_NOEXCEPT
|
892
1049
|
{
|
893
|
-
return
|
1050
|
+
return future_ && future_->has_value();
|
894
1051
|
}
|
895
1052
|
|
896
1053
|
void wait() const
|
897
1054
|
{
|
898
|
-
if(!
|
1055
|
+
if(!future_)
|
899
1056
|
{
|
900
1057
|
boost::throw_exception(future_uninitialized());
|
901
1058
|
}
|
902
|
-
|
1059
|
+
future_->wait(false);
|
903
1060
|
}
|
904
1061
|
|
905
1062
|
template<typename Duration>
|
@@ -910,157 +1067,173 @@ namespace boost
|
|
910
1067
|
|
911
1068
|
bool timed_wait_until(boost::system_time const& abs_time) const
|
912
1069
|
{
|
913
|
-
if(!
|
1070
|
+
if(!future_)
|
914
1071
|
{
|
915
1072
|
boost::throw_exception(future_uninitialized());
|
916
1073
|
}
|
917
|
-
return
|
1074
|
+
return future_->timed_wait_until(abs_time);
|
918
1075
|
}
|
1076
|
+
#ifdef BOOST_THREAD_USES_CHRONO
|
919
1077
|
|
920
|
-
|
1078
|
+
template <class Rep, class Period>
|
1079
|
+
future_status
|
1080
|
+
wait_for(const chrono::duration<Rep, Period>& rel_time) const
|
1081
|
+
{
|
1082
|
+
return wait_until(chrono::steady_clock::now() + rel_time);
|
921
1083
|
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
1084
|
+
}
|
1085
|
+
template <class Clock, class Duration>
|
1086
|
+
future_status
|
1087
|
+
wait_until(const chrono::time_point<Clock, Duration>& abs_time) const
|
1088
|
+
{
|
1089
|
+
if(!future_)
|
1090
|
+
{
|
1091
|
+
boost::throw_exception(future_uninitialized());
|
1092
|
+
}
|
1093
|
+
return future_->wait_until(abs_time);
|
1094
|
+
}
|
927
1095
|
#endif
|
1096
|
+
};
|
1097
|
+
|
1098
|
+
BOOST_THREAD_DCL_MOVABLE_BEG(T) shared_future<T> BOOST_THREAD_DCL_MOVABLE_END
|
928
1099
|
|
929
1100
|
template <typename R>
|
930
1101
|
class promise
|
931
1102
|
{
|
932
1103
|
typedef boost::shared_ptr<detail::future_object<R> > future_ptr;
|
933
1104
|
|
934
|
-
future_ptr
|
1105
|
+
future_ptr future_;
|
935
1106
|
bool future_obtained;
|
936
1107
|
|
937
|
-
promise(promise & rhs);// = delete;
|
938
|
-
promise & operator=(promise & rhs);// = delete;
|
939
|
-
|
940
1108
|
void lazy_init()
|
941
1109
|
{
|
942
|
-
|
1110
|
+
#if defined BOOST_THREAD_PROMISE_LAZY
|
1111
|
+
if(!atomic_load(&future_))
|
943
1112
|
{
|
944
1113
|
future_ptr blank;
|
945
|
-
atomic_compare_exchange(&
|
1114
|
+
atomic_compare_exchange(&future_,&blank,future_ptr(new detail::future_object<R>));
|
946
1115
|
}
|
1116
|
+
#endif
|
947
1117
|
}
|
948
1118
|
|
949
1119
|
public:
|
950
|
-
|
1120
|
+
BOOST_THREAD_MOVABLE_ONLY(promise)
|
1121
|
+
#if defined BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
|
1122
|
+
template <class Allocator>
|
1123
|
+
promise(boost::allocator_arg_t, Allocator a)
|
1124
|
+
{
|
1125
|
+
typedef typename Allocator::template rebind<detail::future_object<R> >::other A2;
|
1126
|
+
A2 a2(a);
|
1127
|
+
typedef thread_detail::allocator_destructor<A2> D;
|
951
1128
|
|
1129
|
+
future_ = future_ptr(::new(a2.allocate(1)) detail::future_object<R>(), D(a2, 1) );
|
1130
|
+
future_obtained = false;
|
1131
|
+
}
|
1132
|
+
#endif
|
952
1133
|
promise():
|
953
|
-
|
1134
|
+
#if defined BOOST_THREAD_PROMISE_LAZY
|
1135
|
+
future_(),
|
1136
|
+
#else
|
1137
|
+
future_(new detail::future_object<R>()),
|
1138
|
+
#endif
|
1139
|
+
future_obtained(false)
|
954
1140
|
{}
|
955
1141
|
|
956
1142
|
~promise()
|
957
1143
|
{
|
958
|
-
if(
|
1144
|
+
if(future_)
|
959
1145
|
{
|
960
|
-
boost::lock_guard<boost::mutex> lock(
|
1146
|
+
boost::lock_guard<boost::mutex> lock(future_->mutex);
|
961
1147
|
|
962
|
-
if(!
|
1148
|
+
if(!future_->done)
|
963
1149
|
{
|
964
|
-
|
1150
|
+
future_->mark_exceptional_finish_internal(boost::copy_exception(broken_promise()));
|
965
1151
|
}
|
966
1152
|
}
|
967
1153
|
}
|
968
1154
|
|
969
1155
|
// Assignment
|
970
|
-
|
971
|
-
|
972
|
-
future_obtained(rhs.future_obtained)
|
973
|
-
{
|
974
|
-
future.swap(rhs.future);
|
975
|
-
rhs.future_obtained=false;
|
976
|
-
}
|
977
|
-
promise & operator=(promise&& rhs)
|
1156
|
+
promise(BOOST_THREAD_RV_REF(promise) rhs) BOOST_NOEXCEPT :
|
1157
|
+
future_(BOOST_THREAD_RV(rhs).future_),future_obtained(BOOST_THREAD_RV(rhs).future_obtained)
|
978
1158
|
{
|
979
|
-
|
980
|
-
|
981
|
-
rhs.future.reset();
|
982
|
-
rhs.future_obtained=false;
|
983
|
-
return *this;
|
1159
|
+
BOOST_THREAD_RV(rhs).future_.reset();
|
1160
|
+
BOOST_THREAD_RV(rhs).future_obtained=false;
|
984
1161
|
}
|
985
|
-
|
986
|
-
promise(boost::detail::thread_move_t<promise> rhs):
|
987
|
-
future(rhs->future),future_obtained(rhs->future_obtained)
|
1162
|
+
promise & operator=(BOOST_THREAD_RV_REF(promise) rhs) BOOST_NOEXCEPT
|
988
1163
|
{
|
989
|
-
rhs
|
990
|
-
rhs
|
991
|
-
|
992
|
-
|
993
|
-
{
|
994
|
-
future=rhs->future;
|
995
|
-
future_obtained=rhs->future_obtained;
|
996
|
-
rhs->future.reset();
|
997
|
-
rhs->future_obtained=false;
|
1164
|
+
future_=BOOST_THREAD_RV(rhs).future_;
|
1165
|
+
future_obtained=BOOST_THREAD_RV(rhs).future_obtained;
|
1166
|
+
BOOST_THREAD_RV(rhs).future_.reset();
|
1167
|
+
BOOST_THREAD_RV(rhs).future_obtained=false;
|
998
1168
|
return *this;
|
999
1169
|
}
|
1000
1170
|
|
1001
|
-
operator boost::detail::thread_move_t<promise>()
|
1002
|
-
{
|
1003
|
-
return boost::detail::thread_move_t<promise>(*this);
|
1004
|
-
}
|
1005
|
-
#endif
|
1006
|
-
|
1007
1171
|
void swap(promise& other)
|
1008
1172
|
{
|
1009
|
-
|
1173
|
+
future_.swap(other.future_);
|
1010
1174
|
std::swap(future_obtained,other.future_obtained);
|
1011
1175
|
}
|
1012
1176
|
|
1013
1177
|
// Result retrieval
|
1014
|
-
|
1178
|
+
BOOST_THREAD_FUTURE<R> get_future()
|
1015
1179
|
{
|
1016
1180
|
lazy_init();
|
1017
|
-
if(
|
1181
|
+
if (future_.get()==0)
|
1182
|
+
{
|
1183
|
+
boost::throw_exception(promise_moved());
|
1184
|
+
}
|
1185
|
+
if (future_obtained)
|
1018
1186
|
{
|
1019
1187
|
boost::throw_exception(future_already_retrieved());
|
1020
1188
|
}
|
1021
1189
|
future_obtained=true;
|
1022
|
-
return
|
1190
|
+
return BOOST_THREAD_FUTURE<R>(future_);
|
1023
1191
|
}
|
1024
1192
|
|
1025
1193
|
void set_value(typename detail::future_traits<R>::source_reference_type r)
|
1026
1194
|
{
|
1027
1195
|
lazy_init();
|
1028
|
-
boost::lock_guard<boost::mutex> lock(
|
1029
|
-
if(
|
1196
|
+
boost::lock_guard<boost::mutex> lock(future_->mutex);
|
1197
|
+
if(future_->done)
|
1030
1198
|
{
|
1031
1199
|
boost::throw_exception(promise_already_satisfied());
|
1032
1200
|
}
|
1033
|
-
|
1201
|
+
future_->mark_finished_with_result_internal(r);
|
1034
1202
|
}
|
1035
1203
|
|
1036
1204
|
// void set_value(R && r);
|
1037
1205
|
void set_value(typename detail::future_traits<R>::rvalue_source_type r)
|
1038
1206
|
{
|
1039
1207
|
lazy_init();
|
1040
|
-
boost::lock_guard<boost::mutex> lock(
|
1041
|
-
if(
|
1208
|
+
boost::lock_guard<boost::mutex> lock(future_->mutex);
|
1209
|
+
if(future_->done)
|
1042
1210
|
{
|
1043
1211
|
boost::throw_exception(promise_already_satisfied());
|
1044
1212
|
}
|
1045
|
-
|
1213
|
+
future_->mark_finished_with_result_internal(static_cast<typename detail::future_traits<R>::rvalue_source_type>(r));
|
1046
1214
|
}
|
1047
1215
|
|
1048
1216
|
void set_exception(boost::exception_ptr p)
|
1049
1217
|
{
|
1050
1218
|
lazy_init();
|
1051
|
-
boost::lock_guard<boost::mutex> lock(
|
1052
|
-
if(
|
1219
|
+
boost::lock_guard<boost::mutex> lock(future_->mutex);
|
1220
|
+
if(future_->done)
|
1053
1221
|
{
|
1054
1222
|
boost::throw_exception(promise_already_satisfied());
|
1055
1223
|
}
|
1056
|
-
|
1224
|
+
future_->mark_exceptional_finish_internal(p);
|
1057
1225
|
}
|
1058
1226
|
|
1227
|
+
// setting the result with deferred notification
|
1228
|
+
//void set_value_at_thread_exit(const R& r); // NOT YET IMPLEMENTED
|
1229
|
+
//void set_value_at_thread_exit(see below); // NOT YET IMPLEMENTED
|
1230
|
+
//void set_exception_at_thread_exit(exception_ptr p); // NOT YET IMPLEMENTED
|
1231
|
+
|
1059
1232
|
template<typename F>
|
1060
1233
|
void set_wait_callback(F f)
|
1061
1234
|
{
|
1062
1235
|
lazy_init();
|
1063
|
-
|
1236
|
+
future_->set_wait_callback(f,this);
|
1064
1237
|
}
|
1065
1238
|
|
1066
1239
|
};
|
@@ -1070,135 +1243,140 @@ namespace boost
|
|
1070
1243
|
{
|
1071
1244
|
typedef boost::shared_ptr<detail::future_object<void> > future_ptr;
|
1072
1245
|
|
1073
|
-
future_ptr
|
1246
|
+
future_ptr future_;
|
1074
1247
|
bool future_obtained;
|
1075
1248
|
|
1076
|
-
promise(promise & rhs);// = delete;
|
1077
|
-
promise & operator=(promise & rhs);// = delete;
|
1078
|
-
|
1079
1249
|
void lazy_init()
|
1080
1250
|
{
|
1081
|
-
|
1251
|
+
#if defined BOOST_THREAD_PROMISE_LAZY
|
1252
|
+
if(!atomic_load(&future_))
|
1082
1253
|
{
|
1083
1254
|
future_ptr blank;
|
1084
|
-
atomic_compare_exchange(&
|
1255
|
+
atomic_compare_exchange(&future_,&blank,future_ptr(new detail::future_object<void>));
|
1085
1256
|
}
|
1257
|
+
#endif
|
1086
1258
|
}
|
1087
1259
|
public:
|
1088
|
-
|
1260
|
+
BOOST_THREAD_MOVABLE_ONLY(promise)
|
1089
1261
|
|
1262
|
+
#if defined BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
|
1263
|
+
template <class Allocator>
|
1264
|
+
promise(boost::allocator_arg_t, Allocator a)
|
1265
|
+
{
|
1266
|
+
typedef typename Allocator::template rebind<detail::future_object<void> >::other A2;
|
1267
|
+
A2 a2(a);
|
1268
|
+
typedef thread_detail::allocator_destructor<A2> D;
|
1269
|
+
|
1270
|
+
future_ = future_ptr(::new(a2.allocate(1)) detail::future_object<void>(), D(a2, 1) );
|
1271
|
+
future_obtained = false;
|
1272
|
+
}
|
1273
|
+
#endif
|
1090
1274
|
promise():
|
1091
|
-
|
1275
|
+
#if defined BOOST_THREAD_PROMISE_LAZY
|
1276
|
+
future_(),
|
1277
|
+
#else
|
1278
|
+
future_(new detail::future_object<void>),
|
1279
|
+
#endif
|
1280
|
+
future_obtained(false)
|
1092
1281
|
{}
|
1093
1282
|
|
1094
1283
|
~promise()
|
1095
1284
|
{
|
1096
|
-
if(
|
1285
|
+
if(future_)
|
1097
1286
|
{
|
1098
|
-
boost::lock_guard<boost::mutex> lock(
|
1287
|
+
boost::lock_guard<boost::mutex> lock(future_->mutex);
|
1099
1288
|
|
1100
|
-
if(!
|
1289
|
+
if(!future_->done)
|
1101
1290
|
{
|
1102
|
-
|
1291
|
+
future_->mark_exceptional_finish_internal(boost::copy_exception(broken_promise()));
|
1103
1292
|
}
|
1104
1293
|
}
|
1105
1294
|
}
|
1106
1295
|
|
1107
1296
|
// Assignment
|
1108
|
-
|
1109
|
-
|
1110
|
-
future_obtained(rhs.future_obtained)
|
1111
|
-
{
|
1112
|
-
future.swap(rhs.future);
|
1113
|
-
rhs.future_obtained=false;
|
1114
|
-
}
|
1115
|
-
promise & operator=(promise&& rhs)
|
1116
|
-
{
|
1117
|
-
future.swap(rhs.future);
|
1118
|
-
future_obtained=rhs.future_obtained;
|
1119
|
-
rhs.future.reset();
|
1120
|
-
rhs.future_obtained=false;
|
1121
|
-
return *this;
|
1122
|
-
}
|
1123
|
-
#else
|
1124
|
-
promise(boost::detail::thread_move_t<promise> rhs):
|
1125
|
-
future(rhs->future),future_obtained(rhs->future_obtained)
|
1297
|
+
promise(BOOST_THREAD_RV_REF(promise) rhs) BOOST_NOEXCEPT :
|
1298
|
+
future_(BOOST_THREAD_RV(rhs).future_),future_obtained(BOOST_THREAD_RV(rhs).future_obtained)
|
1126
1299
|
{
|
1127
|
-
|
1128
|
-
rhs
|
1300
|
+
// we need to release the future as shared_ptr doesn't implements move semantics
|
1301
|
+
BOOST_THREAD_RV(rhs).future_.reset();
|
1302
|
+
BOOST_THREAD_RV(rhs).future_obtained=false;
|
1129
1303
|
}
|
1130
|
-
|
1304
|
+
|
1305
|
+
promise & operator=(BOOST_THREAD_RV_REF(promise) rhs) BOOST_NOEXCEPT
|
1131
1306
|
{
|
1132
|
-
|
1133
|
-
future_obtained=rhs
|
1134
|
-
rhs
|
1135
|
-
rhs
|
1307
|
+
future_=BOOST_THREAD_RV(rhs).future_;
|
1308
|
+
future_obtained=BOOST_THREAD_RV(rhs).future_obtained;
|
1309
|
+
BOOST_THREAD_RV(rhs).future_.reset();
|
1310
|
+
BOOST_THREAD_RV(rhs).future_obtained=false;
|
1136
1311
|
return *this;
|
1137
1312
|
}
|
1138
1313
|
|
1139
|
-
operator boost::detail::thread_move_t<promise>()
|
1140
|
-
{
|
1141
|
-
return boost::detail::thread_move_t<promise>(*this);
|
1142
|
-
}
|
1143
|
-
#endif
|
1144
|
-
|
1145
1314
|
void swap(promise& other)
|
1146
1315
|
{
|
1147
|
-
|
1316
|
+
future_.swap(other.future_);
|
1148
1317
|
std::swap(future_obtained,other.future_obtained);
|
1149
1318
|
}
|
1150
1319
|
|
1151
1320
|
// Result retrieval
|
1152
|
-
|
1321
|
+
BOOST_THREAD_FUTURE<void> get_future()
|
1153
1322
|
{
|
1154
1323
|
lazy_init();
|
1155
1324
|
|
1325
|
+
if (future_.get()==0)
|
1326
|
+
{
|
1327
|
+
boost::throw_exception(promise_moved());
|
1328
|
+
}
|
1156
1329
|
if(future_obtained)
|
1157
1330
|
{
|
1158
1331
|
boost::throw_exception(future_already_retrieved());
|
1159
1332
|
}
|
1160
1333
|
future_obtained=true;
|
1161
|
-
return
|
1334
|
+
return BOOST_THREAD_FUTURE<void>(future_);
|
1162
1335
|
}
|
1163
1336
|
|
1164
1337
|
void set_value()
|
1165
1338
|
{
|
1166
1339
|
lazy_init();
|
1167
|
-
boost::lock_guard<boost::mutex> lock(
|
1168
|
-
if(
|
1340
|
+
boost::lock_guard<boost::mutex> lock(future_->mutex);
|
1341
|
+
if(future_->done)
|
1169
1342
|
{
|
1170
1343
|
boost::throw_exception(promise_already_satisfied());
|
1171
1344
|
}
|
1172
|
-
|
1345
|
+
future_->mark_finished_with_result_internal();
|
1173
1346
|
}
|
1174
1347
|
|
1175
1348
|
void set_exception(boost::exception_ptr p)
|
1176
1349
|
{
|
1177
1350
|
lazy_init();
|
1178
|
-
boost::lock_guard<boost::mutex> lock(
|
1179
|
-
if(
|
1351
|
+
boost::lock_guard<boost::mutex> lock(future_->mutex);
|
1352
|
+
if(future_->done)
|
1180
1353
|
{
|
1181
1354
|
boost::throw_exception(promise_already_satisfied());
|
1182
1355
|
}
|
1183
|
-
|
1356
|
+
future_->mark_exceptional_finish_internal(p);
|
1184
1357
|
}
|
1185
1358
|
|
1186
1359
|
template<typename F>
|
1187
1360
|
void set_wait_callback(F f)
|
1188
1361
|
{
|
1189
1362
|
lazy_init();
|
1190
|
-
|
1363
|
+
future_->set_wait_callback(f,this);
|
1191
1364
|
}
|
1192
1365
|
|
1193
1366
|
};
|
1194
1367
|
|
1195
|
-
#
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1368
|
+
#if defined BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
|
1369
|
+
namespace container
|
1370
|
+
{
|
1371
|
+
template <class R, class Alloc>
|
1372
|
+
struct uses_allocator<promise<R> , Alloc> : true_type
|
1373
|
+
{
|
1374
|
+
};
|
1375
|
+
}
|
1200
1376
|
#endif
|
1201
1377
|
|
1378
|
+
BOOST_THREAD_DCL_MOVABLE_BEG(T) promise<T> BOOST_THREAD_DCL_MOVABLE_END
|
1379
|
+
|
1202
1380
|
namespace detail
|
1203
1381
|
{
|
1204
1382
|
template<typename R>
|
@@ -1211,6 +1389,10 @@ namespace boost
|
|
1211
1389
|
started(false)
|
1212
1390
|
{}
|
1213
1391
|
|
1392
|
+
void reset()
|
1393
|
+
{
|
1394
|
+
started=false;
|
1395
|
+
}
|
1214
1396
|
void run()
|
1215
1397
|
{
|
1216
1398
|
{
|
@@ -1239,30 +1421,38 @@ namespace boost
|
|
1239
1421
|
};
|
1240
1422
|
|
1241
1423
|
|
1424
|
+
|
1425
|
+
|
1242
1426
|
template<typename R,typename F>
|
1243
1427
|
struct task_object:
|
1244
1428
|
task_base<R>
|
1245
1429
|
{
|
1430
|
+
private:
|
1431
|
+
task_object(task_object&);
|
1432
|
+
public:
|
1246
1433
|
F f;
|
1247
1434
|
task_object(F const& f_):
|
1248
1435
|
f(f_)
|
1249
1436
|
{}
|
1250
|
-
#ifndef
|
1251
|
-
task_object(F
|
1252
|
-
|
1437
|
+
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
1438
|
+
task_object(BOOST_THREAD_RV_REF(F) f_):
|
1439
|
+
f(boost::forward<F>(f_))
|
1253
1440
|
{}
|
1254
1441
|
#else
|
1255
|
-
task_object(
|
1256
|
-
f(f_)
|
1442
|
+
task_object(BOOST_THREAD_RV_REF(F) f_):
|
1443
|
+
f(boost::move(f_))
|
1257
1444
|
{}
|
1258
1445
|
#endif
|
1259
|
-
|
1260
1446
|
void do_run()
|
1261
1447
|
{
|
1262
1448
|
try
|
1263
1449
|
{
|
1264
1450
|
this->mark_finished_with_result(f());
|
1265
1451
|
}
|
1452
|
+
catch(thread_interrupted& )
|
1453
|
+
{
|
1454
|
+
this->mark_interrupted_finish();
|
1455
|
+
}
|
1266
1456
|
catch(...)
|
1267
1457
|
{
|
1268
1458
|
this->mark_exceptional_finish();
|
@@ -1270,21 +1460,52 @@ namespace boost
|
|
1270
1460
|
}
|
1271
1461
|
};
|
1272
1462
|
|
1463
|
+
template<typename R>
|
1464
|
+
struct task_object<R,R (*)()>:
|
1465
|
+
task_base<R>
|
1466
|
+
{
|
1467
|
+
private:
|
1468
|
+
task_object(task_object&);
|
1469
|
+
public:
|
1470
|
+
R (*f)();
|
1471
|
+
task_object(R (*f_)()):
|
1472
|
+
f(f_)
|
1473
|
+
{}
|
1474
|
+
void do_run()
|
1475
|
+
{
|
1476
|
+
try
|
1477
|
+
{
|
1478
|
+
this->mark_finished_with_result(f());
|
1479
|
+
}
|
1480
|
+
catch(thread_interrupted& )
|
1481
|
+
{
|
1482
|
+
this->mark_interrupted_finish();
|
1483
|
+
}
|
1484
|
+
catch(...)
|
1485
|
+
{
|
1486
|
+
this->mark_exceptional_finish();
|
1487
|
+
}
|
1488
|
+
}
|
1489
|
+
};
|
1490
|
+
|
1273
1491
|
template<typename F>
|
1274
1492
|
struct task_object<void,F>:
|
1275
1493
|
task_base<void>
|
1276
1494
|
{
|
1495
|
+
private:
|
1496
|
+
task_object(task_object&);
|
1497
|
+
public:
|
1277
1498
|
F f;
|
1278
1499
|
task_object(F const& f_):
|
1279
1500
|
f(f_)
|
1280
1501
|
{}
|
1281
|
-
#ifndef
|
1282
|
-
task_object(F
|
1283
|
-
|
1502
|
+
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
1503
|
+
task_object(BOOST_THREAD_RV_REF(F) f_):
|
1504
|
+
f(boost::forward<F>(f_))
|
1284
1505
|
{}
|
1285
1506
|
#else
|
1286
|
-
task_object(
|
1287
|
-
f(f_)
|
1507
|
+
task_object(BOOST_THREAD_RV_REF(F) f_):
|
1508
|
+
f(boost::move(f_))
|
1288
1509
|
{}
|
1289
1510
|
#endif
|
1290
1511
|
|
@@ -1295,6 +1516,10 @@ namespace boost
|
|
1295
1516
|
f();
|
1296
1517
|
this->mark_finished_with_result();
|
1297
1518
|
}
|
1519
|
+
catch(thread_interrupted& )
|
1520
|
+
{
|
1521
|
+
this->mark_interrupted_finish();
|
1522
|
+
}
|
1298
1523
|
catch(...)
|
1299
1524
|
{
|
1300
1525
|
this->mark_exceptional_finish();
|
@@ -1302,49 +1527,122 @@ namespace boost
|
|
1302
1527
|
}
|
1303
1528
|
};
|
1304
1529
|
|
1305
|
-
|
1530
|
+
template<>
|
1531
|
+
struct task_object<void,void (*)()>:
|
1532
|
+
task_base<void>
|
1533
|
+
{
|
1534
|
+
private:
|
1535
|
+
task_object(task_object&);
|
1536
|
+
public:
|
1537
|
+
void (*f)();
|
1538
|
+
task_object(void (*f_)()):
|
1539
|
+
f(f_)
|
1540
|
+
{}
|
1541
|
+
void do_run()
|
1542
|
+
{
|
1543
|
+
try
|
1544
|
+
{
|
1545
|
+
f();
|
1546
|
+
this->mark_finished_with_result();
|
1547
|
+
}
|
1548
|
+
catch(thread_interrupted& )
|
1549
|
+
{
|
1550
|
+
this->mark_interrupted_finish();
|
1551
|
+
}
|
1552
|
+
catch(...)
|
1553
|
+
{
|
1554
|
+
this->mark_exceptional_finish();
|
1555
|
+
}
|
1556
|
+
}
|
1557
|
+
};
|
1306
1558
|
|
1559
|
+
}
|
1307
1560
|
|
1308
1561
|
template<typename R>
|
1309
1562
|
class packaged_task
|
1310
1563
|
{
|
1564
|
+
typedef boost::shared_ptr<detail::task_base<R> > task_ptr;
|
1311
1565
|
boost::shared_ptr<detail::task_base<R> > task;
|
1312
1566
|
bool future_obtained;
|
1313
1567
|
|
1314
|
-
packaged_task(packaged_task&);// = delete;
|
1315
|
-
packaged_task& operator=(packaged_task&);// = delete;
|
1316
|
-
|
1317
1568
|
public:
|
1569
|
+
typedef R result_type;
|
1570
|
+
BOOST_THREAD_MOVABLE_ONLY(packaged_task)
|
1571
|
+
|
1318
1572
|
packaged_task():
|
1319
1573
|
future_obtained(false)
|
1320
1574
|
{}
|
1321
1575
|
|
1322
1576
|
// construction and destruction
|
1323
|
-
|
1324
|
-
explicit packaged_task(F const& f):
|
1325
|
-
task(new detail::task_object<R,F>(f)),future_obtained(false)
|
1326
|
-
{}
|
1577
|
+
|
1327
1578
|
explicit packaged_task(R(*f)()):
|
1328
1579
|
task(new detail::task_object<R,R(*)()>(f)),future_obtained(false)
|
1329
1580
|
{}
|
1330
|
-
|
1331
|
-
#ifndef BOOST_NO_RVALUE_REFERENCES
|
1581
|
+
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
1332
1582
|
template <class F>
|
1333
|
-
explicit packaged_task(F
|
1334
|
-
task(new detail::task_object<R,
|
1583
|
+
explicit packaged_task(BOOST_THREAD_RV_REF(F) f):
|
1584
|
+
task(new detail::task_object<R,
|
1585
|
+
typename remove_cv<typename remove_reference<F>::type>::type
|
1586
|
+
>(boost::forward<F>(f))),future_obtained(false)
|
1335
1587
|
{}
|
1336
1588
|
#else
|
1337
1589
|
template <class F>
|
1338
|
-
explicit packaged_task(
|
1590
|
+
explicit packaged_task(F const& f):
|
1339
1591
|
task(new detail::task_object<R,F>(f)),future_obtained(false)
|
1340
1592
|
{}
|
1593
|
+
template <class F>
|
1594
|
+
explicit packaged_task(BOOST_THREAD_RV_REF(F) f):
|
1595
|
+
task(new detail::task_object<R,F>(boost::move(f))),future_obtained(false)
|
1596
|
+
{}
|
1341
1597
|
#endif
|
1342
1598
|
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1599
|
+
#if defined BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
|
1600
|
+
template <class Allocator>
|
1601
|
+
packaged_task(boost::allocator_arg_t, Allocator a, R(*f)())
|
1602
|
+
{
|
1603
|
+
typedef R(*FR)();
|
1604
|
+
typedef typename Allocator::template rebind<detail::task_object<R,FR> >::other A2;
|
1605
|
+
A2 a2(a);
|
1606
|
+
typedef thread_detail::allocator_destructor<A2> D;
|
1607
|
+
|
1608
|
+
task = task_ptr(::new(a2.allocate(1)) detail::task_object<R,FR>(f), D(a2, 1) );
|
1609
|
+
future_obtained = false;
|
1610
|
+
}
|
1611
|
+
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
1612
|
+
template <class F, class Allocator>
|
1613
|
+
packaged_task(boost::allocator_arg_t, Allocator a, BOOST_THREAD_RV_REF(F) f)
|
1614
|
+
{
|
1615
|
+
typedef typename remove_cv<typename remove_reference<F>::type>::type FR;
|
1616
|
+
typedef typename Allocator::template rebind<detail::task_object<R,FR> >::other A2;
|
1617
|
+
A2 a2(a);
|
1618
|
+
typedef thread_detail::allocator_destructor<A2> D;
|
1619
|
+
|
1620
|
+
task = task_ptr(::new(a2.allocate(1)) detail::task_object<R,FR>(boost::forward<F>(f)), D(a2, 1) );
|
1621
|
+
future_obtained = false;
|
1622
|
+
}
|
1623
|
+
#else
|
1624
|
+
template <class F, class Allocator>
|
1625
|
+
packaged_task(boost::allocator_arg_t, Allocator a, const F& f)
|
1626
|
+
{
|
1627
|
+
typedef typename Allocator::template rebind<detail::task_object<R,F> >::other A2;
|
1628
|
+
A2 a2(a);
|
1629
|
+
typedef thread_detail::allocator_destructor<A2> D;
|
1347
1630
|
|
1631
|
+
task = task_ptr(::new(a2.allocate(1)) detail::task_object<R,F>(f), D(a2, 1) );
|
1632
|
+
future_obtained = false;
|
1633
|
+
}
|
1634
|
+
template <class F, class Allocator>
|
1635
|
+
packaged_task(boost::allocator_arg_t, Allocator a, BOOST_THREAD_RV_REF(F) f)
|
1636
|
+
{
|
1637
|
+
typedef typename Allocator::template rebind<detail::task_object<R,F> >::other A2;
|
1638
|
+
A2 a2(a);
|
1639
|
+
typedef thread_detail::allocator_destructor<A2> D;
|
1640
|
+
|
1641
|
+
task = task_ptr(::new(a2.allocate(1)) detail::task_object<R,F>(boost::move(f)), D(a2, 1) );
|
1642
|
+
future_obtained = false;
|
1643
|
+
}
|
1644
|
+
#endif //BOOST_NO_CXX11_RVALUE_REFERENCES
|
1645
|
+
#endif // BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
|
1348
1646
|
|
1349
1647
|
~packaged_task()
|
1350
1648
|
{
|
@@ -1355,46 +1653,39 @@ namespace boost
|
|
1355
1653
|
}
|
1356
1654
|
|
1357
1655
|
// assignment
|
1358
|
-
|
1359
|
-
|
1360
|
-
future_obtained(other.future_obtained)
|
1361
|
-
{
|
1362
|
-
task.swap(other.task);
|
1363
|
-
other.future_obtained=false;
|
1364
|
-
}
|
1365
|
-
packaged_task& operator=(packaged_task&& other)
|
1656
|
+
packaged_task(BOOST_THREAD_RV_REF(packaged_task) other) BOOST_NOEXCEPT :
|
1657
|
+
future_obtained(BOOST_THREAD_RV(other).future_obtained)
|
1366
1658
|
{
|
1367
|
-
|
1368
|
-
|
1369
|
-
return *this;
|
1659
|
+
task.swap(BOOST_THREAD_RV(other).task);
|
1660
|
+
BOOST_THREAD_RV(other).future_obtained=false;
|
1370
1661
|
}
|
1371
|
-
|
1372
|
-
packaged_task(boost::detail::thread_move_t<packaged_task> other):
|
1373
|
-
future_obtained(other->future_obtained)
|
1662
|
+
packaged_task& operator=(BOOST_THREAD_RV_REF(packaged_task) other) BOOST_NOEXCEPT
|
1374
1663
|
{
|
1375
|
-
|
1376
|
-
other->future_obtained=false;
|
1377
|
-
}
|
1378
|
-
packaged_task& operator=(boost::detail::thread_move_t<packaged_task> other)
|
1379
|
-
{
|
1380
|
-
packaged_task temp(other);
|
1664
|
+
packaged_task temp(static_cast<BOOST_THREAD_RV_REF(packaged_task)>(other));
|
1381
1665
|
swap(temp);
|
1382
1666
|
return *this;
|
1383
1667
|
}
|
1384
|
-
|
1668
|
+
|
1669
|
+
void reset()
|
1385
1670
|
{
|
1386
|
-
|
1671
|
+
if (!valid())
|
1672
|
+
throw future_error(system::make_error_code(future_errc::no_state));
|
1673
|
+
task->reset();
|
1674
|
+
future_obtained=false;
|
1387
1675
|
}
|
1388
|
-
#endif
|
1389
1676
|
|
1390
|
-
|
1677
|
+
void swap(packaged_task& other) BOOST_NOEXCEPT
|
1391
1678
|
{
|
1392
1679
|
task.swap(other.task);
|
1393
1680
|
std::swap(future_obtained,other.future_obtained);
|
1394
1681
|
}
|
1682
|
+
bool valid() const BOOST_NOEXCEPT
|
1683
|
+
{
|
1684
|
+
return task.get()!=0;
|
1685
|
+
}
|
1395
1686
|
|
1396
1687
|
// result retrieval
|
1397
|
-
|
1688
|
+
BOOST_THREAD_FUTURE<R> get_future()
|
1398
1689
|
{
|
1399
1690
|
if(!task)
|
1400
1691
|
{
|
@@ -1403,12 +1694,14 @@ namespace boost
|
|
1403
1694
|
else if(!future_obtained)
|
1404
1695
|
{
|
1405
1696
|
future_obtained=true;
|
1406
|
-
return
|
1697
|
+
return BOOST_THREAD_FUTURE<R>(task);
|
1407
1698
|
}
|
1408
1699
|
else
|
1409
1700
|
{
|
1410
1701
|
boost::throw_exception(future_already_retrieved());
|
1411
1702
|
}
|
1703
|
+
return BOOST_THREAD_FUTURE<R>();
|
1704
|
+
|
1412
1705
|
}
|
1413
1706
|
|
1414
1707
|
|
@@ -1430,14 +1723,146 @@ namespace boost
|
|
1430
1723
|
|
1431
1724
|
};
|
1432
1725
|
|
1433
|
-
#
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1726
|
+
#if defined BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
|
1727
|
+
namespace container
|
1728
|
+
{
|
1729
|
+
template <class R, class Alloc>
|
1730
|
+
struct uses_allocator<packaged_task<R>, Alloc>
|
1731
|
+
: public true_type {};
|
1732
|
+
}
|
1438
1733
|
#endif
|
1439
1734
|
|
1440
|
-
|
1735
|
+
BOOST_THREAD_DCL_MOVABLE_BEG(T) packaged_task<T> BOOST_THREAD_DCL_MOVABLE_END
|
1441
1736
|
|
1442
1737
|
|
1738
|
+
template <class R>
|
1739
|
+
BOOST_THREAD_FUTURE<R>
|
1740
|
+
async(launch policy, R(*f)())
|
1741
|
+
{
|
1742
|
+
if (int(policy) & int(launch::async))
|
1743
|
+
{
|
1744
|
+
packaged_task<R> pt( f );
|
1745
|
+
|
1746
|
+
BOOST_THREAD_FUTURE<R> ret = pt.get_future();
|
1747
|
+
boost::thread( boost::move(pt) ).detach();
|
1748
|
+
return ::boost::move(ret);
|
1749
|
+
}
|
1750
|
+
else if (int(policy) & int(launch::deferred))
|
1751
|
+
{
|
1752
|
+
packaged_task<R> pt( f );
|
1753
|
+
|
1754
|
+
BOOST_THREAD_FUTURE<R> ret = pt.get_future();
|
1755
|
+
return ::boost::move(ret);
|
1756
|
+
} else {
|
1757
|
+
BOOST_THREAD_FUTURE<R> ret;
|
1758
|
+
return ::boost::move(ret);
|
1759
|
+
}
|
1760
|
+
}
|
1761
|
+
|
1762
|
+
template <class R>
|
1763
|
+
BOOST_THREAD_FUTURE<R>
|
1764
|
+
async(R(*f)())
|
1765
|
+
{
|
1766
|
+
return async(launch::any, f);
|
1767
|
+
}
|
1768
|
+
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
1769
|
+
template <class F>
|
1770
|
+
BOOST_THREAD_FUTURE<typename boost::result_of<typename decay<F>::type()>::type>
|
1771
|
+
async(launch policy, BOOST_THREAD_FWD_REF(F) f)
|
1772
|
+
{
|
1773
|
+
typedef typename boost::result_of<typename decay<F>::type()>::type R;
|
1774
|
+
if (int(policy) & int(launch::async))
|
1775
|
+
{
|
1776
|
+
packaged_task<R> pt( boost::forward<F>(f) );
|
1777
|
+
|
1778
|
+
BOOST_THREAD_FUTURE<R> ret = pt.get_future();
|
1779
|
+
boost::thread( boost::move(pt) ).detach();
|
1780
|
+
return ::boost::move(ret);
|
1781
|
+
}
|
1782
|
+
else if (int(policy) & int(launch::deferred))
|
1783
|
+
{
|
1784
|
+
packaged_task<R> pt( boost::forward<F>(f) );
|
1785
|
+
|
1786
|
+
BOOST_THREAD_FUTURE<R> ret = pt.get_future();
|
1787
|
+
return ::boost::move(ret);
|
1788
|
+
} else {
|
1789
|
+
BOOST_THREAD_FUTURE<R> ret;
|
1790
|
+
return ::boost::move(ret);
|
1791
|
+
}
|
1792
|
+
}
|
1793
|
+
template <class F>
|
1794
|
+
BOOST_THREAD_FUTURE<typename boost::result_of<F()>::type>
|
1795
|
+
async(BOOST_THREAD_RV_REF(F) f)
|
1796
|
+
{
|
1797
|
+
return async(launch::any, boost::forward<F>(f));
|
1798
|
+
}
|
1799
|
+
#else
|
1800
|
+
|
1801
|
+
// template <class F>
|
1802
|
+
// BOOST_THREAD_FUTURE<typename boost::result_of<typename decay<F>::type()>::type>
|
1803
|
+
// async(launch policy, F const& f)
|
1804
|
+
// {
|
1805
|
+
// typedef typename boost::result_of<typename decay<F>::type()>::type R;
|
1806
|
+
// if (int(policy) & int(launch::async))
|
1807
|
+
// {
|
1808
|
+
// packaged_task<R> pt( f );
|
1809
|
+
//
|
1810
|
+
// BOOST_THREAD_FUTURE<R> ret = pt.get_future();
|
1811
|
+
// boost::thread( boost::move(pt) ).detach();
|
1812
|
+
// return ::boost::move(ret);
|
1813
|
+
// }
|
1814
|
+
// else if (int(policy) & int(launch::deferred))
|
1815
|
+
// {
|
1816
|
+
// packaged_task<R> pt( f );
|
1817
|
+
//
|
1818
|
+
// BOOST_THREAD_FUTURE<R> ret = pt.get_future();
|
1819
|
+
// return ::boost::move(ret);
|
1820
|
+
// } else {
|
1821
|
+
// BOOST_THREAD_FUTURE<R> ret;
|
1822
|
+
// return ::boost::move(ret);
|
1823
|
+
// }
|
1824
|
+
// }
|
1825
|
+
// template <class F>
|
1826
|
+
// BOOST_THREAD_FUTURE<typename boost::result_of<F()>::type>
|
1827
|
+
// async(F const& f)
|
1828
|
+
// {
|
1829
|
+
// return async(launch::any, f);
|
1830
|
+
// }
|
1831
|
+
|
1832
|
+
template <class F>
|
1833
|
+
BOOST_THREAD_FUTURE<typename boost::result_of<typename decay<F>::type()>::type>
|
1834
|
+
async(launch policy, BOOST_THREAD_FWD_REF(F) f)
|
1835
|
+
{
|
1836
|
+
typedef typename boost::result_of<typename decay<F>::type()>::type R;
|
1837
|
+
if (int(policy) & int(launch::async))
|
1838
|
+
{
|
1839
|
+
packaged_task<R> pt( boost::forward<F>(f) );
|
1840
|
+
|
1841
|
+
BOOST_THREAD_FUTURE<R> ret = pt.get_future();
|
1842
|
+
boost::thread( boost::move(pt) ).detach();
|
1843
|
+
return ::boost::move(ret);
|
1844
|
+
}
|
1845
|
+
else if (int(policy) & int(launch::deferred))
|
1846
|
+
{
|
1847
|
+
packaged_task<R> pt( boost::forward<F>(f) );
|
1848
|
+
|
1849
|
+
BOOST_THREAD_FUTURE<R> ret = pt.get_future();
|
1850
|
+
return ::boost::move(ret);
|
1851
|
+
} else {
|
1852
|
+
BOOST_THREAD_FUTURE<R> ret;
|
1853
|
+
return ::boost::move(ret);
|
1854
|
+
}
|
1855
|
+
}
|
1856
|
+
template <class F>
|
1857
|
+
BOOST_THREAD_FUTURE<typename boost::result_of<F()>::type>
|
1858
|
+
async(BOOST_THREAD_FWD_REF(F) f)
|
1859
|
+
{
|
1860
|
+
return async(launch::any, boost::forward<F>(f));
|
1861
|
+
}
|
1862
|
+
|
1443
1863
|
#endif
|
1864
|
+
|
1865
|
+
}
|
1866
|
+
|
1867
|
+
#endif // BOOST_NO_EXCEPTION
|
1868
|
+
#endif // header
|