summaryrefslogtreecommitdiffstats
path: root/Python/marshal.c
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2003-10-03 17:11:45 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2003-10-03 17:11:45 (GMT)
commitfe161633889a1102a4794c6125b03f186c6fe472 (patch)
tree461607171aed7227f9b82c0ecc6c27b0bb46343b /Python/marshal.c
parent5f936eaf19270228505480a7c7029ce01c82f569 (diff)
downloadcpython-fe161633889a1102a4794c6125b03f186c6fe472.zip
cpython-fe161633889a1102a4794c6125b03f186c6fe472.tar.gz
cpython-fe161633889a1102a4794c6125b03f186c6fe472.tar.bz2
Check for TclError when reading variables. Fixes #807314.
Diffstat (limited to 'Python/marshal.c')
0 files changed, 0 insertions, 0 deletions
lude/boost/concept/detail/concept_undef.hpp | 5 + .../include/boost/concept/detail/general.hpp | 75 + .../boost/concept/detail/has_constraints.hpp | 50 + .../prebuilt/include/boost/concept/detail/msvc.hpp | 114 + contrib/prebuilt/include/boost/concept/usage.hpp | 44 + contrib/prebuilt/include/boost/concept_check.hpp | 1083 ++++ contrib/prebuilt/include/boost/config.hpp | 70 + .../include/boost/config/abi/borland_prefix.hpp | 27 + .../include/boost/config/abi/borland_suffix.hpp | 12 + .../include/boost/config/abi/msvc_prefix.hpp | 22 + .../include/boost/config/abi/msvc_suffix.hpp | 8 + .../prebuilt/include/boost/config/abi_prefix.hpp | 25 + .../prebuilt/include/boost/config/abi_suffix.hpp | 27 + .../prebuilt/include/boost/config/auto_link.hpp | 422 ++ .../include/boost/config/compiler/borland.hpp | 287 ++ .../include/boost/config/compiler/clang.hpp | 135 + .../include/boost/config/compiler/codegear.hpp | 179 + .../include/boost/config/compiler/comeau.hpp | 59 + .../include/boost/config/compiler/common_edg.hpp | 103 + .../include/boost/config/compiler/compaq_cxx.hpp | 19 + .../include/boost/config/compiler/cray.hpp | 63 + .../include/boost/config/compiler/digitalmars.hpp | 103 + .../prebuilt/include/boost/config/compiler/gcc.hpp | 254 + .../include/boost/config/compiler/gcc_xml.hpp | 60 + .../include/boost/config/compiler/greenhills.hpp | 28 + .../include/boost/config/compiler/hp_acc.hpp | 140 + .../include/boost/config/compiler/intel.hpp | 272 + .../prebuilt/include/boost/config/compiler/kai.hpp | 33 + .../include/boost/config/compiler/metrowerks.hpp | 144 + .../prebuilt/include/boost/config/compiler/mpw.hpp | 86 + .../include/boost/config/compiler/nvcc.hpp | 28 + .../include/boost/config/compiler/pathscale.hpp | 80 + .../prebuilt/include/boost/config/compiler/pgi.hpp | 118 + .../include/boost/config/compiler/sgi_mipspro.hpp | 29 + .../include/boost/config/compiler/sunpro_cc.hpp | 149 + .../include/boost/config/compiler/vacpp.hpp | 130 + .../include/boost/config/compiler/visualc.hpp | 310 ++ .../prebuilt/include/boost/config/no_tr1/cmath.hpp | 28 + .../include/boost/config/no_tr1/complex.hpp | 28 + .../include/boost/config/no_tr1/functional.hpp | 28 + .../include/boost/config/no_tr1/memory.hpp | 28 + .../include/boost/config/no_tr1/utility.hpp | 28 + .../prebuilt/include/boost/config/platform/aix.hpp | 33 + .../include/boost/config/platform/amigaos.hpp | 15 + .../include/boost/config/platform/beos.hpp | 26 + .../prebuilt/include/boost/config/platform/bsd.hpp | 86 + .../include/boost/config/platform/cray.hpp | 18 + .../include/boost/config/platform/cygwin.hpp | 58 + .../include/boost/config/platform/hpux.hpp | 87 + .../include/boost/config/platform/irix.hpp | 31 + .../include/boost/config/platform/linux.hpp | 103 + .../include/boost/config/platform/macos.hpp | 87 + .../include/boost/config/platform/qnxnto.hpp | 31 + .../include/boost/config/platform/solaris.hpp | 28 + .../include/boost/config/platform/symbian.hpp | 97 + .../prebuilt/include/boost/config/platform/vms.hpp | 25 + .../include/boost/config/platform/vxworks.hpp | 31 + .../include/boost/config/platform/win32.hpp | 71 + .../include/boost/config/posix_features.hpp | 95 + .../include/boost/config/requires_threads.hpp | 92 + .../boost/config/select_compiler_config.hpp | 112 + .../boost/config/select_platform_config.hpp | 105 + .../include/boost/config/select_stdlib_config.hpp | 85 + .../include/boost/config/stdlib/dinkumware.hpp | 148 + .../include/boost/config/stdlib/libcomo.hpp | 72 + .../include/boost/config/stdlib/libcpp.hpp | 37 + .../include/boost/config/stdlib/libstdcpp3.hpp | 165 + .../include/boost/config/stdlib/modena.hpp | 56 + .../prebuilt/include/boost/config/stdlib/msl.hpp | 84 + .../include/boost/config/stdlib/roguewave.hpp | 186 + .../prebuilt/include/boost/config/stdlib/sgi.hpp | 148 + .../include/boost/config/stdlib/stlport.hpp | 243 + .../prebuilt/include/boost/config/stdlib/vacpp.hpp | 54 + contrib/prebuilt/include/boost/config/suffix.hpp | 907 ++++ contrib/prebuilt/include/boost/config/user.hpp | 124 + .../include/boost/config/warning_disable.hpp | 47 + .../include/boost/container/allocator_traits.hpp | 385 ++ .../include/boost/container/container_fwd.hpp | 173 + .../boost/container/detail/config_begin.hpp | 49 + .../include/boost/container/detail/config_end.hpp | 17 + .../include/boost/container/detail/memory_util.hpp | 77 + .../include/boost/container/detail/mpl.hpp | 160 + .../include/boost/container/detail/pair.hpp | 353 ++ .../boost/container/detail/preprocessor.hpp | 185 + .../include/boost/container/detail/stored_ref.hpp | 92 + .../include/boost/container/detail/type_traits.hpp | 210 + .../include/boost/container/detail/utilities.hpp | 282 ++ .../include/boost/container/detail/workaround.hpp | 36 + .../include/boost/container/scoped_allocator.hpp | 1466 ++++++ .../boost/container/scoped_allocator_fwd.hpp | 83 + contrib/prebuilt/include/boost/cstdint.hpp | 508 ++ .../prebuilt/include/boost/current_function.hpp | 68 + .../include/boost/date_time/adjust_functors.hpp | 178 + .../prebuilt/include/boost/date_time/c_time.hpp | 123 + .../include/boost/date_time/compiler_config.hpp | 169 + .../include/boost/date_time/constrained_value.hpp | 121 + contrib/prebuilt/include/boost/date_time/date.hpp | 208 + .../include/boost/date_time/date_clock_device.hpp | 77 + .../prebuilt/include/boost/date_time/date_defs.hpp | 26 + .../include/boost/date_time/date_duration.hpp | 146 + .../boost/date_time/date_duration_types.hpp | 269 + .../include/boost/date_time/date_format_simple.hpp | 159 + .../include/boost/date_time/date_formatting.hpp | 133 + .../boost/date_time/date_formatting_limited.hpp | 121 + .../boost/date_time/date_formatting_locales.hpp | 233 + .../include/boost/date_time/date_generators.hpp | 509 ++ .../include/boost/date_time/date_iterator.hpp | 101 + .../include/boost/date_time/date_names_put.hpp | 320 ++ .../include/boost/date_time/date_parsing.hpp | 316 ++ .../prebuilt/include/boost/date_time/dst_rules.hpp | 391 ++ .../include/boost/date_time/filetime_functions.hpp | 170 + .../boost/date_time/gregorian/conversion.hpp | 68 + .../boost/date_time/gregorian/formatters.hpp | 162 + .../date_time/gregorian/formatters_limited.hpp | 81 + .../boost/date_time/gregorian/greg_calendar.hpp | 48 + .../boost/date_time/gregorian/greg_date.hpp | 136 + .../include/boost/date_time/gregorian/greg_day.hpp | 57 + .../boost/date_time/gregorian/greg_day_of_year.hpp | 38 + .../boost/date_time/gregorian/greg_duration.hpp | 134 + .../date_time/gregorian/greg_duration_types.hpp | 43 + .../boost/date_time/gregorian/greg_facet.hpp | 354 ++ .../boost/date_time/gregorian/greg_month.hpp | 105 + .../boost/date_time/gregorian/greg_weekday.hpp | 66 + .../boost/date_time/gregorian/greg_year.hpp | 53 + .../include/boost/date_time/gregorian/greg_ymd.hpp | 33 + .../boost/date_time/gregorian/gregorian_types.hpp | 109 + .../include/boost/date_time/gregorian/parsers.hpp | 91 + .../include/boost/date_time/gregorian_calendar.hpp | 70 + .../include/boost/date_time/gregorian_calendar.ipp | 219 + .../include/boost/date_time/int_adapter.hpp | 509 ++ .../include/boost/date_time/iso_format.hpp | 303 ++ .../include/boost/date_time/locale_config.hpp | 31 + .../boost/date_time/microsec_time_clock.hpp | 127 + .../include/boost/date_time/parse_format_base.hpp | 29 + .../prebuilt/include/boost/date_time/period.hpp | 377 ++ .../boost/date_time/posix_time/conversion.hpp | 94 + .../posix_time/date_duration_operators.hpp | 114 + .../date_time/posix_time/posix_time_config.hpp | 178 + .../date_time/posix_time/posix_time_duration.hpp | 82 + .../date_time/posix_time/posix_time_system.hpp | 68 + .../date_time/posix_time/posix_time_types.hpp | 55 + .../include/boost/date_time/posix_time/ptime.hpp | 65 + .../boost/date_time/posix_time/time_period.hpp | 29 + .../include/boost/date_time/special_defs.hpp | 25 + contrib/prebuilt/include/boost/date_time/time.hpp | 191 + .../include/boost/date_time/time_clock.hpp | 83 + .../prebuilt/include/boost/date_time/time_defs.hpp | 43 + .../include/boost/date_time/time_duration.hpp | 282 ++ .../include/boost/date_time/time_iterator.hpp | 52 + .../boost/date_time/time_resolution_traits.hpp | 144 + .../boost/date_time/time_system_counted.hpp | 254 + .../include/boost/date_time/time_system_split.hpp | 207 + .../include/boost/date_time/wrapping_int.hpp | 169 + .../include/boost/date_time/year_month_day.hpp | 45 + .../prebuilt/include/boost/detail/call_traits.hpp | 164 + .../include/boost/detail/compressed_pair.hpp | 443 ++ .../include/boost/detail/container_fwd.hpp | 162 + contrib/prebuilt/include/boost/detail/endian.hpp | 78 + contrib/prebuilt/include/boost/detail/fenv.hpp | 74 + .../include/boost/detail/indirect_traits.hpp | 487 ++ .../prebuilt/include/boost/detail/interlocked.hpp | 163 + .../boost/detail/is_function_ref_tester.hpp | 135 + contrib/prebuilt/include/boost/detail/iterator.hpp | 494 ++ .../include/boost/detail/lcast_precision.hpp | 184 + .../include/boost/detail/lightweight_mutex.hpp | 22 + contrib/prebuilt/include/boost/detail/limits.hpp | 449 ++ .../include/boost/detail/no_exceptions_support.hpp | 87 + .../include/boost/detail/ob_call_traits.hpp | 168 + .../include/boost/detail/ob_compressed_pair.hpp | 510 ++ .../include/boost/detail/reference_content.hpp | 141 + .../include/boost/detail/scoped_enum_emulation.hpp | 337 ++ .../prebuilt/include/boost/detail/sp_typeinfo.hpp | 135 + .../include/boost/detail/win/GetLastError.hpp | 27 + .../include/boost/detail/win/basic_types.hpp | 111 + contrib/prebuilt/include/boost/detail/win/time.hpp | 72 + .../prebuilt/include/boost/detail/win/timers.hpp | 41 + .../prebuilt/include/boost/detail/workaround.hpp | 267 + .../include/boost/enable_shared_from_this.hpp | 18 + .../boost/exception/current_exception_cast.hpp | 43 + .../boost/exception/detail/attribute_noreturn.hpp | 17 + .../exception/detail/clone_current_exception.hpp | 47 + .../boost/exception/detail/error_info_impl.hpp | 76 + .../boost/exception/detail/exception_ptr.hpp | 508 ++ .../exception/detail/is_output_streamable.hpp | 60 + .../boost/exception/detail/object_hex_dump.hpp | 50 + .../include/boost/exception/detail/type_info.hpp | 83 + .../boost/exception/diagnostic_information.hpp | 200 + .../prebuilt/include/boost/exception/exception.hpp | 483 ++ .../include/boost/exception/get_error_info.hpp | 130 + contrib/prebuilt/include/boost/exception/info.hpp | 199 + .../prebuilt/include/boost/exception/to_string.hpp | 83 + .../include/boost/exception/to_string_stub.hpp | 109 + contrib/prebuilt/include/boost/exception_ptr.hpp | 11 + contrib/prebuilt/include/boost/function.hpp | 66 + .../boost/function/detail/function_iterate.hpp | 16 + .../boost/function/detail/gen_maybe_include.pl | 37 + .../boost/function/detail/maybe_include.hpp | 267 + .../include/boost/function/detail/prologue.hpp | 26 + .../prebuilt/include/boost/function/function0.hpp | 12 + .../prebuilt/include/boost/function/function1.hpp | 12 + .../prebuilt/include/boost/function/function10.hpp | 12 + .../prebuilt/include/boost/function/function2.hpp | 12 + .../prebuilt/include/boost/function/function3.hpp | 12 + .../prebuilt/include/boost/function/function4.hpp | 12 + .../prebuilt/include/boost/function/function5.hpp | 12 + .../prebuilt/include/boost/function/function6.hpp | 12 + .../prebuilt/include/boost/function/function7.hpp | 12 + .../prebuilt/include/boost/function/function8.hpp | 12 + .../prebuilt/include/boost/function/function9.hpp | 12 + .../include/boost/function/function_base.hpp | 910 ++++ .../include/boost/function/function_fwd.hpp | 70 + .../include/boost/function/function_template.hpp | 1136 +++++ contrib/prebuilt/include/boost/function_equal.hpp | 28 + contrib/prebuilt/include/boost/functional/hash.hpp | 7 + .../functional/hash/detail/container_fwd_0x.hpp | 29 + .../functional/hash/detail/float_functions.hpp | 246 + .../boost/functional/hash/detail/hash_float.hpp | 115 + .../functional/hash/detail/hash_float_generic.hpp | 91 + .../functional/hash/detail/hash_float_x86.hpp | 56 + .../boost/functional/hash/detail/limits.hpp | 61 + .../include/boost/functional/hash/extensions.hpp | 367 ++ .../include/boost/functional/hash/hash.hpp | 496 ++ .../include/boost/functional/hash/hash_fwd.hpp | 40 + .../prebuilt/include/boost/functional/hash_fwd.hpp | 7 + contrib/prebuilt/include/boost/get_pointer.hpp | 33 + contrib/prebuilt/include/boost/integer.hpp | 261 + .../include/boost/integer/integer_mask.hpp | 126 + .../prebuilt/include/boost/integer/static_log2.hpp | 127 + contrib/prebuilt/include/boost/integer_fwd.hpp | 164 + contrib/prebuilt/include/boost/integer_traits.hpp | 261 + .../boost/intrusive/detail/config_begin.hpp | 52 + .../include/boost/intrusive/detail/config_end.hpp | 15 + .../detail/has_member_function_callable_with.hpp | 356 ++ .../include/boost/intrusive/detail/memory_util.hpp | 288 ++ .../include/boost/intrusive/detail/mpl.hpp | 367 ++ .../boost/intrusive/detail/preprocessor.hpp | 52 + .../include/boost/intrusive/detail/workaround.hpp | 22 + .../include/boost/intrusive/pointer_traits.hpp | 265 + contrib/prebuilt/include/boost/intrusive_ptr.hpp | 18 + contrib/prebuilt/include/boost/io/ios_state.hpp | 439 ++ contrib/prebuilt/include/boost/io_fwd.hpp | 67 + contrib/prebuilt/include/boost/is_placeholder.hpp | 31 + contrib/prebuilt/include/boost/iterator.hpp | 59 + .../include/boost/iterator/detail/config_def.hpp | 137 + .../include/boost/iterator/detail/config_undef.hpp | 25 + .../include/boost/iterator/detail/enable_if.hpp | 86 + .../iterator/detail/facade_iterator_category.hpp | 200 + .../boost/iterator/detail/minimum_category.hpp | 116 + .../include/boost/iterator/interoperable.hpp | 50 + .../include/boost/iterator/iterator_adaptor.hpp | 365 ++ .../include/boost/iterator/iterator_categories.hpp | 188 + .../include/boost/iterator/iterator_concepts.hpp | 284 ++ .../include/boost/iterator/iterator_facade.hpp | 874 ++++ .../include/boost/iterator/iterator_traits.hpp | 92 + .../include/boost/iterator/reverse_iterator.hpp | 69 + .../include/boost/iterator/transform_iterator.hpp | 172 + .../prebuilt/include/boost/iterator_adaptors.hpp | 13 + contrib/prebuilt/include/boost/lexical_cast.hpp | 2447 +++++++++ contrib/prebuilt/include/boost/limits.hpp | 146 + .../include/boost/math/common_factor_ct.hpp | 180 + .../include/boost/math/common_factor_rt.hpp | 530 ++ .../include/boost/math/policies/policy.hpp | 982 ++++ .../math/special_functions/detail/fp_traits.hpp | 570 +++ .../math/special_functions/detail/round_fwd.hpp | 80 + .../boost/math/special_functions/fpclassify.hpp | 533 ++ .../boost/math/special_functions/math_fwd.hpp | 1122 +++++ .../include/boost/math/special_functions/sign.hpp | 145 + .../prebuilt/include/boost/math/tools/config.hpp | 330 ++ .../include/boost/math/tools/promotion.hpp | 150 + .../include/boost/math/tools/real_cast.hpp | 29 + contrib/prebuilt/include/boost/math/tools/user.hpp | 97 + contrib/prebuilt/include/boost/math_fwd.hpp | 108 + contrib/prebuilt/include/boost/mem_fn.hpp | 24 + contrib/prebuilt/include/boost/memory_order.hpp | 53 + contrib/prebuilt/include/boost/move/move.hpp | 1273 +++++ contrib/prebuilt/include/boost/mpl/O1_size.hpp | 40 + contrib/prebuilt/include/boost/mpl/O1_size_fwd.hpp | 24 + contrib/prebuilt/include/boost/mpl/advance.hpp | 76 + contrib/prebuilt/include/boost/mpl/advance_fwd.hpp | 28 + contrib/prebuilt/include/boost/mpl/always.hpp | 39 + contrib/prebuilt/include/boost/mpl/and.hpp | 60 + contrib/prebuilt/include/boost/mpl/apply.hpp | 229 + contrib/prebuilt/include/boost/mpl/apply_fwd.hpp | 107 + contrib/prebuilt/include/boost/mpl/apply_wrap.hpp | 234 + contrib/prebuilt/include/boost/mpl/arg.hpp | 131 + contrib/prebuilt/include/boost/mpl/arg_fwd.hpp | 28 + contrib/prebuilt/include/boost/mpl/assert.hpp | 370 ++ contrib/prebuilt/include/boost/mpl/at.hpp | 52 + contrib/prebuilt/include/boost/mpl/at_fwd.hpp | 24 + .../include/boost/mpl/aux_/O1_size_impl.hpp | 87 + .../include/boost/mpl/aux_/adl_barrier.hpp | 48 + .../include/boost/mpl/aux_/advance_backward.hpp | 128 + .../include/boost/mpl/aux_/advance_forward.hpp | 127 + .../include/boost/mpl/aux_/arg_typedef.hpp | 31 + .../include/boost/mpl/aux_/arithmetic_op.hpp | 92 + contrib/prebuilt/include/boost/mpl/aux_/arity.hpp | 39 + .../prebuilt/include/boost/mpl/aux_/arity_spec.hpp | 67 + .../prebuilt/include/boost/mpl/aux_/at_impl.hpp | 45 + .../include/boost/mpl/aux_/begin_end_impl.hpp | 101 + .../prebuilt/include/boost/mpl/aux_/clear_impl.hpp | 35 + .../include/boost/mpl/aux_/common_name_wknd.hpp | 34 + .../include/boost/mpl/aux_/comparison_op.hpp | 83 + .../prebuilt/include/boost/mpl/aux_/config/adl.hpp | 40 + .../include/boost/mpl/aux_/config/arrays.hpp | 30 + .../prebuilt/include/boost/mpl/aux_/config/bcc.hpp | 28 + .../include/boost/mpl/aux_/config/bind.hpp | 33 + .../include/boost/mpl/aux_/config/compiler.hpp | 66 + .../include/boost/mpl/aux_/config/ctps.hpp | 30 + .../boost/mpl/aux_/config/dependent_nttp.hpp | 35 + .../boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp | 27 + .../prebuilt/include/boost/mpl/aux_/config/dtp.hpp | 46 + .../prebuilt/include/boost/mpl/aux_/config/eti.hpp | 47 + .../include/boost/mpl/aux_/config/forwarding.hpp | 27 + .../prebuilt/include/boost/mpl/aux_/config/gcc.hpp | 23 + .../include/boost/mpl/aux_/config/has_apply.hpp | 32 + .../include/boost/mpl/aux_/config/has_xxx.hpp | 34 + .../include/boost/mpl/aux_/config/integral.hpp | 38 + .../include/boost/mpl/aux_/config/intel.hpp | 21 + .../include/boost/mpl/aux_/config/lambda.hpp | 32 + .../include/boost/mpl/aux_/config/msvc.hpp | 21 + .../boost/mpl/aux_/config/msvc_typename.hpp | 26 + .../include/boost/mpl/aux_/config/nttp.hpp | 41 + .../boost/mpl/aux_/config/overload_resolution.hpp | 29 + .../include/boost/mpl/aux_/config/pp_counter.hpp | 26 + .../include/boost/mpl/aux_/config/preprocessor.hpp | 39 + .../boost/mpl/aux_/config/static_constant.hpp | 25 + .../prebuilt/include/boost/mpl/aux_/config/ttp.hpp | 41 + .../include/boost/mpl/aux_/config/typeof.hpp | 38 + .../boost/mpl/aux_/config/use_preprocessed.hpp | 19 + .../include/boost/mpl/aux_/config/workaround.hpp | 19 + .../include/boost/mpl/aux_/contains_impl.hpp | 61 + .../prebuilt/include/boost/mpl/aux_/count_args.hpp | 105 + .../include/boost/mpl/aux_/find_if_pred.hpp | 31 + .../prebuilt/include/boost/mpl/aux_/fold_impl.hpp | 43 + .../include/boost/mpl/aux_/fold_impl_body.hpp | 365 ++ .../include/boost/mpl/aux_/full_lambda.hpp | 354 ++ .../prebuilt/include/boost/mpl/aux_/has_apply.hpp | 32 + .../prebuilt/include/boost/mpl/aux_/has_begin.hpp | 23 + .../prebuilt/include/boost/mpl/aux_/has_rebind.hpp | 99 + .../prebuilt/include/boost/mpl/aux_/has_size.hpp | 23 + .../prebuilt/include/boost/mpl/aux_/has_tag.hpp | 23 + .../prebuilt/include/boost/mpl/aux_/has_type.hpp | 23 + .../boost/mpl/aux_/include_preprocessed.hpp | 42 + .../include/boost/mpl/aux_/inserter_algorithm.hpp | 159 + .../include/boost/mpl/aux_/integral_wrapper.hpp | 93 + .../include/boost/mpl/aux_/is_msvc_eti_arg.hpp | 64 + .../prebuilt/include/boost/mpl/aux_/iter_apply.hpp | 47 + .../include/boost/mpl/aux_/iter_fold_if_impl.hpp | 210 + .../include/boost/mpl/aux_/iter_fold_impl.hpp | 42 + .../include/boost/mpl/aux_/lambda_arity_param.hpp | 25 + .../include/boost/mpl/aux_/lambda_no_ctps.hpp | 193 + .../include/boost/mpl/aux_/lambda_spec.hpp | 49 + .../include/boost/mpl/aux_/lambda_support.hpp | 169 + .../include/boost/mpl/aux_/largest_int.hpp | 63 + .../prebuilt/include/boost/mpl/aux_/logical_op.hpp | 165 + .../prebuilt/include/boost/mpl/aux_/msvc_dtw.hpp | 68 + .../include/boost/mpl/aux_/msvc_eti_base.hpp | 77 + .../include/boost/mpl/aux_/msvc_is_class.hpp | 58 + .../include/boost/mpl/aux_/msvc_never_true.hpp | 34 + .../prebuilt/include/boost/mpl/aux_/msvc_type.hpp | 62 + contrib/prebuilt/include/boost/mpl/aux_/na.hpp | 95 + .../prebuilt/include/boost/mpl/aux_/na_assert.hpp | 34 + contrib/prebuilt/include/boost/mpl/aux_/na_fwd.hpp | 31 + .../prebuilt/include/boost/mpl/aux_/na_spec.hpp | 175 + .../include/boost/mpl/aux_/nested_type_wknd.hpp | 48 + .../prebuilt/include/boost/mpl/aux_/nttp_decl.hpp | 35 + .../include/boost/mpl/aux_/numeric_cast_utils.hpp | 77 + .../prebuilt/include/boost/mpl/aux_/numeric_op.hpp | 315 ++ .../mpl/aux_/preprocessed/bcc/advance_backward.hpp | 97 + .../mpl/aux_/preprocessed/bcc/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/bcc/and.hpp | 69 + .../boost/mpl/aux_/preprocessed/bcc/apply.hpp | 169 + .../boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp | 52 + .../boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp | 461 ++ .../boost/mpl/aux_/preprocessed/bcc/arg.hpp | 117 + .../boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp | 300 ++ .../boost/mpl/aux_/preprocessed/bcc/bind.hpp | 397 ++ .../boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp | 46 + .../boost/mpl/aux_/preprocessed/bcc/bitand.hpp | 147 + .../boost/mpl/aux_/preprocessed/bcc/bitor.hpp | 147 + .../boost/mpl/aux_/preprocessed/bcc/bitxor.hpp | 147 + .../boost/mpl/aux_/preprocessed/bcc/deque.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/bcc/divides.hpp | 146 + .../boost/mpl/aux_/preprocessed/bcc/equal_to.hpp | 94 + .../boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/bcc/full_lambda.hpp | 558 +++ .../boost/mpl/aux_/preprocessed/bcc/greater.hpp | 94 + .../mpl/aux_/preprocessed/bcc/greater_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/bcc/inherit.hpp | 139 + .../aux_/preprocessed/bcc/iter_fold_if_impl.hpp | 133 + .../mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp | 229 + .../boost/mpl/aux_/preprocessed/bcc/less.hpp | 94 + .../boost/mpl/aux_/preprocessed/bcc/less_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/bcc/list.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/bcc/list_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/bcc/map.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/bcc/minus.hpp | 146 + .../boost/mpl/aux_/preprocessed/bcc/modulus.hpp | 101 + .../mpl/aux_/preprocessed/bcc/not_equal_to.hpp | 94 + .../include/boost/mpl/aux_/preprocessed/bcc/or.hpp | 69 + .../mpl/aux_/preprocessed/bcc/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/bcc/plus.hpp | 146 + .../boost/mpl/aux_/preprocessed/bcc/quote.hpp | 119 + .../aux_/preprocessed/bcc/reverse_fold_impl.hpp | 295 ++ .../preprocessed/bcc/reverse_iter_fold_impl.hpp | 295 ++ .../boost/mpl/aux_/preprocessed/bcc/set.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/bcc/set_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/bcc/shift_left.hpp | 99 + .../mpl/aux_/preprocessed/bcc/shift_right.hpp | 99 + .../mpl/aux_/preprocessed/bcc/template_arity.hpp | 40 + .../boost/mpl/aux_/preprocessed/bcc/times.hpp | 146 + .../mpl/aux_/preprocessed/bcc/unpack_args.hpp | 97 + .../boost/mpl/aux_/preprocessed/bcc/vector.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/bcc/vector_c.hpp | 309 ++ .../aux_/preprocessed/bcc551/advance_backward.hpp | 97 + .../aux_/preprocessed/bcc551/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/bcc551/and.hpp | 69 + .../boost/mpl/aux_/preprocessed/bcc551/apply.hpp | 169 + .../mpl/aux_/preprocessed/bcc551/apply_fwd.hpp | 52 + .../mpl/aux_/preprocessed/bcc551/apply_wrap.hpp | 456 ++ .../boost/mpl/aux_/preprocessed/bcc551/arg.hpp | 123 + .../mpl/aux_/preprocessed/bcc551/basic_bind.hpp | 306 ++ .../boost/mpl/aux_/preprocessed/bcc551/bind.hpp | 403 ++ .../mpl/aux_/preprocessed/bcc551/bind_fwd.hpp | 46 + .../boost/mpl/aux_/preprocessed/bcc551/bitand.hpp | 147 + .../boost/mpl/aux_/preprocessed/bcc551/bitor.hpp | 147 + .../boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp | 147 + .../boost/mpl/aux_/preprocessed/bcc551/deque.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/bcc551/divides.hpp | 146 + .../mpl/aux_/preprocessed/bcc551/equal_to.hpp | 94 + .../mpl/aux_/preprocessed/bcc551/fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/bcc551/full_lambda.hpp | 558 +++ .../boost/mpl/aux_/preprocessed/bcc551/greater.hpp | 94 + .../mpl/aux_/preprocessed/bcc551/greater_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/bcc551/inherit.hpp | 141 + .../aux_/preprocessed/bcc551/iter_fold_if_impl.hpp | 133 + .../aux_/preprocessed/bcc551/iter_fold_impl.hpp | 180 + .../aux_/preprocessed/bcc551/lambda_no_ctps.hpp | 229 + .../boost/mpl/aux_/preprocessed/bcc551/less.hpp | 94 + .../mpl/aux_/preprocessed/bcc551/less_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/bcc551/list.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/bcc551/list_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/bcc551/map.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/bcc551/minus.hpp | 146 + .../boost/mpl/aux_/preprocessed/bcc551/modulus.hpp | 101 + .../mpl/aux_/preprocessed/bcc551/not_equal_to.hpp | 94 + .../boost/mpl/aux_/preprocessed/bcc551/or.hpp | 69 + .../mpl/aux_/preprocessed/bcc551/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/bcc551/plus.hpp | 146 + .../boost/mpl/aux_/preprocessed/bcc551/quote.hpp | 11 + .../aux_/preprocessed/bcc551/reverse_fold_impl.hpp | 295 ++ .../preprocessed/bcc551/reverse_iter_fold_impl.hpp | 295 ++ .../boost/mpl/aux_/preprocessed/bcc551/set.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/bcc551/set_c.hpp | 328 ++ .../mpl/aux_/preprocessed/bcc551/shift_left.hpp | 99 + .../mpl/aux_/preprocessed/bcc551/shift_right.hpp | 99 + .../aux_/preprocessed/bcc551/template_arity.hpp | 40 + .../boost/mpl/aux_/preprocessed/bcc551/times.hpp | 146 + .../mpl/aux_/preprocessed/bcc551/unpack_args.hpp | 97 + .../boost/mpl/aux_/preprocessed/bcc551/vector.hpp | 323 ++ .../mpl/aux_/preprocessed/bcc551/vector_c.hpp | 309 ++ .../preprocessed/bcc_pre590/advance_backward.hpp | 97 + .../preprocessed/bcc_pre590/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp | 69 + .../mpl/aux_/preprocessed/bcc_pre590/apply.hpp | 169 + .../mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp | 52 + .../aux_/preprocessed/bcc_pre590/apply_wrap.hpp | 456 ++ .../boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp | 117 + .../aux_/preprocessed/bcc_pre590/basic_bind.hpp | 300 ++ .../mpl/aux_/preprocessed/bcc_pre590/bind.hpp | 397 ++ .../mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp | 46 + .../mpl/aux_/preprocessed/bcc_pre590/bitand.hpp | 147 + .../mpl/aux_/preprocessed/bcc_pre590/bitor.hpp | 147 + .../mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp | 147 + .../mpl/aux_/preprocessed/bcc_pre590/deque.hpp | 323 ++ .../mpl/aux_/preprocessed/bcc_pre590/divides.hpp | 146 + .../mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp | 94 + .../mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp | 180 + .../aux_/preprocessed/bcc_pre590/full_lambda.hpp | 558 +++ .../mpl/aux_/preprocessed/bcc_pre590/greater.hpp | 94 + .../aux_/preprocessed/bcc_pre590/greater_equal.hpp | 94 + .../mpl/aux_/preprocessed/bcc_pre590/inherit.hpp | 139 + .../preprocessed/bcc_pre590/iter_fold_if_impl.hpp | 133 + .../preprocessed/bcc_pre590/iter_fold_impl.hpp | 180 + .../preprocessed/bcc_pre590/lambda_no_ctps.hpp | 229 + .../mpl/aux_/preprocessed/bcc_pre590/less.hpp | 94 + .../aux_/preprocessed/bcc_pre590/less_equal.hpp | 94 + .../mpl/aux_/preprocessed/bcc_pre590/list.hpp | 323 ++ .../mpl/aux_/preprocessed/bcc_pre590/list_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp | 323 ++ .../mpl/aux_/preprocessed/bcc_pre590/minus.hpp | 146 + .../mpl/aux_/preprocessed/bcc_pre590/modulus.hpp | 101 + .../aux_/preprocessed/bcc_pre590/not_equal_to.hpp | 94 + .../boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp | 69 + .../aux_/preprocessed/bcc_pre590/placeholders.hpp | 105 + .../mpl/aux_/preprocessed/bcc_pre590/plus.hpp | 146 + .../mpl/aux_/preprocessed/bcc_pre590/quote.hpp | 11 + .../preprocessed/bcc_pre590/reverse_fold_impl.hpp | 295 ++ .../bcc_pre590/reverse_iter_fold_impl.hpp | 295 ++ .../boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp | 323 ++ .../mpl/aux_/preprocessed/bcc_pre590/set_c.hpp | 328 ++ .../aux_/preprocessed/bcc_pre590/shift_left.hpp | 99 + .../aux_/preprocessed/bcc_pre590/shift_right.hpp | 99 + .../preprocessed/bcc_pre590/template_arity.hpp | 40 + .../mpl/aux_/preprocessed/bcc_pre590/times.hpp | 146 + .../aux_/preprocessed/bcc_pre590/unpack_args.hpp | 97 + .../mpl/aux_/preprocessed/bcc_pre590/vector.hpp | 323 ++ .../mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp | 309 ++ .../mpl/aux_/preprocessed/dmc/advance_backward.hpp | 97 + .../mpl/aux_/preprocessed/dmc/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/dmc/and.hpp | 69 + .../boost/mpl/aux_/preprocessed/dmc/apply.hpp | 169 + .../boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp | 52 + .../boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp | 84 + .../boost/mpl/aux_/preprocessed/dmc/arg.hpp | 123 + .../boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp | 406 ++ .../boost/mpl/aux_/preprocessed/dmc/bind.hpp | 515 ++ .../boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp | 53 + .../boost/mpl/aux_/preprocessed/dmc/bitand.hpp | 147 + .../boost/mpl/aux_/preprocessed/dmc/bitor.hpp | 147 + .../boost/mpl/aux_/preprocessed/dmc/bitxor.hpp | 147 + .../boost/mpl/aux_/preprocessed/dmc/deque.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/dmc/divides.hpp | 146 + .../boost/mpl/aux_/preprocessed/dmc/equal_to.hpp | 94 + .../boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/dmc/full_lambda.hpp | 536 ++ .../boost/mpl/aux_/preprocessed/dmc/greater.hpp | 94 + .../mpl/aux_/preprocessed/dmc/greater_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/dmc/inherit.hpp | 141 + .../aux_/preprocessed/dmc/iter_fold_if_impl.hpp | 133 + .../mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp | 229 + .../boost/mpl/aux_/preprocessed/dmc/less.hpp | 94 + .../boost/mpl/aux_/preprocessed/dmc/less_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/dmc/list.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/dmc/list_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/dmc/map.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/dmc/minus.hpp | 146 + .../boost/mpl/aux_/preprocessed/dmc/modulus.hpp | 101 + .../mpl/aux_/preprocessed/dmc/not_equal_to.hpp | 94 + .../include/boost/mpl/aux_/preprocessed/dmc/or.hpp | 69 + .../mpl/aux_/preprocessed/dmc/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/dmc/plus.hpp | 146 + .../boost/mpl/aux_/preprocessed/dmc/quote.hpp | 123 + .../aux_/preprocessed/dmc/reverse_fold_impl.hpp | 231 + .../preprocessed/dmc/reverse_iter_fold_impl.hpp | 231 + .../boost/mpl/aux_/preprocessed/dmc/set.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/dmc/set_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/dmc/shift_left.hpp | 99 + .../mpl/aux_/preprocessed/dmc/shift_right.hpp | 99 + .../mpl/aux_/preprocessed/dmc/template_arity.hpp | 11 + .../boost/mpl/aux_/preprocessed/dmc/times.hpp | 146 + .../mpl/aux_/preprocessed/dmc/unpack_args.hpp | 94 + .../boost/mpl/aux_/preprocessed/dmc/vector.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/dmc/vector_c.hpp | 309 ++ .../mpl/aux_/preprocessed/gcc/advance_backward.hpp | 97 + .../mpl/aux_/preprocessed/gcc/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/gcc/and.hpp | 69 + .../boost/mpl/aux_/preprocessed/gcc/apply.hpp | 169 + .../boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp | 52 + .../boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp | 84 + .../boost/mpl/aux_/preprocessed/gcc/arg.hpp | 123 + .../boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp | 440 ++ .../boost/mpl/aux_/preprocessed/gcc/bind.hpp | 561 +++ .../boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp | 52 + .../boost/mpl/aux_/preprocessed/gcc/bitand.hpp | 147 + .../boost/mpl/aux_/preprocessed/gcc/bitor.hpp | 147 + .../boost/mpl/aux_/preprocessed/gcc/bitxor.hpp | 147 + .../boost/mpl/aux_/preprocessed/gcc/deque.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/gcc/divides.hpp | 146 + .../boost/mpl/aux_/preprocessed/gcc/equal_to.hpp | 94 + .../boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/gcc/full_lambda.hpp | 558 +++ .../boost/mpl/aux_/preprocessed/gcc/greater.hpp | 94 + .../mpl/aux_/preprocessed/gcc/greater_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/gcc/inherit.hpp | 141 + .../aux_/preprocessed/gcc/iter_fold_if_impl.hpp | 133 + .../mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp | 229 + .../boost/mpl/aux_/preprocessed/gcc/less.hpp | 94 + .../boost/mpl/aux_/preprocessed/gcc/less_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/gcc/list.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/gcc/list_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/gcc/map.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/gcc/minus.hpp | 146 + .../boost/mpl/aux_/preprocessed/gcc/modulus.hpp | 101 + .../mpl/aux_/preprocessed/gcc/not_equal_to.hpp | 94 + .../include/boost/mpl/aux_/preprocessed/gcc/or.hpp | 69 + .../mpl/aux_/preprocessed/gcc/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/gcc/plus.hpp | 146 + .../boost/mpl/aux_/preprocessed/gcc/quote.hpp | 123 + .../aux_/preprocessed/gcc/reverse_fold_impl.hpp | 231 + .../preprocessed/gcc/reverse_iter_fold_impl.hpp | 231 + .../boost/mpl/aux_/preprocessed/gcc/set.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/gcc/set_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/gcc/shift_left.hpp | 99 + .../mpl/aux_/preprocessed/gcc/shift_right.hpp | 99 + .../mpl/aux_/preprocessed/gcc/template_arity.hpp | 97 + .../boost/mpl/aux_/preprocessed/gcc/times.hpp | 146 + .../mpl/aux_/preprocessed/gcc/unpack_args.hpp | 94 + .../boost/mpl/aux_/preprocessed/gcc/vector.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/gcc/vector_c.hpp | 309 ++ .../aux_/preprocessed/msvc60/advance_backward.hpp | 132 + .../aux_/preprocessed/msvc60/advance_forward.hpp | 132 + .../boost/mpl/aux_/preprocessed/msvc60/and.hpp | 73 + .../boost/mpl/aux_/preprocessed/msvc60/apply.hpp | 166 + .../mpl/aux_/preprocessed/msvc60/apply_fwd.hpp | 46 + .../mpl/aux_/preprocessed/msvc60/apply_wrap.hpp | 247 + .../boost/mpl/aux_/preprocessed/msvc60/arg.hpp | 123 + .../mpl/aux_/preprocessed/msvc60/basic_bind.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/msvc60/bind.hpp | 432 ++ .../mpl/aux_/preprocessed/msvc60/bind_fwd.hpp | 46 + .../boost/mpl/aux_/preprocessed/msvc60/bitand.hpp | 149 + .../boost/mpl/aux_/preprocessed/msvc60/bitor.hpp | 149 + .../boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp | 149 + .../boost/mpl/aux_/preprocessed/msvc60/deque.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/msvc60/divides.hpp | 148 + .../mpl/aux_/preprocessed/msvc60/equal_to.hpp | 102 + .../mpl/aux_/preprocessed/msvc60/fold_impl.hpp | 293 ++ .../mpl/aux_/preprocessed/msvc60/full_lambda.hpp | 554 +++ .../boost/mpl/aux_/preprocessed/msvc60/greater.hpp | 102 + .../mpl/aux_/preprocessed/msvc60/greater_equal.hpp | 102 + .../boost/mpl/aux_/preprocessed/msvc60/inherit.hpp | 166 + .../aux_/preprocessed/msvc60/iter_fold_if_impl.hpp | 133 + .../aux_/preprocessed/msvc60/iter_fold_impl.hpp | 293 ++ .../aux_/preprocessed/msvc60/lambda_no_ctps.hpp | 229 + .../boost/mpl/aux_/preprocessed/msvc60/less.hpp | 102 + .../mpl/aux_/preprocessed/msvc60/less_equal.hpp | 102 + .../boost/mpl/aux_/preprocessed/msvc60/list.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/msvc60/list_c.hpp | 534 ++ .../boost/mpl/aux_/preprocessed/msvc60/map.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/msvc60/minus.hpp | 148 + .../boost/mpl/aux_/preprocessed/msvc60/modulus.hpp | 115 + .../mpl/aux_/preprocessed/msvc60/not_equal_to.hpp | 102 + .../boost/mpl/aux_/preprocessed/msvc60/or.hpp | 73 + .../mpl/aux_/preprocessed/msvc60/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/msvc60/plus.hpp | 148 + .../boost/mpl/aux_/preprocessed/msvc60/quote.hpp | 11 + .../aux_/preprocessed/msvc60/reverse_fold_impl.hpp | 343 ++ .../preprocessed/msvc60/reverse_iter_fold_impl.hpp | 343 ++ .../boost/mpl/aux_/preprocessed/msvc60/set.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/msvc60/set_c.hpp | 534 ++ .../mpl/aux_/preprocessed/msvc60/shift_left.hpp | 114 + .../mpl/aux_/preprocessed/msvc60/shift_right.hpp | 114 + .../aux_/preprocessed/msvc60/template_arity.hpp | 46 + .../boost/mpl/aux_/preprocessed/msvc60/times.hpp | 148 + .../mpl/aux_/preprocessed/msvc60/unpack_args.hpp | 109 + .../boost/mpl/aux_/preprocessed/msvc60/vector.hpp | 556 +++ .../mpl/aux_/preprocessed/msvc60/vector_c.hpp | 534 ++ .../aux_/preprocessed/msvc70/advance_backward.hpp | 97 + .../aux_/preprocessed/msvc70/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/msvc70/and.hpp | 71 + .../boost/mpl/aux_/preprocessed/msvc70/apply.hpp | 160 + .../mpl/aux_/preprocessed/msvc70/apply_fwd.hpp | 46 + .../mpl/aux_/preprocessed/msvc70/apply_wrap.hpp | 138 + .../boost/mpl/aux_/preprocessed/msvc70/arg.hpp | 123 + .../mpl/aux_/preprocessed/msvc70/basic_bind.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/msvc70/bind.hpp | 432 ++ .../mpl/aux_/preprocessed/msvc70/bind_fwd.hpp | 46 + .../boost/mpl/aux_/preprocessed/msvc70/bitand.hpp | 151 + .../boost/mpl/aux_/preprocessed/msvc70/bitor.hpp | 151 + .../boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp | 151 + .../boost/mpl/aux_/preprocessed/msvc70/deque.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/msvc70/divides.hpp | 150 + .../mpl/aux_/preprocessed/msvc70/equal_to.hpp | 102 + .../mpl/aux_/preprocessed/msvc70/fold_impl.hpp | 245 + .../mpl/aux_/preprocessed/msvc70/full_lambda.hpp | 554 +++ .../boost/mpl/aux_/preprocessed/msvc70/greater.hpp | 102 + .../mpl/aux_/preprocessed/msvc70/greater_equal.hpp | 102 + .../boost/mpl/aux_/preprocessed/msvc70/inherit.hpp | 166 + .../aux_/preprocessed/msvc70/iter_fold_if_impl.hpp | 133 + .../aux_/preprocessed/msvc70/iter_fold_impl.hpp | 245 + .../aux_/preprocessed/msvc70/lambda_no_ctps.hpp | 229 + .../boost/mpl/aux_/preprocessed/msvc70/less.hpp | 102 + .../mpl/aux_/preprocessed/msvc70/less_equal.hpp | 102 + .../boost/mpl/aux_/preprocessed/msvc70/list.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/msvc70/list_c.hpp | 534 ++ .../boost/mpl/aux_/preprocessed/msvc70/map.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/msvc70/minus.hpp | 150 + .../boost/mpl/aux_/preprocessed/msvc70/modulus.hpp | 115 + .../mpl/aux_/preprocessed/msvc70/not_equal_to.hpp | 102 + .../boost/mpl/aux_/preprocessed/msvc70/or.hpp | 71 + .../mpl/aux_/preprocessed/msvc70/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/msvc70/plus.hpp | 150 + .../boost/mpl/aux_/preprocessed/msvc70/quote.hpp | 116 + .../aux_/preprocessed/msvc70/reverse_fold_impl.hpp | 295 ++ .../preprocessed/msvc70/reverse_iter_fold_impl.hpp | 295 ++ .../boost/mpl/aux_/preprocessed/msvc70/set.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/msvc70/set_c.hpp | 534 ++ .../mpl/aux_/preprocessed/msvc70/shift_left.hpp | 114 + .../mpl/aux_/preprocessed/msvc70/shift_right.hpp | 114 + .../aux_/preprocessed/msvc70/template_arity.hpp | 46 + .../boost/mpl/aux_/preprocessed/msvc70/times.hpp | 150 + .../mpl/aux_/preprocessed/msvc70/unpack_args.hpp | 109 + .../boost/mpl/aux_/preprocessed/msvc70/vector.hpp | 556 +++ .../mpl/aux_/preprocessed/msvc70/vector_c.hpp | 534 ++ .../aux_/preprocessed/mwcw/advance_backward.hpp | 97 + .../mpl/aux_/preprocessed/mwcw/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/mwcw/and.hpp | 69 + .../boost/mpl/aux_/preprocessed/mwcw/apply.hpp | 169 + .../boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp | 52 + .../mpl/aux_/preprocessed/mwcw/apply_wrap.hpp | 456 ++ .../boost/mpl/aux_/preprocessed/mwcw/arg.hpp | 123 + .../mpl/aux_/preprocessed/mwcw/basic_bind.hpp | 440 ++ .../boost/mpl/aux_/preprocessed/mwcw/bind.hpp | 561 +++ .../boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp | 52 + .../boost/mpl/aux_/preprocessed/mwcw/bitand.hpp | 147 + .../boost/mpl/aux_/preprocessed/mwcw/bitor.hpp | 147 + .../boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp | 147 + .../boost/mpl/aux_/preprocessed/mwcw/deque.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/mwcw/divides.hpp | 146 + .../boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp | 94 + .../boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/mwcw/full_lambda.hpp | 554 +++ .../boost/mpl/aux_/preprocessed/mwcw/greater.hpp | 94 + .../mpl/aux_/preprocessed/mwcw/greater_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/mwcw/inherit.hpp | 141 + .../aux_/preprocessed/mwcw/iter_fold_if_impl.hpp | 133 + .../mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp | 229 + .../boost/mpl/aux_/preprocessed/mwcw/less.hpp | 94 + .../mpl/aux_/preprocessed/mwcw/less_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/mwcw/list.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/mwcw/list_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/mwcw/map.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/mwcw/minus.hpp | 146 + .../boost/mpl/aux_/preprocessed/mwcw/modulus.hpp | 101 + .../mpl/aux_/preprocessed/mwcw/not_equal_to.hpp | 94 + .../boost/mpl/aux_/preprocessed/mwcw/or.hpp | 69 + .../mpl/aux_/preprocessed/mwcw/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/mwcw/plus.hpp | 146 + .../boost/mpl/aux_/preprocessed/mwcw/quote.hpp | 123 + .../aux_/preprocessed/mwcw/reverse_fold_impl.hpp | 231 + .../preprocessed/mwcw/reverse_iter_fold_impl.hpp | 231 + .../boost/mpl/aux_/preprocessed/mwcw/set.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/mwcw/set_c.hpp | 328 ++ .../mpl/aux_/preprocessed/mwcw/shift_left.hpp | 99 + .../mpl/aux_/preprocessed/mwcw/shift_right.hpp | 99 + .../mpl/aux_/preprocessed/mwcw/template_arity.hpp | 11 + .../boost/mpl/aux_/preprocessed/mwcw/times.hpp | 146 + .../mpl/aux_/preprocessed/mwcw/unpack_args.hpp | 94 + .../boost/mpl/aux_/preprocessed/mwcw/vector.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp | 309 ++ .../aux_/preprocessed/no_ctps/advance_backward.hpp | 97 + .../aux_/preprocessed/no_ctps/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/no_ctps/and.hpp | 73 + .../boost/mpl/aux_/preprocessed/no_ctps/apply.hpp | 268 + .../mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp | 50 + .../mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp | 78 + .../boost/mpl/aux_/preprocessed/no_ctps/arg.hpp | 123 + .../mpl/aux_/preprocessed/no_ctps/basic_bind.hpp | 486 ++ .../boost/mpl/aux_/preprocessed/no_ctps/bind.hpp | 590 +++ .../mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp | 52 + .../boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp | 134 + .../boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp | 134 + .../boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp | 134 + .../boost/mpl/aux_/preprocessed/no_ctps/deque.hpp | 556 +++ .../mpl/aux_/preprocessed/no_ctps/divides.hpp | 133 + .../mpl/aux_/preprocessed/no_ctps/equal_to.hpp | 94 + .../mpl/aux_/preprocessed/no_ctps/fold_impl.hpp | 245 + .../mpl/aux_/preprocessed/no_ctps/full_lambda.hpp | 554 +++ .../mpl/aux_/preprocessed/no_ctps/greater.hpp | 94 + .../aux_/preprocessed/no_ctps/greater_equal.hpp | 94 + .../mpl/aux_/preprocessed/no_ctps/inherit.hpp | 166 + .../preprocessed/no_ctps/iter_fold_if_impl.hpp | 133 + .../aux_/preprocessed/no_ctps/iter_fold_impl.hpp | 245 + .../aux_/preprocessed/no_ctps/lambda_no_ctps.hpp | 229 + .../boost/mpl/aux_/preprocessed/no_ctps/less.hpp | 94 + .../mpl/aux_/preprocessed/no_ctps/less_equal.hpp | 94 + .../boost/mpl/aux_/preprocessed/no_ctps/list.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp | 534 ++ .../boost/mpl/aux_/preprocessed/no_ctps/map.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/no_ctps/minus.hpp | 133 + .../mpl/aux_/preprocessed/no_ctps/modulus.hpp | 101 + .../mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp | 94 + .../boost/mpl/aux_/preprocessed/no_ctps/or.hpp | 73 + .../mpl/aux_/preprocessed/no_ctps/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/no_ctps/plus.hpp | 133 + .../boost/mpl/aux_/preprocessed/no_ctps/quote.hpp | 116 + .../preprocessed/no_ctps/reverse_fold_impl.hpp | 295 ++ .../no_ctps/reverse_iter_fold_impl.hpp | 295 ++ .../boost/mpl/aux_/preprocessed/no_ctps/set.hpp | 556 +++ .../boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp | 534 ++ .../mpl/aux_/preprocessed/no_ctps/shift_left.hpp | 99 + .../mpl/aux_/preprocessed/no_ctps/shift_right.hpp | 99 + .../aux_/preprocessed/no_ctps/template_arity.hpp | 40 + .../boost/mpl/aux_/preprocessed/no_ctps/times.hpp | 133 + .../mpl/aux_/preprocessed/no_ctps/unpack_args.hpp | 109 + .../boost/mpl/aux_/preprocessed/no_ctps/vector.hpp | 556 +++ .../mpl/aux_/preprocessed/no_ctps/vector_c.hpp | 534 ++ .../aux_/preprocessed/no_ttp/advance_backward.hpp | 97 + .../aux_/preprocessed/no_ttp/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/no_ttp/and.hpp | 69 + .../boost/mpl/aux_/preprocessed/no_ttp/apply.hpp | 169 + .../mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp | 52 + .../mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp | 84 + .../boost/mpl/aux_/preprocessed/no_ttp/arg.hpp | 123 + .../mpl/aux_/preprocessed/no_ttp/basic_bind.hpp | 369 ++ .../boost/mpl/aux_/preprocessed/no_ttp/bind.hpp | 466 ++ .../mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp | 52 + .../boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp | 157 + .../boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp | 157 + .../boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp | 157 + .../boost/mpl/aux_/preprocessed/no_ttp/deque.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/no_ttp/divides.hpp | 156 + .../mpl/aux_/preprocessed/no_ttp/equal_to.hpp | 98 + .../mpl/aux_/preprocessed/no_ttp/fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/no_ttp/full_lambda.hpp | 554 +++ .../boost/mpl/aux_/preprocessed/no_ttp/greater.hpp | 98 + .../mpl/aux_/preprocessed/no_ttp/greater_equal.hpp | 98 + .../boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp | 141 + .../aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp | 133 + .../aux_/preprocessed/no_ttp/iter_fold_impl.hpp | 180 + .../aux_/preprocessed/no_ttp/lambda_no_ctps.hpp | 229 + .../boost/mpl/aux_/preprocessed/no_ttp/less.hpp | 98 + .../mpl/aux_/preprocessed/no_ttp/less_equal.hpp | 98 + .../boost/mpl/aux_/preprocessed/no_ttp/list.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/no_ttp/map.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/no_ttp/minus.hpp | 156 + .../boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp | 111 + .../mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp | 98 + .../boost/mpl/aux_/preprocessed/no_ttp/or.hpp | 69 + .../mpl/aux_/preprocessed/no_ttp/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/no_ttp/plus.hpp | 156 + .../boost/mpl/aux_/preprocessed/no_ttp/quote.hpp | 11 + .../aux_/preprocessed/no_ttp/reverse_fold_impl.hpp | 231 + .../preprocessed/no_ttp/reverse_iter_fold_impl.hpp | 231 + .../boost/mpl/aux_/preprocessed/no_ttp/set.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp | 328 ++ .../mpl/aux_/preprocessed/no_ttp/shift_left.hpp | 110 + .../mpl/aux_/preprocessed/no_ttp/shift_right.hpp | 110 + .../aux_/preprocessed/no_ttp/template_arity.hpp | 40 + .../boost/mpl/aux_/preprocessed/no_ttp/times.hpp | 156 + .../mpl/aux_/preprocessed/no_ttp/unpack_args.hpp | 94 + .../boost/mpl/aux_/preprocessed/no_ttp/vector.hpp | 323 ++ .../mpl/aux_/preprocessed/no_ttp/vector_c.hpp | 309 ++ .../aux_/preprocessed/plain/advance_backward.hpp | 97 + .../aux_/preprocessed/plain/advance_forward.hpp | 97 + .../boost/mpl/aux_/preprocessed/plain/and.hpp | 64 + .../boost/mpl/aux_/preprocessed/plain/apply.hpp | 139 + .../mpl/aux_/preprocessed/plain/apply_fwd.hpp | 52 + .../mpl/aux_/preprocessed/plain/apply_wrap.hpp | 84 + .../boost/mpl/aux_/preprocessed/plain/arg.hpp | 123 + .../mpl/aux_/preprocessed/plain/basic_bind.hpp | 440 ++ .../boost/mpl/aux_/preprocessed/plain/bind.hpp | 561 +++ .../boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp | 52 + .../boost/mpl/aux_/preprocessed/plain/bitand.hpp | 142 + .../boost/mpl/aux_/preprocessed/plain/bitor.hpp | 142 + .../boost/mpl/aux_/preprocessed/plain/bitxor.hpp | 142 + .../boost/mpl/aux_/preprocessed/plain/deque.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/plain/divides.hpp | 141 + .../boost/mpl/aux_/preprocessed/plain/equal_to.hpp | 92 + .../mpl/aux_/preprocessed/plain/fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/plain/full_lambda.hpp | 554 +++ .../boost/mpl/aux_/preprocessed/plain/greater.hpp | 92 + .../mpl/aux_/preprocessed/plain/greater_equal.hpp | 92 + .../boost/mpl/aux_/preprocessed/plain/inherit.hpp | 125 + .../aux_/preprocessed/plain/iter_fold_if_impl.hpp | 133 + .../mpl/aux_/preprocessed/plain/iter_fold_impl.hpp | 180 + .../mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp | 228 + .../boost/mpl/aux_/preprocessed/plain/less.hpp | 92 + .../mpl/aux_/preprocessed/plain/less_equal.hpp | 92 + .../boost/mpl/aux_/preprocessed/plain/list.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/plain/list_c.hpp | 328 ++ .../boost/mpl/aux_/preprocessed/plain/map.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/plain/minus.hpp | 141 + .../boost/mpl/aux_/preprocessed/plain/modulus.hpp | 99 + .../mpl/aux_/preprocessed/plain/not_equal_to.hpp | 92 + .../boost/mpl/aux_/preprocessed/plain/or.hpp | 64 + .../mpl/aux_/preprocessed/plain/placeholders.hpp | 105 + .../boost/mpl/aux_/preprocessed/plain/plus.hpp | 141 + .../boost/mpl/aux_/preprocessed/plain/quote.hpp | 123 + .../aux_/preprocessed/plain/reverse_fold_impl.hpp | 231 + .../preprocessed/plain/reverse_iter_fold_impl.hpp | 231 + .../boost/mpl/aux_/preprocessed/plain/set.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/plain/set_c.hpp | 328 ++ .../mpl/aux_/preprocessed/plain/shift_left.hpp | 97 + .../mpl/aux_/preprocessed/plain/shift_right.hpp | 97 + .../mpl/aux_/preprocessed/plain/template_arity.hpp | 11 + .../boost/mpl/aux_/preprocessed/plain/times.hpp | 141 + .../mpl/aux_/preprocessed/plain/unpack_args.hpp | 94 + .../boost/mpl/aux_/preprocessed/plain/vector.hpp | 323 ++ .../boost/mpl/aux_/preprocessed/plain/vector_c.hpp | 309 ++ .../include/boost/mpl/aux_/preprocessor/add.hpp | 65 + .../mpl/aux_/preprocessor/def_params_tail.hpp | 105 + .../boost/mpl/aux_/preprocessor/default_params.hpp | 67 + .../include/boost/mpl/aux_/preprocessor/enum.hpp | 62 + .../boost/mpl/aux_/preprocessor/ext_params.hpp | 78 + .../boost/mpl/aux_/preprocessor/filter_params.hpp | 28 + .../include/boost/mpl/aux_/preprocessor/params.hpp | 65 + .../mpl/aux_/preprocessor/partial_spec_params.hpp | 32 + .../include/boost/mpl/aux_/preprocessor/range.hpp | 23 + .../include/boost/mpl/aux_/preprocessor/repeat.hpp | 51 + .../include/boost/mpl/aux_/preprocessor/sub.hpp | 65 + .../include/boost/mpl/aux_/preprocessor/tuple.hpp | 29 + .../include/boost/mpl/aux_/push_back_impl.hpp | 70 + .../include/boost/mpl/aux_/push_front_impl.hpp | 71 + .../include/boost/mpl/aux_/reverse_fold_impl.hpp | 44 + .../boost/mpl/aux_/reverse_fold_impl_body.hpp | 412 ++ .../include/boost/mpl/aux_/sequence_wrapper.hpp | 292 ++ .../prebuilt/include/boost/mpl/aux_/size_impl.hpp | 52 + .../include/boost/mpl/aux_/static_cast.hpp | 27 + .../include/boost/mpl/aux_/template_arity.hpp | 189 + .../include/boost/mpl/aux_/template_arity_fwd.hpp | 23 + .../include/boost/mpl/aux_/traits_lambda_spec.hpp | 63 + .../include/boost/mpl/aux_/type_wrapper.hpp | 47 + .../prebuilt/include/boost/mpl/aux_/value_wknd.hpp | 89 + contrib/prebuilt/include/boost/mpl/aux_/yes_no.hpp | 58 + contrib/prebuilt/include/boost/mpl/back_fwd.hpp | 24 + .../prebuilt/include/boost/mpl/back_inserter.hpp | 34 + contrib/prebuilt/include/boost/mpl/begin_end.hpp | 57 + .../prebuilt/include/boost/mpl/begin_end_fwd.hpp | 27 + contrib/prebuilt/include/boost/mpl/bind.hpp | 551 +++ contrib/prebuilt/include/boost/mpl/bind_fwd.hpp | 99 + contrib/prebuilt/include/boost/mpl/bool.hpp | 39 + contrib/prebuilt/include/boost/mpl/bool_fwd.hpp | 33 + contrib/prebuilt/include/boost/mpl/clear.hpp | 39 + contrib/prebuilt/include/boost/mpl/clear_fwd.hpp | 24 + contrib/prebuilt/include/boost/mpl/comparison.hpp | 24 + contrib/prebuilt/include/boost/mpl/contains.hpp | 41 + .../prebuilt/include/boost/mpl/contains_fwd.hpp | 25 + contrib/prebuilt/include/boost/mpl/copy.hpp | 58 + contrib/prebuilt/include/boost/mpl/deref.hpp | 41 + contrib/prebuilt/include/boost/mpl/distance.hpp | 78 + .../prebuilt/include/boost/mpl/distance_fwd.hpp | 28 + contrib/prebuilt/include/boost/mpl/empty_fwd.hpp | 24 + contrib/prebuilt/include/boost/mpl/equal_to.hpp | 21 + contrib/prebuilt/include/boost/mpl/eval_if.hpp | 71 + contrib/prebuilt/include/boost/mpl/find.hpp | 38 + contrib/prebuilt/include/boost/mpl/find_if.hpp | 50 + contrib/prebuilt/include/boost/mpl/fold.hpp | 48 + contrib/prebuilt/include/boost/mpl/front_fwd.hpp | 24 + .../prebuilt/include/boost/mpl/front_inserter.hpp | 33 + contrib/prebuilt/include/boost/mpl/greater.hpp | 21 + .../prebuilt/include/boost/mpl/greater_equal.hpp | 21 + contrib/prebuilt/include/boost/mpl/has_xxx.hpp | 640 +++ contrib/prebuilt/include/boost/mpl/identity.hpp | 45 + contrib/prebuilt/include/boost/mpl/if.hpp | 135 + contrib/prebuilt/include/boost/mpl/inserter.hpp | 32 + contrib/prebuilt/include/boost/mpl/int.hpp | 22 + contrib/prebuilt/include/boost/mpl/int_fwd.hpp | 27 + contrib/prebuilt/include/boost/mpl/integral_c.hpp | 51 + .../prebuilt/include/boost/mpl/integral_c_fwd.hpp | 32 + .../prebuilt/include/boost/mpl/integral_c_tag.hpp | 26 + .../prebuilt/include/boost/mpl/is_placeholder.hpp | 67 + contrib/prebuilt/include/boost/mpl/iter_fold.hpp | 49 + .../prebuilt/include/boost/mpl/iter_fold_if.hpp | 117 + .../prebuilt/include/boost/mpl/iterator_range.hpp | 42 + .../prebuilt/include/boost/mpl/iterator_tags.hpp | 27 + contrib/prebuilt/include/boost/mpl/lambda.hpp | 29 + contrib/prebuilt/include/boost/mpl/lambda_fwd.hpp | 57 + contrib/prebuilt/include/boost/mpl/less.hpp | 21 + contrib/prebuilt/include/boost/mpl/less_equal.hpp | 21 + .../prebuilt/include/boost/mpl/limits/arity.hpp | 21 + contrib/prebuilt/include/boost/mpl/limits/list.hpp | 21 + .../include/boost/mpl/limits/unrolling.hpp | 21 + .../prebuilt/include/boost/mpl/limits/vector.hpp | 21 + contrib/prebuilt/include/boost/mpl/list.hpp | 57 + .../include/boost/mpl/list/aux_/O1_size.hpp | 33 + .../include/boost/mpl/list/aux_/begin_end.hpp | 44 + .../prebuilt/include/boost/mpl/list/aux_/clear.hpp | 34 + .../prebuilt/include/boost/mpl/list/aux_/empty.hpp | 34 + .../prebuilt/include/boost/mpl/list/aux_/front.hpp | 33 + .../boost/mpl/list/aux_/include_preprocessed.hpp | 35 + .../prebuilt/include/boost/mpl/list/aux_/item.hpp | 55 + .../include/boost/mpl/list/aux_/iterator.hpp | 76 + .../include/boost/mpl/list/aux_/numbered.hpp | 68 + .../include/boost/mpl/list/aux_/numbered_c.hpp | 71 + .../include/boost/mpl/list/aux_/pop_front.hpp | 34 + .../mpl/list/aux_/preprocessed/plain/list10.hpp | 149 + .../mpl/list/aux_/preprocessed/plain/list10_c.hpp | 164 + .../mpl/list/aux_/preprocessed/plain/list20.hpp | 169 + .../mpl/list/aux_/preprocessed/plain/list20_c.hpp | 173 + .../mpl/list/aux_/preprocessed/plain/list30.hpp | 189 + .../mpl/list/aux_/preprocessed/plain/list30_c.hpp | 183 + .../mpl/list/aux_/preprocessed/plain/list40.hpp | 209 + .../mpl/list/aux_/preprocessed/plain/list40_c.hpp | 193 + .../mpl/list/aux_/preprocessed/plain/list50.hpp | 229 + .../mpl/list/aux_/preprocessed/plain/list50_c.hpp | 203 + .../include/boost/mpl/list/aux_/push_back.hpp | 36 + .../include/boost/mpl/list/aux_/push_front.hpp | 39 + .../prebuilt/include/boost/mpl/list/aux_/size.hpp | 33 + .../prebuilt/include/boost/mpl/list/aux_/tag.hpp | 24 + contrib/prebuilt/include/boost/mpl/list/list0.hpp | 42 + .../prebuilt/include/boost/mpl/list/list0_c.hpp | 31 + contrib/prebuilt/include/boost/mpl/list/list10.hpp | 43 + .../prebuilt/include/boost/mpl/list/list10_c.hpp | 43 + contrib/prebuilt/include/boost/mpl/list/list20.hpp | 43 + .../prebuilt/include/boost/mpl/list/list20_c.hpp | 43 + contrib/prebuilt/include/boost/mpl/list/list30.hpp | 43 + .../prebuilt/include/boost/mpl/list/list30_c.hpp | 43 + contrib/prebuilt/include/boost/mpl/list/list40.hpp | 43 + .../prebuilt/include/boost/mpl/list/list40_c.hpp | 43 + contrib/prebuilt/include/boost/mpl/list/list50.hpp | 43 + .../prebuilt/include/boost/mpl/list/list50_c.hpp | 43 + contrib/prebuilt/include/boost/mpl/logical.hpp | 21 + contrib/prebuilt/include/boost/mpl/long.hpp | 22 + contrib/prebuilt/include/boost/mpl/long_fwd.hpp | 27 + contrib/prebuilt/include/boost/mpl/minus.hpp | 21 + contrib/prebuilt/include/boost/mpl/multiplies.hpp | 53 + contrib/prebuilt/include/boost/mpl/negate.hpp | 81 + contrib/prebuilt/include/boost/mpl/next.hpp | 19 + contrib/prebuilt/include/boost/mpl/next_prior.hpp | 49 + contrib/prebuilt/include/boost/mpl/not.hpp | 51 + .../prebuilt/include/boost/mpl/not_equal_to.hpp | 21 + .../prebuilt/include/boost/mpl/numeric_cast.hpp | 41 + contrib/prebuilt/include/boost/mpl/or.hpp | 61 + contrib/prebuilt/include/boost/mpl/pair.hpp | 70 + .../prebuilt/include/boost/mpl/placeholders.hpp | 100 + contrib/prebuilt/include/boost/mpl/plus.hpp | 21 + .../prebuilt/include/boost/mpl/pop_back_fwd.hpp | 24 + .../prebuilt/include/boost/mpl/pop_front_fwd.hpp | 24 + contrib/prebuilt/include/boost/mpl/prior.hpp | 19 + contrib/prebuilt/include/boost/mpl/protect.hpp | 55 + contrib/prebuilt/include/boost/mpl/push_back.hpp | 53 + .../prebuilt/include/boost/mpl/push_back_fwd.hpp | 24 + contrib/prebuilt/include/boost/mpl/push_front.hpp | 52 + .../prebuilt/include/boost/mpl/push_front_fwd.hpp | 24 + contrib/prebuilt/include/boost/mpl/quote.hpp | 151 + contrib/prebuilt/include/boost/mpl/remove_if.hpp | 83 + .../prebuilt/include/boost/mpl/reverse_fold.hpp | 50 + contrib/prebuilt/include/boost/mpl/same_as.hpp | 55 + .../prebuilt/include/boost/mpl/sequence_tag.hpp | 124 + .../include/boost/mpl/sequence_tag_fwd.hpp | 26 + contrib/prebuilt/include/boost/mpl/size.hpp | 42 + contrib/prebuilt/include/boost/mpl/size_fwd.hpp | 24 + contrib/prebuilt/include/boost/mpl/size_t.hpp | 25 + contrib/prebuilt/include/boost/mpl/size_t_fwd.hpp | 28 + contrib/prebuilt/include/boost/mpl/tag.hpp | 52 + contrib/prebuilt/include/boost/mpl/times.hpp | 21 + contrib/prebuilt/include/boost/mpl/vector.hpp | 57 + .../include/boost/mpl/vector/aux_/O1_size.hpp | 56 + .../prebuilt/include/boost/mpl/vector/aux_/at.hpp | 116 + .../include/boost/mpl/vector/aux_/back.hpp | 59 + .../include/boost/mpl/vector/aux_/begin_end.hpp | 49 + .../include/boost/mpl/vector/aux_/clear.hpp | 55 + .../include/boost/mpl/vector/aux_/empty.hpp | 68 + .../include/boost/mpl/vector/aux_/front.hpp | 56 + .../boost/mpl/vector/aux_/include_preprocessed.hpp | 55 + .../include/boost/mpl/vector/aux_/item.hpp | 103 + .../include/boost/mpl/vector/aux_/iterator.hpp | 130 + .../include/boost/mpl/vector/aux_/numbered.hpp | 218 + .../include/boost/mpl/vector/aux_/numbered_c.hpp | 77 + .../include/boost/mpl/vector/aux_/pop_back.hpp | 40 + .../include/boost/mpl/vector/aux_/pop_front.hpp | 40 + .../vector/aux_/preprocessed/no_ctps/vector10.hpp | 1528 ++++++ .../aux_/preprocessed/no_ctps/vector10_c.hpp | 149 + .../vector/aux_/preprocessed/no_ctps/vector20.hpp | 1804 +++++++ .../aux_/preprocessed/no_ctps/vector20_c.hpp | 195 + .../vector/aux_/preprocessed/no_ctps/vector30.hpp | 2124 ++++++++ .../aux_/preprocessed/no_ctps/vector30_c.hpp | 238 + .../vector/aux_/preprocessed/no_ctps/vector40.hpp | 2444 +++++++++ .../aux_/preprocessed/no_ctps/vector40_c.hpp | 281 ++ .../vector/aux_/preprocessed/no_ctps/vector50.hpp | 2764 +++++++++++ .../aux_/preprocessed/no_ctps/vector50_c.hpp | 325 ++ .../vector/aux_/preprocessed/plain/vector10.hpp | 829 ++++ .../vector/aux_/preprocessed/plain/vector10_c.hpp | 149 + .../vector/aux_/preprocessed/plain/vector20.hpp | 1144 +++++ .../vector/aux_/preprocessed/plain/vector20_c.hpp | 195 + .../vector/aux_/preprocessed/plain/vector30.hpp | 1464 ++++++ .../vector/aux_/preprocessed/plain/vector30_c.hpp | 238 + .../vector/aux_/preprocessed/plain/vector40.hpp | 1784 +++++++ .../vector/aux_/preprocessed/plain/vector40_c.hpp | 281 ++ .../vector/aux_/preprocessed/plain/vector50.hpp | 2104 ++++++++ .../vector/aux_/preprocessed/plain/vector50_c.hpp | 325 ++ .../aux_/preprocessed/typeof_based/vector10.hpp | 139 + .../aux_/preprocessed/typeof_based/vector10_c.hpp | 154 + .../aux_/preprocessed/typeof_based/vector20.hpp | 159 + .../aux_/preprocessed/typeof_based/vector20_c.hpp | 163 + .../aux_/preprocessed/typeof_based/vector30.hpp | 179 + .../aux_/preprocessed/typeof_based/vector30_c.hpp | 173 + .../aux_/preprocessed/typeof_based/vector40.hpp | 199 + .../aux_/preprocessed/typeof_based/vector40_c.hpp | 183 + .../aux_/preprocessed/typeof_based/vector50.hpp | 219 + .../aux_/preprocessed/typeof_based/vector50_c.hpp | 193 + .../include/boost/mpl/vector/aux_/push_back.hpp | 40 + .../include/boost/mpl/vector/aux_/push_front.hpp | 40 + .../include/boost/mpl/vector/aux_/size.hpp | 49 + .../prebuilt/include/boost/mpl/vector/aux_/tag.hpp | 32 + .../include/boost/mpl/vector/aux_/vector0.hpp | 52 + .../prebuilt/include/boost/mpl/vector/vector0.hpp | 34 + .../include/boost/mpl/vector/vector0_c.hpp | 31 + .../prebuilt/include/boost/mpl/vector/vector10.hpp | 45 + .../include/boost/mpl/vector/vector10_c.hpp | 46 + .../prebuilt/include/boost/mpl/vector/vector20.hpp | 45 + .../include/boost/mpl/vector/vector20_c.hpp | 46 + .../prebuilt/include/boost/mpl/vector/vector30.hpp | 45 + .../include/boost/mpl/vector/vector30_c.hpp | 47 + .../prebuilt/include/boost/mpl/vector/vector40.hpp | 45 + .../include/boost/mpl/vector/vector40_c.hpp | 46 + .../prebuilt/include/boost/mpl/vector/vector50.hpp | 45 + .../include/boost/mpl/vector/vector50_c.hpp | 46 + contrib/prebuilt/include/boost/mpl/void.hpp | 76 + contrib/prebuilt/include/boost/mpl/void_fwd.hpp | 26 + contrib/prebuilt/include/boost/next_prior.hpp | 51 + contrib/prebuilt/include/boost/non_type.hpp | 27 + contrib/prebuilt/include/boost/noncopyable.hpp | 36 + contrib/prebuilt/include/boost/none.hpp | 28 + contrib/prebuilt/include/boost/none_t.hpp | 24 + .../include/boost/numeric/conversion/bounds.hpp | 24 + .../include/boost/numeric/conversion/cast.hpp | 61 + .../boost/numeric/conversion/conversion_traits.hpp | 39 + .../include/boost/numeric/conversion/converter.hpp | 68 + .../numeric/conversion/converter_policies.hpp | 194 + .../boost/numeric/conversion/detail/bounds.hpp | 58 + .../conversion/detail/conversion_traits.hpp | 97 + .../boost/numeric/conversion/detail/converter.hpp | 602 +++ .../conversion/detail/int_float_mixture.hpp | 72 + .../numeric/conversion/detail/is_subranged.hpp | 234 + .../boost/numeric/conversion/detail/meta.hpp | 120 + .../conversion/detail/numeric_cast_traits.hpp | 138 + .../numeric/conversion/detail/old_numeric_cast.hpp | 339 ++ .../preprocessed/numeric_cast_traits_common.hpp | 1741 +++++++ .../preprocessed/numeric_cast_traits_long_long.hpp | 347 ++ .../numeric/conversion/detail/sign_mixture.hpp | 72 + .../conversion/detail/udt_builtin_mixture.hpp | 69 + .../numeric/conversion/int_float_mixture_enum.hpp | 29 + .../numeric/conversion/numeric_cast_traits.hpp | 31 + .../boost/numeric/conversion/sign_mixture_enum.hpp | 29 + .../conversion/udt_builtin_mixture_enum.hpp | 26 + contrib/prebuilt/include/boost/operators.hpp | 978 ++++ contrib/prebuilt/include/boost/optional.hpp | 18 + .../prebuilt/include/boost/optional/optional.hpp | 991 ++++ .../include/boost/optional/optional_fwd.hpp | 29 + .../include/boost/pending/integer_log2.hpp | 112 + .../prebuilt/include/boost/pool/detail/guard.hpp | 69 + .../prebuilt/include/boost/pool/detail/mutex.hpp | 42 + contrib/prebuilt/include/boost/pool/pool.hpp | 1024 ++++ contrib/prebuilt/include/boost/pool/pool_alloc.hpp | 488 ++ contrib/prebuilt/include/boost/pool/poolfwd.hpp | 82 + .../boost/pool/simple_segregated_storage.hpp | 377 ++ .../prebuilt/include/boost/pool/singleton_pool.hpp | 251 + .../include/boost/preprocessor/arithmetic/add.hpp | 51 + .../include/boost/preprocessor/arithmetic/dec.hpp | 288 ++ .../preprocessor/arithmetic/detail/div_base.hpp | 61 + .../include/boost/preprocessor/arithmetic/inc.hpp | 288 ++ .../include/boost/preprocessor/arithmetic/mod.hpp | 39 + .../include/boost/preprocessor/arithmetic/sub.hpp | 50 + .../include/boost/preprocessor/array/data.hpp | 28 + .../include/boost/preprocessor/array/elem.hpp | 29 + .../include/boost/preprocessor/array/size.hpp | 28 + .../prebuilt/include/boost/preprocessor/cat.hpp | 35 + .../include/boost/preprocessor/comma_if.hpp | 17 + .../boost/preprocessor/comparison/less_equal.hpp | 39 + .../include/boost/preprocessor/config/config.hpp | 105 + .../boost/preprocessor/control/deduce_d.hpp | 22 + .../preprocessor/control/detail/dmc/while.hpp | 536 ++ .../preprocessor/control/detail/edg/while.hpp | 534 ++ .../preprocessor/control/detail/msvc/while.hpp | 277 ++ .../boost/preprocessor/control/detail/while.hpp | 536 ++ .../include/boost/preprocessor/control/expr_if.hpp | 30 + .../boost/preprocessor/control/expr_iif.hpp | 31 + .../include/boost/preprocessor/control/if.hpp | 30 + .../include/boost/preprocessor/control/iif.hpp | 34 + .../include/boost/preprocessor/control/while.hpp | 312 ++ .../include/boost/preprocessor/debug/error.hpp | 33 + .../prebuilt/include/boost/preprocessor/dec.hpp | 17 + .../include/boost/preprocessor/detail/auto_rec.hpp | 293 ++ .../include/boost/preprocessor/detail/check.hpp | 48 + .../boost/preprocessor/detail/dmc/auto_rec.hpp | 286 ++ .../boost/preprocessor/detail/is_binary.hpp | 30 + .../include/boost/preprocessor/detail/is_unary.hpp | 30 + .../prebuilt/include/boost/preprocessor/empty.hpp | 17 + .../prebuilt/include/boost/preprocessor/enum.hpp | 17 + .../include/boost/preprocessor/enum_params.hpp | 17 + .../preprocessor/enum_params_with_a_default.hpp | 17 + .../preprocessor/enum_params_with_defaults.hpp | 17 + .../boost/preprocessor/enum_shifted_params.hpp | 17 + .../include/boost/preprocessor/expr_if.hpp | 17 + .../boost/preprocessor/facilities/empty.hpp | 21 + .../boost/preprocessor/facilities/identity.hpp | 23 + .../boost/preprocessor/facilities/intercept.hpp | 277 ++ .../boost/preprocessor/facilities/overload.hpp | 25 + .../include/boost/preprocessor/identity.hpp | 17 + contrib/prebuilt/include/boost/preprocessor/if.hpp | 17 + .../prebuilt/include/boost/preprocessor/inc.hpp | 17 + .../include/boost/preprocessor/iterate.hpp | 17 + .../iteration/detail/bounds/lower1.hpp | 99 + .../iteration/detail/bounds/lower2.hpp | 99 + .../iteration/detail/bounds/lower3.hpp | 99 + .../iteration/detail/bounds/lower4.hpp | 99 + .../iteration/detail/bounds/lower5.hpp | 99 + .../iteration/detail/bounds/upper1.hpp | 99 + .../iteration/detail/bounds/upper2.hpp | 99 + .../iteration/detail/bounds/upper3.hpp | 99 + .../iteration/detail/bounds/upper4.hpp | 99 + .../iteration/detail/bounds/upper5.hpp | 99 + .../boost/preprocessor/iteration/detail/finish.hpp | 99 + .../iteration/detail/iter/forward1.hpp | 1342 +++++ .../iteration/detail/iter/forward2.hpp | 1338 +++++ .../iteration/detail/iter/forward3.hpp | 1338 +++++ .../iteration/detail/iter/forward4.hpp | 1338 +++++ .../iteration/detail/iter/forward5.hpp | 1338 +++++ .../iteration/detail/iter/reverse1.hpp | 1296 +++++ .../iteration/detail/iter/reverse2.hpp | 1296 +++++ .../iteration/detail/iter/reverse3.hpp | 1296 +++++ .../iteration/detail/iter/reverse4.hpp | 1296 +++++ .../iteration/detail/iter/reverse5.hpp | 1296 +++++ .../boost/preprocessor/iteration/detail/local.hpp | 812 +++ .../boost/preprocessor/iteration/detail/rlocal.hpp | 782 +++ .../boost/preprocessor/iteration/detail/self.hpp | 21 + .../boost/preprocessor/iteration/detail/start.hpp | 99 + .../boost/preprocessor/iteration/iterate.hpp | 82 + .../include/boost/preprocessor/iteration/local.hpp | 26 + .../include/boost/preprocessor/iteration/self.hpp | 19 + .../include/boost/preprocessor/list/adt.hpp | 73 + .../include/boost/preprocessor/list/append.hpp | 40 + .../preprocessor/list/detail/dmc/fold_left.hpp | 279 ++ .../preprocessor/list/detail/edg/fold_left.hpp | 536 ++ .../preprocessor/list/detail/edg/fold_right.hpp | 794 +++ .../boost/preprocessor/list/detail/fold_left.hpp | 279 ++ .../boost/preprocessor/list/detail/fold_right.hpp | 277 ++ .../include/boost/preprocessor/list/fold_left.hpp | 303 ++ .../include/boost/preprocessor/list/fold_right.hpp | 40 + .../include/boost/preprocessor/list/for_each_i.hpp | 65 + .../include/boost/preprocessor/list/reverse.hpp | 40 + .../include/boost/preprocessor/list/transform.hpp | 49 + .../include/boost/preprocessor/logical/and.hpp | 30 + .../include/boost/preprocessor/logical/bitand.hpp | 38 + .../include/boost/preprocessor/logical/bitor.hpp | 38 + .../include/boost/preprocessor/logical/bool.hpp | 288 ++ .../include/boost/preprocessor/logical/compl.hpp | 36 + .../include/boost/preprocessor/logical/not.hpp | 30 + .../include/boost/preprocessor/logical/or.hpp | 30 + .../boost/preprocessor/punctuation/comma.hpp | 21 + .../boost/preprocessor/punctuation/comma_if.hpp | 31 + .../boost/preprocessor/punctuation/paren.hpp | 23 + .../boost/preprocessor/punctuation/paren_if.hpp | 38 + .../prebuilt/include/boost/preprocessor/repeat.hpp | 17 + .../include/boost/preprocessor/repeat_from_to.hpp | 17 + .../preprocessor/repetition/detail/dmc/for.hpp | 536 ++ .../preprocessor/repetition/detail/edg/for.hpp | 534 ++ .../boost/preprocessor/repetition/detail/for.hpp | 536 ++ .../preprocessor/repetition/detail/msvc/for.hpp | 277 ++ .../include/boost/preprocessor/repetition/enum.hpp | 66 + .../preprocessor/repetition/enum_binary_params.hpp | 54 + .../boost/preprocessor/repetition/enum_params.hpp | 41 + .../repetition/enum_params_with_a_default.hpp | 25 + .../repetition/enum_params_with_defaults.hpp | 24 + .../boost/preprocessor/repetition/enum_shifted.hpp | 68 + .../repetition/enum_shifted_params.hpp | 44 + .../preprocessor/repetition/enum_trailing.hpp | 63 + .../repetition/enum_trailing_params.hpp | 38 + .../include/boost/preprocessor/repetition/for.hpp | 306 ++ .../boost/preprocessor/repetition/repeat.hpp | 825 ++++ .../preprocessor/repetition/repeat_from_to.hpp | 87 + .../include/boost/preprocessor/seq/cat.hpp | 49 + .../boost/preprocessor/seq/detail/split.hpp | 284 ++ .../include/boost/preprocessor/seq/elem.hpp | 304 ++ .../include/boost/preprocessor/seq/enum.hpp | 288 ++ .../include/boost/preprocessor/seq/first_n.hpp | 30 + .../include/boost/preprocessor/seq/fold_left.hpp | 1070 ++++ .../include/boost/preprocessor/seq/for_each_i.hpp | 61 + .../include/boost/preprocessor/seq/rest_n.hpp | 30 + .../include/boost/preprocessor/seq/seq.hpp | 44 + .../include/boost/preprocessor/seq/size.hpp | 547 ++ .../include/boost/preprocessor/seq/subseq.hpp | 28 + .../include/boost/preprocessor/seq/transform.hpp | 48 + .../boost/preprocessor/slot/detail/counter.hpp | 269 + .../include/boost/preprocessor/slot/detail/def.hpp | 49 + .../boost/preprocessor/slot/detail/shared.hpp | 247 + .../boost/preprocessor/slot/detail/slot1.hpp | 267 + .../boost/preprocessor/slot/detail/slot2.hpp | 267 + .../boost/preprocessor/slot/detail/slot3.hpp | 267 + .../boost/preprocessor/slot/detail/slot4.hpp | 267 + .../boost/preprocessor/slot/detail/slot5.hpp | 267 + .../include/boost/preprocessor/slot/slot.hpp | 32 + .../include/boost/preprocessor/stringize.hpp | 33 + .../include/boost/preprocessor/tuple/eat.hpp | 106 + .../include/boost/preprocessor/tuple/elem.hpp | 191 + .../include/boost/preprocessor/tuple/rem.hpp | 134 + .../include/boost/preprocessor/tuple/to_list.hpp | 116 + .../include/boost/preprocessor/variadic/elem.hpp | 94 + .../include/boost/preprocessor/variadic/size.hpp | 30 + .../include/boost/random/detail/config.hpp | 18 + .../include/boost/random/detail/const_mod.hpp | 216 + .../boost/random/detail/disable_warnings.hpp | 23 + .../boost/random/detail/enable_warnings.hpp | 18 + .../include/boost/random/detail/generator_bits.hpp | 36 + .../boost/random/detail/generator_seed_seq.hpp | 40 + .../include/boost/random/detail/integer_log2.hpp | 84 + .../boost/random/detail/large_arithmetic.hpp | 122 + .../include/boost/random/detail/operators.hpp | 84 + .../include/boost/random/detail/ptr_helper.hpp | 94 + .../prebuilt/include/boost/random/detail/seed.hpp | 114 + .../include/boost/random/detail/seed_impl.hpp | 397 ++ .../boost/random/detail/signed_unsigned_tools.hpp | 89 + .../boost/random/detail/uniform_int_float.hpp | 76 + .../include/boost/random/mersenne_twister.hpp | 545 ++ .../prebuilt/include/boost/random/uniform_int.hpp | 99 + .../boost/random/uniform_int_distribution.hpp | 400 ++ .../include/boost/random/variate_generator.hpp | 122 + .../include/boost/range/algorithm/equal.hpp | 198 + .../prebuilt/include/boost/range/as_literal.hpp | 127 + contrib/prebuilt/include/boost/range/begin.hpp | 143 + contrib/prebuilt/include/boost/range/concepts.hpp | 366 ++ contrib/prebuilt/include/boost/range/config.hpp | 54 + .../include/boost/range/const_iterator.hpp | 67 + .../include/boost/range/detail/as_literal.hpp | 33 + .../prebuilt/include/boost/range/detail/begin.hpp | 94 + .../prebuilt/include/boost/range/detail/common.hpp | 117 + .../include/boost/range/detail/const_iterator.hpp | 71 + .../include/boost/range/detail/detail_str.hpp | 376 ++ .../prebuilt/include/boost/range/detail/end.hpp | 101 + .../boost/range/detail/extract_optional_type.hpp | 52 + .../boost/range/detail/implementation_help.hpp | 103 + .../include/boost/range/detail/iterator.hpp | 78 + .../include/boost/range/detail/misc_concept.hpp | 33 + .../include/boost/range/detail/remove_extent.hpp | 157 + .../include/boost/range/detail/safe_bool.hpp | 72 + .../prebuilt/include/boost/range/detail/sfinae.hpp | 77 + .../include/boost/range/detail/size_type.hpp | 55 + .../include/boost/range/detail/str_types.hpp | 38 + .../include/boost/range/detail/value_type.hpp | 72 + .../include/boost/range/detail/vc6/end.hpp | 170 + .../include/boost/range/difference_type.hpp | 29 + contrib/prebuilt/include/boost/range/distance.hpp | 34 + contrib/prebuilt/include/boost/range/empty.hpp | 34 + contrib/prebuilt/include/boost/range/end.hpp | 136 + contrib/prebuilt/include/boost/range/functions.hpp | 27 + contrib/prebuilt/include/boost/range/iterator.hpp | 72 + .../include/boost/range/iterator_range.hpp | 16 + .../include/boost/range/iterator_range_core.hpp | 650 +++ .../include/boost/range/iterator_range_io.hpp | 93 + .../include/boost/range/mutable_iterator.hpp | 67 + contrib/prebuilt/include/boost/range/rbegin.hpp | 65 + contrib/prebuilt/include/boost/range/rend.hpp | 65 + .../include/boost/range/result_iterator.hpp | 33 + .../include/boost/range/reverse_iterator.hpp | 40 + contrib/prebuilt/include/boost/range/size.hpp | 52 + contrib/prebuilt/include/boost/range/size_type.hpp | 89 + .../prebuilt/include/boost/range/value_type.hpp | 34 + .../include/boost/ratio/detail/mpl/abs.hpp | 89 + .../include/boost/ratio/detail/mpl/gcd.hpp | 124 + .../include/boost/ratio/detail/mpl/lcm.hpp | 126 + .../include/boost/ratio/detail/mpl/sign.hpp | 89 + .../boost/ratio/detail/overflow_helpers.hpp | 395 ++ .../include/boost/ratio/mpl/rational_c_tag.hpp | 25 + contrib/prebuilt/include/boost/ratio/ratio.hpp | 233 + contrib/prebuilt/include/boost/ratio/ratio_fwd.hpp | 89 + contrib/prebuilt/include/boost/rational.hpp | 609 +++ contrib/prebuilt/include/boost/ref.hpp | 189 + contrib/prebuilt/include/boost/scoped_array.hpp | 16 + contrib/prebuilt/include/boost/scoped_ptr.hpp | 16 + contrib/prebuilt/include/boost/shared_ptr.hpp | 19 + .../include/boost/smart_ptr/bad_weak_ptr.hpp | 59 + .../boost/smart_ptr/detail/atomic_count.hpp | 119 + .../boost/smart_ptr/detail/atomic_count_gcc.hpp | 72 + .../smart_ptr/detail/atomic_count_gcc_x86.hpp | 77 + .../smart_ptr/detail/atomic_count_pthreads.hpp | 96 + .../boost/smart_ptr/detail/atomic_count_sync.hpp | 61 + .../boost/smart_ptr/detail/atomic_count_win32.hpp | 63 + .../boost/smart_ptr/detail/lightweight_mutex.hpp | 42 + .../include/boost/smart_ptr/detail/lwm_nop.hpp | 37 + .../boost/smart_ptr/detail/lwm_pthreads.hpp | 87 + .../boost/smart_ptr/detail/lwm_win32_cs.hpp | 108 + .../boost/smart_ptr/detail/operator_bool.hpp | 56 + .../boost/smart_ptr/detail/quick_allocator.hpp | 199 + .../boost/smart_ptr/detail/shared_count.hpp | 532 ++ .../boost/smart_ptr/detail/shared_ptr_nmt.hpp | 182 + .../boost/smart_ptr/detail/sp_convertible.hpp | 76 + .../boost/smart_ptr/detail/sp_counted_base.hpp | 73 + .../smart_ptr/detail/sp_counted_base_acc_ia64.hpp | 150 + .../smart_ptr/detail/sp_counted_base_cw_ppc.hpp | 170 + .../smart_ptr/detail/sp_counted_base_gcc_ia64.hpp | 157 + .../smart_ptr/detail/sp_counted_base_gcc_mips.hpp | 181 + .../smart_ptr/detail/sp_counted_base_gcc_ppc.hpp | 181 + .../smart_ptr/detail/sp_counted_base_gcc_sparc.hpp | 166 + .../smart_ptr/detail/sp_counted_base_gcc_x86.hpp | 173 + .../boost/smart_ptr/detail/sp_counted_base_nt.hpp | 107 + .../boost/smart_ptr/detail/sp_counted_base_pt.hpp | 135 + .../smart_ptr/detail/sp_counted_base_spin.hpp | 131 + .../smart_ptr/detail/sp_counted_base_sync.hpp | 155 + .../smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp | 150 + .../boost/smart_ptr/detail/sp_counted_base_w32.hpp | 130 + .../boost/smart_ptr/detail/sp_counted_impl.hpp | 239 + .../include/boost/smart_ptr/detail/sp_has_sync.hpp | 53 + .../include/boost/smart_ptr/detail/spinlock.hpp | 56 + .../boost/smart_ptr/detail/spinlock_gcc_arm.hpp | 127 + .../include/boost/smart_ptr/detail/spinlock_nt.hpp | 89 + .../boost/smart_ptr/detail/spinlock_pool.hpp | 91 + .../include/boost/smart_ptr/detail/spinlock_pt.hpp | 79 + .../boost/smart_ptr/detail/spinlock_sync.hpp | 87 + .../boost/smart_ptr/detail/spinlock_w32.hpp | 113 + .../include/boost/smart_ptr/detail/yield_k.hpp | 149 + .../boost/smart_ptr/enable_shared_from_this.hpp | 79 + .../include/boost/smart_ptr/intrusive_ptr.hpp | 299 ++ .../include/boost/smart_ptr/scoped_array.hpp | 107 + .../include/boost/smart_ptr/scoped_ptr.hpp | 131 + .../include/boost/smart_ptr/shared_ptr.hpp | 717 +++ .../prebuilt/include/boost/smart_ptr/weak_ptr.hpp | 242 + contrib/prebuilt/include/boost/spirit.hpp | 27 + .../prebuilt/include/boost/spirit/home/classic.hpp | 32 + .../spirit/home/classic/actor/assign_actor.hpp | 100 + .../spirit/home/classic/actor/push_back_actor.hpp | 101 + .../home/classic/actor/ref_const_ref_actor.hpp | 78 + .../spirit/home/classic/actor/ref_value_actor.hpp | 82 + .../boost/spirit/home/classic/attribute.hpp | 37 + .../spirit/home/classic/attribute/closure.hpp | 1083 ++++ .../home/classic/attribute/closure_context.hpp | 56 + .../spirit/home/classic/attribute/closure_fwd.hpp | 69 + .../spirit/home/classic/attribute/parametric.hpp | 144 + .../include/boost/spirit/home/classic/core.hpp | 73 + .../boost/spirit/home/classic/core/assert.hpp | 38 + .../spirit/home/classic/core/composite/actions.hpp | 136 + .../home/classic/core/composite/alternative.hpp | 147 + .../home/classic/core/composite/composite.hpp | 151 + .../home/classic/core/composite/difference.hpp | 150 + .../home/classic/core/composite/directives.hpp | 607 +++ .../spirit/home/classic/core/composite/epsilon.hpp | 276 ++ .../home/classic/core/composite/exclusive_or.hpp | 142 + .../classic/core/composite/impl/alternative.ipp | 90 + .../classic/core/composite/impl/difference.ipp | 90 + .../classic/core/composite/impl/directives.ipp | 374 ++ .../classic/core/composite/impl/exclusive_or.ipp | 90 + .../classic/core/composite/impl/intersection.ipp | 90 + .../classic/core/composite/impl/kleene_star.ipp | 34 + .../home/classic/core/composite/impl/list.ipp | 93 + .../home/classic/core/composite/impl/optional.ipp | 34 + .../home/classic/core/composite/impl/positive.ipp | 34 + .../home/classic/core/composite/impl/sequence.ipp | 90 + .../classic/core/composite/impl/sequential_and.ipp | 90 + .../classic/core/composite/impl/sequential_or.ipp | 90 + .../home/classic/core/composite/intersection.hpp | 142 + .../home/classic/core/composite/kleene_star.hpp | 109 + .../spirit/home/classic/core/composite/list.hpp | 73 + .../home/classic/core/composite/no_actions.hpp | 165 + .../home/classic/core/composite/operators.hpp | 25 + .../home/classic/core/composite/optional.hpp | 94 + .../home/classic/core/composite/positive.hpp | 112 + .../home/classic/core/composite/sequence.hpp | 142 + .../home/classic/core/composite/sequential_and.hpp | 76 + .../home/classic/core/composite/sequential_or.hpp | 154 + .../boost/spirit/home/classic/core/config.hpp | 62 + .../boost/spirit/home/classic/core/impl/match.ipp | 113 + .../home/classic/core/impl/match_attr_traits.ipp | 102 + .../boost/spirit/home/classic/core/impl/parser.ipp | 55 + .../boost/spirit/home/classic/core/match.hpp | 185 + .../include/boost/spirit/home/classic/core/nil.hpp | 25 + .../home/classic/core/non_terminal/grammar.hpp | 85 + .../classic/core/non_terminal/impl/grammar.ipp | 407 ++ .../core/non_terminal/impl/object_with_id.ipp | 191 + .../home/classic/core/non_terminal/impl/rule.ipp | 420 ++ .../home/classic/core/non_terminal/impl/static.hpp | 120 + .../classic/core/non_terminal/impl/subrule.ipp | 211 + .../classic/core/non_terminal/parser_context.hpp | 150 + .../home/classic/core/non_terminal/parser_id.hpp | 122 + .../spirit/home/classic/core/non_terminal/rule.hpp | 175 + .../home/classic/core/non_terminal/subrule.hpp | 300 ++ .../home/classic/core/non_terminal/subrule_fwd.hpp | 35 + .../boost/spirit/home/classic/core/parser.hpp | 223 + .../home/classic/core/primitives/impl/numerics.ipp | 478 ++ .../classic/core/primitives/impl/primitives.ipp | 476 ++ .../home/classic/core/primitives/numerics.hpp | 289 ++ .../home/classic/core/primitives/numerics_fwd.hpp | 88 + .../home/classic/core/primitives/primitives.hpp | 654 +++ .../boost/spirit/home/classic/core/safe_bool.hpp | 64 + .../home/classic/core/scanner/impl/skipper.ipp | 181 + .../spirit/home/classic/core/scanner/scanner.hpp | 329 ++ .../home/classic/core/scanner/scanner_fwd.hpp | 52 + .../spirit/home/classic/core/scanner/skipper.hpp | 197 + .../home/classic/core/scanner/skipper_fwd.hpp | 32 + .../include/boost/spirit/home/classic/debug.hpp | 154 + .../boost/spirit/home/classic/debug/debug_node.hpp | 319 ++ .../home/classic/debug/impl/parser_names.ipp | 555 +++ .../boost/spirit/home/classic/debug/minimal.hpp | 81 + .../spirit/home/classic/debug/parser_names.hpp | 254 + .../boost/spirit/home/classic/error_handling.hpp | 21 + .../home/classic/error_handling/exceptions.hpp | 365 ++ .../home/classic/error_handling/exceptions_fwd.hpp | 41 + .../classic/error_handling/impl/exceptions.ipp | 93 + .../include/boost/spirit/home/classic/iterator.hpp | 25 + .../spirit/home/classic/iterator/file_iterator.hpp | 229 + .../home/classic/iterator/file_iterator_fwd.hpp | 39 + .../home/classic/iterator/fixed_size_queue.hpp | 402 ++ .../home/classic/iterator/impl/file_iterator.ipp | 467 ++ .../classic/iterator/impl/position_iterator.ipp | 138 + .../spirit/home/classic/iterator/multi_pass.hpp | 1307 +++++ .../home/classic/iterator/multi_pass_fwd.hpp | 47 + .../home/classic/iterator/position_iterator.hpp | 436 ++ .../classic/iterator/position_iterator_fwd.hpp | 60 + .../include/boost/spirit/home/classic/meta.hpp | 26 + .../boost/spirit/home/classic/meta/as_parser.hpp | 113 + .../boost/spirit/home/classic/meta/fundamental.hpp | 56 + .../spirit/home/classic/meta/impl/fundamental.ipp | 309 ++ .../home/classic/meta/impl/parser_traits.ipp | 191 + .../spirit/home/classic/meta/impl/refactoring.ipp | 451 ++ .../spirit/home/classic/meta/impl/traverse.ipp | 393 ++ .../spirit/home/classic/meta/parser_traits.hpp | 320 ++ .../boost/spirit/home/classic/meta/refactoring.hpp | 287 ++ .../boost/spirit/home/classic/meta/traverse.hpp | 222 + .../boost/spirit/home/classic/namespace.hpp | 35 + .../boost/spirit/home/classic/phoenix/actor.hpp | 604 +++ .../boost/spirit/home/classic/phoenix/casts.hpp | 1470 ++++++ .../boost/spirit/home/classic/phoenix/closures.hpp | 446 ++ .../spirit/home/classic/phoenix/composite.hpp | 1431 ++++++ .../spirit/home/classic/phoenix/operators.hpp | 2203 +++++++++ .../spirit/home/classic/phoenix/primitives.hpp | 256 + .../spirit/home/classic/phoenix/tuple_helpers.hpp | 1075 ++++ .../boost/spirit/home/classic/phoenix/tuples.hpp | 1338 +++++ .../include/boost/spirit/home/classic/symbols.hpp | 21 + .../spirit/home/classic/symbols/impl/symbols.ipp | 118 + .../boost/spirit/home/classic/symbols/impl/tst.ipp | 281 ++ .../boost/spirit/home/classic/symbols/symbols.hpp | 229 + .../spirit/home/classic/symbols/symbols_fwd.hpp | 39 + .../include/boost/spirit/home/classic/tree/ast.hpp | 387 ++ .../boost/spirit/home/classic/tree/ast_fwd.hpp | 42 + .../boost/spirit/home/classic/tree/common.hpp | 1588 ++++++ .../boost/spirit/home/classic/tree/common_fwd.hpp | 96 + .../include/boost/spirit/home/classic/utility.hpp | 40 + .../boost/spirit/home/classic/utility/chset.hpp | 187 + .../home/classic/utility/chset_operators.hpp | 402 ++ .../boost/spirit/home/classic/utility/confix.hpp | 405 ++ .../spirit/home/classic/utility/confix_fwd.hpp | 39 + .../boost/spirit/home/classic/utility/distinct.hpp | 229 + .../spirit/home/classic/utility/distinct_fwd.hpp | 37 + .../spirit/home/classic/utility/escape_char.hpp | 184 + .../home/classic/utility/escape_char_fwd.hpp | 30 + .../home/classic/utility/flush_multi_pass.hpp | 77 + .../spirit/home/classic/utility/functor_parser.hpp | 71 + .../spirit/home/classic/utility/impl/chset.ipp | 366 ++ .../classic/utility/impl/chset/basic_chset.hpp | 107 + .../classic/utility/impl/chset/basic_chset.ipp | 246 + .../home/classic/utility/impl/chset/range_run.hpp | 127 + .../home/classic/utility/impl/chset/range_run.ipp | 218 + .../home/classic/utility/impl/chset_operators.ipp | 666 +++ .../spirit/home/classic/utility/impl/confix.ipp | 221 + .../home/classic/utility/impl/escape_char.ipp | 224 + .../spirit/home/classic/utility/impl/lists.ipp | 168 + .../boost/spirit/home/classic/utility/lists.hpp | 340 ++ .../spirit/home/classic/utility/lists_fwd.hpp | 31 + .../boost/spirit/home/classic/utility/loops.hpp | 317 ++ .../spirit/home/classic/utility/scoped_lock.hpp | 112 + .../include/boost/spirit/home/classic/version.hpp | 30 + .../include/boost/spirit/include/classic.hpp | 12 + .../include/boost/spirit/include/classic_ast.hpp | 12 + .../include/boost/spirit/include/classic_chset.hpp | 12 + .../include/boost/spirit/include/classic_core.hpp | 12 + .../boost/spirit/include/classic_symbols.hpp | 12 + contrib/prebuilt/include/boost/static_assert.hpp | 138 + contrib/prebuilt/include/boost/swap.hpp | 12 + .../prebuilt/include/boost/system/api_config.hpp | 42 + contrib/prebuilt/include/boost/system/config.hpp | 69 + .../prebuilt/include/boost/system/error_code.hpp | 513 ++ .../prebuilt/include/boost/system/system_error.hpp | 80 + .../prebuilt/include/boost/thread/condition.hpp | 16 + .../include/boost/thread/condition_variable.hpp | 21 + .../prebuilt/include/boost/thread/cv_status.hpp | 26 + .../include/boost/thread/detail/config.hpp | 220 + .../include/boost/thread/detail/delete.hpp | 45 + .../include/boost/thread/detail/memory.hpp | 54 + .../prebuilt/include/boost/thread/detail/move.hpp | 246 + .../include/boost/thread/detail/platform.hpp | 73 + .../include/boost/thread/detail/thread.hpp | 642 +++ .../include/boost/thread/detail/thread_group.hpp | 108 + .../boost/thread/detail/thread_heap_alloc.hpp | 23 + .../boost/thread/detail/thread_interruption.hpp | 36 + .../include/boost/thread/detail/tss_hooks.hpp | 65 + .../prebuilt/include/boost/thread/exceptions.hpp | 223 + contrib/prebuilt/include/boost/thread/future.hpp | 1703 +++++++ contrib/prebuilt/include/boost/thread/locks.hpp | 1827 +++++++ contrib/prebuilt/include/boost/thread/mutex.hpp | 21 + contrib/prebuilt/include/boost/thread/once.hpp | 35 + .../boost/thread/pthread/condition_variable.hpp | 335 ++ .../thread/pthread/condition_variable_fwd.hpp | 236 + .../include/boost/thread/pthread/mutex.hpp | 291 ++ .../prebuilt/include/boost/thread/pthread/once.hpp | 113 + .../thread/pthread/pthread_mutex_scoped_lock.hpp | 64 + .../include/boost/thread/pthread/shared_mutex.hpp | 551 +++ .../include/boost/thread/pthread/thread_data.hpp | 208 + .../boost/thread/pthread/thread_heap_alloc.hpp | 242 + .../include/boost/thread/pthread/timespec.hpp | 36 + .../prebuilt/include/boost/thread/shared_mutex.hpp | 26 + contrib/prebuilt/include/boost/thread/thread.hpp | 28 + .../prebuilt/include/boost/thread/thread_time.hpp | 55 + contrib/prebuilt/include/boost/thread/tss.hpp | 113 + .../prebuilt/include/boost/thread/v2/thread.hpp | 56 + .../boost/thread/win32/basic_timed_mutex.hpp | 267 + .../boost/thread/win32/condition_variable.hpp | 517 ++ .../boost/thread/win32/interlocked_read.hpp | 80 + .../prebuilt/include/boost/thread/win32/mutex.hpp | 65 + .../prebuilt/include/boost/thread/win32/once.hpp | 230 + .../include/boost/thread/win32/shared_mutex.hpp | 865 ++++ .../include/boost/thread/win32/thread_data.hpp | 230 + .../boost/thread/win32/thread_heap_alloc.hpp | 434 ++ .../boost/thread/win32/thread_primitives.hpp | 436 ++ contrib/prebuilt/include/boost/thread/xtime.hpp | 92 + contrib/prebuilt/include/boost/throw_exception.hpp | 100 + contrib/prebuilt/include/boost/token_functions.hpp | 665 +++ contrib/prebuilt/include/boost/token_iterator.hpp | 128 + contrib/prebuilt/include/boost/tokenizer.hpp | 98 + contrib/prebuilt/include/boost/type.hpp | 18 + .../include/boost/type_traits/add_const.hpp | 47 + .../include/boost/type_traits/add_pointer.hpp | 72 + .../include/boost/type_traits/add_reference.hpp | 107 + .../boost/type_traits/add_rvalue_reference.hpp | 66 + .../include/boost/type_traits/add_volatile.hpp | 47 + .../include/boost/type_traits/aligned_storage.hpp | 13 + .../include/boost/type_traits/alignment_of.hpp | 128 + .../boost/type_traits/arithmetic_traits.hpp | 20 + .../boost/type_traits/broken_compiler_spec.hpp | 117 + .../include/boost/type_traits/common_type.hpp | 158 + .../include/boost/type_traits/composite_traits.hpp | 29 + .../prebuilt/include/boost/type_traits/config.hpp | 76 + .../boost/type_traits/conversion_traits.hpp | 17 + .../prebuilt/include/boost/type_traits/decay.hpp | 44 + .../boost/type_traits/detail/bool_trait_def.hpp | 196 + .../boost/type_traits/detail/bool_trait_undef.hpp | 28 + .../boost/type_traits/detail/common_type_imp.hpp | 333 ++ .../boost/type_traits/detail/cv_traits_impl.hpp | 97 + .../boost/type_traits/detail/false_result.hpp | 28 + .../include/boost/type_traits/detail/ice_and.hpp | 35 + .../include/boost/type_traits/detail/ice_eq.hpp | 36 + .../include/boost/type_traits/detail/ice_not.hpp | 31 + .../include/boost/type_traits/detail/ice_or.hpp | 34 + .../type_traits/detail/is_function_ptr_helper.hpp | 220 + .../type_traits/detail/is_function_ptr_tester.hpp | 654 +++ .../type_traits/detail/is_mem_fun_pointer_impl.hpp | 817 +++ .../detail/is_mem_fun_pointer_tester.hpp | 2759 +++++++++++ .../boost/type_traits/detail/size_t_trait_def.hpp | 60 + .../type_traits/detail/size_t_trait_undef.hpp | 16 + .../type_traits/detail/template_arity_spec.hpp | 31 + .../boost/type_traits/detail/type_trait_def.hpp | 67 + .../boost/type_traits/detail/type_trait_undef.hpp | 19 + .../include/boost/type_traits/detail/wrap.hpp | 18 + .../boost/type_traits/detail/yes_no_type.hpp | 26 + .../include/boost/type_traits/function_traits.hpp | 236 + .../boost/type_traits/has_nothrow_assign.hpp | 44 + .../boost/type_traits/has_nothrow_constructor.hpp | 53 + .../include/boost/type_traits/has_nothrow_copy.hpp | 53 + .../boost/type_traits/has_trivial_assign.hpp | 57 + .../boost/type_traits/has_trivial_constructor.hpp | 51 + .../include/boost/type_traits/has_trivial_copy.hpp | 64 + .../boost/type_traits/has_trivial_destructor.hpp | 49 + contrib/prebuilt/include/boost/type_traits/ice.hpp | 20 + .../boost/type_traits/integral_constant.hpp | 53 + .../include/boost/type_traits/intrinsics.hpp | 289 ++ .../include/boost/type_traits/is_abstract.hpp | 153 + .../include/boost/type_traits/is_arithmetic.hpp | 51 + .../include/boost/type_traits/is_array.hpp | 91 + .../boost/type_traits/is_base_and_derived.hpp | 254 + .../include/boost/type_traits/is_base_of.hpp | 51 + .../include/boost/type_traits/is_class.hpp | 140 + .../include/boost/type_traits/is_compound.hpp | 46 + .../include/boost/type_traits/is_const.hpp | 165 + .../include/boost/type_traits/is_convertible.hpp | 431 ++ .../include/boost/type_traits/is_empty.hpp | 229 + .../prebuilt/include/boost/type_traits/is_enum.hpp | 189 + .../include/boost/type_traits/is_float.hpp | 27 + .../boost/type_traits/is_floating_point.hpp | 27 + .../include/boost/type_traits/is_function.hpp | 106 + .../include/boost/type_traits/is_fundamental.hpp | 45 + .../include/boost/type_traits/is_integral.hpp | 78 + .../boost/type_traits/is_lvalue_reference.hpp | 118 + .../type_traits/is_member_function_pointer.hpp | 136 + .../boost/type_traits/is_member_pointer.hpp | 116 + .../include/boost/type_traits/is_object.hpp | 53 + .../prebuilt/include/boost/type_traits/is_pod.hpp | 143 + .../include/boost/type_traits/is_pointer.hpp | 162 + .../include/boost/type_traits/is_polymorphic.hpp | 114 + .../include/boost/type_traits/is_reference.hpp | 45 + .../boost/type_traits/is_rvalue_reference.hpp | 29 + .../prebuilt/include/boost/type_traits/is_same.hpp | 103 + .../include/boost/type_traits/is_scalar.hpp | 55 + .../include/boost/type_traits/is_signed.hpp | 140 + .../include/boost/type_traits/is_stateless.hpp | 48 + .../include/boost/type_traits/is_union.hpp | 57 + .../include/boost/type_traits/is_unsigned.hpp | 135 + .../prebuilt/include/boost/type_traits/is_void.hpp | 38 + .../include/boost/type_traits/is_volatile.hpp | 152 + .../include/boost/type_traits/make_signed.hpp | 137 + .../include/boost/type_traits/make_unsigned.hpp | 137 + .../boost/type_traits/msvc/remove_bounds.hpp | 43 + .../boost/type_traits/msvc/remove_const.hpp | 143 + .../include/boost/type_traits/msvc/remove_cv.hpp | 190 + .../boost/type_traits/msvc/remove_pointer.hpp | 42 + .../boost/type_traits/msvc/remove_reference.hpp | 42 + .../include/boost/type_traits/msvc/typeof.hpp | 50 + .../include/boost/type_traits/object_traits.hpp | 33 + .../include/boost/type_traits/remove_bounds.hpp | 48 + .../include/boost/type_traits/remove_const.hpp | 90 + .../include/boost/type_traits/remove_cv.hpp | 84 + .../include/boost/type_traits/remove_pointer.hpp | 92 + .../include/boost/type_traits/remove_reference.hpp | 70 + .../include/boost/type_traits/same_traits.hpp | 15 + .../boost/type_traits/type_with_alignment.hpp | 399 ++ .../include/boost/typeof/dmc/typeof_impl.hpp | 100 + .../include/boost/typeof/encode_decode.hpp | 61 + .../include/boost/typeof/encode_decode_params.hpp | 34 + .../prebuilt/include/boost/typeof/int_encoding.hpp | 118 + .../boost/typeof/integral_template_param.hpp | 80 + contrib/prebuilt/include/boost/typeof/message.hpp | 8 + .../prebuilt/include/boost/typeof/modifiers.hpp | 121 + .../include/boost/typeof/msvc/typeof_impl.hpp | 283 ++ contrib/prebuilt/include/boost/typeof/native.hpp | 60 + .../include/boost/typeof/pointers_data_members.hpp | 38 + .../include/boost/typeof/register_functions.hpp | 50 + .../boost/typeof/register_functions_iterate.hpp | 135 + .../include/boost/typeof/register_fundamental.hpp | 62 + .../boost/typeof/register_mem_functions.hpp | 32 + .../include/boost/typeof/template_encoding.hpp | 160 + .../boost/typeof/template_template_param.hpp | 149 + .../include/boost/typeof/type_encoding.hpp | 27 + .../include/boost/typeof/type_template_param.hpp | 37 + contrib/prebuilt/include/boost/typeof/typeof.hpp | 218 + .../prebuilt/include/boost/typeof/typeof_impl.hpp | 186 + .../prebuilt/include/boost/typeof/unsupported.hpp | 29 + contrib/prebuilt/include/boost/typeof/vector.hpp | 166 + .../prebuilt/include/boost/typeof/vector100.hpp | 321 ++ .../prebuilt/include/boost/typeof/vector150.hpp | 471 ++ .../prebuilt/include/boost/typeof/vector200.hpp | 621 +++ contrib/prebuilt/include/boost/typeof/vector50.hpp | 171 + .../include/boost/units/detail/utility.hpp | 104 + contrib/prebuilt/include/boost/utility.hpp | 21 + .../prebuilt/include/boost/utility/addressof.hpp | 102 + .../include/boost/utility/base_from_member.hpp | 87 + contrib/prebuilt/include/boost/utility/binary.hpp | 708 +++ .../include/boost/utility/compare_pointees.hpp | 68 + contrib/prebuilt/include/boost/utility/declval.hpp | 49 + .../utility/detail/in_place_factory_prefix.hpp | 36 + .../utility/detail/in_place_factory_suffix.hpp | 23 + .../boost/utility/detail/result_of_iterate.hpp | 142 + .../prebuilt/include/boost/utility/enable_if.hpp | 119 + .../include/boost/utility/identity_type.hpp | 46 + .../include/boost/utility/in_place_factory.hpp | 88 + .../prebuilt/include/boost/utility/result_of.hpp | 103 + contrib/prebuilt/include/boost/utility/swap.hpp | 55 + .../prebuilt/include/boost/uuid/name_generator.hpp | 125 + .../prebuilt/include/boost/uuid/nil_generator.hpp | 34 + .../include/boost/uuid/random_generator.hpp | 119 + contrib/prebuilt/include/boost/uuid/seed_rng.hpp | 270 + contrib/prebuilt/include/boost/uuid/sha1.hpp | 223 + .../include/boost/uuid/string_generator.hpp | 185 + contrib/prebuilt/include/boost/uuid/uuid.hpp | 221 + .../include/boost/uuid/uuid_generators.hpp | 19 + contrib/prebuilt/include/boost/uuid/uuid_io.hpp | 198 + contrib/prebuilt/include/boost/version.hpp | 32 + contrib/prebuilt/include/boost/visit_each.hpp | 29 + contrib/prebuilt/include/boost/weak_ptr.hpp | 18 + contrib/prebuilt/include/efx-creative.h | 3 + contrib/prebuilt/include/efx-presets.h | 402 ++ contrib/prebuilt/include/efx.h | 761 +++ .../google/protobuf/compiler/code_generator.h | 142 + .../protobuf/compiler/command_line_interface.h | 318 ++ .../google/protobuf/compiler/cpp/cpp_enum.h | 99 + .../google/protobuf/compiler/cpp/cpp_enum_field.h | 103 + .../google/protobuf/compiler/cpp/cpp_extension.h | 85 + .../google/protobuf/compiler/cpp/cpp_field.h | 167 + .../google/protobuf/compiler/cpp/cpp_file.h | 98 + .../google/protobuf/compiler/cpp/cpp_generator.h | 72 + .../google/protobuf/compiler/cpp/cpp_helpers.h | 159 + .../google/protobuf/compiler/cpp/cpp_message.h | 170 + .../protobuf/compiler/cpp/cpp_message_field.h | 102 + .../protobuf/compiler/cpp/cpp_primitive_field.h | 103 + .../google/protobuf/compiler/cpp/cpp_service.h | 118 + .../protobuf/compiler/cpp/cpp_string_field.h | 104 + .../include/google/protobuf/compiler/importer.h | 303 ++ .../google/protobuf/compiler/java/java_enum.h | 84 + .../protobuf/compiler/java/java_enum_field.h | 121 + .../google/protobuf/compiler/java/java_extension.h | 77 + .../google/protobuf/compiler/java/java_field.h | 108 + .../google/protobuf/compiler/java/java_file.h | 101 + .../google/protobuf/compiler/java/java_generator.h | 72 + .../google/protobuf/compiler/java/java_helpers.h | 213 + .../google/protobuf/compiler/java/java_message.h | 109 + .../protobuf/compiler/java/java_message_field.h | 134 + .../protobuf/compiler/java/java_primitive_field.h | 121 + .../google/protobuf/compiler/java/java_service.h | 113 + .../protobuf/compiler/java/java_string_field.h | 120 + .../include/google/protobuf/compiler/parser.h | 434 ++ .../include/google/protobuf/compiler/plugin.h | 73 + .../include/google/protobuf/compiler/plugin.pb.h | 790 +++ .../include/google/protobuf/compiler/plugin.proto | 145 + .../protobuf/compiler/python/python_generator.h | 156 + .../prebuilt/include/google/protobuf/descriptor.h | 1367 +++++ .../include/google/protobuf/descriptor.pb.h | 5223 ++++++++++++++++++++ .../include/google/protobuf/descriptor.proto | 533 ++ .../include/google/protobuf/descriptor_database.h | 366 ++ .../include/google/protobuf/dynamic_message.h | 136 + .../include/google/protobuf/extension_set.h | 904 ++++ .../google/protobuf/generated_message_reflection.h | 424 ++ .../google/protobuf/generated_message_util.h | 82 + .../include/google/protobuf/io/coded_stream.h | 1102 +++++ .../include/google/protobuf/io/gzip_stream.h | 207 + .../prebuilt/include/google/protobuf/io/printer.h | 136 + .../include/google/protobuf/io/tokenizer.h | 313 ++ .../include/google/protobuf/io/zero_copy_stream.h | 238 + .../google/protobuf/io/zero_copy_stream_impl.h | 357 ++ .../protobuf/io/zero_copy_stream_impl_lite.h | 340 ++ contrib/prebuilt/include/google/protobuf/message.h | 692 +++ .../include/google/protobuf/message_lite.h | 239 + .../include/google/protobuf/reflection_ops.h | 80 + .../include/google/protobuf/repeated_field.h | 1295 +++++ contrib/prebuilt/include/google/protobuf/service.h | 291 ++ .../include/google/protobuf/stubs/common.h | 1211 +++++ .../prebuilt/include/google/protobuf/stubs/once.h | 123 + .../prebuilt/include/google/protobuf/text_format.h | 285 ++ .../include/google/protobuf/unknown_field_set.h | 268 + .../prebuilt/include/google/protobuf/wire_format.h | 304 ++ .../include/google/protobuf/wire_format_lite.h | 620 +++ .../include/google/protobuf/wire_format_lite_inl.h | 774 +++ contrib/prebuilt/include/v8-debug.h | 400 ++ contrib/prebuilt/include/v8-preparser.h | 118 + contrib/prebuilt/include/v8-profiler.h | 585 +++ contrib/prebuilt/include/v8-testing.h | 105 + contrib/prebuilt/include/v8.h | 4619 +++++++++++++++++ contrib/prebuilt/include/v8stdint.h | 54 + .../prebuilt/uscxml-prebuilt-windows-x86-0.0.1.tgz | Bin 0 -> 3652287 bytes contrib/snippets/XGetopt.cpp | 224 + contrib/snippets/XGetopt.h | 23 + installer/description.txt | 7 + installer/license.txt | 36 + installer/nsis/uscxml-logo.bmp | Bin 0 -> 25818 bytes installer/packageMaker/readme.txt | 2 + installer/packageMaker/welcome.txt | 3 + package/linux-i686/gnu/bin/mmi-browser | Bin 0 -> 29392347 bytes .../linux-i686/gnu/lib/libuscxmlNativeJava_d.so | Bin 0 -> 30642632 bytes package/linux-i686/gnu/lib/libuscxml_d.a | Bin 0 -> 50958820 bytes package/linux-x86_64/gnu/bin/mmi-browser | Bin 0 -> 11147667 bytes package/linux-x86_64/gnu/lib/libuscxml64.a | Bin 0 -> 9731832 bytes package/linux-x86_64/gnu/lib/libuscxml64_d.a | Bin 0 -> 65769932 bytes .../linux-x86_64/gnu/lib/libuscxmlNativeJava64.so | Bin 0 -> 11926808 bytes .../gnu/lib/libuscxmlNativeJava64_d.so | Bin 0 -> 33900417 bytes package/windows-x86/msvc/bin/mmi-browser.exe | Bin 0 -> 5077504 bytes .../msvc/bin/mmi-browser.exe.embed.manifest | 10 + .../msvc/bin/mmi-browser.exe.embed.manifest.res | Bin 0 -> 472 bytes .../msvc/bin/mmi-browser.exe.intermediate.manifest | 10 + .../windows-x86/msvc/bin/mmi-browser.exe.manifest | 10 + .../msvc/bin/mmi-browser.exe.resource.txt | 1 + package/windows-x86/msvc/bin/mmi-browser.pdb | Bin 0 -> 101855232 bytes package/windows-x86/msvc/lib/mmi-browser.exp | Bin 0 -> 5339 bytes package/windows-x86/msvc/lib/mmi-browser.lib | Bin 0 -> 9700 bytes package/windows-x86/msvc/lib/uscxml.lib | Bin 0 -> 67539532 bytes package/windows-x86/msvc/lib/uscxml_d.lib | Bin 0 -> 129006286 bytes package/windows-x86/msvc/lib/uscxml_d.pdb | Bin 0 -> 13545472 bytes src/uscxml/Common.h | 27 + src/uscxml/Factory.cpp | 21 +- src/uscxml/Factory.h | 14 + src/uscxml/Interpreter.cpp | 112 +- src/uscxml/Interpreter.h | 8 +- src/uscxml/Message.cpp | 24 +- src/uscxml/Message.h | 6 +- src/uscxml/URL.cpp | 41 + src/uscxml/URL.h | 22 + src/uscxml/Utilities.cpp | 1 + src/uscxml/Utilities.h | 1 - .../eventqueue/libevent/DelayedEventQueue.cpp | 8 +- .../eventqueue/libevent/DelayedEventQueue.h | 2 + src/uscxml/datamodel/ecmascript/v8/V8DataModel.cpp | 88 +- src/uscxml/datamodel/ecmascript/v8/V8DataModel.h | 6 +- .../datamodel/ecmascript/v8/dom/V8SCXMLDOM.cpp | 91 +- .../datamodel/ecmascript/v8/dom/V8SCXMLDOM.h | 13 +- src/uscxml/debug/SCXMLDotWriter.cpp | 358 -- src/uscxml/debug/SCXMLDotWriter.cpp.old | 359 ++ src/uscxml/invoker/modality/MMIComponent.cpp | 2 +- src/uscxml/invoker/modality/miles/SpatialAudio.cpp | 82 +- src/uscxml/invoker/modality/miles/SpatialAudio.h | 5 +- src/uscxml/invoker/scxml/USCXMLInvoker.cpp | 1 + src/uscxml/invoker/umundo/UmundoInvoker.cpp | 485 ++ src/uscxml/invoker/umundo/UmundoInvoker.h | 56 + .../basichttp/libevent/EventIOProcessor.cpp | 35 +- .../basichttp/libevent/EventIOProcessor.h | 2 + test/samples/uscxml/audio/click.wav | Bin 0 -> 5058 bytes test/samples/uscxml/proto/Dependee.proto | 3 + test/samples/uscxml/proto/Depender.proto | 5 + test/samples/uscxml/proto/Test.proto | 37 + test/samples/uscxml/proto/TestServices.proto | 23 + test/samples/uscxml/scripts/GreatCircle.js | 46 + test/samples/uscxml/scxml-gui-test.scxml | 13 + test/samples/uscxml/test-communication.scxml | 53 + test/samples/uscxml/test-dom.scxml | 19 + test/samples/uscxml/test-donedata.scxml | 37 + test/samples/uscxml/test-ecmascript.scxml | 112 + test/samples/uscxml/test-execution.scxml | 56 + test/samples/uscxml/test-invoked.scxml | 8 + test/samples/uscxml/test-predicates.scxml | 9 + test/samples/uscxml/test-spatial-audio.scxml | 70 + test/samples/uscxml/test-umundo-map-demo.scxml | 71 + test/samples/uscxml/test-umundo-rpc.scxml | 60 + test/samples/uscxml/test-umundo-s11n.scxml | 115 + test/src/audio/click.wav | Bin 5058 -> 0 bytes test/src/scxml-gui-test.scxml | 13 - test/src/test-communication.scxml | 53 - test/src/test-completion.cpp | 2 +- test/src/test-dom.scxml | 20 - test/src/test-donedata.scxml | 37 - test/src/test-ecmascript.scxml | 112 - test/src/test-execution.scxml | 56 - test/src/test-invoked.scxml | 8 - test/src/test-predicates.scxml | 9 - test/src/test-spatial-audio.scxml | 68 - 2005 files changed, 370067 insertions(+), 934 deletions(-) create mode 100644 README.md create mode 100644 apps/mmi-browser.cpp create mode 100644 apps/mmi-browser.vbs create mode 100644 config.h.in create mode 100644 contrib/cmake/CPackUSCXML.cmake create mode 100644 contrib/cmake/FindCURLPP.cmake create mode 100644 contrib/cmake/USCXMLMacros.cmake create mode 100755 contrib/local/bcp-boost.sh create mode 100755 contrib/local/build-linux.expect create mode 100755 contrib/local/build-windows.expect create mode 100755 contrib/local/compress_and_upload_deps.sh create mode 100755 contrib/local/make-dist.sh create mode 100755 contrib/local/make-installer-html-table.pl create mode 100644 contrib/local/package-linux.expect create mode 100755 contrib/local/package-windows.expect create mode 100755 contrib/local/remove-dsstore-files.sh create mode 100755 contrib/local/validate-installers.expect create mode 100644 contrib/prebuilt/README.md create mode 100644 contrib/prebuilt/include/AL/al.h create mode 100644 contrib/prebuilt/include/AL/alc.h create mode 100644 contrib/prebuilt/include/AL/alext.h create mode 100644 contrib/prebuilt/include/AL/efx-creative.h create mode 100644 contrib/prebuilt/include/AL/efx-presets.h create mode 100644 contrib/prebuilt/include/AL/efx.h create mode 100644 contrib/prebuilt/include/al.h create mode 100644 contrib/prebuilt/include/alc.h create mode 100644 contrib/prebuilt/include/alext.h create mode 100644 contrib/prebuilt/include/boost/algorithm/string.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/case_conv.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/classification.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/compare.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/concept.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/config.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/constants.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/case_conv.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/classification.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/find_format.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/find_format_all.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/find_format_store.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/find_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/finder.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/formatter.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/predicate.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/replace_storage.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/sequence.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/trim.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/detail/util.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/erase.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/find.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/find_format.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/find_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/finder.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/formatter.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/iter_find.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/join.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/predicate.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/predicate_facade.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/replace.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/sequence_traits.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/split.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/std/list_traits.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/std/slist_traits.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/std/string_traits.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/std_containers_traits.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/trim.hpp create mode 100644 contrib/prebuilt/include/boost/algorithm/string/yes_no_type.hpp create mode 100644 contrib/prebuilt/include/boost/aligned_storage.hpp create mode 100644 contrib/prebuilt/include/boost/array.hpp create mode 100644 contrib/prebuilt/include/boost/assert.hpp create mode 100644 contrib/prebuilt/include/boost/bind.hpp create mode 100644 contrib/prebuilt/include/boost/bind/arg.hpp create mode 100644 contrib/prebuilt/include/boost/bind/bind.hpp create mode 100644 contrib/prebuilt/include/boost/bind/bind_cc.hpp create mode 100644 contrib/prebuilt/include/boost/bind/bind_mf2_cc.hpp create mode 100644 contrib/prebuilt/include/boost/bind/bind_mf_cc.hpp create mode 100644 contrib/prebuilt/include/boost/bind/bind_template.hpp create mode 100644 contrib/prebuilt/include/boost/bind/mem_fn.hpp create mode 100644 contrib/prebuilt/include/boost/bind/mem_fn_cc.hpp create mode 100644 contrib/prebuilt/include/boost/bind/mem_fn_template.hpp create mode 100644 contrib/prebuilt/include/boost/bind/mem_fn_vw.hpp create mode 100644 contrib/prebuilt/include/boost/bind/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/bind/storage.hpp create mode 100644 contrib/prebuilt/include/boost/call_traits.hpp create mode 100644 contrib/prebuilt/include/boost/cerrno.hpp create mode 100644 contrib/prebuilt/include/boost/checked_delete.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/ceil.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/chrono.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/clock_string.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/config.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/detail/inlined/chrono.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/detail/inlined/mac/chrono.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/detail/inlined/posix/chrono.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/detail/inlined/win/chrono.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/detail/is_evenly_divisible_by.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/detail/static_assert.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/detail/system.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/duration.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/system_clocks.hpp create mode 100644 contrib/prebuilt/include/boost/chrono/time_point.hpp create mode 100644 contrib/prebuilt/include/boost/compressed_pair.hpp create mode 100644 contrib/prebuilt/include/boost/concept/assert.hpp create mode 100644 contrib/prebuilt/include/boost/concept/detail/backward_compatibility.hpp create mode 100644 contrib/prebuilt/include/boost/concept/detail/borland.hpp create mode 100644 contrib/prebuilt/include/boost/concept/detail/concept_def.hpp create mode 100644 contrib/prebuilt/include/boost/concept/detail/concept_undef.hpp create mode 100644 contrib/prebuilt/include/boost/concept/detail/general.hpp create mode 100644 contrib/prebuilt/include/boost/concept/detail/has_constraints.hpp create mode 100644 contrib/prebuilt/include/boost/concept/detail/msvc.hpp create mode 100644 contrib/prebuilt/include/boost/concept/usage.hpp create mode 100644 contrib/prebuilt/include/boost/concept_check.hpp create mode 100644 contrib/prebuilt/include/boost/config.hpp create mode 100644 contrib/prebuilt/include/boost/config/abi/borland_prefix.hpp create mode 100644 contrib/prebuilt/include/boost/config/abi/borland_suffix.hpp create mode 100644 contrib/prebuilt/include/boost/config/abi/msvc_prefix.hpp create mode 100644 contrib/prebuilt/include/boost/config/abi/msvc_suffix.hpp create mode 100644 contrib/prebuilt/include/boost/config/abi_prefix.hpp create mode 100644 contrib/prebuilt/include/boost/config/abi_suffix.hpp create mode 100644 contrib/prebuilt/include/boost/config/auto_link.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/borland.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/clang.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/codegear.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/comeau.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/common_edg.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/compaq_cxx.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/cray.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/digitalmars.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/gcc.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/gcc_xml.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/greenhills.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/hp_acc.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/intel.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/kai.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/metrowerks.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/mpw.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/nvcc.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/pathscale.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/pgi.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/sgi_mipspro.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/sunpro_cc.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/vacpp.hpp create mode 100644 contrib/prebuilt/include/boost/config/compiler/visualc.hpp create mode 100644 contrib/prebuilt/include/boost/config/no_tr1/cmath.hpp create mode 100644 contrib/prebuilt/include/boost/config/no_tr1/complex.hpp create mode 100644 contrib/prebuilt/include/boost/config/no_tr1/functional.hpp create mode 100644 contrib/prebuilt/include/boost/config/no_tr1/memory.hpp create mode 100644 contrib/prebuilt/include/boost/config/no_tr1/utility.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/aix.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/amigaos.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/beos.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/bsd.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/cray.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/cygwin.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/hpux.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/irix.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/linux.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/macos.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/qnxnto.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/solaris.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/symbian.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/vms.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/vxworks.hpp create mode 100644 contrib/prebuilt/include/boost/config/platform/win32.hpp create mode 100644 contrib/prebuilt/include/boost/config/posix_features.hpp create mode 100644 contrib/prebuilt/include/boost/config/requires_threads.hpp create mode 100644 contrib/prebuilt/include/boost/config/select_compiler_config.hpp create mode 100644 contrib/prebuilt/include/boost/config/select_platform_config.hpp create mode 100644 contrib/prebuilt/include/boost/config/select_stdlib_config.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/dinkumware.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/libcomo.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/libcpp.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/libstdcpp3.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/modena.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/msl.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/roguewave.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/sgi.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/stlport.hpp create mode 100644 contrib/prebuilt/include/boost/config/stdlib/vacpp.hpp create mode 100644 contrib/prebuilt/include/boost/config/suffix.hpp create mode 100644 contrib/prebuilt/include/boost/config/user.hpp create mode 100644 contrib/prebuilt/include/boost/config/warning_disable.hpp create mode 100644 contrib/prebuilt/include/boost/container/allocator_traits.hpp create mode 100644 contrib/prebuilt/include/boost/container/container_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/config_begin.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/config_end.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/memory_util.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/mpl.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/pair.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/preprocessor.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/stored_ref.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/type_traits.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/utilities.hpp create mode 100644 contrib/prebuilt/include/boost/container/detail/workaround.hpp create mode 100644 contrib/prebuilt/include/boost/container/scoped_allocator.hpp create mode 100644 contrib/prebuilt/include/boost/container/scoped_allocator_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/cstdint.hpp create mode 100644 contrib/prebuilt/include/boost/current_function.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/adjust_functors.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/c_time.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/compiler_config.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/constrained_value.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_clock_device.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_defs.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_duration.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_duration_types.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_format_simple.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_formatting.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_formatting_limited.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_formatting_locales.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_generators.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_names_put.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/date_parsing.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/dst_rules.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/filetime_functions.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/conversion.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/formatters.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/formatters_limited.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_calendar.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_date.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_day.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_day_of_year.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_duration.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_duration_types.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_facet.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_month.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_weekday.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_year.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/greg_ymd.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/gregorian_types.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian/parsers.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian_calendar.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/gregorian_calendar.ipp create mode 100644 contrib/prebuilt/include/boost/date_time/int_adapter.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/iso_format.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/locale_config.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/microsec_time_clock.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/parse_format_base.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/period.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/posix_time/conversion.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/posix_time/date_duration_operators.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/posix_time/posix_time_config.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/posix_time/posix_time_duration.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/posix_time/posix_time_system.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/posix_time/posix_time_types.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/posix_time/ptime.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/posix_time/time_period.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/special_defs.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/time.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/time_clock.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/time_defs.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/time_duration.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/time_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/time_resolution_traits.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/time_system_counted.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/time_system_split.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/wrapping_int.hpp create mode 100644 contrib/prebuilt/include/boost/date_time/year_month_day.hpp create mode 100644 contrib/prebuilt/include/boost/detail/call_traits.hpp create mode 100644 contrib/prebuilt/include/boost/detail/compressed_pair.hpp create mode 100644 contrib/prebuilt/include/boost/detail/container_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/detail/endian.hpp create mode 100644 contrib/prebuilt/include/boost/detail/fenv.hpp create mode 100644 contrib/prebuilt/include/boost/detail/indirect_traits.hpp create mode 100644 contrib/prebuilt/include/boost/detail/interlocked.hpp create mode 100644 contrib/prebuilt/include/boost/detail/is_function_ref_tester.hpp create mode 100644 contrib/prebuilt/include/boost/detail/iterator.hpp create mode 100644 contrib/prebuilt/include/boost/detail/lcast_precision.hpp create mode 100644 contrib/prebuilt/include/boost/detail/lightweight_mutex.hpp create mode 100644 contrib/prebuilt/include/boost/detail/limits.hpp create mode 100644 contrib/prebuilt/include/boost/detail/no_exceptions_support.hpp create mode 100644 contrib/prebuilt/include/boost/detail/ob_call_traits.hpp create mode 100644 contrib/prebuilt/include/boost/detail/ob_compressed_pair.hpp create mode 100644 contrib/prebuilt/include/boost/detail/reference_content.hpp create mode 100644 contrib/prebuilt/include/boost/detail/scoped_enum_emulation.hpp create mode 100644 contrib/prebuilt/include/boost/detail/sp_typeinfo.hpp create mode 100644 contrib/prebuilt/include/boost/detail/win/GetLastError.hpp create mode 100644 contrib/prebuilt/include/boost/detail/win/basic_types.hpp create mode 100644 contrib/prebuilt/include/boost/detail/win/time.hpp create mode 100644 contrib/prebuilt/include/boost/detail/win/timers.hpp create mode 100644 contrib/prebuilt/include/boost/detail/workaround.hpp create mode 100644 contrib/prebuilt/include/boost/enable_shared_from_this.hpp create mode 100644 contrib/prebuilt/include/boost/exception/current_exception_cast.hpp create mode 100644 contrib/prebuilt/include/boost/exception/detail/attribute_noreturn.hpp create mode 100644 contrib/prebuilt/include/boost/exception/detail/clone_current_exception.hpp create mode 100644 contrib/prebuilt/include/boost/exception/detail/error_info_impl.hpp create mode 100644 contrib/prebuilt/include/boost/exception/detail/exception_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/exception/detail/is_output_streamable.hpp create mode 100644 contrib/prebuilt/include/boost/exception/detail/object_hex_dump.hpp create mode 100644 contrib/prebuilt/include/boost/exception/detail/type_info.hpp create mode 100644 contrib/prebuilt/include/boost/exception/diagnostic_information.hpp create mode 100644 contrib/prebuilt/include/boost/exception/exception.hpp create mode 100644 contrib/prebuilt/include/boost/exception/get_error_info.hpp create mode 100644 contrib/prebuilt/include/boost/exception/info.hpp create mode 100644 contrib/prebuilt/include/boost/exception/to_string.hpp create mode 100644 contrib/prebuilt/include/boost/exception/to_string_stub.hpp create mode 100644 contrib/prebuilt/include/boost/exception_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/function.hpp create mode 100644 contrib/prebuilt/include/boost/function/detail/function_iterate.hpp create mode 100644 contrib/prebuilt/include/boost/function/detail/gen_maybe_include.pl create mode 100644 contrib/prebuilt/include/boost/function/detail/maybe_include.hpp create mode 100644 contrib/prebuilt/include/boost/function/detail/prologue.hpp create mode 100644 contrib/prebuilt/include/boost/function/function0.hpp create mode 100644 contrib/prebuilt/include/boost/function/function1.hpp create mode 100644 contrib/prebuilt/include/boost/function/function10.hpp create mode 100644 contrib/prebuilt/include/boost/function/function2.hpp create mode 100644 contrib/prebuilt/include/boost/function/function3.hpp create mode 100644 contrib/prebuilt/include/boost/function/function4.hpp create mode 100644 contrib/prebuilt/include/boost/function/function5.hpp create mode 100644 contrib/prebuilt/include/boost/function/function6.hpp create mode 100644 contrib/prebuilt/include/boost/function/function7.hpp create mode 100644 contrib/prebuilt/include/boost/function/function8.hpp create mode 100644 contrib/prebuilt/include/boost/function/function9.hpp create mode 100644 contrib/prebuilt/include/boost/function/function_base.hpp create mode 100644 contrib/prebuilt/include/boost/function/function_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/function/function_template.hpp create mode 100644 contrib/prebuilt/include/boost/function_equal.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash/detail/container_fwd_0x.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash/detail/float_functions.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash/detail/hash_float.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash/detail/hash_float_generic.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash/detail/hash_float_x86.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash/detail/limits.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash/extensions.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash/hash.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash/hash_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/functional/hash_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/get_pointer.hpp create mode 100644 contrib/prebuilt/include/boost/integer.hpp create mode 100644 contrib/prebuilt/include/boost/integer/integer_mask.hpp create mode 100644 contrib/prebuilt/include/boost/integer/static_log2.hpp create mode 100644 contrib/prebuilt/include/boost/integer_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/integer_traits.hpp create mode 100644 contrib/prebuilt/include/boost/intrusive/detail/config_begin.hpp create mode 100644 contrib/prebuilt/include/boost/intrusive/detail/config_end.hpp create mode 100644 contrib/prebuilt/include/boost/intrusive/detail/has_member_function_callable_with.hpp create mode 100644 contrib/prebuilt/include/boost/intrusive/detail/memory_util.hpp create mode 100644 contrib/prebuilt/include/boost/intrusive/detail/mpl.hpp create mode 100644 contrib/prebuilt/include/boost/intrusive/detail/preprocessor.hpp create mode 100644 contrib/prebuilt/include/boost/intrusive/detail/workaround.hpp create mode 100644 contrib/prebuilt/include/boost/intrusive/pointer_traits.hpp create mode 100644 contrib/prebuilt/include/boost/intrusive_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/io/ios_state.hpp create mode 100644 contrib/prebuilt/include/boost/io_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/is_placeholder.hpp create mode 100644 contrib/prebuilt/include/boost/iterator.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/detail/config_def.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/detail/config_undef.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/detail/enable_if.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/detail/facade_iterator_category.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/detail/minimum_category.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/interoperable.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/iterator_adaptor.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/iterator_categories.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/iterator_concepts.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/iterator_facade.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/iterator_traits.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/reverse_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/iterator/transform_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/iterator_adaptors.hpp create mode 100644 contrib/prebuilt/include/boost/lexical_cast.hpp create mode 100644 contrib/prebuilt/include/boost/limits.hpp create mode 100644 contrib/prebuilt/include/boost/math/common_factor_ct.hpp create mode 100644 contrib/prebuilt/include/boost/math/common_factor_rt.hpp create mode 100644 contrib/prebuilt/include/boost/math/policies/policy.hpp create mode 100644 contrib/prebuilt/include/boost/math/special_functions/detail/fp_traits.hpp create mode 100644 contrib/prebuilt/include/boost/math/special_functions/detail/round_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/math/special_functions/fpclassify.hpp create mode 100644 contrib/prebuilt/include/boost/math/special_functions/math_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/math/special_functions/sign.hpp create mode 100644 contrib/prebuilt/include/boost/math/tools/config.hpp create mode 100644 contrib/prebuilt/include/boost/math/tools/promotion.hpp create mode 100644 contrib/prebuilt/include/boost/math/tools/real_cast.hpp create mode 100644 contrib/prebuilt/include/boost/math/tools/user.hpp create mode 100644 contrib/prebuilt/include/boost/math_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mem_fn.hpp create mode 100644 contrib/prebuilt/include/boost/memory_order.hpp create mode 100644 contrib/prebuilt/include/boost/move/move.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/O1_size.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/O1_size_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/advance.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/advance_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/always.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/arg_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/assert.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/at.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/at_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/O1_size_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/adl_barrier.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/arg_typedef.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/arithmetic_op.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/arity_spec.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/at_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/begin_end_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/clear_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/common_name_wknd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/comparison_op.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/adl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/arrays.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/bcc.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/compiler.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/dependent_nttp.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/dtp.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/eti.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/forwarding.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/gcc.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/has_apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/has_xxx.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/integral.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/intel.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/msvc.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/msvc_typename.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/nttp.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/overload_resolution.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/pp_counter.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/preprocessor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/static_constant.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/ttp.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/typeof.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/use_preprocessed.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/config/workaround.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/contains_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/count_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/find_if_pred.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/fold_impl_body.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/has_apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/has_begin.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/has_rebind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/has_size.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/has_tag.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/has_type.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/include_preprocessed.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/inserter_algorithm.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/integral_wrapper.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/is_msvc_eti_arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/iter_apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/lambda_arity_param.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/lambda_spec.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/lambda_support.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/largest_int.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/logical_op.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/msvc_dtw.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/msvc_eti_base.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/msvc_is_class.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/msvc_never_true.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/msvc_type.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/na.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/na_assert.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/na_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/na_spec.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/nested_type_wknd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/nttp_decl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/numeric_cast_utils.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/numeric_op.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/and.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/apply.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/arg.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/bitxor.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/deque.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/divides.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/inherit.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/list_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/map.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/modulus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/set.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/set_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/shift_left.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/shift_right.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessed/plain/vector_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/add.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/default_params.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/enum.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/ext_params.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/filter_params.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/params.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/partial_spec_params.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/range.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/repeat.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/sub.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/preprocessor/tuple.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/push_back_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/push_front_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/reverse_fold_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/reverse_fold_impl_body.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/sequence_wrapper.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/size_impl.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/static_cast.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/template_arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/template_arity_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/traits_lambda_spec.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/type_wrapper.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/value_wknd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/aux_/yes_no.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/back_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/back_inserter.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/begin_end.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/begin_end_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/bind.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/bind_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/bool.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/bool_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/clear.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/clear_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/comparison.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/contains.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/contains_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/copy.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/deref.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/distance.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/distance_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/empty_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/eval_if.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/find.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/find_if.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/fold.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/front_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/front_inserter.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/greater.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/greater_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/has_xxx.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/identity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/if.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/inserter.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/int.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/int_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/integral_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/integral_c_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/integral_c_tag.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/is_placeholder.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/iter_fold.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/iter_fold_if.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/iterator_range.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/iterator_tags.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/lambda.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/lambda_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/less.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/limits/arity.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/limits/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/limits/unrolling.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/limits/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/O1_size.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/begin_end.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/clear.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/empty.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/front.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/include_preprocessed.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/item.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/iterator.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/numbered.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/numbered_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/pop_front.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list10.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list20.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list30.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list40.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list50.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/push_back.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/push_front.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/size.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/aux_/tag.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list0.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list0_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list10.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list10_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list20.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list20_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list30.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list30_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list40.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list40_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list50.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/list/list50_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/logical.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/long.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/long_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/minus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/multiplies.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/negate.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/next.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/next_prior.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/not.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/not_equal_to.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/numeric_cast.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/or.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/pair.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/placeholders.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/plus.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/pop_back_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/pop_front_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/prior.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/protect.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/push_back.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/push_back_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/push_front.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/push_front_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/quote.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/remove_if.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/reverse_fold.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/same_as.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/sequence_tag.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/sequence_tag_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/size.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/size_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/size_t.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/size_t_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/tag.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/times.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/O1_size.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/at.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/back.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/begin_end.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/clear.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/empty.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/front.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/include_preprocessed.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/item.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/iterator.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/numbered.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/numbered_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/pop_back.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/pop_front.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/push_back.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/push_front.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/size.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/tag.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/aux_/vector0.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector0.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector0_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector10.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector10_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector20.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector20_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector30.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector30_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector40.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector40_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector50.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/vector/vector50_c.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/void.hpp create mode 100644 contrib/prebuilt/include/boost/mpl/void_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/next_prior.hpp create mode 100644 contrib/prebuilt/include/boost/non_type.hpp create mode 100644 contrib/prebuilt/include/boost/noncopyable.hpp create mode 100644 contrib/prebuilt/include/boost/none.hpp create mode 100644 contrib/prebuilt/include/boost/none_t.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/bounds.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/cast.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/conversion_traits.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/converter.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/converter_policies.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/bounds.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/conversion_traits.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/converter.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/int_float_mixture.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/is_subranged.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/meta.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/old_numeric_cast.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/sign_mixture.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/int_float_mixture_enum.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/numeric_cast_traits.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/sign_mixture_enum.hpp create mode 100644 contrib/prebuilt/include/boost/numeric/conversion/udt_builtin_mixture_enum.hpp create mode 100644 contrib/prebuilt/include/boost/operators.hpp create mode 100644 contrib/prebuilt/include/boost/optional.hpp create mode 100644 contrib/prebuilt/include/boost/optional/optional.hpp create mode 100644 contrib/prebuilt/include/boost/optional/optional_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/pending/integer_log2.hpp create mode 100644 contrib/prebuilt/include/boost/pool/detail/guard.hpp create mode 100644 contrib/prebuilt/include/boost/pool/detail/mutex.hpp create mode 100644 contrib/prebuilt/include/boost/pool/pool.hpp create mode 100644 contrib/prebuilt/include/boost/pool/pool_alloc.hpp create mode 100644 contrib/prebuilt/include/boost/pool/poolfwd.hpp create mode 100644 contrib/prebuilt/include/boost/pool/simple_segregated_storage.hpp create mode 100644 contrib/prebuilt/include/boost/pool/singleton_pool.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/arithmetic/add.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/arithmetic/dec.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/arithmetic/detail/div_base.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/arithmetic/inc.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/arithmetic/mod.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/arithmetic/sub.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/array/data.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/array/elem.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/array/size.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/cat.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/comma_if.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/comparison/less_equal.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/config/config.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/deduce_d.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/detail/dmc/while.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/detail/edg/while.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/detail/msvc/while.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/detail/while.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/expr_if.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/expr_iif.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/if.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/iif.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/control/while.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/debug/error.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/dec.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/detail/auto_rec.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/detail/check.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/detail/dmc/auto_rec.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/detail/is_binary.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/detail/is_unary.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/empty.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/enum.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/enum_params.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/enum_params_with_a_default.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/enum_params_with_defaults.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/enum_shifted_params.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/expr_if.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/facilities/empty.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/facilities/identity.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/facilities/intercept.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/facilities/overload.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/identity.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/if.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/inc.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iterate.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/finish.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/forward1.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/forward2.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/forward3.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/forward4.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/forward5.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/local.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/rlocal.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/self.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/detail/start.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/iterate.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/local.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/iteration/self.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/adt.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/append.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/detail/dmc/fold_left.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/detail/edg/fold_left.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/detail/edg/fold_right.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/detail/fold_left.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/detail/fold_right.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/fold_left.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/fold_right.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/for_each_i.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/reverse.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/list/transform.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/logical/and.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/logical/bitand.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/logical/bitor.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/logical/bool.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/logical/compl.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/logical/not.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/logical/or.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/punctuation/comma.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/punctuation/comma_if.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/punctuation/paren.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/punctuation/paren_if.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repeat.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repeat_from_to.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/detail/dmc/for.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/detail/edg/for.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/detail/for.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/detail/msvc/for.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/enum.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/enum_binary_params.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/enum_params.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/enum_shifted.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/enum_shifted_params.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/enum_trailing.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/enum_trailing_params.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/for.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/repeat.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/repetition/repeat_from_to.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/cat.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/detail/split.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/elem.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/enum.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/first_n.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/fold_left.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/for_each_i.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/rest_n.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/seq.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/size.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/subseq.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/seq/transform.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/slot/detail/counter.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/slot/detail/def.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/slot/detail/shared.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/slot/detail/slot1.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/slot/detail/slot2.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/slot/detail/slot3.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/slot/detail/slot4.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/slot/detail/slot5.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/slot/slot.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/stringize.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/tuple/eat.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/tuple/elem.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/tuple/rem.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/tuple/to_list.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/variadic/elem.hpp create mode 100644 contrib/prebuilt/include/boost/preprocessor/variadic/size.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/config.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/const_mod.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/disable_warnings.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/enable_warnings.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/generator_bits.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/generator_seed_seq.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/integer_log2.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/large_arithmetic.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/operators.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/ptr_helper.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/seed.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/seed_impl.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/signed_unsigned_tools.hpp create mode 100644 contrib/prebuilt/include/boost/random/detail/uniform_int_float.hpp create mode 100644 contrib/prebuilt/include/boost/random/mersenne_twister.hpp create mode 100644 contrib/prebuilt/include/boost/random/uniform_int.hpp create mode 100644 contrib/prebuilt/include/boost/random/uniform_int_distribution.hpp create mode 100644 contrib/prebuilt/include/boost/random/variate_generator.hpp create mode 100644 contrib/prebuilt/include/boost/range/algorithm/equal.hpp create mode 100644 contrib/prebuilt/include/boost/range/as_literal.hpp create mode 100644 contrib/prebuilt/include/boost/range/begin.hpp create mode 100644 contrib/prebuilt/include/boost/range/concepts.hpp create mode 100644 contrib/prebuilt/include/boost/range/config.hpp create mode 100644 contrib/prebuilt/include/boost/range/const_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/as_literal.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/begin.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/common.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/const_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/detail_str.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/end.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/extract_optional_type.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/implementation_help.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/iterator.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/misc_concept.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/remove_extent.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/safe_bool.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/sfinae.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/size_type.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/str_types.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/value_type.hpp create mode 100644 contrib/prebuilt/include/boost/range/detail/vc6/end.hpp create mode 100644 contrib/prebuilt/include/boost/range/difference_type.hpp create mode 100644 contrib/prebuilt/include/boost/range/distance.hpp create mode 100644 contrib/prebuilt/include/boost/range/empty.hpp create mode 100644 contrib/prebuilt/include/boost/range/end.hpp create mode 100644 contrib/prebuilt/include/boost/range/functions.hpp create mode 100644 contrib/prebuilt/include/boost/range/iterator.hpp create mode 100644 contrib/prebuilt/include/boost/range/iterator_range.hpp create mode 100644 contrib/prebuilt/include/boost/range/iterator_range_core.hpp create mode 100644 contrib/prebuilt/include/boost/range/iterator_range_io.hpp create mode 100644 contrib/prebuilt/include/boost/range/mutable_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/range/rbegin.hpp create mode 100644 contrib/prebuilt/include/boost/range/rend.hpp create mode 100644 contrib/prebuilt/include/boost/range/result_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/range/reverse_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/range/size.hpp create mode 100644 contrib/prebuilt/include/boost/range/size_type.hpp create mode 100644 contrib/prebuilt/include/boost/range/value_type.hpp create mode 100644 contrib/prebuilt/include/boost/ratio/detail/mpl/abs.hpp create mode 100644 contrib/prebuilt/include/boost/ratio/detail/mpl/gcd.hpp create mode 100644 contrib/prebuilt/include/boost/ratio/detail/mpl/lcm.hpp create mode 100644 contrib/prebuilt/include/boost/ratio/detail/mpl/sign.hpp create mode 100644 contrib/prebuilt/include/boost/ratio/detail/overflow_helpers.hpp create mode 100644 contrib/prebuilt/include/boost/ratio/mpl/rational_c_tag.hpp create mode 100644 contrib/prebuilt/include/boost/ratio/ratio.hpp create mode 100644 contrib/prebuilt/include/boost/ratio/ratio_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/rational.hpp create mode 100644 contrib/prebuilt/include/boost/ref.hpp create mode 100644 contrib/prebuilt/include/boost/scoped_array.hpp create mode 100644 contrib/prebuilt/include/boost/scoped_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/shared_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/bad_weak_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/atomic_count.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/atomic_count_gcc.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/atomic_count_pthreads.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/atomic_count_sync.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/atomic_count_win32.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/lightweight_mutex.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/lwm_nop.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/lwm_pthreads.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/lwm_win32_cs.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/operator_bool.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/quick_allocator.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/shared_count.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/shared_ptr_nmt.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_convertible.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_nt.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_pt.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_spin.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_sync.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_base_w32.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_counted_impl.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/sp_has_sync.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/spinlock.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/spinlock_gcc_arm.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/spinlock_nt.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/spinlock_pool.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/spinlock_pt.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/spinlock_sync.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/spinlock_w32.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/detail/yield_k.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/enable_shared_from_this.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/intrusive_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/scoped_array.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/scoped_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/shared_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/smart_ptr/weak_ptr.hpp create mode 100644 contrib/prebuilt/include/boost/spirit.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/actor/assign_actor.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/actor/push_back_actor.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/actor/ref_const_ref_actor.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/actor/ref_value_actor.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/attribute.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/attribute/closure.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/attribute/closure_context.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/attribute/closure_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/attribute/parametric.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/assert.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/actions.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/alternative.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/composite.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/difference.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/directives.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/epsilon.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/exclusive_or.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/alternative.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/difference.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/directives.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/intersection.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/kleene_star.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/list.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/optional.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/positive.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/sequence.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/sequential_and.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/impl/sequential_or.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/intersection.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/kleene_star.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/list.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/no_actions.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/operators.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/optional.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/positive.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/sequence.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/sequential_and.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/composite/sequential_or.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/config.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/impl/match.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/impl/match_attr_traits.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/impl/parser.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/match.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/nil.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/grammar.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/impl/static.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/parser_context.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/parser_id.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/rule.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/subrule.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/parser.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/primitives/impl/numerics.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/primitives/impl/primitives.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/primitives/numerics.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/primitives/numerics_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/primitives/primitives.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/safe_bool.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/scanner/impl/skipper.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/scanner/scanner.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/scanner/scanner_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/scanner/skipper.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/core/scanner/skipper_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/debug.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/debug/debug_node.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/debug/impl/parser_names.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/debug/minimal.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/debug/parser_names.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/error_handling.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/error_handling/exceptions.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/error_handling/exceptions_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/error_handling/impl/exceptions.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator/file_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator/file_iterator_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator/fixed_size_queue.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator/impl/file_iterator.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator/impl/position_iterator.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator/multi_pass.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator/multi_pass_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator/position_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/iterator/position_iterator_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta/as_parser.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta/fundamental.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta/impl/fundamental.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta/impl/parser_traits.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta/impl/refactoring.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta/impl/traverse.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta/parser_traits.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta/refactoring.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/meta/traverse.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/namespace.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/phoenix/actor.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/phoenix/casts.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/phoenix/closures.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/phoenix/composite.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/phoenix/operators.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/phoenix/primitives.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/phoenix/tuple_helpers.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/phoenix/tuples.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/symbols.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/symbols/impl/symbols.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/symbols/impl/tst.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/symbols/symbols.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/symbols/symbols_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/tree/ast.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/tree/ast_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/tree/common.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/tree/common_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/chset.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/chset_operators.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/confix.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/confix_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/distinct.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/distinct_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/escape_char.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/escape_char_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/flush_multi_pass.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/functor_parser.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/impl/chset.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/impl/chset/range_run.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/impl/chset/range_run.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/impl/chset_operators.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/impl/confix.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/impl/escape_char.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/impl/lists.ipp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/lists.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/lists_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/loops.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/utility/scoped_lock.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/home/classic/version.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/include/classic.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/include/classic_ast.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/include/classic_chset.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/include/classic_core.hpp create mode 100644 contrib/prebuilt/include/boost/spirit/include/classic_symbols.hpp create mode 100644 contrib/prebuilt/include/boost/static_assert.hpp create mode 100644 contrib/prebuilt/include/boost/swap.hpp create mode 100644 contrib/prebuilt/include/boost/system/api_config.hpp create mode 100644 contrib/prebuilt/include/boost/system/config.hpp create mode 100644 contrib/prebuilt/include/boost/system/error_code.hpp create mode 100644 contrib/prebuilt/include/boost/system/system_error.hpp create mode 100644 contrib/prebuilt/include/boost/thread/condition.hpp create mode 100644 contrib/prebuilt/include/boost/thread/condition_variable.hpp create mode 100644 contrib/prebuilt/include/boost/thread/cv_status.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/config.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/delete.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/memory.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/move.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/platform.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/thread.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/thread_group.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/thread_heap_alloc.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/thread_interruption.hpp create mode 100644 contrib/prebuilt/include/boost/thread/detail/tss_hooks.hpp create mode 100644 contrib/prebuilt/include/boost/thread/exceptions.hpp create mode 100644 contrib/prebuilt/include/boost/thread/future.hpp create mode 100644 contrib/prebuilt/include/boost/thread/locks.hpp create mode 100644 contrib/prebuilt/include/boost/thread/mutex.hpp create mode 100644 contrib/prebuilt/include/boost/thread/once.hpp create mode 100644 contrib/prebuilt/include/boost/thread/pthread/condition_variable.hpp create mode 100644 contrib/prebuilt/include/boost/thread/pthread/condition_variable_fwd.hpp create mode 100644 contrib/prebuilt/include/boost/thread/pthread/mutex.hpp create mode 100644 contrib/prebuilt/include/boost/thread/pthread/once.hpp create mode 100644 contrib/prebuilt/include/boost/thread/pthread/pthread_mutex_scoped_lock.hpp create mode 100644 contrib/prebuilt/include/boost/thread/pthread/shared_mutex.hpp create mode 100644 contrib/prebuilt/include/boost/thread/pthread/thread_data.hpp create mode 100644 contrib/prebuilt/include/boost/thread/pthread/thread_heap_alloc.hpp create mode 100644 contrib/prebuilt/include/boost/thread/pthread/timespec.hpp create mode 100644 contrib/prebuilt/include/boost/thread/shared_mutex.hpp create mode 100644 contrib/prebuilt/include/boost/thread/thread.hpp create mode 100644 contrib/prebuilt/include/boost/thread/thread_time.hpp create mode 100644 contrib/prebuilt/include/boost/thread/tss.hpp create mode 100644 contrib/prebuilt/include/boost/thread/v2/thread.hpp create mode 100644 contrib/prebuilt/include/boost/thread/win32/basic_timed_mutex.hpp create mode 100644 contrib/prebuilt/include/boost/thread/win32/condition_variable.hpp create mode 100644 contrib/prebuilt/include/boost/thread/win32/interlocked_read.hpp create mode 100644 contrib/prebuilt/include/boost/thread/win32/mutex.hpp create mode 100644 contrib/prebuilt/include/boost/thread/win32/once.hpp create mode 100644 contrib/prebuilt/include/boost/thread/win32/shared_mutex.hpp create mode 100644 contrib/prebuilt/include/boost/thread/win32/thread_data.hpp create mode 100644 contrib/prebuilt/include/boost/thread/win32/thread_heap_alloc.hpp create mode 100644 contrib/prebuilt/include/boost/thread/win32/thread_primitives.hpp create mode 100644 contrib/prebuilt/include/boost/thread/xtime.hpp create mode 100644 contrib/prebuilt/include/boost/throw_exception.hpp create mode 100644 contrib/prebuilt/include/boost/token_functions.hpp create mode 100644 contrib/prebuilt/include/boost/token_iterator.hpp create mode 100644 contrib/prebuilt/include/boost/tokenizer.hpp create mode 100644 contrib/prebuilt/include/boost/type.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/add_const.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/add_pointer.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/add_reference.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/add_rvalue_reference.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/add_volatile.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/aligned_storage.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/alignment_of.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/arithmetic_traits.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/broken_compiler_spec.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/common_type.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/composite_traits.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/config.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/conversion_traits.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/decay.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/bool_trait_def.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/bool_trait_undef.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/common_type_imp.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/cv_traits_impl.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/false_result.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/ice_and.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/ice_eq.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/ice_not.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/ice_or.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/is_function_ptr_helper.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/is_function_ptr_tester.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/size_t_trait_def.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/size_t_trait_undef.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/template_arity_spec.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/type_trait_def.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/type_trait_undef.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/wrap.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/detail/yes_no_type.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/function_traits.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/has_nothrow_assign.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/has_nothrow_constructor.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/has_nothrow_copy.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/has_trivial_assign.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/has_trivial_constructor.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/has_trivial_copy.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/has_trivial_destructor.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/ice.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/integral_constant.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/intrinsics.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_abstract.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_arithmetic.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_array.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_base_and_derived.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_base_of.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_class.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_compound.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_const.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_convertible.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_empty.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_enum.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_float.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_floating_point.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_function.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_fundamental.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_integral.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_lvalue_reference.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_member_function_pointer.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_member_pointer.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_object.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_pod.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_pointer.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_polymorphic.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_reference.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_rvalue_reference.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_same.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_scalar.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_signed.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_stateless.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_union.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_unsigned.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_void.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/is_volatile.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/make_signed.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/make_unsigned.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/msvc/remove_bounds.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/msvc/remove_const.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/msvc/remove_cv.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/msvc/remove_pointer.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/msvc/remove_reference.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/msvc/typeof.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/object_traits.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/remove_bounds.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/remove_const.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/remove_cv.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/remove_pointer.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/remove_reference.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/same_traits.hpp create mode 100644 contrib/prebuilt/include/boost/type_traits/type_with_alignment.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/dmc/typeof_impl.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/encode_decode.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/encode_decode_params.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/int_encoding.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/integral_template_param.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/message.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/modifiers.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/msvc/typeof_impl.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/native.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/pointers_data_members.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/register_functions.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/register_functions_iterate.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/register_fundamental.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/register_mem_functions.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/template_encoding.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/template_template_param.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/type_encoding.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/type_template_param.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/typeof.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/typeof_impl.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/unsupported.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/vector.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/vector100.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/vector150.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/vector200.hpp create mode 100644 contrib/prebuilt/include/boost/typeof/vector50.hpp create mode 100644 contrib/prebuilt/include/boost/units/detail/utility.hpp create mode 100644 contrib/prebuilt/include/boost/utility.hpp create mode 100644 contrib/prebuilt/include/boost/utility/addressof.hpp create mode 100644 contrib/prebuilt/include/boost/utility/base_from_member.hpp create mode 100644 contrib/prebuilt/include/boost/utility/binary.hpp create mode 100644 contrib/prebuilt/include/boost/utility/compare_pointees.hpp create mode 100644 contrib/prebuilt/include/boost/utility/declval.hpp create mode 100644 contrib/prebuilt/include/boost/utility/detail/in_place_factory_prefix.hpp create mode 100644 contrib/prebuilt/include/boost/utility/detail/in_place_factory_suffix.hpp create mode 100644 contrib/prebuilt/include/boost/utility/detail/result_of_iterate.hpp create mode 100644 contrib/prebuilt/include/boost/utility/enable_if.hpp create mode 100644 contrib/prebuilt/include/boost/utility/identity_type.hpp create mode 100644 contrib/prebuilt/include/boost/utility/in_place_factory.hpp create mode 100644 contrib/prebuilt/include/boost/utility/result_of.hpp create mode 100644 contrib/prebuilt/include/boost/utility/swap.hpp create mode 100644 contrib/prebuilt/include/boost/uuid/name_generator.hpp create mode 100644 contrib/prebuilt/include/boost/uuid/nil_generator.hpp create mode 100644 contrib/prebuilt/include/boost/uuid/random_generator.hpp create mode 100644 contrib/prebuilt/include/boost/uuid/seed_rng.hpp create mode 100644 contrib/prebuilt/include/boost/uuid/sha1.hpp create mode 100644 contrib/prebuilt/include/boost/uuid/string_generator.hpp create mode 100644 contrib/prebuilt/include/boost/uuid/uuid.hpp create mode 100644 contrib/prebuilt/include/boost/uuid/uuid_generators.hpp create mode 100644 contrib/prebuilt/include/boost/uuid/uuid_io.hpp create mode 100644 contrib/prebuilt/include/boost/version.hpp create mode 100644 contrib/prebuilt/include/boost/visit_each.hpp create mode 100644 contrib/prebuilt/include/boost/weak_ptr.hpp create mode 100644 contrib/prebuilt/include/efx-creative.h create mode 100644 contrib/prebuilt/include/efx-presets.h create mode 100644 contrib/prebuilt/include/efx.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/code_generator.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/command_line_interface.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_enum.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_enum_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_extension.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_file.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_generator.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_helpers.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_message.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_message_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_primitive_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_service.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/cpp/cpp_string_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/importer.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_enum.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_enum_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_extension.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_file.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_generator.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_helpers.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_message.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_message_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_primitive_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_service.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/java/java_string_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/parser.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/plugin.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/plugin.pb.h create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/plugin.proto create mode 100644 contrib/prebuilt/include/google/protobuf/compiler/python/python_generator.h create mode 100644 contrib/prebuilt/include/google/protobuf/descriptor.h create mode 100644 contrib/prebuilt/include/google/protobuf/descriptor.pb.h create mode 100644 contrib/prebuilt/include/google/protobuf/descriptor.proto create mode 100644 contrib/prebuilt/include/google/protobuf/descriptor_database.h create mode 100644 contrib/prebuilt/include/google/protobuf/dynamic_message.h create mode 100644 contrib/prebuilt/include/google/protobuf/extension_set.h create mode 100644 contrib/prebuilt/include/google/protobuf/generated_message_reflection.h create mode 100644 contrib/prebuilt/include/google/protobuf/generated_message_util.h create mode 100644 contrib/prebuilt/include/google/protobuf/io/coded_stream.h create mode 100644 contrib/prebuilt/include/google/protobuf/io/gzip_stream.h create mode 100644 contrib/prebuilt/include/google/protobuf/io/printer.h create mode 100644 contrib/prebuilt/include/google/protobuf/io/tokenizer.h create mode 100644 contrib/prebuilt/include/google/protobuf/io/zero_copy_stream.h create mode 100644 contrib/prebuilt/include/google/protobuf/io/zero_copy_stream_impl.h create mode 100644 contrib/prebuilt/include/google/protobuf/io/zero_copy_stream_impl_lite.h create mode 100644 contrib/prebuilt/include/google/protobuf/message.h create mode 100644 contrib/prebuilt/include/google/protobuf/message_lite.h create mode 100644 contrib/prebuilt/include/google/protobuf/reflection_ops.h create mode 100644 contrib/prebuilt/include/google/protobuf/repeated_field.h create mode 100644 contrib/prebuilt/include/google/protobuf/service.h create mode 100644 contrib/prebuilt/include/google/protobuf/stubs/common.h create mode 100644 contrib/prebuilt/include/google/protobuf/stubs/once.h create mode 100644 contrib/prebuilt/include/google/protobuf/text_format.h create mode 100644 contrib/prebuilt/include/google/protobuf/unknown_field_set.h create mode 100644 contrib/prebuilt/include/google/protobuf/wire_format.h create mode 100644 contrib/prebuilt/include/google/protobuf/wire_format_lite.h create mode 100644 contrib/prebuilt/include/google/protobuf/wire_format_lite_inl.h create mode 100755 contrib/prebuilt/include/v8-debug.h create mode 100644 contrib/prebuilt/include/v8-preparser.h create mode 100644 contrib/prebuilt/include/v8-profiler.h create mode 100644 contrib/prebuilt/include/v8-testing.h create mode 100644 contrib/prebuilt/include/v8.h create mode 100644 contrib/prebuilt/include/v8stdint.h create mode 100644 contrib/prebuilt/uscxml-prebuilt-windows-x86-0.0.1.tgz create mode 100644 contrib/snippets/XGetopt.cpp create mode 100644 contrib/snippets/XGetopt.h create mode 100644 installer/description.txt create mode 100644 installer/license.txt create mode 100644 installer/nsis/uscxml-logo.bmp create mode 100644 installer/packageMaker/readme.txt create mode 100644 installer/packageMaker/welcome.txt create mode 100755 package/linux-i686/gnu/bin/mmi-browser create mode 100755 package/linux-i686/gnu/lib/libuscxmlNativeJava_d.so create mode 100644 package/linux-i686/gnu/lib/libuscxml_d.a create mode 100755 package/linux-x86_64/gnu/bin/mmi-browser create mode 100644 package/linux-x86_64/gnu/lib/libuscxml64.a create mode 100644 package/linux-x86_64/gnu/lib/libuscxml64_d.a create mode 100755 package/linux-x86_64/gnu/lib/libuscxmlNativeJava64.so create mode 100755 package/linux-x86_64/gnu/lib/libuscxmlNativeJava64_d.so create mode 100644 package/windows-x86/msvc/bin/mmi-browser.exe create mode 100644 package/windows-x86/msvc/bin/mmi-browser.exe.embed.manifest create mode 100644 package/windows-x86/msvc/bin/mmi-browser.exe.embed.manifest.res create mode 100644 package/windows-x86/msvc/bin/mmi-browser.exe.intermediate.manifest create mode 100644 package/windows-x86/msvc/bin/mmi-browser.exe.manifest create mode 100644 package/windows-x86/msvc/bin/mmi-browser.exe.resource.txt create mode 100644 package/windows-x86/msvc/bin/mmi-browser.pdb create mode 100644 package/windows-x86/msvc/lib/mmi-browser.exp create mode 100644 package/windows-x86/msvc/lib/mmi-browser.lib create mode 100644 package/windows-x86/msvc/lib/uscxml.lib create mode 100644 package/windows-x86/msvc/lib/uscxml_d.lib create mode 100644 package/windows-x86/msvc/lib/uscxml_d.pdb create mode 100644 src/uscxml/Common.h create mode 100644 src/uscxml/URL.cpp create mode 100644 src/uscxml/URL.h delete mode 100644 src/uscxml/debug/SCXMLDotWriter.cpp create mode 100644 src/uscxml/debug/SCXMLDotWriter.cpp.old create mode 100644 src/uscxml/invoker/umundo/UmundoInvoker.cpp create mode 100644 src/uscxml/invoker/umundo/UmundoInvoker.h create mode 100644 test/samples/uscxml/audio/click.wav create mode 100644 test/samples/uscxml/proto/Dependee.proto create mode 100644 test/samples/uscxml/proto/Depender.proto create mode 100644 test/samples/uscxml/proto/Test.proto create mode 100644 test/samples/uscxml/proto/TestServices.proto create mode 100644 test/samples/uscxml/scripts/GreatCircle.js create mode 100644 test/samples/uscxml/scxml-gui-test.scxml create mode 100644 test/samples/uscxml/test-communication.scxml create mode 100644 test/samples/uscxml/test-dom.scxml create mode 100644 test/samples/uscxml/test-donedata.scxml create mode 100644 test/samples/uscxml/test-ecmascript.scxml create mode 100644 test/samples/uscxml/test-execution.scxml create mode 100644 test/samples/uscxml/test-invoked.scxml create mode 100644 test/samples/uscxml/test-predicates.scxml create mode 100644 test/samples/uscxml/test-spatial-audio.scxml create mode 100644 test/samples/uscxml/test-umundo-map-demo.scxml create mode 100644 test/samples/uscxml/test-umundo-rpc.scxml create mode 100644 test/samples/uscxml/test-umundo-s11n.scxml delete mode 100644 test/src/audio/click.wav delete mode 100644 test/src/scxml-gui-test.scxml delete mode 100644 test/src/test-communication.scxml delete mode 100644 test/src/test-dom.scxml delete mode 100644 test/src/test-donedata.scxml delete mode 100644 test/src/test-ecmascript.scxml delete mode 100644 test/src/test-execution.scxml delete mode 100644 test/src/test-invoked.scxml delete mode 100644 test/src/test-predicates.scxml delete mode 100644 test/src/test-spatial-audio.scxml diff --git a/.gitignore b/.gitignore index 9c43805..8da9c07 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,9 @@ build/* build/ build*/ +contrib/prebuilt/darwin* +contrib/prebuilt/linux* +contrib/prebuilt/windows* +contrib/prebuilt/ios* +contrib/prebuilt/android* + diff --git a/CMakeLists.txt b/CMakeLists.txt index e737a55..42baf75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,38 +1,326 @@ cmake_minimum_required(VERSION 2.8.4) -project(uscxml) -enable_testing() +# specify USCXML version +SET(USCXML_VERSION_MAJOR "0") +SET(USCXML_VERSION_MINOR "0") +SET(USCXML_VERSION_PATCH "1") +SET(USCXML_VERSION ${USCXML_VERSION_MAJOR}.${USCXML_VERSION_MINOR}.${USCXML_VERSION_PATCH}) + +# build type has to be set before the project definition +SET(BUILD_TYPE_HELP "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug, Release, RelWithDebInfo, MinSizeRel.") +IF(DEFINED CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING ${BUILD_TYPE_HELP}) +ELSE() + SET(CMAKE_BUILD_TYPE Debug CACHE STRING ${BUILD_TYPE_HELP}) +ENDIF() +project(uscxml) +# use folders in the IDEs for the various targets (e.g. Library, Testing, Tools ..) +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +# lower case version of system name and compiler for library paths +string(TOLOWER ${CMAKE_SYSTEM_NAME} CMAKE_SYSTEM_NAME_LC) +string(TOLOWER ${CMAKE_CXX_COMPILER_ID} CMAKE_CXX_COMPILER_ID_LC) + +############################################################ +# Search paths for cross compiling and prebuilds +############################################################ + +# this happens when we ssh into windows to build there, see also: +# http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r1/index.jsp?topic=/com.ibm.websphere.ops.doc/info/odoe_task/tcimgr_sshwin.html +if (NOT CMAKE_SYSTEM_PROCESSOR) + set(CMAKE_SYSTEM_PROCESSOR x86) +endif() + +# is this a 64Bit host? +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(64BIT_HOST ON) + set(64BIT_LIB_POSTFIX 64) + # additional library paths to be searched + set(FIND_LIBRARY_USE_LIB64_PATHS ON) +# LIST(APPEND CMAKE_FIND_ROOT_PATH "/usr/local/lib64") +# LIST(APPEND CMAKE_FIND_ROOT_PATH "/usr/lib64") +endif() + +# We use the toolchain file from http://code.google.com/p/android-cmake/ +if (CMAKE_CROSSCOMPILING AND ANDROID_ABI) + set(ANDROID ON) + set(CMAKE_CROSSCOMPILING_TARGET android) + set(CMAKE_SYSTEM_VERSION ${ANDROID_NATIVE_API_LEVEL}) +endif() + +# +# Setting the CMAKE_FIND_ROOT_PATH to a list of directories will cause all CMake modules +# to look in these directories in addition to the system search paths: +# http://www.vtk.org/Wiki/CMake_Cross_Compiling#Searching_and_finding_external_software +# + +SET(USCXML_PREBUILT_LIBRARY_PATH) +SET(USCXML_PREBUILT_HEADER_PATH "${PROJECT_SOURCE_DIR}/contrib/prebuilt") +# search roots for libraries +if(CMAKE_CROSSCOMPILING) + SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE "ONLY") + if (IOS) + SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "ONLY") + SET(USCXML_PREBUILT_LIBRARY_PATH "${PROJECT_SOURCE_DIR}/contrib/prebuilt/ios/${CMAKE_SYSTEM_VERSION}") + elseif (ANDROID) + SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "ONLY") # we need both to find jni - we don't? + SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM "BOTH") + SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE "BOTH") + SET(USCXML_PREBUILT_LIBRARY_PATH "${PROJECT_SOURCE_DIR}/contrib/prebuilt/android/${ANDROID_ABI}") + LIST(APPEND CMAKE_FIND_ROOT_PATH "/usr/local/bin") # this is needed to find swig + LIST(APPEND CMAKE_FIND_ROOT_PATH "/opt/local/bin") # this is needed to find protoc + endif () +else () + # SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM "BOTH") + # SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE "BOTH") + # SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "BOTH") + if (WIN32 AND 64BIT_HOST) + SET(USCXML_PREBUILT_LIBRARY_PATH "${PROJECT_SOURCE_DIR}/contrib/prebuilt/${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}_64/${CMAKE_CXX_COMPILER_ID_LC}") + else() + SET(USCXML_PREBUILT_LIBRARY_PATH "${PROJECT_SOURCE_DIR}/contrib/prebuilt/${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}/${CMAKE_CXX_COMPILER_ID_LC}") + endif() +endif() + +SET(USCXML_LIBRARY_HOST_URL_PREFIX "http://umundo.tk.informatik.tu-darmstadt.de/uscxml/prebuilt" CACHE STRING "The root path of an URL where to look for prebuilt libraries.") + +if (WIN32 AND 64BIT_HOST) + SET(USCXML_LIBRARY_ARCHIVE_NAME uscxml-prebuilt-${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}_64-${USCXML_VERSION}.tgz) +else() + SET(USCXML_LIBRARY_ARCHIVE_NAME uscxml-prebuilt-${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}-${USCXML_VERSION}.tgz) +endif() + +if (NOT EXISTS ${USCXML_PREBUILT_LIBRARY_PATH}) + message(STATUS "Downloading prebuilt libraries: ${USCXML_LIBRARY_HOST_URL_PREFIX}/${USCXML_LIBRARY_ARCHIVE_NAME}") + file(DOWNLOAD ${USCXML_LIBRARY_HOST_URL_PREFIX}/${USCXML_LIBRARY_ARCHIVE_NAME} + ${PROJECT_SOURCE_DIR}/contrib/prebuilt/${USCXML_LIBRARY_ARCHIVE_NAME} + INACTIVITY_TIMEOUT 60 STATUS DOWNLOAD_STATUS SHOW_PROGRESS) + list(GET DOWNLOAD_STATUS 0 STATUS_CODE) + list(GET DOWNLOAD_STATUS 1 STATUS_STRING) + if(STATUS_CODE EQUAL 0) + execute_process( + COMMAND ${CMAKE_COMMAND} -E tar xzf ${PROJECT_SOURCE_DIR}/contrib/prebuilt/${USCXML_LIBRARY_ARCHIVE_NAME} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/contrib/prebuilt/ + ) + execute_process( + COMMAND ${CMAKE_COMMAND} -E remove ${PROJECT_SOURCE_DIR}/contrib/prebuilt/${USCXML_LIBRARY_ARCHIVE_NAME} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/contrib/prebuilt/ + ) + else() + message("Downloading prebuilt libraries failed with ${STATUS_STRING} - maybe this platform is not supported?") + endif() +endif() + +# +# BUILD_PREFER_PREBUILT_LIBS: +# Do we want to search system paths or contrib/prebuilt first? +# +if (CMAKE_CROSSCOMPILING) + # always prefer prebuilt libraries for cross-compiling + OPTION(BUILD_PREFER_PREBUILT_LIBS "Search libraries in contrib/prebuilt first" ON) + SET(CMAKE_FIND_ROOT_PATH "${USCXML_PREBUILT_LIBRARY_PATH};${USCXML_PREBUILT_HEADER_PATH};${CMAKE_FIND_ROOT_PATH}") +else() + OPTION(BUILD_PREFER_PREBUILT_LIBS "Search libraries in contrib/prebuilt first" ON) + if (BUILD_PREFER_PREBUILT_LIBS) + # for everything, we start our search in contrib/prebuilt + SET(CMAKE_FIND_ROOT_PATH "${USCXML_PREBUILT_LIBRARY_PATH};${USCXML_PREBUILT_HEADER_PATH};${CMAKE_FIND_ROOT_PATH}") + else() + # using this trick, we search paths from find_* before CMAKE_FIND_ROOT_PATH as '/' is prepended first + SET(CMAKE_FIND_ROOT_PATH "/;${CMAKE_FIND_ROOT_PATH};${USCXML_PREBUILT_LIBRARY_PATH};${USCXML_PREBUILT_HEADER_PATH}") + endif() +endif() +include_directories(${USCXML_PREBUILT_LIBRARY_PATH}/include) + +#message("CMAKE_FIND_ROOT_PATH: ${CMAKE_FIND_ROOT_PATH}") + +if (WIN32) + include_directories(${PROJECT_SOURCE_DIR}/contrib/snippets) +endif() + +############################################################ +# General setup +############################################################ + +# enable testing and actual output with tests +if (CMAKE_CROSSCOMPILING) + OPTION(BUILD_TESTS "Build USCXML tests" OFF) +else() + OPTION(BUILD_TESTS "Build USCXML tests" OFF) +endif() + +# a dummy target to depend on the targets needed for tests, see: +# http://stackoverflow.com/questions/733475/cmake-ctest-make-test-doesnt-build-tests +add_custom_target(ALL_TESTS COMMENT "Building all tests when BUILD_TESTS is enabled") +if (BUILD_TESTS) + enable_testing() + SET(ENV{CTEST_OUTPUT_ON_FAILURE} ON) +endif() + +OPTION(DIST_PREPARE "Put libraries into the lib folder of the source tree" OFF) + +# where to find the cmake modules we distribute set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/contrib/cmake) +include("${CMAKE_MODULE_PATH}/USCXMLMacros.cmake") + +# some compiler flags +#message("CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}") +if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") + execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) + + # best practices from scott meyers + # add_definitions(-Weffc++) + + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-fPIC") + + # all warnings + add_definitions(-Wall) +# add_definitions(-Wno-parentheses-equality) + add_definitions(-Wno-attributes) + + # we cannot tread warning as error with the "narrowing problem" + # add_definitions(-Werror) + + if(GCC_VERSION VERSION_EQUAL 4.7 OR GCC_VERSION VERSION_GREATER 4.7) + # when compiling as C++11, narrowing is a warning but older compilers complain about the option + add_definitions(-Wno-narrowing) + endif() + + # swig will throw a warning with optimization otherwise + add_definitions(-fno-strict-aliasing) + add_definitions("-Wno-unused-value -Wno-unused-function -Wno-sign-compare") + + if (NOT CMAKE_BUILD_TYPE MATCHES ".*Deb.*") # when not building for debug + # add_definitions("-s") + #set(CMAKE_CXX_FLAGS "-s") ## Strip binary for everything but debug builds + # set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections") + # add_definitions("-mpreferred-stack-boundary=4") + # add_definitions("-fmerge-constants") + # add_definitions("-fno-rtti -DBOOST_NO_TYPEID") + # add_definitions("-fno-exceptions") + # add_definitions("-fno-inline") + # add_definitions("-ffunction-sections -fdata-sections") + else() + add_definitions(-rdynamic) + endif() +elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") + add_definitions("-DZMQ_STATIC") + add_definitions("-DPCRE_STATIC") + add_definitions("-DUMUNDO_STATIC") + add_definitions("-D_SCL_SECURE_NO_WARNINGS") + add_definitions("-D_CRT_SECURE_NO_WARNINGS") + # SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NODEFAULTLIB") + # SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:MSVCRTD.lib") +elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") + add_definitions("-Wno-parentheses-equality") + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-fPIC") + +else() + message(FATAL_ERROR "Unknown compiler: ${CMAKE_CXX_COMPILER_ID}") +endif() + +############################################################ +# postfixes for all built targets depending on build type +############################################################ + +SET(CMAKE_DEBUG_POSTFIX "${64BIT_LIB_POSTFIX}_d") +SET(CMAKE_RELEASE_POSTFIX "${64BIT_LIB_POSTFIX}") +SET(CMAKE_RELWITHDEBINFO_POSTFIX "${64BIT_LIB_POSTFIX}_rd") +SET(CMAKE_MINSIZEREL_POSTFIX "${64BIT_LIB_POSTFIX}_s") + +SET(CMAKE_LIBRARY_POSTFIX ${CMAKE_${BUILD_TYPE}_POSTFIX}) + +if (UNIX) + add_definitions(-DHAVE_SYS_SOCKET_H) +endif() + +############################################################ +# Library location, type and linking +############################################################ + +# built shared or static libraries? +if(BUILD_SHARED_LIBS) + add_definitions("-DCOMPILING_DLL") +else() + add_definitions("-DUSCXML_STATIC") +endif() + +# prefer static libraries for linking +if(BUILD_PREFER_STATIC_LIBRARIES) + SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) +endif() + +# where should libraries end up? +if (DIST_PREPARE) + if (CMAKE_CROSSCOMPILING) + string(TOLOWER ${CMAKE_CROSSCOMPILING_TARGET} CMAKE_CROSSCOMPILING_TARGET_LC) + set(OUTPUT_DIR + ${PROJECT_SOURCE_DIR}/package/cross-compiled/${CMAKE_CROSSCOMPILING_TARGET_LC}-${CMAKE_SYSTEM_VERSION}/${CMAKE_SYSTEM_PROCESSOR}) + else() + if (WIN32 AND 64BIT_HOST) + set(OUTPUT_DIR + ${PROJECT_SOURCE_DIR}/package/${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}_64/${CMAKE_CXX_COMPILER_ID_LC}) + else() + set(OUTPUT_DIR + ${PROJECT_SOURCE_DIR}/package/${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}/${CMAKE_CXX_COMPILER_ID_LC}) + endif() + endif() +else() + set(OUTPUT_DIR ${PROJECT_BINARY_DIR}) +endif() + +set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${OUTPUT_DIR}/bin" ) +set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${OUTPUT_DIR}/lib" ) +set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${OUTPUT_DIR}/lib" ) +foreach( OUTPUT_CONFIG ${CMAKE_CONFIGURATION_TYPES} ) + string( TOUPPER ${OUTPUT_CONFIG} OUTPUT_CONFIG ) + set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUT_CONFIG} "${OUTPUT_DIR}/bin" ) + set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUT_CONFIG} "${OUTPUT_DIR}/lib" ) + set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUT_CONFIG} "${OUTPUT_DIR}/lib" ) +endforeach() + +############################################################ +# Dependandent libraries +############################################################ set(USCXML_LIBS) set(USCXML_FILES) -# libxml2 -find_package(LibXml2 REQUIRED) -include_directories(${LIBXML2_INCLUDE_DIR}) -list (APPEND USCXML_LIBS ${LIBXML2_LIBRARIES}) +if (NOT WIN32) + # libxml2 + find_package(LibXml2 REQUIRED) + include_directories(${LIBXML2_INCLUDE_DIR}) + list (APPEND USCXML_LIBS ${LIBXML2_LIBRARIES}) +else() + list (APPEND USCXML_LIBS "Ws2_32") + list (APPEND USCXML_LIBS "Winmm") + list (APPEND USCXML_LIBS "Iphlpapi") + list (APPEND USCXML_LIBS "Netapi32") +endif() # prefer rest as static libraries set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) #glog -set(ENV{GLOG_SRC} ${CMAKE_SOURCE_DIR}/../glog) +# set(ENV{GLOG_SRC} ${CMAKE_SOURCE_DIR}/../glog) find_package(GLOG REQUIRED) include_directories(${GLOG_INCLUDE_DIR}) list (APPEND USCXML_LIBS ${GLOG_LIBRARY}) +add_definitions(-DGLOG_NO_ABBREVIATED_SEVERITIES) # arabica find_package(Arabica REQUIRED) include_directories(${ARABICA_INCLUDE_DIR}) list (APPEND USCXML_LIBS ${ARABICA_LIBRARY}) +if (WIN32) + add_definitions("-DUSE_MSXML") +endif() # boost - header only -FIND_PATH(Boost_INCLUDE_DIR boost/version.hpp PATHS /usr/include) +FIND_PATH(Boost_INCLUDE_DIR boost/version.hpp) include_directories(${Boost_INCLUDE_DIR}) #event -set(ENV{EVENT_SRC} ${CMAKE_SOURCE_DIR}/../libevent) +#set(ENV{EVENT_SRC} ${CMAKE_SOURCE_DIR}/../libevent) find_package(EVENT REQUIRED) include_directories(${EVENT_INCLUDE_DIR}) file(GLOB_RECURSE USCXML_IO_PROCESSOR_LIBEVENT @@ -50,7 +338,7 @@ list (APPEND USCXML_FILES ${USCXML_EVENTQUEUE_LIBEVENT}) list (APPEND USCXML_LIBS ${EVENT_LIBRARY}) # v8 -set(ENV{V8_SRC} ${CMAKE_SOURCE_DIR}/../v8) +# set(ENV{V8_SRC} ${CMAKE_SOURCE_DIR}/../v8) find_package(V8 REQUIRED) include_directories(${V8_INCLUDE_DIR}) file(GLOB_RECURSE USCXML_DATAMODEL_V8 @@ -64,46 +352,115 @@ list (APPEND USCXML_LIBS ${V8_LIBRARY}) find_package(CURL REQUIRED) include_directories(${CURL_INCLUDE_DIRS}) list (APPEND USCXML_LIBS ${CURL_LIBRARIES}) - -# umundo -find_package(UMUNDO REQUIRED) -include_directories(${UMUNDO_INCLUDE_DIR}) -list (APPEND USCXML_LIBS ${UMUNDO_LIBRARIES}) +if (WIN32) + add_definitions("-DCURL_STATICLIB") +endif() + +# uMundo +if (WIN32) + find_package(UMUNDO COMPONENTS convenience) +else() + find_package(UMUNDO COMPONENTS rpc serial core) +endif() +if (UMUNDO_FOUND) + include_directories(${UMUNDO_INCLUDE_DIR}) + file(GLOB_RECURSE UMUNDO_INVOKER src/uscxml/invoker/umundo/*.cpp src/uscxml/invoker/umundo/*.h) + list (APPEND USCXML_FILES ${UMUNDO_INVOKER}) + list (APPEND USCXML_LIBS ${UMUNDO_LIBRARIES}) +endif() +add_definitions("-DUMUNDO_STATIC") # miles -find_package(MILES COMPONENTS core audio debug REQUIRED) -include_directories(${MILES_INCLUDE_DIR}) -list (APPEND USCXML_LIBS ${MILES_LIBRARIES}) +find_package(MILES COMPONENTS core audio debug) +if (MILES_FOUND) + include_directories(${MILES_INCLUDE_DIR}) + file(GLOB_RECURSE MILES_INVOKER src/uscxml/invoker/modality/miles/*.cpp src/uscxml/invoker/modality/miles/*.h) + list (APPEND USCXML_FILES ${MILES_INVOKER}) + list (APPEND USCXML_LIBS ${MILES_LIBRARIES}) +endif() # openal find_package(OpenAL REQUIRED) include_directories(${OPENAL_INCLUDE_DIR}) list(APPEND USCXML_LIBS ${OPENAL_LIBRARY}) +# # protobuf +# find_package(Protobuf REQUIRED) +# LIST(APPEND USCXML_LIBS optimized ${PROTOBUF_LIBRARY}) +# LIST(APPEND USCXML_LIBS debug ${PROTOBUF_LIBRARY_DEBUG}) +# include_directories(${PROTOBUF_INCLUDE_DIRS}) -# the invokers for external services -file(GLOB_RECURSE USCXML_INVOKER src/uscxml/invoker/*.cpp src/uscxml/invoker/*.h) +# the uscxml invoker +file(GLOB_RECURSE USCXML_INVOKER src/uscxml/invoker/scxml/*.cpp src/uscxml/invoker/scxml/*.h) list (APPEND USCXML_FILES ${USCXML_INVOKER}) # debug -file(GLOB_RECURSE USCXML_DEBUG src/uscxml/debug/*.cpp src/uscxml/debug/*.h) -list (APPEND USCXML_FILES ${USCXML_DEBUG}) +# file(GLOB_RECURSE USCXML_DEBUG src/uscxml/debug/*.cpp src/uscxml/debug/*.h) +# list (APPEND USCXML_FILES ${USCXML_DEBUG}) file(GLOB USCXML_CONCURRENCY src/uscxml/concurrency/*.cpp src/uscxml/concurrency/*.h) list (APPEND USCXML_FILES ${USCXML_CONCURRENCY}) +file(GLOB USCXML_MODALITIES src/uscxml/invoker/modality/*.cpp src/uscxml/invoker/modality/*.h) +list (APPEND USCXML_FILES ${USCXML_MODALITIES}) + file(GLOB USCXML_INTERPRETER src/uscxml/*.cpp src/uscxml/*.h) list (APPEND USCXML_FILES ${USCXML_INTERPRETER}) include_directories(src) +############################################################ +# Binaries and tests +############################################################ + # build library add_library(uscxml ${USCXML_FILES}) target_link_libraries(uscxml ${USCXML_LIBS}) -add_subdirectory(test) +add_executable(mmi-browser apps/mmi-browser.cpp ${PROJECT_SOURCE_DIR}/contrib/snippets/XGetopt.cpp) +target_link_libraries(mmi-browser uscxml) +set_target_properties(mmi-browser PROPERTIES FOLDER "Apps") +install_executable(TARGETS mmi-browser COMPONENT tools) + +if (BUILD_TESTS) + add_subdirectory(test) +endif() + add_subdirectory(src/bindings) +############################################################ +# Create config.h +############################################################ + +# determine path seperator to shorten filenames in Debug.cpp +if (WIN32) + SET(PATH_SEPERATOR "\\\\") +else() + SET(PATH_SEPERATOR "/") +endif() + +# enable config.h style compile time options and add as "uscxml/config.h" +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/uscxml/config.h) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +############################################################ +# Header Files +############################################################ + +file(GLOB_RECURSE USCXML_HEADERS ${PROJECT_SOURCE_DIR}/src/*.h ${CMAKE_BINARY_DIR}/*.h) +INSTALL_HEADERS(HEADERS ${USCXML_HEADERS} COMPONENT headers) + +############################################################ +# Installation / Provide package target +############################################################ + +# see contrib/cmake/CPackUSCXML.cmake +include(contrib/cmake/CPackUSCXML.cmake) + +# This must always be last! +include(CPack) + + # ---- OLD DEPENDENCIES ------------- #set(Boost_DEBUG 1) diff --git a/README.md b/README.md new file mode 100644 index 0000000..3db0ea2 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# uSCXML ReadMe + +uSCXML is a SCXML interpreter written in platform independent C/C++. It is still in a rather early stage but mostly +feature-complete as far as the W3C SCXML draft specifies. + + * ECMAScript datamodel using Google's v8 implementation + * Full DOM implementation via Arabica + * Integrates with uMundo to provide publish / subscribe + diff --git a/apps/mmi-browser.cpp b/apps/mmi-browser.cpp new file mode 100644 index 0000000..f21bd20 --- /dev/null +++ b/apps/mmi-browser.cpp @@ -0,0 +1,46 @@ +#include "uscxml/config.h" +#include "uscxml/Interpreter.h" +#include + +#ifdef _WIN32 +#include "XGetopt.h" +#endif + +void printUsageAndExit() { + printf("mmi-browser version " USCXML_VERSION " (" CMAKE_BUILD_TYPE " build)\n"); + printf("Usage\n"); + printf("\tmmi-browser URL\n"); + printf("\n"); + // printf("Options\n"); + // printf("\t-l loglevel : loglevel to use\n"); + exit(1); +} + +int main(int argc, char** argv) { + if (argc < 2) { + printUsageAndExit(); + } + + char* loglevel; + int option; + while ((option = getopt(argc, argv, "l:")) != -1) { + switch(option) { + case 'l': + loglevel = optarg; + break; + default: + printUsageAndExit(); + break; + } + } + + google::InitGoogleLogging(argv[0]); + + using namespace uscxml; + + Interpreter* interpreter = Interpreter::fromURI(argv[1]); + interpreter->interpret(); + + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/apps/mmi-browser.vbs b/apps/mmi-browser.vbs new file mode 100644 index 0000000..fc8ea9a --- /dev/null +++ b/apps/mmi-browser.vbs @@ -0,0 +1,177 @@ +' +' Description: VBScript/VBS open file dialog +' Compatible with most Windows platforms +' Author: wangye +' Website: http://wangye.org +' +' dir is the initial directory; if no directory is +' specified "Desktop" is used. +' filter is the file type filter; format "File type description|*.ext" +' +Public Function GetOpenFileName(dir, filter) + Const msoFileDialogFilePicker = 3 + + If VarType(dir) <> vbString Or dir="" Then + dir = CreateObject( "WScript.Shell" ).SpecialFolders( "Desktop" ) + End If + + If VarType(filter) <> vbString Or filter="" Then + filter = "All files|*.*" + End If + + Dim i,j, objDialog, TryObjectNames + TryObjectNames = Array( _ + "UserAccounts.CommonDialog", _ + "MSComDlg.CommonDialog", _ + "MSComDlg.CommonDialog.1", _ + "Word.Application", _ + "SAFRCFileDlg.FileOpen", _ + "InternetExplorer.Application" _ + ) + + On Error Resume Next + Err.Clear + + For i=0 To UBound(TryObjectNames) + Set objDialog = WSH.CreateObject(TryObjectNames(i)) + If Err.Number<>0 Then + Err.Clear + Else + Exit For + End If + Next + + Select Case i + Case 0,1,2 + ' 0. UserAccounts.CommonDialog XP Only. + ' 1.2. MSComDlg.CommonDialog MSCOMDLG32.OCX must registered. + If i=0 Then + objDialog.InitialDir = dir + Else + objDialog.InitDir = dir + End If + objDialog.Filter = filter + If objDialog.ShowOpen Then + GetOpenFileName = objDialog.FileName + End If + Case 3 + ' 3. Word.Application Microsoft Office must installed. + objDialog.Visible = False + Dim objOpenDialog, filtersInArray + filtersInArray = Split(filter, "|") + Set objOpenDialog = _ + objDialog.Application.FileDialog( _ + msoFileDialogFilePicker) + With objOpenDialog + .Title = "Open File(s):" + .AllowMultiSelect = False + .InitialFileName = dir + .Filters.Clear + For j=0 To UBound(filtersInArray) Step 2 + .Filters.Add filtersInArray(j), _ + filtersInArray(j+1), 1 + Next + If .Show And .SelectedItems.Count>0 Then + GetOpenFileName = .SelectedItems(1) + End If + End With + objDialog.Visible = True + objDialog.Quit + Set objOpenDialog = Nothing + Case 4 + ' 4. SAFRCFileDlg.FileOpen xp 2003 only + ' See http://www.robvanderwoude.com/vbstech_ui_fileopen.php + If objDialog.OpenFileOpenDlg Then + GetOpenFileName = objDialog.FileName + End If + Case 5 + + Dim IEVersion,IEMajorVersion, hasCompleted + hasCompleted = False + Dim shell + Set shell = CreateObject("WScript.Shell") + ' 下面获取IE版本 + IEVersion = shell.RegRead( _ + "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version") + If InStr(IEVersion,".")>0 Then + ' 获取主版本号 + IEMajorVersion = CInt(Left(IEVersion, InStr(IEVersion,".")-1)) + If IEMajorVersion>7 Then + ' 如果版本号大于7,也就是大于IE7,则采取MSHTA方案 + ' Bypasses c:\fakepath\file.txt problem + ' http://pastebin.com/txVgnLBV + Dim fso + Set fso = CreateObject("Scripting.FileSystemObject") + + Dim tempFolder : Set tempFolder = fso.GetSpecialFolder(2) + Dim tempName : tempName = fso.GetTempName() + Dim tempFile : Set tempFile = tempFolder.CreateTextFile(tempName & ".hta") + Dim tempBaseName + tempBaseName = tempFolder & "\" & tempName + tempFile.Write _ + "" & _ + " " & _ + " Browse" & _ + " " & _ + " " & _ + " " & _ + " " & _ + " " & _ + "" + tempFile.Close + Set tempFile = Nothing + Set tempFolder = Nothing + shell.Run tempBaseName & ".hta", 1, True + Set tempFile = fso.OpenTextFile(tempBaseName & ".txt", 1) + GetOpenFileName = tempFile.ReadLine + tempFile.Close + fso.DeleteFile tempBaseName & ".hta" + fso.DeleteFile tempBaseName & ".txt" + Set tempFile = Nothing + Set fso = Nothing + hasCompleted = True ' 标记为已完成 + End If + End If + If Not hasCompleted Then + ' 5. InternetExplorer.Application IE must installed + objDialog.Navigate "about:blank" + Dim objBody, objFileDialog + Set objBody = _ + objDialog.document.getElementsByTagName("body")(0) + objBody.innerHTML = "" + while objDialog.Busy Or objDialog.ReadyState <> 4 + WScript.sleep 10 + Wend + Set objFileDialog = objDialog.document.all.fileDialog + objFileDialog.click + GetOpenFileName = objFileDialog.value + End If + objDialog.Quit + Set objFileDialog = Nothing + Set objBody = Nothing + Set shell = Nothing + Case Else + ' Sorry I cannot do that! + End Select + + Set objDialog = Nothing +End Function + +scxmlFile = GetOpenFileName(CreateObject("WScript.Shell").SpecialFolders("MyDocuments"), "All Files|*.*|SCXML Files|*.scxml") + +if scxmlFile <> "" then + set wshShell = WScript.CreateObject("WScript.Shell") + set objFs = WScript.CreateObject("Scripting.FileSystemObject") + wshShell.CurrentDirectory = objFs.GetParentFolderName(Wscript.ScriptFullName) +' WScript.Echo scxmlFile + wshShell.Run("mmi-browser.exe """ & scxmlFile & """") +end if \ No newline at end of file diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..86614e0 --- /dev/null +++ b/config.h.in @@ -0,0 +1,55 @@ +/** + * Auto generated - edit config.h.in instead! + * + * This file is instantiated by cmake as config.h in the binary tree of + * the out-of-source build. See cmake docs on CONFIGURE_FILE. + * + * WARNING: This file may never be included by public headers as we cannot + * ship prebuilt packages otherwise! + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/** Platform macros */ +#cmakedefine UNIX +// suppress warnings with already define -DWIN32 macro +#ifndef WIN32 +#cmakedefine WIN32 +#endif +#cmakedefine APPLE +#cmakedefine CYGWIN +#cmakedefine IOS +#cmakedefine IOSSIM + +// suppress warnings with already define -DANDROID macro +#ifndef ANDROID +#cmakedefine ANDROID +#endif + +#cmakedefine PATH_SEPERATOR '@PATH_SEPERATOR@' + +/** Loglevels */ +#cmakedefine LOGLEVEL_COMMON @LOGLEVEL_COMMON@ +#cmakedefine LOGLEVEL_DISC @LOGLEVEL_DISC@ +#cmakedefine LOGLEVEL_NET @LOGLEVEL_NET@ +#cmakedefine LOGLEVEL_S11N @LOGLEVEL_S11N@ + +/** version */ +#cmakedefine USCXML_VERSION_MAJOR "@USCXML_VERSION_MAJOR@" +#cmakedefine USCXML_VERSION_MINOR "@USCXML_VERSION_MINOR@" +#cmakedefine USCXML_VERSION_PATCH "@USCXML_VERSION_PATCH@" +#cmakedefine USCXML_VERSION "@USCXML_VERSION@" + +/** build type */ +#cmakedefine CMAKE_BUILD_TYPE "@CMAKE_BUILD_TYPE@" + +/** miscellaneous */ +#cmakedefine PROJECT_SOURCE_DIR "@PROJECT_SOURCE_DIR@" +#cmakedefine DIST_PREPARE + +/** Optional libraries we found */ +#cmakedefine UMUNDO_FOUND +#cmakedefine MILES_FOUND + +#endif \ No newline at end of file diff --git a/contrib/cmake/CPackUSCXML.cmake b/contrib/cmake/CPackUSCXML.cmake new file mode 100644 index 0000000..d0fd17c --- /dev/null +++ b/contrib/cmake/CPackUSCXML.cmake @@ -0,0 +1,423 @@ +# see: http://www.vtk.org/Wiki/CMake:CPackConfiguration + +######################################################################################## +# gather host-native libraries +################################################################################ + +# these are all the host-native libraries plus +file(GLOB_RECURSE PLATFORM_LIBS + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.a + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.so + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.lib + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.dylib + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.jnilib + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.dll + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.pdb +# ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.exp +) + +# sort host-native libraries into installation components +foreach(PLATFORM_LIB ${PLATFORM_LIBS}) +# message("PLATFORM_LIB: ${PLATFORM_LIB}") + if (PLATFORM_LIB MATCHES ".*Native.*") + install(FILES ${PLATFORM_LIB} DESTINATION lib COMPONENT librarySwig) + list (APPEND USCXML_CPACK_COMPONENTS "librarySwig") + elseif (PLATFORM_LIB MATCHES ".*uscxmlCSharp.*") + install(FILES ${PLATFORM_LIB} DESTINATION share/uscxml/lib COMPONENT librarySwig) + list (APPEND USCXML_CPACK_COMPONENTS "library") + elseif (PLATFORM_LIB MATCHES ".*uscxml.*") + install(FILES ${PLATFORM_LIB} DESTINATION lib COMPONENT library) + list (APPEND USCXML_CPACK_COMPONENTS "library") + else() + message(STATUS "PACKAGE RELEASE UNK ${PLATFORM_LIB} - not packaging") + endif() +endforeach() + +######################################## +# Pre-built libraries for host platform +######################################## + +# do follow symlinks with GLOB_RECURSE +#cmake_policy(SET CMP0009 OLD) + +file(GLOB_RECURSE PREBUILT_LIBS FOLLOW_SYMLINKS + ${USCXML_PREBUILT_LIBRARY_PATH}/lib/*.a + ${USCXML_PREBUILT_LIBRARY_PATH}/lib/*.so + ${USCXML_PREBUILT_LIBRARY_PATH}/lib/*.dylib + ${USCXML_PREBUILT_LIBRARY_PATH}/lib/*.lib + ${USCXML_PREBUILT_LIBRARY_PATH}/lib/*.dll + ${USCXML_PREBUILT_LIBRARY_PATH}/lib/*.pdb +) + +#message("USCXML_PREBUILT_LIBRARY_PATH: ${USCXML_PREBUILT_LIBRARY_PATH}") + +foreach(PREBUILT_LIB ${PREBUILT_LIBS}) +# message("PREBUILT_LIB: ${PREBUILT_LIB}") + # string(REGEX MATCH "prebuilt/[^//]+/[^//]+" CURR_PLATFORM ${PREBUILT_LIB}) + # message("CURR_PLATFORM: ${CURR_PLATFORM}") + # install(FILES ${PREBUILT_LIB} DESTINATION share/uscxml/${CURR_PLATFORM} COMPONENT libraryPrebuilt) + install(FILES ${PREBUILT_LIB} DESTINATION share/uscxml/deps COMPONENT libraryPrebuilt) + list (APPEND USCXML_CPACK_COMPONENTS "libraryPrebuilt") +endforeach() + + +######################################## +# VBS wrappers +######################################## + +if (WIN32) + install( + FILES ${PROJECT_SOURCE_DIR}/apps/mmi-browser.vbs + DESTINATION bin + COMPONENT tools + PERMISSIONS WORLD_EXECUTE OWNER_EXECUTE GROUP_EXECUTE OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ # 755 + ) +endif() + +######################################## +# Include documentation +######################################## + +# file(GLOB_RECURSE HTML_DOCS ${PROJECT_SOURCE_DIR}/docs/html/*) +# foreach(HTML_DOC ${HTML_DOCS}) +# STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/" "" HTML_PATH ${HTML_DOC}) +# STRING(REGEX MATCH "(.*)[/\\]" HTML_PATH ${HTML_PATH}) +# install(FILES ${HTML_DOC} DESTINATION share/uscxml/${HTML_PATH} COMPONENT docs) +# list (APPEND USCXML_CPACK_COMPONENTS "docs") +# # message(STATUS ${HTML_PATH}) +# endforeach() + +######################################## +# CMake Modules for clients +######################################## + +# install(FILES ${PROJECT_SOURCE_DIR}/contrib/cmake/FindUSCXML.cmake DESTINATION share/uscxml/cmake COMPONENT library) +# install(FILES ${PROJECT_SOURCE_DIR}/contrib/cmake/UseUSCXML.cmake DESTINATION share/uscxml/cmake COMPONENT library) + +######################################## +# Target languages +######################################## + +GET_TARGET_PROPERTY(USCXMLNATIVEJAVA_LOCATION USCXMLNativeJava LOCATION) +if (USCXMLNATIVEJAVA_LOCATION) + if (DIST_PREPARE) + if (EXISTS "${PROJECT_SOURCE_DIR}/package/uscxml.jar") + install(FILES ${PROJECT_SOURCE_DIR}/package/uscxml.jar DESTINATION share/uscxml/java COMPONENT librarySwig) + endif() + else() + if (EXISTS "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/uscxml.jar") + install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/uscxml.jar DESTINATION share/uscxml/java COMPONENT librarySwig) + endif() + endif() + list (APPEND USCXML_CPACK_COMPONENTS "librarySwig") +endif() + +# The CSharp bindings are already picked up as a host-native dll above +GET_TARGET_PROPERTY(USCXMLNATIVECSHARP_LOCATION USCXMLNativeCSharp LOCATION) +# if (USCXMLNATIVECSHARP_LOCATION) +# install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/uscxmlCSharp.dll DESTINATION share/uscxml/lib COMPONENT librarySwig) +# list (APPEND USCXML_CPACK_COMPONENTS "librarySwig") +# endif() + + +################################################################################ +# Cross Compiled binaries +################################################################################ + +######################################## +# Android +######################################## + +file(GLOB_RECURSE ANDROID_LIBS ${PROJECT_SOURCE_DIR}/package/cross-compiled/android*/*) +foreach(ANDROID_LIB ${ANDROID_LIBS}) + # do not pack static libraries +# if (NOT ANDROID_LIB MATCHES ".*\\.a" AND NOT ANDROID_LIB MATCHES "\\..*") + if (NOT ANDROID_LIB MATCHES ".*\\.a") + # remove weird double slashes + STRING(REGEX REPLACE "//" "/" ANDROID_LIB ${ANDROID_LIB}) + # take relative path + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/package/cross-compiled/" "" ANDROID_PATH ${ANDROID_LIB}) + # only take first two path elements + STRING(REGEX MATCH "[^/]*/[^/]*" ANDROID_PATH ${ANDROID_PATH}) + # but remove USCXML.jar from path in any case + STRING(REGEX REPLACE "/uscxml.jar" "" ANDROID_PATH ${ANDROID_PATH}) + # message(STATUS "ANDROID_PATH: ${ANDROID_PATH}") + # message(STATUS "ANDROID_LIB: ${ANDROID_LIB}") + install(FILES ${ANDROID_LIB} DESTINATION share/uscxml/${ANDROID_PATH} COMPONENT libraryAndroid) + list (APPEND USCXML_CPACK_COMPONENTS "libraryAndroid") + endif() +endforeach() + +# list(FIND USCXML_CPACK_COMPONENTS "libraryAndroid" FOUND_ITEM) +# if (FOUND_ITEM GREATER -1) +# file(GLOB_RECURSE ANDROID_PREBUILT_LIBS ${PROJECT_SOURCE_DIR}/contrib/prebuilt/android*/*) +# foreach(ANDROID_PREBUILT_LIB ${ANDROID_PREBUILT_LIBS}) +# STRING(REGEX REPLACE "//" "/" ANDROID_PREBUILT_LIB ${ANDROID_PREBUILT_LIB}) +# STRING(REGEX MATCH "prebuilt/[^//]+/[^//]+" ANDROID_PLATFORM ${ANDROID_PREBUILT_LIB}) +# message("ANDROID_PREBUILT_LIB: ${ANDROID_PREBUILT_LIB}") +# message("ANDROID_PLATFORM: ${ANDROID_PLATFORM}") +# install(FILES ${ANDROID_PREBUILT_LIB} DESTINATION share/uscxml/${ANDROID_PLATFORM} COMPONENT libraryPrebuilt) +# endforeach() +# endif() + +######################################## +# iOS +######################################## +if (APPLE) + file(GLOB_RECURSE IOS_LIBS ${PROJECT_SOURCE_DIR}/package/cross-compiled/ios*/*.ios*) + foreach(IOS_LIB ${IOS_LIBS}) + # match ios-5.0 + STRING(REGEX REPLACE "//" "/" IOS_LIB ${IOS_LIB}) + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/package/cross-compiled/" "" IOS_PATH ${IOS_LIB}) + STRING(REGEX MATCH "[^/]*" IOS_PATH ${IOS_PATH}) + # message(STATUS "IOS_LIB: ${IOS_LIB}") + # message(STATUS "IOS_PATH: ${IOS_PATH}") + install(FILES ${IOS_LIB} DESTINATION share/uscxml/${IOS_PATH} COMPONENT libraryIOS) + list (APPEND USCXML_CPACK_COMPONENTS "libraryIOS") + endforeach() + + list(FIND USCXML_CPACK_COMPONENTS "libraryIOS" FOUND_ITEM) + if (FOUND_ITEM GREATER -1) + file(GLOB_RECURSE IOS_PREBUILT_LIBS ${PROJECT_SOURCE_DIR}/contrib/prebuilt/ios*/*.a) + foreach(IOS_PREBUILT_LIB ${IOS_PREBUILT_LIBS}) + if(NOT EXISTS "${IOS_PREBUILT_LIB}/") + STRING(REGEX REPLACE "//" "/" IOS_PREBUILT_LIB ${IOS_PREBUILT_LIB}) + STRING(REGEX MATCH "ios/[^//]+" IOS_PLATFORM ${IOS_PREBUILT_LIB}) + # message("IOS_PLATFORM: ${IOS_PLATFORM}") + # message("IOS_PREBUILT_LIB: ${IOS_PREBUILT_LIB}") + install(FILES ${IOS_PREBUILT_LIB} DESTINATION share/uscxml/deps/${IOS_PLATFORM} COMPONENT libraryPrebuilt) + endif() + endforeach() + endif() +endif() + +################################################################################ +# Sample projects +################################################################################ + +# USCXML-pingpong: XCode for iOS +if (APPLE) + file(GLOB_RECURSE IOS_PINGPONG_SAMPLE ${PROJECT_SOURCE_DIR}/examples/ios/uscxml-pingpong*/*) + foreach(IOS_PINGPONG_SAMPLE_FILE ${IOS_PINGPONG_SAMPLE}) + # strip root + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/examples" "" REL_PATH ${IOS_PINGPONG_SAMPLE_FILE}) + get_filename_component(REL_PATH ${REL_PATH} PATH) +# message("Installing ${IOS_PINGPONG_SAMPLE_FILE} in share/uscxml/samples/${REL_PATH}") + install(FILES ${IOS_PINGPONG_SAMPLE_FILE} DESTINATION share/uscxml/samples/${REL_PATH} COMPONENT samples) + endforeach() + list (APPEND USCXML_CPACK_COMPONENTS "samples") +endif() + +# USCXML-pingpong: Eclipse for Android +file(GLOB_RECURSE ANDROID_PINGPONG_SAMPLE ${PROJECT_SOURCE_DIR}/examples/android/*) +foreach(ANDROID_PINGPONG_SAMPLE_FILE ${ANDROID_PINGPONG_SAMPLE}) +# message("ANDROID_PINGPONG_SAMPLE_FILE: ${ANDROID_PINGPONG_SAMPLE_FILE}") + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/examples" "" REL_PATH ${ANDROID_PINGPONG_SAMPLE_FILE}) + get_filename_component(REL_PATH ${REL_PATH} PATH) + install(FILES ${ANDROID_PINGPONG_SAMPLE_FILE} DESTINATION share/uscxml/samples/${REL_PATH} COMPONENT samples) +endforeach() +list (APPEND USCXML_CPACK_COMPONENTS "samples") + +# USCXML-pingpong: Visual Studio for CSharp +if (WIN32) + file(GLOB_RECURSE CSHARP_PINGPONG_SAMPLE ${PROJECT_SOURCE_DIR}/examples/csharp/*) + foreach(CSHARP_PINGPONG_SAMPLE_FILE ${CSHARP_PINGPONG_SAMPLE}) +# message("CSHARP_PINGPONG_SAMPLE_FILE: ${CSHARP_PINGPONG_SAMPLE_FILE}") + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/examples" "" REL_PATH ${CSHARP_PINGPONG_SAMPLE_FILE}) + get_filename_component(REL_PATH ${REL_PATH} PATH) + install(FILES ${CSHARP_PINGPONG_SAMPLE_FILE} DESTINATION share/uscxml/samples/${REL_PATH} COMPONENT samples) + endforeach() + list (APPEND USCXML_CPACK_COMPONENTS "samples") +endif() + +# All the java samples +file(GLOB_RECURSE JAVA_SAMPLES ${PROJECT_SOURCE_DIR}/examples/java/*) +foreach(JAVA_SAMPLES_FILE ${JAVA_SAMPLES}) + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/examples" "" REL_PATH ${JAVA_SAMPLES_FILE}) + get_filename_component(REL_PATH ${REL_PATH} PATH) + install(FILES ${JAVA_SAMPLES_FILE} DESTINATION share/uscxml/samples/${REL_PATH} COMPONENT samples) +endforeach() + +# All the cpp samples +file(GLOB_RECURSE CPP_SAMPLES ${PROJECT_SOURCE_DIR}/examples/cpp/*) +foreach(CPP_SAMPLES_FILE ${CPP_SAMPLES}) + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/examples" "" REL_PATH ${CPP_SAMPLES_FILE}) + get_filename_component(REL_PATH ${REL_PATH} PATH) + install(FILES ${CPP_SAMPLES_FILE} DESTINATION share/uscxml/samples/${REL_PATH} COMPONENT samples) +endforeach() + +list (APPEND USCXML_CPACK_COMPONENTS "samples") + +######################################## +# Sample SCXML Files +######################################## + +file(GLOB_RECURSE SCXML_SAMPLES ${PROJECT_SOURCE_DIR}/test/samples/*) +foreach(SCXML_SAMPLE_FILE ${SCXML_SAMPLES}) + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/test/samples/" "" REL_PATH ${SCXML_SAMPLE_FILE}) + get_filename_component(REL_PATH ${REL_PATH} PATH) +# message("Installing sample: share/uscxml/samples/${REL_PATH}") + install(FILES ${SCXML_SAMPLE_FILE} DESTINATION share/uscxml/samples/${REL_PATH} COMPONENT samples) +endforeach() + + +######################################## +# House keeping +######################################## + +list (APPEND USCXML_CPACK_COMPONENTS "headers") + +if (NOT CMAKE_CROSS_COMPILING) + list (APPEND USCXML_CPACK_COMPONENTS "tools") +endif() +list (REMOVE_DUPLICATES USCXML_CPACK_COMPONENTS ${USCXML_CPACK_COMPONENTS}) +#message("USCXML_CPACK_COMPONENTS: ${USCXML_CPACK_COMPONENTS}") + +######################################## +# Configure packagers +######################################## + +if (UNIX) + if (APPLE) + set(CPACK_GENERATOR "PackageMaker;TGZ") + else() + set(CPACK_GENERATOR "DEB;RPM;TGZ") + endif() + set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local") +endif() +if (WIN32) + set(CPACK_GENERATOR "NSIS;ZIP") + set(CPACK_PACKAGE_INSTALL_DIRECTORY "uscxml") + # pairs of executables and labels for start menu + set(CPACK_NSIS_MENU_LINKS + " ;USCXML SDK" + "bin\\\\mmi-browser.vbs;MMI Browser") + +endif() + +set(CPACK_PACKAGE_NAME "USCXML") +set(CPACK_PACKAGE_VENDOR "Telecooperation Group - TU Darmstadt") +set(CPACK_PACKAGE_CONTACT "radomski@tk.informatik.tu-darmstadt.de") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "USCXML - publish/subscribe since 2012") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/installer/description.txt") +set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/installer/license.txt") + +set(CPACK_PACKAGE_VERSION "${USCXML_VERSION_MAJOR}.${USCXML_VERSION_MINOR}.${USCXML_VERSION_PATCH}") +set(CPACK_PACKAGE_VERSION_MAJOR ${USCXML_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${USCXML_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${USCXML_VERSION_PATCH}) + +if (64BIT_HOST AND WIN32) + set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}_64-${CPACK_PACKAGE_VERSION}") +else() + set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}-${CPACK_PACKAGE_VERSION}") +endif() + +### +# Configuration for NSIS installer on Win32 +# +# pairs of executables and labels for start menu +#CPACK_PACKAGE_EXECUTABLES +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "uscxml.telecooperation.tu-darmstadt") +if (WIN32) + set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}\\\\installer\\\\nsis\\\\uscxml-logo.bmp") +else() + set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/installer/nsis/uscxml-logo.bmp") +endif() + +### +# Configuration for PackageMaker on MacOSX +# +set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/installer/packageMaker/readme.txt") +set(CPACK_RESOURCE_FILE_WELCOME "${PROJECT_SOURCE_DIR}/installer/packageMaker/welcome.txt") + +### +# Configuration for debian packages +# +set(CPACK_DEBIAN_PACKAGE_NAME "uscxml") +set(CPACK_DEBIAN_PACKAGE_DEPENDS "libavahi-client3") +set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "swig2.0, protobuf-compiler") + +### +# Configuration for RPM packages +# +set(CPACK_RPM_PACKAGE_NAME "uscxml") +set(CPACK_RPM_PACKAGE_LICENSE "Simplified BSD") + + +######################################## +# Describe layout of package +######################################## + +set(CPACK_COMPONENTS_ALL + ${USCXML_CPACK_COMPONENTS} +) + +### +# Description of components +# + +list(FIND USCXML_CPACK_COMPONENTS "tools" FOUND_ITEM) +if (FOUND_ITEM GREATER -1) + set(CPACK_COMPONENT_TOOLS_DISPLAY_NAME "Command-line Tools") + set(CPACK_COMPONENT_TOOLS_DESCRIPTION "Command-line tools to debug and monitor a USCXML network.") +endif() + +list(FIND USCXML_CPACK_COMPONENTS "samples" FOUND_ITEM) +if (FOUND_ITEM GREATER -1) + set(CPACK_COMPONENT_SAMPLES_DISPLAY_NAME "IDE Templates and sample programs") + set(CPACK_COMPONENT_SAMPLES_DESCRIPTION + "Templates for Xcode, Visual Studio and Eclipse with sample programs.") +endif() + +list(FIND USCXML_CPACK_COMPONENTS "docs" FOUND_ITEM) +if (FOUND_ITEM GREATER -1) + set(CPACK_COMPONENT_DOCS_DISPLAY_NAME "Documentation") + set(CPACK_COMPONENT_DOCS_DESCRIPTION "Auto-generated documentation.") +endif() + +list(FIND USCXML_CPACK_COMPONENTS "librarySwig" FOUND_ITEM) +if (FOUND_ITEM GREATER -1) + set(CPACK_COMPONENT_LIBRARYSWIG_DISPLAY_NAME "Java interface") + set(CPACK_COMPONENT_LIBRARYSWIG_DESCRIPTION "USCXML.core library wrapped for Java per native interfaces. This will install the actual library and the JAR archive.") + set(CPACK_COMPONENT_LIBRARYSWIG_GROUP "Development") +endif() + +list(FIND USCXML_CPACK_COMPONENTS "libraryPrebuilt" FOUND_ITEM) +if (FOUND_ITEM GREATER -1) + set(CPACK_COMPONENT_LIBRARYPREBUILT_DISPLAY_NAME "C++ dependent libraries") + set(CPACK_COMPONENT_LIBRARYPREBUILT_DESCRIPTION "Prebuilt libraries for this host and the cross-compile targets") + set(CPACK_COMPONENT_LIBRARYPREBUILT_GROUP "Development") +endif() + +list(FIND USCXML_CPACK_COMPONENTS "libraryAndroid" FOUND_ITEM) +if (FOUND_ITEM GREATER -1) + set(CPACK_COMPONENT_LIBRARYANDROID_DISPLAY_NAME "Android libraries") + set(CPACK_COMPONENT_LIBRARYANDROID_DESCRIPTION "USCXML.core cross compiled for Android devices.") + set(CPACK_COMPONENT_LIBRARYANDROID_GROUP "Development") +endif() + +list(FIND USCXML_CPACK_COMPONENTS "libraryIOS" FOUND_ITEM) +if (FOUND_ITEM GREATER -1) + set(CPACK_COMPONENT_LIBRARYIOS_DISPLAY_NAME "iOS libraries") + set(CPACK_COMPONENT_LIBRARYIOS_DESCRIPTION "USCXML.core cross compiled for iOS devices (universal libraries).") + set(CPACK_COMPONENT_LIBRARYIOS_GROUP "Development") + set(CPACK_COMPONENT_LIBRARYIOS_DEPENDS headers) + set(CPACK_COMPONENT_LIBRARYIOS_DEPENDS libraryPrebuilt) +endif() + +list(FIND USCXML_CPACK_COMPONENTS "library" FOUND_ITEM) +if (FOUND_ITEM GREATER -1) + # define header description here as well + set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ headers ") + set(CPACK_COMPONENT_HEADERS_DESCRIPTION "C++ header files for USCXML and all its components.") + set(CPACK_COMPONENT_HEADERS_GROUP "Development") + + set(CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "C++ USCXML libraries") + set(CPACK_COMPONENT_LIBRARY_DESCRIPTION "Static libraries of the USCXML components for C++ development.") + set(CPACK_COMPONENT_LIBRARY_GROUP "Development") + set(CPACK_COMPONENT_LIBRARY_DEPENDS headers) + set(CPACK_COMPONENT_LIBRARY_DEPENDS libraryPrebuilt) +endif() + +set(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION "Libraries and Headers for USCXML.") diff --git a/contrib/cmake/FindArabica.cmake b/contrib/cmake/FindArabica.cmake index bd4fe18..fb5423d 100644 --- a/contrib/cmake/FindArabica.cmake +++ b/contrib/cmake/FindArabica.cmake @@ -1,5 +1,5 @@ FIND_PATH(ARABICA_INCLUDE_DIR Arabica/getparam.hpp - PATH_SUFFIXES include/arabica include + PATH_SUFFIXES arabica include PATHS /usr/local /usr @@ -10,12 +10,25 @@ FIND_PATH(ARABICA_INCLUDE_DIR Arabica/getparam.hpp HINTS $ENV{ARABICA_SRC} ) -FIND_LIBRARY(ARABICA_LIBRARY +FIND_LIBRARY(ARABICA_LIBRARY_RELEASE NAMES arabica HINTS $ENV{ARABICA_SRC}/src/.libs/ +) +FIND_LIBRARY(ARABICA_LIBRARY_DEBUG + NAMES arabica_d arabica_debug + HINTS $ENV{ARABICA_SRC}/src/.libs/ ) +if (ARABICA_LIBRARY_RELEASE AND NOT ARABICA_LIBRARY_DEBUG) + list(APPEND ARABICA_LIBRARY ${ARABICA_LIBRARY_RELEASE}) +elseif(ARABICA_LIBRARY_DEBUG AND NOT ARABICA_LIBRARY_RELEASE) + list(APPEND ARABICA_LIBRARY ${ARABICA_LIBRARY_DEBUG}) +elseif(ARABICA_LIBRARY_DEBUG AND ARABICA_LIBRARY_RELEASE) + list(APPEND ARABICA_LIBRARY optimized ${ARABICA_LIBRARY_RELEASE} debug ${ARABICA_LIBRARY_DEBUG}) +endif() + + INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Arabica DEFAULT_MSG ARABICA_LIBRARY ARABICA_INCLUDE_DIR) MARK_AS_ADVANCED(ARABICA_LIBRARY ARABICA_INCLUDE_DIR) diff --git a/contrib/cmake/FindCURLPP.cmake b/contrib/cmake/FindCURLPP.cmake new file mode 100644 index 0000000..853265d --- /dev/null +++ b/contrib/cmake/FindCURLPP.cmake @@ -0,0 +1,20 @@ +FIND_PATH(CURLPP_INCLUDE_DIR curlpp/cURLpp.hpp + PATH_SUFFIXES include + PATHS + /usr/local + /usr + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt + HINTS $ENV{CURLPP_SRC} +) + +FIND_LIBRARY(CURLPP_LIBRARY + NAMES curlpp + HINTS $ENV{CURLPP_SRC}/.libs/ +) + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(CURLPP DEFAULT_MSG CURLPP_LIBRARY CURLPP_INCLUDE_DIR) +MARK_AS_ADVANCED(CURLPP_LIBRARY CURLPP_INCLUDE_DIR) diff --git a/contrib/cmake/FindEVENT.cmake b/contrib/cmake/FindEVENT.cmake index 31e074c..6a47584 100644 --- a/contrib/cmake/FindEVENT.cmake +++ b/contrib/cmake/FindEVENT.cmake @@ -11,7 +11,7 @@ FIND_PATH(EVENT_INCLUDE_DIR event2/event.h ) FIND_LIBRARY(EVENT_LIBRARY - NAMES event + NAMES event libevent HINTS $ENV{EVENT_SRC}/.libs/ ) @@ -20,15 +20,9 @@ if (NOT WIN32) NAMES event_pthreads HINTS $ENV{EVENT_SRC}/.libs/ ) -else() - FIND_LIBRARY(EVENT_LIBRARY_THREADS - NAMES event_pthreads - HINTS $ENV{EVENT_SRC}/.libs/ - ) + list (APPEND EVENT_LIBRARY ${EVENT_LIBRARY_THREADS}) endif() -list (APPEND EVENT_LIBRARY ${EVENT_LIBRARY_THREADS}) - INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(EVENT DEFAULT_MSG EVENT_LIBRARY EVENT_INCLUDE_DIR) MARK_AS_ADVANCED(EVENT_LIBRARY EVENT_INCLUDE_DIR) diff --git a/contrib/cmake/FindGLOG.cmake b/contrib/cmake/FindGLOG.cmake index fee9d78..de7236f 100644 --- a/contrib/cmake/FindGLOG.cmake +++ b/contrib/cmake/FindGLOG.cmake @@ -10,10 +10,21 @@ FIND_PATH(GLOG_INCLUDE_DIR glog/logging.h HINTS $ENV{GLOG_SRC} ) -FIND_LIBRARY(GLOG_LIBRARY - NAMES glog +FIND_LIBRARY(GLOG_LIBRARY_RELEASE + NAMES glog libglog_static HINTS $ENV{GLOG_SRC}/.libs/ ) +if (GLOG_LIBRARY_RELEASE) + list(APPEND GLOG_LIBRARY optimized ${GLOG_LIBRARY_RELEASE}) +endif() + +FIND_LIBRARY(GLOG_LIBRARY_DEBUG + NAMES glog libglog_static_d + HINTS $ENV{GLOG_SRC}/.libs/ +) +if (GLOG_LIBRARY_DEBUG) + list(APPEND GLOG_LIBRARY debug ${GLOG_LIBRARY_DEBUG}) +endif() INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLOG DEFAULT_MSG GLOG_LIBRARY GLOG_INCLUDE_DIR) diff --git a/contrib/cmake/FindMiles.cmake b/contrib/cmake/FindMiles.cmake index 3166050..48649bc 100644 --- a/contrib/cmake/FindMiles.cmake +++ b/contrib/cmake/FindMiles.cmake @@ -93,7 +93,6 @@ foreach (_MILES_COMPONENT ${_MILES_COMPONENTS_TO_PROCESS}) if (${_CURR_COMPONENT}_DEBUG) list(APPEND MILES_LIBRARIES debug ${${_CURR_COMPONENT}_DEBUG}) else() - message("Searching miles_${_MILES_COMPONENT_LC}_d") FIND_LIBRARY(${_CURR_COMPONENT}_DEBUG PATH_SUFFIXES lib NAMES miles_${_MILES_COMPONENT_LC}_d diff --git a/contrib/cmake/FindUMUNDO.cmake b/contrib/cmake/FindUMUNDO.cmake index 06df54a..2bf9701 100644 --- a/contrib/cmake/FindUMUNDO.cmake +++ b/contrib/cmake/FindUMUNDO.cmake @@ -25,6 +25,16 @@ set(_UMUNDO_LIB_SEARCHPATH "/usr/local" "/opt/local" "C:/Program Files (x86)/uMundo" + "C:/Program Files/uMundo" +) + +################################################### +# find the umundo header files +################################################### +FIND_PATH(UMUNDO_INCLUDE_DIR umundo/core.h + PATH_SUFFIXES include + PATHS ${_UMUNDO_LIB_SEARCHPATH} + ENV UMUNDO_INCLUDE_DIR ) ################################################### @@ -35,17 +45,16 @@ foreach(_UMUNDO_COMPONENT ${UMUNDO_FIND_COMPONENTS}) STRING(TOUPPER ${_UMUNDO_COMPONENT} _UMUNDO_COMPONENT_UC) list(APPEND _UMUNDO_COMPONENTS_TO_PROCESS ${_UMUNDO_COMPONENT_UC}) endforeach() -list(APPEND _UMUNDO_COMPONENTS_TO_PROCESS "CORE") -list(REMOVE_DUPLICATES _UMUNDO_COMPONENTS_TO_PROCESS) -################################################### -# find the umundo header files -################################################### -FIND_PATH(UMUNDO_INCLUDE_DIR umundo/core.h - PATH_SUFFIXES include - PATHS ${_UMUNDO_LIB_SEARCHPATH} - ENV UMUNDO_INCLUDE_DIR -) +# is the convenience library requested? +list(FIND _UMUNDO_COMPONENTS_TO_PROCESS "CONVENIENCE" FOUND_ITEM) +if (FOUND_ITEM GREATER -1) + set(_UMUNDO_COMPONENTS_TO_PROCESS "CONVENIENCE") +else() + list(APPEND _UMUNDO_COMPONENTS_TO_PROCESS "CORE") +endif() + +list(REMOVE_DUPLICATES _UMUNDO_COMPONENTS_TO_PROCESS) ################################################### # iterate components and try to find libraries @@ -56,7 +65,12 @@ FIND_PATH(UMUNDO_INCLUDE_DIR umundo/core.h SET(UMUNDO_LIBRARIES) foreach (_UMUNDO_COMPONENT ${_UMUNDO_COMPONENTS_TO_PROCESS}) SET(_CURR_COMPONENT "UMUNDO_${_UMUNDO_COMPONENT}_LIBRARY") - STRING(TOLOWER ${_UMUNDO_COMPONENT}${64BIT_LIB_POSTFIX} _UMUNDO_COMPONENT_LC) + + if (_UMUNDO_COMPONENT STREQUAL "CONVENIENCE") + STRING(TOLOWER "${64BIT_LIB_POSTFIX}" _UMUNDO_COMPONENT_LC) + else() + STRING(TOLOWER ${_UMUNDO_COMPONENT}${64BIT_LIB_POSTFIX} _UMUNDO_COMPONENT_LC) + endif() # prefer MinSizeRel libraries FIND_LIBRARY(${_CURR_COMPONENT} diff --git a/contrib/cmake/FindV8.cmake b/contrib/cmake/FindV8.cmake index 6836fb3..4606e67 100644 --- a/contrib/cmake/FindV8.cmake +++ b/contrib/cmake/FindV8.cmake @@ -10,18 +10,25 @@ FIND_PATH(V8_INCLUDE_DIR v8.h HINTS $ENV{V8_SRC} ) -FIND_LIBRARY(V8_LIBRARY_BASE - NAMES v8_base +FIND_LIBRARY(V8_LIBRARY_BASE_RELEASE + NAMES v8_base v8 HINTS $ENV{V8_SRC}/out/native/ ) -list(APPEND V8_LIBRARY ${V8_LIBRARY_BASE}) +if (V8_LIBRARY_BASE_RELEASE) + list(APPEND V8_LIBRARY optimized ${V8_LIBRARY_BASE_RELEASE}) +endif() -FIND_LIBRARY(V8_LIBRARY_SNAPSHOT - NAMES v8_snapshot +FIND_LIBRARY(V8_LIBRARY_BASE_DEBUG + NAMES v8_base_d v8_d v8_base_g v8_g HINTS $ENV{V8_SRC}/out/native/ - ) -list(APPEND V8_LIBRARY ${V8_LIBRARY_SNAPSHOT}) +if (V8_LIBRARY_BASE_DEBUG) + list(APPEND V8_LIBRARY debug ${V8_LIBRARY_BASE_DEBUG}) +else() + if (UNIX) + list(APPEND V8_LIBRARY debug ${V8_LIBRARY_BASE_RELEASE}) + endif() +endif() INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(V8 DEFAULT_MSG V8_LIBRARY V8_INCLUDE_DIR) diff --git a/contrib/cmake/USCXMLMacros.cmake b/contrib/cmake/USCXMLMacros.cmake new file mode 100644 index 0000000..eb325e8 --- /dev/null +++ b/contrib/cmake/USCXMLMacros.cmake @@ -0,0 +1,58 @@ + +############################################################################## +# Provide custom install_* macros to account for all files +############################################################################## + +include(CMakeParseArguments) + +function(INSTALL_HEADERS) + set(options) + set(oneValueArgs COMPONENT) + set(multiValueArgs HEADERS) + cmake_parse_arguments(INSTALL_HEADERS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + FOREACH(HEADER ${INSTALL_HEADERS_HEADERS}) +# message(STATUS "ADDING HEADER ${HEADER}") + if (${HEADER} MATCHES "${CMAKE_BINARY_DIR}.*") + STRING(REGEX REPLACE "${CMAKE_BINARY_DIR}/uscxml/" "" REL_HEADER ${HEADER}) + STRING(REGEX MATCH "[^/\\](.*)[/\\]" REL_HEADER ${REL_HEADER}) + SET(REL_HEADER "uscxml/${REL_HEADER}") +# message(STATUS "MATCHED CMAKE_BINARY_DIR -> ${REL_HEADER}") + elseif(${HEADER} MATCHES "${PROJECT_SOURCE_DIR}.*") + STRING(REGEX REPLACE "${PROJECT_SOURCE_DIR}/src/" "" REL_HEADER ${HEADER}) +# message(STATUS "MATCHED PROJECT_SOURCE_DIR -> ${REL_HEADER}") + else() + message(STATUS "MATCHED no known prefix: ${HEADER}") + endif() + STRING(REGEX MATCH "(.*)[/\\]" DIR ${REL_HEADER}) +# message("ADDING ${HEADER} in include/${DIR} for ${INSTALL_HEADERS_COMPONENT}") + INSTALL(FILES ${HEADER} DESTINATION include/${DIR} COMPONENT ${INSTALL_HEADERS_COMPONENT}) + ENDFOREACH() +endfunction() + +function(INSTALL_FILES) + set(options) + set(oneValueArgs COMPONENT DESTINATION) + set(multiValueArgs FILES) + cmake_parse_arguments(INSTALL_FILE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + install(FILES ${INSTALL_FILE_FILES} DESTINATION ${INSTALL_FILE_DESTINATION} COMPONENT ${INSTALL_FILE_COMPONENT}) +endfunction() + +function(INSTALL_LIBRARY) + set(options) + set(oneValueArgs COMPONENT) + set(multiValueArgs TARGETS) + cmake_parse_arguments(INSTALL_LIBRARY "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + install(TARGETS ${INSTALL_LIBRARY_TARGETS} DESTINATION lib COMPONENT ${INSTALL_LIBRARY_COMPONENT}) +endfunction() + +function(INSTALL_EXECUTABLE) + set(options) + set(oneValueArgs COMPONENT) + set(multiValueArgs TARGETS) + cmake_parse_arguments(INSTALL_EXECUTABLE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + install( + TARGETS ${INSTALL_EXECUTABLE_TARGETS} + DESTINATION bin + COMPONENT ${INSTALL_EXECUTABLE_COMPONENT} + PERMISSIONS WORLD_EXECUTE OWNER_EXECUTE GROUP_EXECUTE OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) +endfunction() diff --git a/contrib/local/bcp-boost.sh b/contrib/local/bcp-boost.sh new file mode 100755 index 0000000..9f5450d --- /dev/null +++ b/contrib/local/bcp-boost.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +ME=`basename $0` +DIR="$( cd "$( dirname "$0" )" && pwd )" +CWD=`pwd` + +SOURCE_FILES=`find ${DIR}/../../src/ -name \*.h -print -o -name \*.cpp -print` +ARABICA_FILES=`find ${DIR}/../../contrib/prebuilt/include/arabica -name \*.hpp -print -o -name \*.cpp -print` + +# echo ${ARABICA_FILES} +# exit + +/Users/sradomski/Documents/TK/Code/boost_1_51_0/dist/bin/bcp \ +--boost=/Users/sradomski/Documents/TK/Code/boost_1_51_0 \ +--scan ${SOURCE_FILES} ${ARABICA_FILES} \ +${DIR}/../prebuilt/include + +rm -rf ${DIR}/../prebuilt/include/libs diff --git a/contrib/local/build-linux.expect b/contrib/local/build-linux.expect new file mode 100755 index 0000000..793d3d6 --- /dev/null +++ b/contrib/local/build-linux.expect @@ -0,0 +1,36 @@ +#!/usr/bin/expect + +set timeout 300 +set USCXML_BUILD_HOST $::env(USCXML_BUILD_HOST) + +set prompt "sradomski@" +append prompt ${USCXML_BUILD_HOST} +append prompt {:[a-zA-Z~\/\-]+\$ } + +eval spawn ping -c1 ${USCXML_BUILD_HOST}.local. +expect "cannot resolve" { puts "Host ${USCXML_BUILD_HOST}.local. not found"; exit } \ + -re $prompt { } + +eval spawn ssh ${USCXML_BUILD_HOST}.local. + +############################## +# uscxml in debug configuration +expect -re $prompt { send "rm -rf /tmp/build-uscxml && mkdir /tmp/build-uscxml && cd /tmp/build-uscxml\n" } +expect -re $prompt { send "cmake -DCMAKE_BUILD_TYPE=Debug -DDIST_PREPARE=ON /media/psf/Home/Documents/TK/Code/uscxml\n" } + +expect "download" { exp_continue } \ + -re $prompt { send "make -j2\n" } + +expect "Building CXX" { exp_continue } \ + "Linking CXX" { exp_continue } \ + -re $prompt { send "\n" } + +############################## +# uscxml in release configuration +expect -re $prompt { send "rm -rf /tmp/build-uscxml && mkdir /tmp/build-uscxml && cd /tmp/build-uscxml\n" } +expect -re $prompt { send "cmake -DCMAKE_BUILD_TYPE=Release -DDIST_PREPARE=ON /media/psf/Home/Documents/TK/Code/uscxml\n" } +expect -re $prompt { send "make\n" } + +expect "Building CXX" { exp_continue } \ + "Linking CXX" { exp_continue } \ + -re $prompt { exit } diff --git a/contrib/local/build-windows.expect b/contrib/local/build-windows.expect new file mode 100755 index 0000000..27ab7c0 --- /dev/null +++ b/contrib/local/build-windows.expect @@ -0,0 +1,202 @@ +#!/usr/bin/expect + +set timeout 600 +set USCXML_BUILD_HOST $::env(USCXML_BUILD_HOST) +set USCXML_BUILD_ARCH $::env(USCXML_BUILD_ARCH) + + +set local_prompt {sradomski$ } +set initial_remote_prompt "C*>" +# the default windows prompt is hard to recognize +set remote_prompt "easy_to_recognize" + +eval spawn ping -c1 ${USCXML_BUILD_HOST}.local. +expect "cannot resolve" { puts "Host ${USCXML_BUILD_HOST}.local. not found"; exit } \ + -re $local_prompt { } + +eval cd ~/Documents/TK/Code/ + +############################## +# prepare and deploy archive + +# check age of archive against modification date +eval spawn find ./uscxml -newer uscxml-win.tar +set redeploy 0; +expect { + "find:*No such file" { set redeploy 1; } + -re ".cpp\r\n" { set redeploy 1; } + -re "package\r\n" { set redeploy 1; } + -re ".h\r\n" { set redeploy 1; } + -re "CMakeLists.txt\r\n" { set redeploy 1; } + -re $local_prompt { } +} +#set redeploy 0; + +if {$redeploy} { +# eval spawn rm uscxml-win.tar +# eval spawn tar --exclude='__*' --exclude=uscxml/contrib/prebuilt/darwin --exclude=uscxml/docs/html --exclude=uscxml/examples/ios --exclude=uscxml/contrib/archives --exclude=uscxml/.git --exclude=uscxml/build* --exclude=uscxml/lib/ios-5.0 --exclude=uscxml/lib/linux* --exclude=uscxml/lib/darwin* --exclude=uscxml/installer/uMundo* --exclude=uscxml/contrib/prebuilt/linux* --exclude=uscxml/contrib/prebuilt/ios -cf uscxml-win.tar uscxml/ +eval spawn rm uscxml-win.zip +eval spawn zip -r uscxml-win.zip uscxml/ --exclude __\* uscxml/contrib/prebuilt/darwin\* uscxml/contrib/prebuilt/ios\* uscxml/contrib/prebuilt/linux\* uscxml/docs/html\* uscxml/examples/ios uscxml/contrib/archives\* uscxml/.git/\* uscxml/build\* uscxml/installer/uMundo* uscxml/contrib/prebuilt/linux* + expect { + "a uscxml/" { exp_continue } + timeout { puts "Timeout when packaging source code"; exit; } + -re $local_prompt { } + } + +# eval spawn scp -4 uscxml-win.tar sradomski@${USCXML_BUILD_HOST}.local:\\uscxml-win.tar + eval spawn scp -4 uscxml-win.zip sradomski@${USCXML_BUILD_HOST}.local:\\uscxml-win.zip + expect { + "ETA" { exp_continue } + "The authenticity" { send "yes\n"; exp_continue; } + timeout { puts "Timeout when uploading source code"; exit; } + -re $local_prompt { } + } +} + +############################## +# ssh into remote host + +eval spawn ssh -4 sradomski@${USCXML_BUILD_HOST}.local. +expect { + timeout { puts "Timeout when connecting to windows"; exit; } + "The authenticity" { send "yes\n"; } + -re $local_prompt { puts "Could not connect to remote host"; exit; } + -re $initial_remote_prompt { } +} + +send "set prompt=easy_to_recognize \r" +expect -re $remote_prompt + +# unpack archive if required +if {$redeploy} { + send "rmdir \/S \/Q uscxml\r" + expect -re $remote_prompt + +# send "tar xf uscxml-win.tar\r" + send "unzip uscxml-win.zip\r" + expect "uscxml/" { exp_continue } \ + -re $remote_prompt { } + +} + +# setup directories +send "rmdir \/S \/Q build-uscxml\r" +expect -re $remote_prompt +send "mkdir build-uscxml\r" +expect -re $remote_prompt +send "cd build-uscxml\r" +expect -re $remote_prompt + +############################## +# start cmd.exe and prepare for compiling +# send "cmd\n" +# expect -re $cmd_prompt + +# "c:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" +# send "\"c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat x86_amd64\"\n" +if { [string compare $USCXML_BUILD_ARCH 32] == 0 } { + send "\"c:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat\"\r" + expect -re $remote_prompt +} else { + send "\"c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat\" x86_amd64\r" + expect -re $remote_prompt +} +############################## +# compile in debug configuration + +send "\"cmake.exe\" -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Debug -DDIST_PREPARE=ON ..\\uscxml\r" + +expect "download" { exp_continue } \ + -re $remote_prompt { } + +send "nmake\r" +expect { + "Building" { exp_continue; } + "Linking" { exp_continue; } + "fatal error" { exit } + -re $remote_prompt { } +} + +# send "nmake java\r" +# expect { +# "Building" { exp_continue; } +# "Linking" { exp_continue; } +# "fatal error" { exit } +# -re $remote_prompt { } +# } +# +# send "nmake csharp\r" +# expect { +# "Building" { exp_continue; } +# "Linking" { exp_continue; } +# "fatal error" { exit } +# -re $remote_prompt { } +# } + +############################## +# compile in release configuration + +send "\"cmake\" -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Release -DDIST_PREPARE=ON ..\\uscxml\r" +expect -re $remote_prompt + +send "nmake\n\r" +expect { + timeout { puts "Timeout when building"; exit; } + "Building" { puts "Building"; exp_continue; } + "Scanning" { puts "Scanning"; exp_continue; } + "Linking" { puts "Linking"; exp_continue; } + "fatal error" { puts "Dying"; exit; } + -re $remote_prompt { puts "Continuing"; } +} + +# send "nmake java\n\r" +# expect { +# timeout { puts "Timeout when building"; exit; } +# "Building" { puts "Building"; exp_continue; } +# "Scanning" { puts "Scanning"; exp_continue; } +# "Linking" { puts "Linking"; exp_continue; } +# "fatal error" { puts "Dying"; exit; } +# -re $remote_prompt { puts "Continuing"; } +# } +# +# send "nmake csharp\n\r" +# expect { +# timeout { puts "Timeout when building"; exit; } +# "Building" { puts "Building"; exp_continue; } +# "Scanning" { puts "Scanning"; exp_continue; } +# "Linking" { puts "Linking"; exp_continue; } +# "fatal error" { puts "Dying"; exit; } +# -re $remote_prompt { puts "Continuing"; } +# } + +send "cd ..\r" +expect -re $remote_prompt + +if { [string compare $USCXML_BUILD_ARCH 32] == 0 } { + send "zip -r win-package-x86.zip uscxml\\package\\windows-x86\r" +} else { + send "zip -r win-package-x86_64.zip uscxml\\package\\windows-x86_64\r" +} + +send "exit\r" +expect -re $local_prompt +eval cd ~/Documents/TK/Code/ + +if { [string compare $USCXML_BUILD_ARCH 32] == 0 } { + eval spawn "scp epikur-win7.local:win-package-x86.zip ." + expect -re $local_prompt + eval spawn "unzip -o win-package-x86.zip" + expect -re $local_prompt + eval spawn "rm win-package-x86.zip" + expect -re $local_prompt + +} else { + eval spawn "scp epikur-win7-64.local:win-package-x86_64.zip ." + expect -re $local_prompt + eval spawn "unzip -o win-package-x86_64.zip" + expect -re $local_prompt + eval spawn "rm win-package-x86_64.zip" + expect -re $local_prompt +} + +exit diff --git a/contrib/local/compress_and_upload_deps.sh b/contrib/local/compress_and_upload_deps.sh new file mode 100755 index 0000000..c96ff0b --- /dev/null +++ b/contrib/local/compress_and_upload_deps.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -e + +ME=`basename $0` +DIR="$( cd "$( dirname "$0" )" && pwd )" +CWD=`pwd` + +cd $DIR + +if [ "$UMUNDO_PREBUILT_HOST" == "" ]; then + UMUNDO_PREBUILT_HOST="admin@umundo.tk.informatik.tu-darmstadt.de:/var/www/html/uscxml/prebuilt" +fi + +if [ "$1" == "" ] || [ "$2" == "" ]; then + echo "$ME " + exit +fi + +if [ ! -d $1 ]; then + echo "$1: no such directory" + exit +fi + +PLATFORM=`basename $1` +VERSION=$2 + +cd ../prebuilt + +tar cvzf uscxml-prebuilt-${PLATFORM}-${VERSION}.tgz ${PLATFORM} +scp uscxml-prebuilt-${PLATFORM}-${VERSION}.tgz ${UMUNDO_PREBUILT_HOST}/ +rm uscxml-prebuilt-${PLATFORM}-${VERSION}.tgz \ No newline at end of file diff --git a/contrib/local/make-dist.sh b/contrib/local/make-dist.sh new file mode 100755 index 0000000..1eacb48 --- /dev/null +++ b/contrib/local/make-dist.sh @@ -0,0 +1,145 @@ +#!/bin/bash + +ME=`basename $0` +DIR="$( cd "$( dirname "$0" )" && pwd )" + +# do not tar ._ files +export COPY_EXTENDED_ATTRIBUTES_DISABLE=1 +export COPYFILE_DISABLE=1 + +############################ +# Compile libraries +############################ + +cd ${DIR} + +./remove-dsstore-files.sh + +echo -n "Build uscxml for Linux 32Bit? [y/N]: "; read BUILD_LINUX32 +if [ "$BUILD_LINUX32" == "y" ] || [ "$BUILD_LINUX32" == "Y" ]; then + echo "Start the Linux 32Bit system named 'debian' and press return" && read + echo == BUILDING USCXML FOR Linux 32Bit ========================================================= + export USCXML_BUILD_HOST=debian + expect build-linux.expect +fi + +echo -n "Build uscxml for Linux 64Bit? [y/N]: "; read BUILD_LINUX64 +if [ "$BUILD_LINUX64" == "y" ] || [ "$BUILD_LINUX64" == "Y" ]; then + echo "Start the Linux 64Bit system named 'debian64' and press return" && read + echo == BUILDING USCXML FOR Linux 64Bit ========================================================= + export USCXML_BUILD_HOST=debian64 + expect build-linux.expect +fi + +# make sure to cross-compile before windows as we will copy all the files into the windows VM +echo -n "Build uscxml for iOS? [y/N]: "; read BUILD_IOS +if [ "$BUILD_IOS" == "y" ] || [ "$BUILD_IOS" == "Y" ]; then + echo == BUILDING USCXML FOR IOS ========================================================= + ${DIR}/../build-uscxml-ios.sh +fi + +echo -n "Build uscxml for Android? [y/N]: "; read BUILD_ANDROID +if [ "$BUILD_ANDROID" == "y" ] || [ "$BUILD_ANDROID" == "Y" ]; then + echo == BUILDING USCXML FOR Android ========================================================= + export ANDROID_NDK=~/Developer/SDKs/android-ndk-r8 + ${DIR}/../build-uscxml-android.sh +fi + +echo -n "Build uscxml for Windows 32Bit? [y/N]: "; read BUILD_WIN32 +if [ "$BUILD_WIN32" == "y" ] || [ "$BUILD_WIN32" == "Y" ]; then + echo "Start the Windows 32Bit system named 'epikur-win7' and press return" && read + echo == BUILDING USCXML FOR Windows 32Bit ========================================================= + export USCXML_BUILD_HOST=epikur-win7 + export USCXML_BUILD_ARCH=32 + # winsshd needs an xterm .. + TERM=xterm expect build-windows.expect +fi + +echo -n "Build uscxml for Windows 64Bit? [y/N]: "; read BUILD_WIN64 +if [ "$BUILD_WIN64" == "y" ] || [ "$BUILD_WIN64" == "Y" ]; then + echo "Start the Windows 64Bit system named 'epikur-win7-64' and press return" && read + echo == BUILDING USCXML FOR Windows 64Bit ========================================================= + export USCXML_BUILD_HOST=epikur-win7-64 + export USCXML_BUILD_ARCH=64 + # winsshd needs an xterm .. + TERM=xterm expect build-windows.expect +fi + +echo -n "Build uscxml for Mac OSX? [y/N]: "; read BUILD_MAC +if [ "$BUILD_MAC" == "y" ] || [ "$BUILD_MAC" == "Y" ]; then + echo == BUILDING USCXML FOR Mac OSX ========================================================= + rm -rf /tmp/build-uscxml + mkdir -p /tmp/build-uscxml + cd /tmp/build-uscxml + cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Debug ${DIR}/../.. + make -j2 + make -j2 java + cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Release ${DIR}/../.. + make -j2 + make -j2 java +fi + +############################ +# Create installers +############################ + +echo -n "Build packages for those platforms? [a/y/N]: "; read BUILD_PACKAGES +if [ "$BUILD_PACKAGES" == "y" ] || [ "$BUILD_PACKAGES" == "a" ]; then + + cd ${DIR} + + if [ "$BUILD_LINUX32" == "y" ] || [ "$BUILD_LINUX32" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then + echo Start the Linux 32Bit system named 'debian' again && read + echo == PACKAGING USCXML FOR Linux 32Bit ========================================================= + export USCXML_BUILD_HOST=debian + expect package-linux.expect + fi + + if [ "$BUILD_LINUX64" == "y" ] || [ "$BUILD_LINUX64" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then + echo Start the Linux 64Bit system named 'debian64' again && read + echo == PACKAGING USCXML FOR Linux 64Bit ========================================================= + export USCXML_BUILD_HOST=debian64 + expect package-linux.expect + fi + + if [ "$BUILD_WIN32" == "y" ] || [ "$BUILD_WIN32" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then + echo Start the Windows 32Bit system named 'epikur-win7' again && read + echo == PACKAGING USCXML FOR Windows 32Bit ========================================================= + export USCXML_BUILD_HOST=epikur-win7 + export USCXML_BUILD_ARCH=32 + TERM=xterm expect package-windows.expect + fi + + if [ "$BUILD_WIN64" == "y" ] || [ "$BUILD_WIN64" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then + echo Start the Windows 64Bit system named 'epikur-win7-64' again && read + echo == PACKAGING USCXML FOR Windows 64Bit ========================================================= + export USCXML_BUILD_HOST=epikur-win7-64 + export USCXML_BUILD_ARCH=64 + TERM=xterm expect package-windows.expect + fi + + if [ "$BUILD_MAC" == "y" ] || [ "$BUILD_MAC" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then + echo == PACKAGING USCXML FOR MacOSX ========================================================= + cd /tmp/build-uscxml + # rerun cmake for new cpack files + cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Release ${DIR}/../.. + make package + cp uscxml*darwin* ${DIR}/../../installer + cd ${DIR} + fi +fi + +############################ +# Validate installers +############################ + +expect validate-installers.expect + +############################ +# Create ReadMe.html +############################ + +echo -n "Create ReadMe.html? [y/N]: "; read CREATE_README +if [ "$CREATE_README" == "y" ]; then + ./make-installer-html-table.pl ${DIR}/../../installer > ${DIR}/../../installer/ReadMe.html +fi \ No newline at end of file diff --git a/contrib/local/make-installer-html-table.pl b/contrib/local/make-installer-html-table.pl new file mode 100755 index 0000000..6315404 --- /dev/null +++ b/contrib/local/make-installer-html-table.pl @@ -0,0 +1,245 @@ +#!/usr/bin/perl -w + +use strict; +use Cwd 'abs_path'; # abs_path +use Cwd; # getcwd +use File::Spec; # abs2rel +use Data::Dumper; # recursively dump data structures via Dumper($foo) +use File::Path; # make_path +use File::Path qw(make_path); +use File::Temp qw/ tempfile tempdir /; +use File::Basename; + +my $script_dir = dirname(abs_path($0)); +my $orig_cwd = getcwd; + +# get last version where we bumped the version string (ignoring pre, rc, beta ..) +my $cmake_edits = `git log --follow -p $script_dir/../../CMakeLists.txt`; +my $commit_hash; +foreach my $line (split("\n", $cmake_edits)) { + if ($line =~ /^commit ([\dabcdef]+)/) { + $commit_hash = $1; + } + last if ($commit_hash and $line =~ /\+SET\(UMUNDO_VERSION_PATCH \"\d+\"\)/); +} +my $change_log = `git log --pretty=format:"%H %h @@@ %ai: %s ### %b" $commit_hash..`; +# remove empty bodies +#$change_log =~ s/\n\n/\n/g; +# link to commit on github +$change_log =~ s/([\dabcdef]+) ([\dabcdef]+) @@@/$2<\/a>/g; +# put body below commit message +$change_log =~ s/###\s\n/\n/g; +$change_log =~ s/###\s/\n\n /g; +$change_log =~ s/\n([^<])/\n $1/g; + + +my $installer_dir = shift or die("Expected directory as first argument\n"); +if (!File::Spec->file_name_is_absolute($installer_dir)) { + $installer_dir = File::Spec->rel2abs($installer_dir, getcwd); +} + +my $descriptions = { + './bin/protoc-umundo-cpp-rpc.*' => 'ProtoBuf RPC plugin for C++', + './bin/protoc-umundo-java-rpc.*' => 'ProtoBuf RPC plugin for Java', + './bin/umundo-monitor.*' => 'Diagnosis tool (somewhat unmaintained)', + './bin/umundo-pingpong.*' => 'Test deployments (i=incoming, o=outgoing)', + './include/umundo/core.h' => 'C++ headers for core layer', + './include/umundo/rpc.h' => 'C++ headers for remote procedure calls', + './include/umundo/s11n.h' => 'C++ headers for object serialization', + './include/umundo/util.h' => 'C++ headers for utilities', + './lib' => 'Pure C++ libraries', + './lib/libumundoNativeJava[\.6].*' => 'SWIG generated JNI wrapper (included in JAR)', + './lib/libumundocore[\.6].*' => 'C++ library for core', + './lib/libumundorpc[\.6].*' => 'C++ library for remote procedure calls', + './lib/libumundoserial[\.6].*' => 'C++ library for serialization', + './lib/libumundoutil[\.6].*' => 'C++ library with utilities', + './lib/umundo-monitor.lib' => 'not sure', + './lib/umundo-pingpong.lib' => 'not sure', + './lib/umundoNativeCSharp[\.6].*' => 'SWIG generated C# backend for DLLInvoke', + './share/umundo/android-8' => 'Cross compiled binaries for Android', + './share/umundo/android-8/armv5te/libumundoNativeJava.so' => 'SWIG generated JNI wrapper', + './share/umundo/android-8/umundo.jar' => 'JAR for Android (without JNI inside)', + './share/umundo/lib/umundo.jar' => 'JAR for desktops (auto-loading JNI code inside)', + './share/umundo/lib/umundoCSharp.dll' => 'C# library with managed code', + './share/umundo/prebuilt' => 'Prebuilt libraries in case we forgot something', + './share/umundo/samples' => 'Sample programs and IDE templates', + './share/umundo/samples/android' => 'Sample programs for Android', + './share/umundo/samples/android/umundo-pingpong/libs' => 'These are just placehoders!', + './share/umundo/samples/android/umundo-pingpong/libs/armeabi/libumundoNativeJava.so' => 'Replace with real library from above!', + './share/umundo/samples/android/umundo-pingpong/libs/armeabi/libumundoNativeJava_d.so' => 'Replace with real library from above!', + './share/umundo/samples/android/umundo-pingpong/libs/umundo.jar' => 'Replace with real library from above!', + './share/umundo/samples/csharp' => 'Sample programs for C#', + './share/umundo/samples/csharp/umundo-pingpong' => 'The simplest umundo program in C#', + './share/umundo/samples/csharp/umundo-s11ndemo' => 'Serialization in C# (Dirk is working on it)', + './share/umundo/samples/csharp/umundo.s11n' => 'My initial attempts at serialization with C# (deprecated)', + './share/umundo/samples/ios' => 'Sample programs for iOS', + './share/umundo/samples/ios/umundo-pingpong' => 'The simplest umundo program for iOS', + './share/umundo/samples/java' => 'Sample programs for Java', + './share/umundo/samples/java/core/chat' => 'Chat using the core layer', + './share/umundo/samples/java/core/chat/build.properties' => 'Adapt these for your system', + './share/umundo/samples/java/rpc/chat' => 'Chat using the RPC layer', + './share/umundo/samples/java/rpc/chat/build.properties' => 'Adapt these for your system', + './share/umundo/samples/java/rpc/chat/proto/ChatS11N.proto' => 'ProtoBuf file for chat services', + './share/umundo/samples/java/s11n/chat' => 'Chat using the serialization layer', + './share/umundo/samples/java/s11n/chat/build.properties' => 'Adapt these for your system', + './share/umundo/samples/java/s11n/chat/proto/ChatS11N.proto' => 'ProtoBuf file for chat message objects', + './share/umundo/samples/cpp' => 'Sample programs for C++', + './share/umundo/samples/cpp/core/chat' => 'Chat using the core layer', + './share/umundo/samples/cpp/rpc/chat' => 'Chat using the RPC layer', + './share/umundo/samples/cpp/s11n/chat' => 'Chat using the serialization layer', + './share/umundo/samples/cpp/s11n/chat/proto/ChatS11N.proto' => 'ProtoBuf file for chat message objects', + './share/umundo/samples/cpp/rpc/chat/proto/ChatS11N.proto' => 'ProtoBuf file for chat services', + './share/umundo/cmake/FindUMundo.cmake' => 'CMake module to find umundo once it is installed', + './share/umundo/cmake/UseUMundo.cmake' => 'CMake macros for protobuf', +}; + +my ($mac_archive, $linux32_archive, $linux64_archive, $win32_archive, $win64_archive); +my ($mac_files, $linux32_files, $linux64_files, $win32_files, $win64_files); + +chdir $installer_dir; +foreach (sort <*>) { + next if m/^\./; + $mac_archive = File::Spec->rel2abs($_, getcwd) if (m/.*darwin.*\.tar\.gz/i); + $linux32_archive = File::Spec->rel2abs($_, getcwd) if (m/.*linux-i686.*\.tar\.gz/i); + $linux64_archive = File::Spec->rel2abs($_, getcwd) if (m/.*linux-x86_64.*\.tar\.gz/i); + $win32_archive = File::Spec->rel2abs($_, getcwd) if (m/.*windows-x86-.*\.zip/i); + $win64_archive = File::Spec->rel2abs($_, getcwd) if (m/.*windows-x86_64.*\.zip/i); +} + +print STDERR "No archive for MacOSX found!\n" if (!$mac_archive); +print STDERR "No archive for Linux 32Bit found!\n" if (!$linux32_archive); +print STDERR "No archive for Linux 64Bit found!\n" if (!$linux64_archive); +print STDERR "No archive for Windows 32Bit found!\n" if (!$win32_archive); +print STDERR "No archive for Windows 64Bit found!\n" if (!$win64_archive); + +$mac_archive =~ m/.*darwin-i386-(.*)\.tar\.gz/; +my $version = $1; + +# make a hash remove first element split into array at newline +%{$mac_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `tar tzf $mac_archive`) if $mac_archive; +%{$linux32_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `tar tzf $linux32_archive`) if $linux32_archive; +%{$linux64_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `tar tzf $linux64_archive`) if $linux64_archive; +%{$win32_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `unzip -l $win32_archive`) if $win32_archive; +%{$win64_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `unzip -l $win64_archive`) if $win64_archive; + +# print Dumper($mac_files); +# exit; +my $tmpdir = File::Temp->newdir() or die($!); +#print STDERR $tmpdir."\n"; +chdir $tmpdir or die($!); + +system("tar", "xzf", $mac_archive) if $mac_archive; +system("tar", "xzf", $linux32_archive) if $linux32_archive; +system("tar", "xzf", $linux64_archive) if $linux64_archive; +system("unzip", "-q", $win32_archive) if $win32_archive; +system("unzip", "-q", $win64_archive) if $win64_archive; + +my $rv; +mkdir("content") or die($!); +foreach (sort <*>) { + next if m/^\./; + next if m/.*content/; + if ($_ !~ /.*windows.*/i) { + $rv = `ditto $_/usr/local content`; + } else { + $rv = `ditto $_ content`; + } + $rv = `rm -rf $_`; +} + +# remove duplicates and uninteresting directories +# $rv = `rm -rf content/bin/protoc-umundo-cpp-rpc.exe`; +# $rv = `rm -rf content/bin/protoc-umundo-java-rpc.exe`; +# $rv = `rm -rf content/bin/umundo-monitor.exe`; +# $rv = `rm -rf content/bin/umundo-pingpong.exe`; + +$rv = `rm -rf content/include/umundo/common`; +$rv = `rm -rf content/include/umundo/connection`; +$rv = `rm -rf content/include/umundo/discovery`; +$rv = `rm -rf content/include/umundo/protobuf`; +$rv = `rm -rf content/include/umundo/rpc`; +$rv = `rm -rf content/include/umundo/s11n`; +$rv = `rm -rf content/include/umundo/thread`; +$rv = `rm -rf content/include/umundo/util`; +$rv = `rm -rf content/include/umundo-objc`; + +chdir "content/" or die($!); + +my $tree_list = `tree -a -h --noreport --charset ISO-8859-1`; +my $flat_list = `find -s .`; + +print ''."\n"; + +print '

Changelog

'."\n"; +print '
'."\n";
+print $change_log;
+print '
'."\n"; + +print '

Contents

'; +print <The following table is an excerpt of all the files in the individual installer +packages (detailled C++ headers are not shown). All the different archives/installers +for a given platform contain the same files, it is only a matter of taste and +convenience. There are differences between the contents for each platform though +and they are listed in the availability column.

+ +

Mac are all the darwin installers, L32 and L64 is short for Linux 32 and 64Bit +respectively, same with W32 and W64 for Windows. Only the first occurence of a +library is commented, the _d suffix signifies debug libraries, the 64 +suffix is for 64Bit builds and the Windows libraries have no lib prefix.

+ +EOF +print ''."\n"; +print ''; +print ''."\n"; +print '
AvailabilityFilenameDescription
'."\n"; +print '
'."\n";
+
+foreach my $file (split("\n", $flat_list)) {
+	if ($file eq '.') {
+		print 'MAC|L32|L64|W32|W64'."\n";
+		next;
+	}
+	if (-d $file) {
+		print "\n";
+		next;
+	}
+	$file =~ s/\.\///;
+#	print STDERR $file."\n";
+	(exists($mac_files->{"usr/local/$file"}) ? print " X  " : print " -  ");
+	(exists($linux32_files->{"usr/local/$file"}) ? print " X  " : print " -  ");
+	(exists($linux64_files->{"usr/local/$file"}) ? print " X  " : print " -  ");
+	(exists($win32_files->{"$file"}) ? print " X  " : print " -  ");
+	(exists($win64_files->{"$file"}) ? print " X  " : print " -  ");
+	print "\n";
+}
+
+print '
'."\n"; +print '
'."\n"; +print '
'."\n";
+
+print $tree_list;
+
+print '
'."\n"; +print '
'."\n"; +print '
'."\n";
+
+foreach my $file (split("\n", $flat_list)) {
+	my $has_description = 0;
+	foreach my $desc (keys %{$descriptions}) {
+		if ($file =~ /^$desc$/) {
+			print $descriptions->{$desc}."\n";
+			delete $descriptions->{$desc};
+			$has_description = 1;
+		}
+	}
+	if (!$has_description) {
+		print "\n";
+	}
+}
+
+print '
'."\n"; +print '
'."\n"; +print ''."\n"; + +chdir $orig_cwd; \ No newline at end of file diff --git a/contrib/local/package-linux.expect b/contrib/local/package-linux.expect new file mode 100644 index 0000000..2685981 --- /dev/null +++ b/contrib/local/package-linux.expect @@ -0,0 +1,33 @@ +#!/usr/bin/expect -d + +set USCXML_BUILD_HOST $::env(USCXML_BUILD_HOST) +set timeout 150 + +set local_prompt {sradomski$ } +set prompt "sradomski@" +append prompt ${USCXML_BUILD_HOST} +append prompt {:[a-zA-Z~\/\-]+\$ } + +eval spawn ping -c1 ${USCXML_BUILD_HOST}.local. +expect "cannot resolve" { puts "Host ${USCXML_BUILD_HOST}.local. not found"; exit } \ + -re $local_prompt { } + +eval spawn ssh ${USCXML_BUILD_HOST}.local. +expect -re $prompt { send "cd /tmp/build-uscxml\n" } +expect -re $prompt { send "cmake -DCMAKE_BUILD_TYPE=Release -DDIST_PREPARE=ON /media/psf/Home/Documents/TK/Code/uscxml\n" } + +expect -re $prompt { send "make package\n" } + +expect "CPack" { exp_continue; } \ + -re $prompt { send "logout\n" } + +############################## +# exit and copy packages + +expect -re $local_prompt +eval cd ~/Documents/TK/Code/ + +eval spawn "scp -r ${USCXML_BUILD_HOST}.local:/tmp/build-uscxml/uscxml-linux* uscxml/installer/" +expect -re $local_prompt + +exit diff --git a/contrib/local/package-windows.expect b/contrib/local/package-windows.expect new file mode 100755 index 0000000..8aa4ac8 --- /dev/null +++ b/contrib/local/package-windows.expect @@ -0,0 +1,77 @@ +#!/usr/bin/expect + +set timeout 600 +set USCXML_BUILD_HOST $::env(USCXML_BUILD_HOST) +set USCXML_BUILD_ARCH $::env(USCXML_BUILD_ARCH) + +set local_prompt {sradomski$ } +eval spawn ping -c1 ${USCXML_BUILD_HOST}.local. +expect "cannot resolve" { puts "Host ${USCXML_BUILD_HOST}.local. not found"; exit } \ + -re $local_prompt { } + +set initial_remote_prompt "C*>" +# the default windows prompt is hard to recognize +set remote_prompt "easy_to_recognize" + +eval spawn scp -4 -r ../../package sradomski@epikur-win7.local:uscxml +expect { + "100" { exp_continue } + "The authenticity" { send "yes\n"; exp_continue; } + timeout { puts "Timeout when uploading source code"; exit; } + -re $local_prompt { } +} + +############################## +# ssh into remote host + +eval spawn ssh -4 sradomski@${USCXML_BUILD_HOST}.local. +expect { + timeout { puts "Timeout when connecting to windows"; exit; } + "The authenticity" { send "yes\n"; } + -re $local_prompt { puts "Could not connect to remote host"; exit; } + -re $initial_remote_prompt { } +} + +send "set prompt=easy_to_recognize \r" +expect -re $remote_prompt + +send "cd build-uscxml\r" +expect -re $remote_prompt + +if { [string compare $USCXML_BUILD_ARCH 32] == 0 } { + send "\"c:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat\"\r" + expect -re $remote_prompt +} else { + send "\"c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat\" x86_amd64\r" + expect -re $remote_prompt +} + +############################## +# package + +send "\"cmake.exe\" -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Release -DDIST_PREPARE=ON ..\\uscxml\r" +expect -re $remote_prompt + +send "nmake package\r" +expect { + -re $remote_prompt {} + "Built target" { exp_continue; } + "CPack" { exp_continue; } +} + +############################## +# exit and copy packages + +send "exit\r" +expect -re $local_prompt + +eval cd ~/Documents/TK/Code/ + +if { [string compare $USCXML_BUILD_ARCH 32] == 0 } { + eval spawn "scp -r epikur-win7.local:build-uscxml\\\\uscxml-windows* uscxml/installer/" +} else { + eval spawn "scp -r epikur-win7-64.local:build-uscxml\\\\uscxml-windows* uscxml/installer/" +} +expect -re $local_prompt + +exit diff --git a/contrib/local/remove-dsstore-files.sh b/contrib/local/remove-dsstore-files.sh new file mode 100755 index 0000000..50cbb3a --- /dev/null +++ b/contrib/local/remove-dsstore-files.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +ME=`basename $0` +DIR="$( cd "$( dirname "$0" )" && pwd )" +CWD=`pwd` + +find ${DIR}/../.. -name '.DS_Store' -exec rm {} \; \ No newline at end of file diff --git a/contrib/local/validate-installers.expect b/contrib/local/validate-installers.expect new file mode 100755 index 0000000..7022b37 --- /dev/null +++ b/contrib/local/validate-installers.expect @@ -0,0 +1,317 @@ +#!/usr/bin/expect + +## way more verbose: +#!/usr/bin/expect -d + +set timeout 2; +set local_prompt {easy_to_recognize} +log_user 0 +eval spawn /bin/bash +expect -re {bash.*$} {} +send "export PS1=easy_to_recognize\n" +expect -re $local_prompt +expect -re $local_prompt + +proc checkArchive {listCommand label listOfFiles} { + upvar 1 local_prompt local_prompt + set reqFiles [lsort $listOfFiles] + + puts "Validating $label installer via $listCommand" + + log_user 0 + send "$listCommand 1>/dev/null\n" + expect { + "cannot find" { puts " Cannot find archive for $label"; puts " Not OK"; return; } + "Error opening" { puts " Cannot find archive for $label"; return; } + -re $local_prompt { } + } + + send "$listCommand |sort\n" + foreach {file} $reqFiles { + set relist 1; + expect { + -re $file { } + -re $local_prompt { + if {$relist} { + send "$listCommand |sort\n"; + set relist 0; + exp_continue; + } else { + puts " Cannot find $file in $label installer"; exit; + } + } + } + } + expect -re $local_prompt + puts " Archive OK" +} + +set reqFilesCSharpProject { + "samples/csharp/umundo-pingpong/umundo-pingpong.sln" + "samples/csharp/umundo-pingpong/umundo-pingpong.suo" + "samples/csharp/umundo-pingpong/umundo-pingpong/Program.cs" + "samples/csharp/umundo-pingpong/umundo-pingpong/umundo-pingpong.csproj" + "samples/csharp/umundo-pingpong/umundo-pingpong/umundo-pingpong.csproj.user" + "samples/csharp/umundo-pingpong/umundo-pingpong/Properties/AssemblyInfo.cs" +} + +set reqFilesXCodeProject { + "samples/ios/umundo-pingpong/AppDelegate.h" + "samples/ios/umundo-pingpong/AppDelegate.mm" + "samples/ios/umundo-pingpong/main.m" + "samples/ios/umundo-pingpong/umundo-pingpong-Info.plist" + "samples/ios/umundo-pingpong/ViewController.h" + "samples/ios/umundo-pingpong/ViewController.m" + "samples/ios/umundo-pingpong.xcodeproj/project.pbxproj" + "samples/ios/umundo-pingpong.xcodeproj/project.xcworkspace" +} + +set reqFilesAndroidProject { + "samples/android/umundo-pingpong/AndroidManifest.xml" + "samples/android/umundo-pingpong/project.properties" + "samples/android/umundo-pingpong/src/org/umundo/samples/UMundoAndroidActivity.java" +} + +set reqFilesDesktopCommonUnix { + "/usr/local/bin/protoc-umundo-cpp-rpc" + "/usr/local/bin/protoc-umundo-java-rpc" + "/usr/local/bin/umundo-pingpong" + "/usr/local/bin/umundo-monitor" + "/usr/local/share/umundo/java/umundo.jar" +} + +set reqFilesAndroid { + "/share/umundo/android-.*/armv.*/libumundoNativeJava.so" + "/share/umundo/android-.*/armv.*/libumundoNativeJava_d.so" + "/share/umundo/android-.*/umundo.jar" +} + +set reqFilesJavaSamples { + "samples/java/core/chat/build.properties" + "samples/java/core/chat/build.xml" + "samples/java/core/chat/src/org/umundo/Chat.java" + "samples/java/rpc/chat/build.properties" + "samples/java/rpc/chat/build.xml" + "samples/java/rpc/chat/proto/ChatS11N.proto" + "samples/java/rpc/chat/src/org/umundo/Chat.java" + "samples/java/s11n/chat/build.properties" + "samples/java/s11n/chat/build.xml" + "samples/java/s11n/chat/proto/ChatS11N.proto" + "samples/java/s11n/chat/src/org/umundo/Chat.java" +} + +set reqFilesCPPSamples { + "samples/cpp/core/chat/CMakeLists.txt" + "samples/cpp/core/chat/src/Chat.cpp" + "samples/cpp/core/chat/src/Chat.h" + "samples/cpp/rpc/chat/CMakeLists.txt" + "samples/cpp/rpc/chat/proto/ChatS11N.proto" + "samples/cpp/rpc/chat/src/Chat.cpp" + "samples/cpp/rpc/chat/src/Chat.h" + "samples/cpp/s11n/chat/CMakeLists.txt" + "samples/cpp/s11n/chat/proto/ChatS11N.proto" + "samples/cpp/s11n/chat/src/Chat.cpp" + "samples/cpp/s11n/chat/src/Chat.h" +} + +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libmDNSEmbedded.a" +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libmDNSEmbedded.so" +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libmDNSEmbedded_d.a" +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libmDNSEmbedded_d.so" +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libpcre.a" +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libpcre_d.a" +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libpcreposix.a" +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libpcreposix_d.a" +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libzmq.a" +# "/share/umundo/prebuilt/android/arm-linux-androideabi/libzmq_d.a" + + +set reqFilesIOS { + "/usr/local/share/umundo/ios-.*/libumundo.ios.a" + "/usr/local/share/umundo/ios-.*/libumundo_d.ios.a" + + "/usr/local/share/umundo/deps/ios/.*/libpcreposix.a" + "/usr/local/share/umundo/deps/ios/.*/libpcrecpp.a" + "/usr/local/share/umundo/deps/ios/.*/libpcre.a" + "/usr/local/share/umundo/deps/ios/.*/libprotobuf-lite.a" + "/usr/local/share/umundo/deps/ios/.*/libprotobuf.a" + "/usr/local/share/umundo/deps/ios/.*/libprotoc.a" + "/usr/local/share/umundo/deps/ios/.*/libzmq.a" +} + +# "/usr/local/share/umundo/ios-.*/libumundocore.ios.a" +# "/usr/local/share/umundo/ios-.*/libumundocore_d.ios.a" +# "/usr/local/share/umundo/ios-.*/libumundoserial.ios.a" +# "/usr/local/share/umundo/ios-.*/libumundoserial_d.ios.a" +# "/usr/local/share/umundo/ios-.*/libumundorpc.ios.a" +# "/usr/local/share/umundo/ios-.*/libumundorpc_d.ios.a" +# "/usr/local/share/umundo/ios-.*/libumundoutil.ios.a" +# "/usr/local/share/umundo/ios-.*/libumundoutil_d.ios.a" + +############################# +# Validate Mac installers +############################# +log_user 0 +set reqFilesMac { + "/usr/local/include/umundo/s11n.h" + "/usr/local/include/umundo/core.h" + "/usr/local/include/umundo/rpc.h" + "/usr/local/include/umundo/util.h" + + "/usr/local/lib/libumundo64.dylib" + "/usr/local/lib/libumundo64_d.dylib" + "/usr/local/lib/libumundocore64.dylib" + "/usr/local/lib/libumundocore64_d.dylib" + "/usr/local/lib/libumundoserial64.dylib" + "/usr/local/lib/libumundoserial64_d.dylib" + "/usr/local/lib/libumundorpc64.dylib" + "/usr/local/lib/libumundorpc64_d.dylib" + "/usr/local/lib/libumundoutil64.dylib" + "/usr/local/lib/libumundoutil64_d.dylib" + "/usr/local/lib/libumundoNativeJava64.jnilib" + "/usr/local/lib/libumundoNativeJava64_d.jnilib" +} + +set reqFilesMac [concat $reqFilesMac $reqFilesAndroid $reqFilesIOS $reqFilesDesktopCommonUnix $reqFilesXCodeProject $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples] +set reqFilesMac [lsort $reqFilesMac] +checkArchive "tar tzf ../../installer/umundo-darwin-*.tar.gz" Mac $reqFilesMac + +############################# +# Validate Linux32 installers +############################# + +log_user 0 +set reqFilesLinux32 { + "/usr/local/bin/protoc-umundo-cpp-rpc" + "/usr/local/bin/umundo-pingpong" + "/usr/local/bin/umundo-monitor" + + "/usr/local/include/umundo/s11n.h" + "/usr/local/include/umundo/core.h" + "/usr/local/include/umundo/rpc.h" + "/usr/local/include/umundo/util.h" + + "/usr/local/lib/libumundo.so" + "/usr/local/lib/libumundo_d.so" + "/usr/local/lib/libumundocore.so" + "/usr/local/lib/libumundocore_d.so" + "/usr/local/lib/libumundoserial.so" + "/usr/local/lib/libumundoserial_d.so" + "/usr/local/lib/libumundorpc.so" + "/usr/local/lib/libumundorpc_d.so" + "/usr/local/lib/libumundoutil.so" + "/usr/local/lib/libumundoutil_d.so" + "/usr/local/lib/libumundoNativeJava.so" + "/usr/local/lib/libumundoNativeJava_d.so" + + "/usr/local/share/umundo/java/umundo.jar" +} +set reqFilesLinux32 [concat $reqFilesLinux32 $reqFilesDesktopCommonUnix $reqFilesAndroid $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples] +set reqFilesLinux32 [lsort $reqFilesLinux32] +checkArchive "tar tzf ../../installer/umundo-linux-i686-*.tar.gz" Linux32 $reqFilesLinux32 + +############################# +# Validate Linux64 installers +############################# + +log_user 0 +set reqFilesLinux64 { + "/usr/local/bin/protoc-umundo-cpp-rpc" + "/usr/local/bin/umundo-pingpong" + "/usr/local/bin/umundo-monitor" + + "/usr/local/include/umundo/s11n.h" + "/usr/local/include/umundo/core.h" + "/usr/local/include/umundo/rpc.h" + "/usr/local/include/umundo/util.h" + + "/usr/local/lib/libumundo64.so" + "/usr/local/lib/libumundo64_d.so" + "/usr/local/lib/libumundocore64.so" + "/usr/local/lib/libumundocore64_d.so" + "/usr/local/lib/libumundoserial64.so" + "/usr/local/lib/libumundoserial64_d.so" + "/usr/local/lib/libumundorpc64.so" + "/usr/local/lib/libumundorpc64_d.so" + "/usr/local/lib/libumundoutil64.so" + "/usr/local/lib/libumundoutil64_d.so" + "/usr/local/lib/libumundoNativeJava64.so" + "/usr/local/lib/libumundoNativeJava64_d.so" + + "/usr/local/share/umundo/java/umundo.jar" +} +set reqFilesLinux64 [concat $reqFilesLinux64 $reqFilesDesktopCommonUnix $reqFilesAndroid $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples] +set reqFilesLinux64 [lsort $reqFilesLinux64] +checkArchive "tar tzf ../../installer/umundo-linux-x86_64-*.tar.gz" Linux64 $reqFilesLinux64 + +############################# +# Validate Win32 installers +############################# + +log_user 0 +set reqFilesWin32 { + "/bin/protoc-umundo-cpp-rpc.exe" + "/bin/umundo-pingpong.exe" + "/bin/umundo-monitor.exe" + + "/include/umundo/s11n.h" + "/include/umundo/core.h" + "/include/umundo/rpc.h" + "/include/umundo/util.h" + + "/lib/umundo.lib" + "/lib/umundo_d.lib" + "/lib/umundocore.lib" + "/lib/umundocore_d.lib" + "/lib/umundoserial.lib" + "/lib/umundoserial_d.lib" + "/lib/umundorpc.lib" + "/lib/umundorpc_d.lib" + "/lib/umundoutil.lib" + "/lib/umundoutil_d.lib" + "/lib/umundoNativeCSharp.dll" + "/lib/umundoNativeCSharp_d.dll" + "/lib/umundoNativeJava.dll" + "/lib/umundoNativeJava_d.dll" +} +set reqFilesWin32 [concat $reqFilesWin32 $reqFilesAndroid $reqFilesCSharpProject $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples] +set reqFilesWin32 [lsort $reqFilesWin32] +checkArchive "unzip -l ../../installer/umundo-windows-x86-*.zip" Win32 $reqFilesWin32 + +############################# +# Validate Win64 installers +############################# + +log_user 0 +set reqFilesWin64 { + "/bin/protoc-umundo-cpp-rpc.exe" + "/bin/umundo-pingpong.exe" + "/bin/umundo-monitor.exe" + + "/include/umundo/s11n.h" + "/include/umundo/core.h" + "/include/umundo/rpc.h" + "/include/umundo/util.h" + + "/lib/umundo64.lib" + "/lib/umundo64_d.lib" + "/lib/umundocore64.lib" + "/lib/umundocore64_d.lib" + "/lib/umundoserial64.lib" + "/lib/umundoserial64_d.lib" + "/lib/umundorpc64.lib" + "/lib/umundorpc64_d.lib" + "/lib/umundoutil64.lib" + "/lib/umundoutil64_d.lib" + "/lib/umundoNativeCSharp64.dll" + "/lib/umundoNativeCSharp64_d.dll" + "/lib/umundoNativeJava64.dll" + "/lib/umundoNativeJava64_d.dll" +} +set reqFilesWin64 [concat $reqFilesWin64 $reqFilesAndroid $reqFilesCSharpProject $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples] +set reqFilesWin64 [lsort $reqFilesWin64] +checkArchive "unzip -l ../../installer/umundo-windows-x86_64-*.zip" Win64 $reqFilesWin64 + +expect $local_prompt +send "logout\n" +exit \ No newline at end of file diff --git a/contrib/prebuilt/README.md b/contrib/prebuilt/README.md new file mode 100644 index 0000000..81196cd --- /dev/null +++ b/contrib/prebuilt/README.md @@ -0,0 +1,3 @@ +# Prebuilt Libraries + +This directory will be populated by prebuilt libraries at configure time from CMake. \ No newline at end of file diff --git a/contrib/prebuilt/include/AL/al.h b/contrib/prebuilt/include/AL/al.h new file mode 100644 index 0000000..413b383 --- /dev/null +++ b/contrib/prebuilt/include/AL/al.h @@ -0,0 +1,656 @@ +#ifndef AL_AL_H +#define AL_AL_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#ifndef AL_API + #if defined(AL_LIBTYPE_STATIC) + #define AL_API + #elif defined(_WIN32) + #define AL_API __declspec(dllimport) + #else + #define AL_API extern + #endif +#endif + +#if defined(_WIN32) + #define AL_APIENTRY __cdecl +#else + #define AL_APIENTRY +#endif + + +/** Deprecated macro. */ +#define OPENAL +#define ALAPI AL_API +#define ALAPIENTRY AL_APIENTRY +#define AL_INVALID (-1) +#define AL_ILLEGAL_ENUM AL_INVALID_ENUM +#define AL_ILLEGAL_COMMAND AL_INVALID_OPERATION + +/** Supported AL version. */ +#define AL_VERSION_1_0 +#define AL_VERSION_1_1 + +/** 8-bit boolean */ +typedef char ALboolean; + +/** character */ +typedef char ALchar; + +/** signed 8-bit 2's complement integer */ +typedef signed char ALbyte; + +/** unsigned 8-bit integer */ +typedef unsigned char ALubyte; + +/** signed 16-bit 2's complement integer */ +typedef short ALshort; + +/** unsigned 16-bit integer */ +typedef unsigned short ALushort; + +/** signed 32-bit 2's complement integer */ +typedef int ALint; + +/** unsigned 32-bit integer */ +typedef unsigned int ALuint; + +/** non-negative 32-bit binary integer size */ +typedef int ALsizei; + +/** enumerated 32-bit value */ +typedef int ALenum; + +/** 32-bit IEEE754 floating-point */ +typedef float ALfloat; + +/** 64-bit IEEE754 floating-point */ +typedef double ALdouble; + +/** void type (for opaque pointers only) */ +typedef void ALvoid; + + +/* Enumerant values begin at column 50. No tabs. */ + +/** "no distance model" or "no buffer" */ +#define AL_NONE 0 + +/** Boolean False. */ +#define AL_FALSE 0 + +/** Boolean True. */ +#define AL_TRUE 1 + + +/** + * Relative source. + * Type: ALboolean + * Range: [AL_TRUE, AL_FALSE] + * Default: AL_FALSE + * + * Specifies if the Source has relative coordinates. + */ +#define AL_SOURCE_RELATIVE 0x202 + + +/** + * Inner cone angle, in degrees. + * Type: ALint, ALfloat + * Range: [0 - 360] + * Default: 360 + * + * The angle covered by the inner cone, where the source will not attenuate. + */ +#define AL_CONE_INNER_ANGLE 0x1001 + +/** + * Outer cone angle, in degrees. + * Range: [0 - 360] + * Default: 360 + * + * The angle covered by the outer cone, where the source will be fully + * attenuated. + */ +#define AL_CONE_OUTER_ANGLE 0x1002 + +/** + * Source pitch. + * Type: ALfloat + * Range: [0.5 - 2.0] + * Default: 1.0 + * + * A multiplier for the frequency (sample rate) of the source's buffer. + */ +#define AL_PITCH 0x1003 + +/** + * Source or listener position. + * Type: ALfloat[3], ALint[3] + * Default: {0, 0, 0} + * + * The source or listener location in three dimensional space. + * + * OpenAL, like OpenGL, uses a right handed coordinate system, where in a + * frontal default view X (thumb) points right, Y points up (index finger), and + * Z points towards the viewer/camera (middle finger). + * + * To switch from a left handed coordinate system, flip the sign on the Z + * coordinate. + */ +#define AL_POSITION 0x1004 + +/** + * Source direction. + * Type: ALfloat[3], ALint[3] + * Default: {0, 0, 0} + * + * Specifies the current direction in local space. + * A zero-length vector specifies an omni-directional source (cone is ignored). + */ +#define AL_DIRECTION 0x1005 + +/** + * Source or listener velocity. + * Type: ALfloat[3], ALint[3] + * Default: {0, 0, 0} + * + * Specifies the current velocity in local space. + */ +#define AL_VELOCITY 0x1006 + +/** + * Source looping. + * Type: ALboolean + * Range: [AL_TRUE, AL_FALSE] + * Default: AL_FALSE + * + * Specifies whether source is looping. + */ +#define AL_LOOPING 0x1007 + +/** + * Source buffer. + * Type: ALuint + * Range: any valid Buffer. + * + * Specifies the buffer to provide sound samples. + */ +#define AL_BUFFER 0x1009 + +/** + * Source or listener gain. + * Type: ALfloat + * Range: [0.0 - ] + * + * A value of 1.0 means unattenuated. Each division by 2 equals an attenuation + * of about -6dB. Each multiplicaton by 2 equals an amplification of about + * +6dB. + * + * A value of 0.0 is meaningless with respect to a logarithmic scale; it is + * silent. + */ +#define AL_GAIN 0x100A + +/** + * Minimum source gain. + * Type: ALfloat + * Range: [0.0 - 1.0] + * + * The minimum gain allowed for a source, after distance and cone attenation is + * applied (if applicable). + */ +#define AL_MIN_GAIN 0x100D + +/** + * Maximum source gain. + * Type: ALfloat + * Range: [0.0 - 1.0] + * + * The maximum gain allowed for a source, after distance and cone attenation is + * applied (if applicable). + */ +#define AL_MAX_GAIN 0x100E + +/** + * Listener orientation. + * Type: ALfloat[6] + * Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0} + * + * Effectively two three dimensional vectors. The first vector is the front (or + * "at") and the second is the top (or "up"). + * + * Both vectors are in local space. + */ +#define AL_ORIENTATION 0x100F + +/** + * Source state (query only). + * Type: ALint + * Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED] + */ +#define AL_SOURCE_STATE 0x1010 + +/** Source state value. */ +#define AL_INITIAL 0x1011 +#define AL_PLAYING 0x1012 +#define AL_PAUSED 0x1013 +#define AL_STOPPED 0x1014 + +/** + * Source Buffer Queue size (query only). + * Type: ALint + * + * The number of buffers queued using alSourceQueueBuffers, minus the buffers + * removed with alSourceUnqueueBuffers. + */ +#define AL_BUFFERS_QUEUED 0x1015 + +/** + * Source Buffer Queue processed count (query only). + * Type: ALint + * + * The number of queued buffers that have been fully processed, and can be + * removed with alSourceUnqueueBuffers. + * + * Looping sources will never fully process buffers because they will be set to + * play again for when the source loops. + */ +#define AL_BUFFERS_PROCESSED 0x1016 + +/** + * Source reference distance. + * Type: ALfloat + * Range: [0.0 - ] + * Default: 1.0 + * + * The distance in units that no attenuation occurs. + * + * At 0.0, no distance attenuation ever occurs on non-linear attenuation models. + */ +#define AL_REFERENCE_DISTANCE 0x1020 + +/** + * Source rolloff factor. + * Type: ALfloat + * Range: [0.0 - ] + * Default: 1.0 + * + * Multiplier to exaggerate or diminish distance attenuation. + * + * At 0.0, no distance attenuation ever occurs. + */ +#define AL_ROLLOFF_FACTOR 0x1021 + +/** + * Outer cone gain. + * Type: ALfloat + * Range: [0.0 - 1.0] + * Default: 0.0 + * + * The gain attenuation applied when the listener is outside of the source's + * outer cone. + */ +#define AL_CONE_OUTER_GAIN 0x1022 + +/** + * Source maximum distance. + * Type: ALfloat + * Range: [0.0 - ] + * Default: +inf + * + * The distance above which the source is not attenuated any further with a + * clamped distance model, or where attenuation reaches 0.0 gain for linear + * distance models with a default rolloff factor. + */ +#define AL_MAX_DISTANCE 0x1023 + +/** Source buffer position, in seconds */ +#define AL_SEC_OFFSET 0x1024 +/** Source buffer position, in sample frames */ +#define AL_SAMPLE_OFFSET 0x1025 +/** Source buffer position, in bytes */ +#define AL_BYTE_OFFSET 0x1026 + +/** + * Source type (query only). + * Type: ALint + * Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED] + * + * A Source is Static if a Buffer has been attached using AL_BUFFER. + * + * A Source is Streaming if one or more Buffers have been attached using + * alSourceQueueBuffers. + * + * A Source is Undetermined when it has the NULL buffer attached using + * AL_BUFFER. + */ +#define AL_SOURCE_TYPE 0x1027 + +/** Source type value. */ +#define AL_STATIC 0x1028 +#define AL_STREAMING 0x1029 +#define AL_UNDETERMINED 0x1030 + +/** Buffer format specifier. */ +#define AL_FORMAT_MONO8 0x1100 +#define AL_FORMAT_MONO16 0x1101 +#define AL_FORMAT_STEREO8 0x1102 +#define AL_FORMAT_STEREO16 0x1103 + +/** Buffer frequency (query only). */ +#define AL_FREQUENCY 0x2001 +/** Buffer bits per sample (query only). */ +#define AL_BITS 0x2002 +/** Buffer channel count (query only). */ +#define AL_CHANNELS 0x2003 +/** Buffer data size (query only). */ +#define AL_SIZE 0x2004 + +/** + * Buffer state. + * + * Not for public use. + */ +#define AL_UNUSED 0x2010 +#define AL_PENDING 0x2011 +#define AL_PROCESSED 0x2012 + + +/** No error. */ +#define AL_NO_ERROR 0 + +/** Invalid name paramater passed to AL call. */ +#define AL_INVALID_NAME 0xA001 + +/** Invalid enum parameter passed to AL call. */ +#define AL_INVALID_ENUM 0xA002 + +/** Invalid value parameter passed to AL call. */ +#define AL_INVALID_VALUE 0xA003 + +/** Illegal AL call. */ +#define AL_INVALID_OPERATION 0xA004 + +/** Not enough memory. */ +#define AL_OUT_OF_MEMORY 0xA005 + + +/** Context string: Vendor ID. */ +#define AL_VENDOR 0xB001 +/** Context string: Version. */ +#define AL_VERSION 0xB002 +/** Context string: Renderer ID. */ +#define AL_RENDERER 0xB003 +/** Context string: Space-separated extension list. */ +#define AL_EXTENSIONS 0xB004 + + +/** + * Doppler scale. + * Type: ALfloat + * Range: [0.0 - ] + * Default: 1.0 + * + * Scale for source and listener velocities. + */ +#define AL_DOPPLER_FACTOR 0xC000 +AL_API void AL_APIENTRY alDopplerFactor(ALfloat value); + +/** + * Doppler velocity (deprecated). + * + * A multiplier applied to the Speed of Sound. + */ +#define AL_DOPPLER_VELOCITY 0xC001 +AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value); + +/** + * Speed of Sound, in units per second. + * Type: ALfloat + * Range: [0.0001 - ] + * Default: 343.3 + * + * The speed at which sound waves are assumed to travel, when calculating the + * doppler effect. + */ +#define AL_SPEED_OF_SOUND 0xC003 +AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value); + +/** + * Distance attenuation model. + * Type: ALint + * Range: [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED, + * AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED, + * AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED] + * Default: AL_INVERSE_DISTANCE_CLAMPED + * + * The model by which sources attenuate with distance. + * + * None - No distance attenuation. + * Inverse - Doubling the distance halves the source gain. + * Linear - Linear gain scaling between the reference and max distances. + * Exponent - Exponential gain dropoff. + * + * Clamped variations work like the non-clamped counterparts, except the + * distance calculated is clamped between the reference and max distances. + */ +#define AL_DISTANCE_MODEL 0xD000 +AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel); + +/** Distance model value. */ +#define AL_INVERSE_DISTANCE 0xD001 +#define AL_INVERSE_DISTANCE_CLAMPED 0xD002 +#define AL_LINEAR_DISTANCE 0xD003 +#define AL_LINEAR_DISTANCE_CLAMPED 0xD004 +#define AL_EXPONENT_DISTANCE 0xD005 +#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006 + +/** Renderer State management. */ +AL_API void AL_APIENTRY alEnable(ALenum capability); +AL_API void AL_APIENTRY alDisable(ALenum capability); +AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability); + +/** State retrieval. */ +AL_API const ALchar* AL_APIENTRY alGetString(ALenum param); +AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values); +AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values); +AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values); +AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values); +AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param); +AL_API ALint AL_APIENTRY alGetInteger(ALenum param); +AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param); +AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param); + +/** + * Error retrieval. + * + * Obtain the first error generated in the AL context since the last check. + */ +AL_API ALenum AL_APIENTRY alGetError(void); + +/** + * Extension support. + * + * Query for the presence of an extension, and obtain any appropriate function + * pointers and enum values. + */ +AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname); +AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname); +AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename); + + +/** Set Listener parameters */ +AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value); +AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values); +AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value); +AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3); +AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values); + +/** Get Listener parameters */ +AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value); +AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values); +AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value); +AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3); +AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values); + + +/** Create Source objects. */ +AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources); +/** Delete Source objects. */ +AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources); +/** Verify a handle is a valid Source. */ +AL_API ALboolean AL_APIENTRY alIsSource(ALuint source); + +/** Set Source parameters. */ +AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value); +AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values); +AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value); +AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3); +AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values); + +/** Get Source parameters. */ +AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value); +AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values); +AL_API void AL_APIENTRY alGetSourcei(ALuint source, ALenum param, ALint *value); +AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3); +AL_API void AL_APIENTRY alGetSourceiv(ALuint source, ALenum param, ALint *values); + + +/** Play, replay, or resume (if paused) a list of Sources */ +AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources); +/** Stop a list of Sources */ +AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources); +/** Rewind a list of Sources */ +AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources); +/** Pause a list of Sources */ +AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources); + +/** Play, replay, or resume a Source */ +AL_API void AL_APIENTRY alSourcePlay(ALuint source); +/** Stop a Source */ +AL_API void AL_APIENTRY alSourceStop(ALuint source); +/** Rewind a Source (set playback postiton to beginning) */ +AL_API void AL_APIENTRY alSourceRewind(ALuint source); +/** Pause a Source */ +AL_API void AL_APIENTRY alSourcePause(ALuint source); + +/** Queue buffers onto a source */ +AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers); +/** Unqueue processed buffers from a source */ +AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers); + + +/** Create Buffer objects */ +AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers); +/** Delete Buffer objects */ +AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers); +/** Verify a handle is a valid Buffer */ +AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer); + +/** Specifies the data to be copied into a buffer */ +AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq); + +/** Set Buffer parameters, */ +AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value); +AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values); +AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value); +AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3); +AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values); + +/** Get Buffer parameters. */ +AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value); +AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values); +AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value); +AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3); +AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values); + +/** Pointer-to-function type, useful for dynamically getting AL entry points. */ +typedef void (AL_APIENTRY *LPALENABLE)(ALenum capability); +typedef void (AL_APIENTRY *LPALDISABLE)(ALenum capability); +typedef ALboolean (AL_APIENTRY *LPALISENABLED)(ALenum capability); +typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param); +typedef void (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values); +typedef void (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values); +typedef void (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values); +typedef void (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values); +typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param); +typedef ALint (AL_APIENTRY *LPALGETINTEGER)(ALenum param); +typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)(ALenum param); +typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)(ALenum param); +typedef ALenum (AL_APIENTRY *LPALGETERROR)(void); +typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname); +typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname); +typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename); +typedef void (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value); +typedef void (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +typedef void (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values); +typedef void (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value); +typedef void (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3); +typedef void (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values); +typedef void (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value); +typedef void (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +typedef void (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values); +typedef void (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value); +typedef void (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3); +typedef void (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values); +typedef void (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources); +typedef void (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources); +typedef ALboolean (AL_APIENTRY *LPALISSOURCE)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value); +typedef void (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +typedef void (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values); +typedef void (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value); +typedef void (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3); +typedef void (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values); +typedef void (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value); +typedef void (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +typedef void (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values); +typedef void (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value); +typedef void (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3); +typedef void (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values); +typedef void (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources); +typedef void (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources); +typedef void (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources); +typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources); +typedef void (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCESTOP)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers); +typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers); +typedef void (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers); +typedef void (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers); +typedef ALboolean (AL_APIENTRY *LPALISBUFFER)(ALuint buffer); +typedef void (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq); +typedef void (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value); +typedef void (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +typedef void (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values); +typedef void (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value); +typedef void (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3); +typedef void (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values); +typedef void (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value); +typedef void (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +typedef void (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values); +typedef void (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value); +typedef void (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3); +typedef void (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values); +typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value); +typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value); +typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value); +typedef void (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel); + +#if defined(__cplusplus) +} /* extern "C" */ +#endif + +#endif /* AL_AL_H */ diff --git a/contrib/prebuilt/include/AL/alc.h b/contrib/prebuilt/include/AL/alc.h new file mode 100644 index 0000000..294e8b3 --- /dev/null +++ b/contrib/prebuilt/include/AL/alc.h @@ -0,0 +1,237 @@ +#ifndef AL_ALC_H +#define AL_ALC_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#ifndef ALC_API + #if defined(AL_LIBTYPE_STATIC) + #define ALC_API + #elif defined(_WIN32) + #define ALC_API __declspec(dllimport) + #else + #define ALC_API extern + #endif +#endif + +#if defined(_WIN32) + #define ALC_APIENTRY __cdecl +#else + #define ALC_APIENTRY +#endif + + +/** Deprecated macro. */ +#define ALCAPI ALC_API +#define ALCAPIENTRY ALC_APIENTRY +#define ALC_INVALID 0 + +/** Supported ALC version? */ +#define ALC_VERSION_0_1 1 + +/** Opaque device handle */ +typedef struct ALCdevice_struct ALCdevice; +/** Opaque context handle */ +typedef struct ALCcontext_struct ALCcontext; + +/** 8-bit boolean */ +typedef char ALCboolean; + +/** character */ +typedef char ALCchar; + +/** signed 8-bit 2's complement integer */ +typedef signed char ALCbyte; + +/** unsigned 8-bit integer */ +typedef unsigned char ALCubyte; + +/** signed 16-bit 2's complement integer */ +typedef short ALCshort; + +/** unsigned 16-bit integer */ +typedef unsigned short ALCushort; + +/** signed 32-bit 2's complement integer */ +typedef int ALCint; + +/** unsigned 32-bit integer */ +typedef unsigned int ALCuint; + +/** non-negative 32-bit binary integer size */ +typedef int ALCsizei; + +/** enumerated 32-bit value */ +typedef int ALCenum; + +/** 32-bit IEEE754 floating-point */ +typedef float ALCfloat; + +/** 64-bit IEEE754 floating-point */ +typedef double ALCdouble; + +/** void type (for opaque pointers only) */ +typedef void ALCvoid; + + +/* Enumerant values begin at column 50. No tabs. */ + +/** Boolean False. */ +#define ALC_FALSE 0 + +/** Boolean True. */ +#define ALC_TRUE 1 + +/** Context attribute: Hz. */ +#define ALC_FREQUENCY 0x1007 + +/** Context attribute: Hz. */ +#define ALC_REFRESH 0x1008 + +/** Context attribute: AL_TRUE or AL_FALSE. */ +#define ALC_SYNC 0x1009 + +/** Context attribute: requested Mono (3D) Sources. */ +#define ALC_MONO_SOURCES 0x1010 + +/** Context attribute: requested Stereo Sources. */ +#define ALC_STEREO_SOURCES 0x1011 + +/** No error. */ +#define ALC_NO_ERROR 0 + +/** Invalid device handle. */ +#define ALC_INVALID_DEVICE 0xA001 + +/** Invalid context handle. */ +#define ALC_INVALID_CONTEXT 0xA002 + +/** Invalid enum parameter passed to an ALC call. */ +#define ALC_INVALID_ENUM 0xA003 + +/** Invalid value parameter passed to an ALC call. */ +#define ALC_INVALID_VALUE 0xA004 + +/** Out of memory. */ +#define ALC_OUT_OF_MEMORY 0xA005 + + +/** Runtime ALC version. */ +#define ALC_MAJOR_VERSION 0x1000 +#define ALC_MINOR_VERSION 0x1001 + +/** Context attribute list properties. */ +#define ALC_ATTRIBUTES_SIZE 0x1002 +#define ALC_ALL_ATTRIBUTES 0x1003 + +/** String for the default device specifier. */ +#define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004 +/** + * String for the given device's specifier. + * + * If device handle is NULL, it is instead a null-char separated list of + * strings of known device specifiers (list ends with an empty string). + */ +#define ALC_DEVICE_SPECIFIER 0x1005 +/** String for space-separated list of ALC extensions. */ +#define ALC_EXTENSIONS 0x1006 + + +/** Capture extension */ +#define ALC_EXT_CAPTURE 1 +/** + * String for the given capture device's specifier. + * + * If device handle is NULL, it is instead a null-char separated list of + * strings of known capture device specifiers (list ends with an empty string). + */ +#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310 +/** String for the default capture device specifier. */ +#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311 +/** Number of sample frames available for capture. */ +#define ALC_CAPTURE_SAMPLES 0x312 + + +/** Enumerate All extension */ +#define ALC_ENUMERATE_ALL_EXT 1 +/** String for the default extended device specifier. */ +#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012 +/** + * String for the given extended device's specifier. + * + * If device handle is NULL, it is instead a null-char separated list of + * strings of known extended device specifiers (list ends with an empty string). + */ +#define ALC_ALL_DEVICES_SPECIFIER 0x1013 + + +/** Context management. */ +ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCint* attrlist); +ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent(ALCcontext *context); +ALC_API void ALC_APIENTRY alcProcessContext(ALCcontext *context); +ALC_API void ALC_APIENTRY alcSuspendContext(ALCcontext *context); +ALC_API void ALC_APIENTRY alcDestroyContext(ALCcontext *context); +ALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(void); +ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice(ALCcontext *context); + +/** Device management. */ +ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename); +ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device); + + +/** + * Error support. + * + * Obtain the most recent Device error. + */ +ALC_API ALCenum ALC_APIENTRY alcGetError(ALCdevice *device); + +/** + * Extension support. + * + * Query for the presence of an extension, and obtain any appropriate + * function pointers and enum values. + */ +ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname); +ALC_API void* ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcname); +ALC_API ALCenum ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *enumname); + +/** Query function. */ +ALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum param); +ALC_API void ALC_APIENTRY alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values); + +/** Capture function. */ +ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize); +ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device); +ALC_API void ALC_APIENTRY alcCaptureStart(ALCdevice *device); +ALC_API void ALC_APIENTRY alcCaptureStop(ALCdevice *device); +ALC_API void ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples); + +/** Pointer-to-function type, useful for dynamically getting ALC entry points. */ +typedef ALCcontext* (ALC_APIENTRY *LPALCCREATECONTEXT)(ALCdevice *device, const ALCint *attrlist); +typedef ALCboolean (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)(ALCcontext *context); +typedef void (ALC_APIENTRY *LPALCPROCESSCONTEXT)(ALCcontext *context); +typedef void (ALC_APIENTRY *LPALCSUSPENDCONTEXT)(ALCcontext *context); +typedef void (ALC_APIENTRY *LPALCDESTROYCONTEXT)(ALCcontext *context); +typedef ALCcontext* (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)(void); +typedef ALCdevice* (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)(ALCcontext *context); +typedef ALCdevice* (ALC_APIENTRY *LPALCOPENDEVICE)(const ALCchar *devicename); +typedef ALCboolean (ALC_APIENTRY *LPALCCLOSEDEVICE)(ALCdevice *device); +typedef ALCenum (ALC_APIENTRY *LPALCGETERROR)(ALCdevice *device); +typedef ALCboolean (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)(ALCdevice *device, const ALCchar *extname); +typedef void* (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname); +typedef ALCenum (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname); +typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)(ALCdevice *device, ALCenum param); +typedef void (ALC_APIENTRY *LPALCGETINTEGERV)(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values); +typedef ALCdevice* (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize); +typedef ALCboolean (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)(ALCdevice *device); +typedef void (ALC_APIENTRY *LPALCCAPTURESTART)(ALCdevice *device); +typedef void (ALC_APIENTRY *LPALCCAPTURESTOP)(ALCdevice *device); +typedef void (ALC_APIENTRY *LPALCCAPTURESAMPLES)(ALCdevice *device, ALCvoid *buffer, ALCsizei samples); + +#if defined(__cplusplus) +} +#endif + +#endif /* AL_ALC_H */ diff --git a/contrib/prebuilt/include/AL/alext.h b/contrib/prebuilt/include/AL/alext.h new file mode 100644 index 0000000..924db16 --- /dev/null +++ b/contrib/prebuilt/include/AL/alext.h @@ -0,0 +1,309 @@ +/** + * OpenAL cross platform audio library + * Copyright (C) 2008 by authors. + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * Or go to http://www.gnu.org/copyleft/lgpl.html + */ + +#ifndef AL_ALEXT_H +#define AL_ALEXT_H + +#include + +#include "alc.h" +#include "al.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef AL_LOKI_IMA_ADPCM_format +#define AL_LOKI_IMA_ADPCM_format 1 +#define AL_FORMAT_IMA_ADPCM_MONO16_EXT 0x10000 +#define AL_FORMAT_IMA_ADPCM_STEREO16_EXT 0x10001 +#endif + +#ifndef AL_LOKI_WAVE_format +#define AL_LOKI_WAVE_format 1 +#define AL_FORMAT_WAVE_EXT 0x10002 +#endif + +#ifndef AL_EXT_vorbis +#define AL_EXT_vorbis 1 +#define AL_FORMAT_VORBIS_EXT 0x10003 +#endif + +#ifndef AL_LOKI_quadriphonic +#define AL_LOKI_quadriphonic 1 +#define AL_FORMAT_QUAD8_LOKI 0x10004 +#define AL_FORMAT_QUAD16_LOKI 0x10005 +#endif + +#ifndef AL_EXT_float32 +#define AL_EXT_float32 1 +#define AL_FORMAT_MONO_FLOAT32 0x10010 +#define AL_FORMAT_STEREO_FLOAT32 0x10011 +#endif + +#ifndef AL_EXT_double +#define AL_EXT_double 1 +#define AL_FORMAT_MONO_DOUBLE_EXT 0x10012 +#define AL_FORMAT_STEREO_DOUBLE_EXT 0x10013 +#endif + +#ifndef AL_EXT_MULAW +#define AL_EXT_MULAW 1 +#define AL_FORMAT_MONO_MULAW_EXT 0x10014 +#define AL_FORMAT_STEREO_MULAW_EXT 0x10015 +#endif + +#ifndef AL_EXT_ALAW +#define AL_EXT_ALAW 1 +#define AL_FORMAT_MONO_ALAW_EXT 0x10016 +#define AL_FORMAT_STEREO_ALAW_EXT 0x10017 +#endif + +#ifndef ALC_LOKI_audio_channel +#define ALC_LOKI_audio_channel 1 +#define ALC_CHAN_MAIN_LOKI 0x500001 +#define ALC_CHAN_PCM_LOKI 0x500002 +#define ALC_CHAN_CD_LOKI 0x500003 +#endif + +#ifndef AL_EXT_MCFORMATS +#define AL_EXT_MCFORMATS 1 +#define AL_FORMAT_QUAD8 0x1204 +#define AL_FORMAT_QUAD16 0x1205 +#define AL_FORMAT_QUAD32 0x1206 +#define AL_FORMAT_REAR8 0x1207 +#define AL_FORMAT_REAR16 0x1208 +#define AL_FORMAT_REAR32 0x1209 +#define AL_FORMAT_51CHN8 0x120A +#define AL_FORMAT_51CHN16 0x120B +#define AL_FORMAT_51CHN32 0x120C +#define AL_FORMAT_61CHN8 0x120D +#define AL_FORMAT_61CHN16 0x120E +#define AL_FORMAT_61CHN32 0x120F +#define AL_FORMAT_71CHN8 0x1210 +#define AL_FORMAT_71CHN16 0x1211 +#define AL_FORMAT_71CHN32 0x1212 +#endif + +#ifndef AL_EXT_MULAW_MCFORMATS +#define AL_EXT_MULAW_MCFORMATS 1 +#define AL_FORMAT_MONO_MULAW 0x10014 +#define AL_FORMAT_STEREO_MULAW 0x10015 +#define AL_FORMAT_QUAD_MULAW 0x10021 +#define AL_FORMAT_REAR_MULAW 0x10022 +#define AL_FORMAT_51CHN_MULAW 0x10023 +#define AL_FORMAT_61CHN_MULAW 0x10024 +#define AL_FORMAT_71CHN_MULAW 0x10025 +#endif + +#ifndef AL_EXT_IMA4 +#define AL_EXT_IMA4 1 +#define AL_FORMAT_MONO_IMA4 0x1300 +#define AL_FORMAT_STEREO_IMA4 0x1301 +#endif + +#ifndef AL_EXT_STATIC_BUFFER +#define AL_EXT_STATIC_BUFFER 1 +typedef ALvoid (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei); +#ifdef AL_ALEXT_PROTOTYPES +AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq); +#endif +#endif + +#ifndef ALC_EXT_EFX +#define ALC_EXT_EFX 1 +#include "efx.h" +#endif + +#ifndef ALC_EXT_disconnect +#define ALC_EXT_disconnect 1 +#define ALC_CONNECTED 0x313 +#endif + +#ifndef ALC_EXT_thread_local_context +#define ALC_EXT_thread_local_context 1 +typedef ALCboolean (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context); +typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void); +#ifdef AL_ALEXT_PROTOTYPES +ALC_API ALCboolean ALC_APIENTRY alcSetThreadContext(ALCcontext *context); +ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void); +#endif +#endif + +#ifndef AL_EXT_source_distance_model +#define AL_EXT_source_distance_model 1 +#define AL_SOURCE_DISTANCE_MODEL 0x200 +#endif + +#ifndef AL_SOFT_buffer_sub_data +#define AL_SOFT_buffer_sub_data 1 +#define AL_BYTE_RW_OFFSETS_SOFT 0x1031 +#define AL_SAMPLE_RW_OFFSETS_SOFT 0x1032 +typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei); +#ifdef AL_ALEXT_PROTOTYPES +AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length); +#endif +#endif + +#ifndef AL_SOFT_loop_points +#define AL_SOFT_loop_points 1 +#define AL_LOOP_POINTS_SOFT 0x2015 +#endif + +#ifndef AL_EXT_FOLDBACK +#define AL_EXT_FOLDBACK 1 +#define AL_EXT_FOLDBACK_NAME "AL_EXT_FOLDBACK" +#define AL_FOLDBACK_EVENT_BLOCK 0x4112 +#define AL_FOLDBACK_EVENT_START 0x4111 +#define AL_FOLDBACK_EVENT_STOP 0x4113 +#define AL_FOLDBACK_MODE_MONO 0x4101 +#define AL_FOLDBACK_MODE_STEREO 0x4102 +typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei); +typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK); +typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void); +#ifdef AL_ALEXT_PROTOTYPES +AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback); +AL_API void AL_APIENTRY alRequestFoldbackStop(void); +#endif +#endif + +#ifndef ALC_EXT_DEDICATED +#define ALC_EXT_DEDICATED 1 +#define AL_DEDICATED_GAIN 0x0001 +#define AL_EFFECT_DEDICATED_DIALOGUE 0x9001 +#define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000 +#endif + +#ifndef AL_SOFT_buffer_samples +#define AL_SOFT_buffer_samples 1 +/* Channel configurations */ +#define AL_MONO_SOFT 0x1500 +#define AL_STEREO_SOFT 0x1501 +#define AL_REAR_SOFT 0x1502 +#define AL_QUAD_SOFT 0x1503 +#define AL_5POINT1_SOFT 0x1504 +#define AL_6POINT1_SOFT 0x1505 +#define AL_7POINT1_SOFT 0x1506 + +/* Sample types */ +#define AL_BYTE_SOFT 0x1400 +#define AL_UNSIGNED_BYTE_SOFT 0x1401 +#define AL_SHORT_SOFT 0x1402 +#define AL_UNSIGNED_SHORT_SOFT 0x1403 +#define AL_INT_SOFT 0x1404 +#define AL_UNSIGNED_INT_SOFT 0x1405 +#define AL_FLOAT_SOFT 0x1406 +#define AL_DOUBLE_SOFT 0x1407 +#define AL_BYTE3_SOFT 0x1408 +#define AL_UNSIGNED_BYTE3_SOFT 0x1409 + +/* Storage formats */ +#define AL_MONO8_SOFT 0x1100 +#define AL_MONO16_SOFT 0x1101 +#define AL_MONO32F_SOFT 0x10010 +#define AL_STEREO8_SOFT 0x1102 +#define AL_STEREO16_SOFT 0x1103 +#define AL_STEREO32F_SOFT 0x10011 +#define AL_QUAD8_SOFT 0x1204 +#define AL_QUAD16_SOFT 0x1205 +#define AL_QUAD32F_SOFT 0x1206 +#define AL_REAR8_SOFT 0x1207 +#define AL_REAR16_SOFT 0x1208 +#define AL_REAR32F_SOFT 0x1209 +#define AL_5POINT1_8_SOFT 0x120A +#define AL_5POINT1_16_SOFT 0x120B +#define AL_5POINT1_32F_SOFT 0x120C +#define AL_6POINT1_8_SOFT 0x120D +#define AL_6POINT1_16_SOFT 0x120E +#define AL_6POINT1_32F_SOFT 0x120F +#define AL_7POINT1_8_SOFT 0x1210 +#define AL_7POINT1_16_SOFT 0x1211 +#define AL_7POINT1_32F_SOFT 0x1212 + +/* Buffer attributes */ +#define AL_INTERNAL_FORMAT_SOFT 0x2008 +#define AL_BYTE_LENGTH_SOFT 0x2009 +#define AL_SAMPLE_LENGTH_SOFT 0x200A +#define AL_SEC_LENGTH_SOFT 0x200B + +typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*); +typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*); +typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*); +typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum); +#ifdef AL_ALEXT_PROTOTYPES +AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data); +AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data); +AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data); +AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format); +#endif +#endif + +#ifndef AL_SOFT_direct_channels +#define AL_SOFT_direct_channels 1 +#define AL_DIRECT_CHANNELS_SOFT 0x1033 +#endif + +#ifndef ALC_SOFT_loopback +#define ALC_SOFT_loopback 1 +#define ALC_FORMAT_CHANNELS_SOFT 0x1990 +#define ALC_FORMAT_TYPE_SOFT 0x1991 + +/* Sample types */ +#define ALC_BYTE_SOFT 0x1400 +#define ALC_UNSIGNED_BYTE_SOFT 0x1401 +#define ALC_SHORT_SOFT 0x1402 +#define ALC_UNSIGNED_SHORT_SOFT 0x1403 +#define ALC_INT_SOFT 0x1404 +#define ALC_UNSIGNED_INT_SOFT 0x1405 +#define ALC_FLOAT_SOFT 0x1406 + +/* Channel configurations */ +#define ALC_MONO_SOFT 0x1500 +#define ALC_STEREO_SOFT 0x1501 +#define ALC_QUAD_SOFT 0x1503 +#define ALC_5POINT1_SOFT 0x1504 +#define ALC_6POINT1_SOFT 0x1505 +#define ALC_7POINT1_SOFT 0x1506 + +typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*); +typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum); +typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei); +#ifdef AL_ALEXT_PROTOTYPES +ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName); +ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type); +ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples); +#endif +#endif + +#ifndef AL_EXT_STEREO_ANGLES +#define AL_EXT_STEREO_ANGLES 1 +#define AL_STEREO_ANGLES 0x1030 +#endif + +#ifndef AL_EXT_SOURCE_RADIUS +#define AL_EXT_SOURCE_RADIUS 1 +#define AL_SOURCE_RADIUS 0x1031 +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/contrib/prebuilt/include/AL/efx-creative.h b/contrib/prebuilt/include/AL/efx-creative.h new file mode 100644 index 0000000..0a04c98 --- /dev/null +++ b/contrib/prebuilt/include/AL/efx-creative.h @@ -0,0 +1,3 @@ +/* The tokens that would be defined here are already defined in efx.h. This + * empty file is here to provide compatibility with Windows-based projects + * that would include it. */ diff --git a/contrib/prebuilt/include/AL/efx-presets.h b/contrib/prebuilt/include/AL/efx-presets.h new file mode 100644 index 0000000..86dcbda --- /dev/null +++ b/contrib/prebuilt/include/AL/efx-presets.h @@ -0,0 +1,402 @@ +/* Reverb presets for EFX */ + +#ifndef EFX_PRESETS_H +#define EFX_PRESETS_H + +#ifndef EFXEAXREVERBPROPERTIES_DEFINED +#define EFXEAXREVERBPROPERTIES_DEFINED +typedef struct { + float flDensity; + float flDiffusion; + float flGain; + float flGainHF; + float flGainLF; + float flDecayTime; + float flDecayHFRatio; + float flDecayLFRatio; + float flReflectionsGain; + float flReflectionsDelay; + float flReflectionsPan[3]; + float flLateReverbGain; + float flLateReverbDelay; + float flLateReverbPan[3]; + float flEchoTime; + float flEchoDepth; + float flModulationTime; + float flModulationDepth; + float flAirAbsorptionGainHF; + float flHFReference; + float flLFReference; + float flRoomRolloffFactor; + int iDecayHFLimit; +} EFXEAXREVERBPROPERTIES, *LPEFXEAXREVERBPROPERTIES; +#endif + +/* Default Presets */ + +#define EFX_REVERB_PRESET_GENERIC \ + { 1.0000f, 1.0000f, 0.3162f, 0.8913f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_PADDEDCELL \ + { 0.1715f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.1700f, 0.1000f, 1.0000f, 0.2500f, 0.0010f, { 0.0000f, 0.0000f, 0.0000f }, 1.2691f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ROOM \ + { 0.4287f, 1.0000f, 0.3162f, 0.5929f, 1.0000f, 0.4000f, 0.8300f, 1.0000f, 0.1503f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.0629f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_BATHROOM \ + { 0.1715f, 1.0000f, 0.3162f, 0.2512f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.6531f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 3.2734f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_LIVINGROOM \ + { 0.9766f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.5000f, 0.1000f, 1.0000f, 0.2051f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2805f, 0.0040f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_STONEROOM \ + { 1.0000f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 2.3100f, 0.6400f, 1.0000f, 0.4411f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1003f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_AUDITORIUM \ + { 1.0000f, 1.0000f, 0.3162f, 0.5781f, 1.0000f, 4.3200f, 0.5900f, 1.0000f, 0.4032f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7170f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CONCERTHALL \ + { 1.0000f, 1.0000f, 0.3162f, 0.5623f, 1.0000f, 3.9200f, 0.7000f, 1.0000f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.9977f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CAVE \ + { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 2.9100f, 1.3000f, 1.0000f, 0.5000f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.7063f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_ARENA \ + { 1.0000f, 1.0000f, 0.3162f, 0.4477f, 1.0000f, 7.2400f, 0.3300f, 1.0000f, 0.2612f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.0186f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_HANGAR \ + { 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 10.0500f, 0.2300f, 1.0000f, 0.5000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2560f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CARPETEDHALLWAY \ + { 0.4287f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 0.3000f, 0.1000f, 1.0000f, 0.1215f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.1531f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_HALLWAY \ + { 0.3645f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 1.4900f, 0.5900f, 1.0000f, 0.2458f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.6615f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_STONECORRIDOR \ + { 1.0000f, 1.0000f, 0.3162f, 0.7612f, 1.0000f, 2.7000f, 0.7900f, 1.0000f, 0.2472f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 1.5758f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ALLEY \ + { 1.0000f, 0.3000f, 0.3162f, 0.7328f, 1.0000f, 1.4900f, 0.8600f, 1.0000f, 0.2500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.9954f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.9500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_FOREST \ + { 1.0000f, 0.3000f, 0.3162f, 0.0224f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.0525f, 0.1620f, { 0.0000f, 0.0000f, 0.0000f }, 0.7682f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CITY \ + { 1.0000f, 0.5000f, 0.3162f, 0.3981f, 1.0000f, 1.4900f, 0.6700f, 1.0000f, 0.0730f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1427f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_MOUNTAINS \ + { 1.0000f, 0.2700f, 0.3162f, 0.0562f, 1.0000f, 1.4900f, 0.2100f, 1.0000f, 0.0407f, 0.3000f, { 0.0000f, 0.0000f, 0.0000f }, 0.1919f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_QUARRY \ + { 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0000f, 0.0610f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.7000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_PLAIN \ + { 1.0000f, 0.2100f, 0.3162f, 0.1000f, 1.0000f, 1.4900f, 0.5000f, 1.0000f, 0.0585f, 0.1790f, { 0.0000f, 0.0000f, 0.0000f }, 0.1089f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_PARKINGLOT \ + { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 1.6500f, 1.5000f, 1.0000f, 0.2082f, 0.0080f, { 0.0000f, 0.0000f, 0.0000f }, 0.2652f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_SEWERPIPE \ + { 0.3071f, 0.8000f, 0.3162f, 0.3162f, 1.0000f, 2.8100f, 0.1400f, 1.0000f, 1.6387f, 0.0140f, { 0.0000f, 0.0000f, 0.0000f }, 3.2471f, 0.0210f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_UNDERWATER \ + { 0.3645f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 1.4900f, 0.1000f, 1.0000f, 0.5963f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 7.0795f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 1.1800f, 0.3480f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_DRUGGED \ + { 0.4287f, 0.5000f, 0.3162f, 1.0000f, 1.0000f, 8.3900f, 1.3900f, 1.0000f, 0.8760f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 3.1081f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_DIZZY \ + { 0.3645f, 0.6000f, 0.3162f, 0.6310f, 1.0000f, 17.2300f, 0.5600f, 1.0000f, 0.1392f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4937f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.8100f, 0.3100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_PSYCHOTIC \ + { 0.0625f, 0.5000f, 0.3162f, 0.8404f, 1.0000f, 7.5600f, 0.9100f, 1.0000f, 0.4864f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 2.4378f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 4.0000f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +/* Castle Presets */ + +#define EFX_REVERB_PRESET_CASTLE_SMALLROOM \ + { 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 1.2200f, 0.8300f, 0.3100f, 0.8913f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CASTLE_SHORTPASSAGE \ + { 1.0000f, 0.8900f, 0.3162f, 0.3162f, 0.1000f, 2.3200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CASTLE_MEDIUMROOM \ + { 1.0000f, 0.9300f, 0.3162f, 0.2818f, 0.1000f, 2.0400f, 0.8300f, 0.4600f, 0.6310f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1550f, 0.0300f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CASTLE_LARGEROOM \ + { 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.1259f, 2.5300f, 0.8300f, 0.5000f, 0.4467f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1850f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CASTLE_LONGPASSAGE \ + { 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 3.4200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CASTLE_HALL \ + { 1.0000f, 0.8100f, 0.3162f, 0.2818f, 0.1778f, 3.1400f, 0.7900f, 0.6200f, 0.1778f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CASTLE_CUPBOARD \ + { 1.0000f, 0.8900f, 0.3162f, 0.2818f, 0.1000f, 0.6700f, 0.8700f, 0.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 3.5481f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CASTLE_COURTYARD \ + { 1.0000f, 0.4200f, 0.3162f, 0.4467f, 0.1995f, 2.1300f, 0.6100f, 0.2300f, 0.2239f, 0.1600f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3700f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_CASTLE_ALCOVE \ + { 1.0000f, 0.8900f, 0.3162f, 0.5012f, 0.1000f, 1.6400f, 0.8700f, 0.3100f, 1.0000f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 } + +/* Factory Presets */ + +#define EFX_REVERB_PRESET_FACTORY_SMALLROOM \ + { 0.3645f, 0.8200f, 0.3162f, 0.7943f, 0.5012f, 1.7200f, 0.6500f, 1.3100f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.1190f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_FACTORY_SHORTPASSAGE \ + { 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 2.5300f, 0.6500f, 1.3100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_FACTORY_MEDIUMROOM \ + { 0.4287f, 0.8200f, 0.2512f, 0.7943f, 0.5012f, 2.7600f, 0.6500f, 1.3100f, 0.2818f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1740f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_FACTORY_LARGEROOM \ + { 0.4287f, 0.7500f, 0.2512f, 0.7079f, 0.6310f, 4.2400f, 0.5100f, 1.3100f, 0.1778f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2310f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_FACTORY_LONGPASSAGE \ + { 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 4.0600f, 0.6500f, 1.3100f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_FACTORY_HALL \ + { 0.4287f, 0.7500f, 0.3162f, 0.7079f, 0.6310f, 7.4300f, 0.5100f, 1.3100f, 0.0631f, 0.0730f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_FACTORY_CUPBOARD \ + { 0.3071f, 0.6300f, 0.2512f, 0.7943f, 0.5012f, 0.4900f, 0.6500f, 1.3100f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.1070f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_FACTORY_COURTYARD \ + { 0.3071f, 0.5700f, 0.3162f, 0.3162f, 0.6310f, 2.3200f, 0.2900f, 0.5600f, 0.2239f, 0.1400f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2900f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_FACTORY_ALCOVE \ + { 0.3645f, 0.5900f, 0.2512f, 0.7943f, 0.5012f, 3.1400f, 0.6500f, 1.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1140f, 0.1000f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 } + +/* Ice Palace Presets */ + +#define EFX_REVERB_PRESET_ICEPALACE_SMALLROOM \ + { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 1.5100f, 1.5300f, 0.2700f, 0.8913f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1640f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ICEPALACE_SHORTPASSAGE \ + { 1.0000f, 0.7500f, 0.3162f, 0.5623f, 0.2818f, 1.7900f, 1.4600f, 0.2800f, 0.5012f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ICEPALACE_MEDIUMROOM \ + { 1.0000f, 0.8700f, 0.3162f, 0.5623f, 0.4467f, 2.2200f, 1.5300f, 0.3200f, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ICEPALACE_LARGEROOM \ + { 1.0000f, 0.8100f, 0.3162f, 0.5623f, 0.4467f, 3.1400f, 1.5300f, 0.3200f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ICEPALACE_LONGPASSAGE \ + { 1.0000f, 0.7700f, 0.3162f, 0.5623f, 0.3981f, 3.0100f, 1.4600f, 0.2800f, 0.7943f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.0400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ICEPALACE_HALL \ + { 1.0000f, 0.7600f, 0.3162f, 0.4467f, 0.5623f, 5.4900f, 1.5300f, 0.3800f, 0.1122f, 0.0540f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0520f, { 0.0000f, 0.0000f, 0.0000f }, 0.2260f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ICEPALACE_CUPBOARD \ + { 1.0000f, 0.8300f, 0.3162f, 0.5012f, 0.2239f, 0.7600f, 1.5300f, 0.2600f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1430f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ICEPALACE_COURTYARD \ + { 1.0000f, 0.5900f, 0.3162f, 0.2818f, 0.3162f, 2.0400f, 1.2000f, 0.3800f, 0.3162f, 0.1730f, { 0.0000f, 0.0000f, 0.0000f }, 0.3162f, 0.0430f, { 0.0000f, 0.0000f, 0.0000f }, 0.2350f, 0.4800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_ICEPALACE_ALCOVE \ + { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 2.7600f, 1.4600f, 0.2800f, 1.1220f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1610f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 } + +/* Space Station Presets */ + +#define EFX_REVERB_PRESET_SPACESTATION_SMALLROOM \ + { 0.2109f, 0.7000f, 0.3162f, 0.7079f, 0.8913f, 1.7200f, 0.8200f, 0.5500f, 0.7943f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 0.1880f, 0.2600f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPACESTATION_SHORTPASSAGE \ + { 0.2109f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 3.5700f, 0.5000f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1720f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPACESTATION_MEDIUMROOM \ + { 0.2109f, 0.7500f, 0.3162f, 0.6310f, 0.8913f, 3.0100f, 0.5000f, 0.5500f, 0.3981f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2090f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPACESTATION_LARGEROOM \ + { 0.3645f, 0.8100f, 0.3162f, 0.6310f, 0.8913f, 3.8900f, 0.3800f, 0.6100f, 0.3162f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2330f, 0.2800f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPACESTATION_LONGPASSAGE \ + { 0.4287f, 0.8200f, 0.3162f, 0.6310f, 0.8913f, 4.6200f, 0.6200f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPACESTATION_HALL \ + { 0.4287f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 7.1100f, 0.3800f, 0.6100f, 0.1778f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2500f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPACESTATION_CUPBOARD \ + { 0.1715f, 0.5600f, 0.3162f, 0.7079f, 0.8913f, 0.7900f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1810f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPACESTATION_ALCOVE \ + { 0.2109f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.1600f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1920f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 } + +/* Wooden Galleon Presets */ + +#define EFX_REVERB_PRESET_WOODEN_SMALLROOM \ + { 1.0000f, 1.0000f, 0.3162f, 0.1122f, 0.3162f, 0.7900f, 0.3200f, 0.8700f, 1.0000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_WOODEN_SHORTPASSAGE \ + { 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.7500f, 0.5000f, 0.8700f, 0.8913f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_WOODEN_MEDIUMROOM \ + { 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.2818f, 1.4700f, 0.4200f, 0.8200f, 0.8913f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_WOODEN_LARGEROOM \ + { 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.2818f, 2.6500f, 0.3300f, 0.8200f, 0.8913f, 0.0660f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_WOODEN_LONGPASSAGE \ + { 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.3162f, 1.9900f, 0.4000f, 0.7900f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4467f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_WOODEN_HALL \ + { 1.0000f, 1.0000f, 0.3162f, 0.0794f, 0.2818f, 3.4500f, 0.3000f, 0.8200f, 0.8913f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_WOODEN_CUPBOARD \ + { 1.0000f, 1.0000f, 0.3162f, 0.1413f, 0.3162f, 0.5600f, 0.4600f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_WOODEN_COURTYARD \ + { 1.0000f, 0.6500f, 0.3162f, 0.0794f, 0.3162f, 1.7900f, 0.3500f, 0.7900f, 0.5623f, 0.1230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_WOODEN_ALCOVE \ + { 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.2200f, 0.6200f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 } + +/* Sports Presets */ + +#define EFX_REVERB_PRESET_SPORT_EMPTYSTADIUM \ + { 1.0000f, 1.0000f, 0.3162f, 0.4467f, 0.7943f, 6.2600f, 0.5100f, 1.1000f, 0.0631f, 0.1830f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPORT_SQUASHCOURT \ + { 1.0000f, 0.7500f, 0.3162f, 0.3162f, 0.7943f, 2.2200f, 0.9100f, 1.1600f, 0.4467f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1260f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPORT_SMALLSWIMMINGPOOL \ + { 1.0000f, 0.7000f, 0.3162f, 0.7943f, 0.8913f, 2.7600f, 1.2500f, 1.1400f, 0.6310f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_SPORT_LARGESWIMMINGPOOL \ + { 1.0000f, 0.8200f, 0.3162f, 0.7943f, 1.0000f, 5.4900f, 1.3100f, 1.1400f, 0.4467f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2220f, 0.5500f, 1.1590f, 0.2100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_SPORT_GYMNASIUM \ + { 1.0000f, 0.8100f, 0.3162f, 0.4467f, 0.8913f, 3.1400f, 1.0600f, 1.3500f, 0.3981f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0450f, { 0.0000f, 0.0000f, 0.0000f }, 0.1460f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPORT_FULLSTADIUM \ + { 1.0000f, 1.0000f, 0.3162f, 0.0708f, 0.7943f, 5.2500f, 0.1700f, 0.8000f, 0.1000f, 0.1880f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SPORT_STADIUMTANNOY \ + { 1.0000f, 0.7800f, 0.3162f, 0.5623f, 0.5012f, 2.5300f, 0.8800f, 0.6800f, 0.2818f, 0.2300f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +/* Prefab Presets */ + +#define EFX_REVERB_PRESET_PREFAB_WORKSHOP \ + { 0.4287f, 1.0000f, 0.3162f, 0.1413f, 0.3981f, 0.7600f, 1.0000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_PREFAB_SCHOOLROOM \ + { 0.4022f, 0.6900f, 0.3162f, 0.6310f, 0.5012f, 0.9800f, 0.4500f, 0.1800f, 1.4125f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_PREFAB_PRACTISEROOM \ + { 0.4022f, 0.8700f, 0.3162f, 0.3981f, 0.5012f, 1.1200f, 0.5600f, 0.1800f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_PREFAB_OUTHOUSE \ + { 1.0000f, 0.8200f, 0.3162f, 0.1122f, 0.1585f, 1.3800f, 0.3800f, 0.3500f, 0.8913f, 0.0240f, { 0.0000f, 0.0000f, -0.0000f }, 0.6310f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.1210f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_PREFAB_CARAVAN \ + { 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.1259f, 0.4300f, 1.5000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +/* Dome and Pipe Presets */ + +#define EFX_REVERB_PRESET_DOME_TOMB \ + { 1.0000f, 0.7900f, 0.3162f, 0.3548f, 0.2239f, 4.1800f, 0.2100f, 0.1000f, 0.3868f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 1.6788f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_PIPE_SMALL \ + { 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 5.0400f, 0.1000f, 0.1000f, 0.5012f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 2.5119f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_DOME_SAINTPAULS \ + { 1.0000f, 0.8700f, 0.3162f, 0.3548f, 0.2239f, 10.4800f, 0.1900f, 0.1000f, 0.1778f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0420f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_PIPE_LONGTHIN \ + { 0.2560f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 9.2100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_PIPE_LARGE \ + { 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 8.4500f, 0.1000f, 0.1000f, 0.3981f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_PIPE_RESONANT \ + { 0.1373f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 6.8100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 } + +/* Outdoors Presets */ + +#define EFX_REVERB_PRESET_OUTDOORS_BACKYARD \ + { 1.0000f, 0.4500f, 0.3162f, 0.2512f, 0.5012f, 1.1200f, 0.3400f, 0.4600f, 0.4467f, 0.0690f, { 0.0000f, 0.0000f, -0.0000f }, 0.7079f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_OUTDOORS_ROLLINGPLAINS \ + { 1.0000f, 0.0000f, 0.3162f, 0.0112f, 0.6310f, 2.1300f, 0.2100f, 0.4600f, 0.1778f, 0.3000f, { 0.0000f, 0.0000f, -0.0000f }, 0.4467f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_OUTDOORS_DEEPCANYON \ + { 1.0000f, 0.7400f, 0.3162f, 0.1778f, 0.6310f, 3.8900f, 0.2100f, 0.4600f, 0.3162f, 0.2230f, { 0.0000f, 0.0000f, -0.0000f }, 0.3548f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_OUTDOORS_CREEK \ + { 1.0000f, 0.3500f, 0.3162f, 0.1778f, 0.5012f, 2.1300f, 0.2100f, 0.4600f, 0.3981f, 0.1150f, { 0.0000f, 0.0000f, -0.0000f }, 0.1995f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_OUTDOORS_VALLEY \ + { 1.0000f, 0.2800f, 0.3162f, 0.0282f, 0.1585f, 2.8800f, 0.2600f, 0.3500f, 0.1413f, 0.2630f, { 0.0000f, 0.0000f, -0.0000f }, 0.3981f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 } + +/* Mood Presets */ + +#define EFX_REVERB_PRESET_MOOD_HEAVEN \ + { 1.0000f, 0.9400f, 0.3162f, 0.7943f, 0.4467f, 5.0400f, 1.1200f, 0.5600f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0800f, 2.7420f, 0.0500f, 0.9977f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_MOOD_HELL \ + { 1.0000f, 0.5700f, 0.3162f, 0.3548f, 0.4467f, 3.5700f, 0.4900f, 2.0000f, 0.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1100f, 0.0400f, 2.1090f, 0.5200f, 0.9943f, 5000.0000f, 139.5000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_MOOD_MEMORY \ + { 1.0000f, 0.8500f, 0.3162f, 0.6310f, 0.3548f, 4.0600f, 0.8200f, 0.5600f, 0.0398f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.4740f, 0.4500f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +/* Driving Presets */ + +#define EFX_REVERB_PRESET_DRIVING_COMMENTATOR \ + { 1.0000f, 0.0000f, 3.1623f, 0.5623f, 0.5012f, 2.4200f, 0.8800f, 0.6800f, 0.1995f, 0.0930f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_DRIVING_PITGARAGE \ + { 0.4287f, 0.5900f, 0.3162f, 0.7079f, 0.5623f, 1.7200f, 0.9300f, 0.8700f, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_DRIVING_INCAR_RACER \ + { 0.0832f, 0.8000f, 0.3162f, 1.0000f, 0.7943f, 0.1700f, 2.0000f, 0.4100f, 1.7783f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_DRIVING_INCAR_SPORTS \ + { 0.0832f, 0.8000f, 0.3162f, 0.6310f, 1.0000f, 0.1700f, 0.7500f, 0.4100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_DRIVING_INCAR_LUXURY \ + { 0.2560f, 1.0000f, 0.3162f, 0.1000f, 0.5012f, 0.1300f, 0.4100f, 0.4600f, 0.7943f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_DRIVING_FULLGRANDSTAND \ + { 1.0000f, 1.0000f, 0.3162f, 0.2818f, 0.6310f, 3.0100f, 1.3700f, 1.2800f, 0.3548f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.1778f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_DRIVING_EMPTYGRANDSTAND \ + { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 0.7943f, 4.6200f, 1.7500f, 1.4000f, 0.2082f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_DRIVING_TUNNEL \ + { 1.0000f, 0.8100f, 0.3162f, 0.3981f, 0.8913f, 3.4200f, 0.9400f, 1.3100f, 0.7079f, 0.0510f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.0500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 155.3000f, 0.0000f, 0x1 } + +/* City Presets */ + +#define EFX_REVERB_PRESET_CITY_STREETS \ + { 1.0000f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.7900f, 1.1200f, 0.9100f, 0.2818f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 0.1995f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CITY_SUBWAY \ + { 1.0000f, 0.7400f, 0.3162f, 0.7079f, 0.8913f, 3.0100f, 1.2300f, 0.9100f, 0.7079f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CITY_MUSEUM \ + { 1.0000f, 0.8200f, 0.3162f, 0.1778f, 0.1778f, 3.2800f, 1.4000f, 0.5700f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_CITY_LIBRARY \ + { 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.0891f, 2.7600f, 0.8900f, 0.4100f, 0.3548f, 0.0290f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 } + +#define EFX_REVERB_PRESET_CITY_UNDERPASS \ + { 1.0000f, 0.8200f, 0.3162f, 0.4467f, 0.8913f, 3.5700f, 1.1200f, 0.9100f, 0.3981f, 0.0590f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1400f, 0.2500f, 0.0000f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CITY_ABANDONED \ + { 1.0000f, 0.6900f, 0.3162f, 0.7943f, 0.8913f, 3.2800f, 1.1700f, 0.9100f, 0.4467f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9966f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +/* Misc. Presets */ + +#define EFX_REVERB_PRESET_DUSTYROOM \ + { 0.3645f, 0.5600f, 0.3162f, 0.7943f, 0.7079f, 1.7900f, 0.3800f, 0.2100f, 0.5012f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0060f, { 0.0000f, 0.0000f, 0.0000f }, 0.2020f, 0.0500f, 0.2500f, 0.0000f, 0.9886f, 13046.0000f, 163.3000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_CHAPEL \ + { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 1.0000f, 4.6200f, 0.6400f, 1.2300f, 0.4467f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.1100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 } + +#define EFX_REVERB_PRESET_SMALLWATERROOM \ + { 1.0000f, 0.7000f, 0.3162f, 0.4477f, 1.0000f, 1.5100f, 1.2500f, 1.1400f, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } + +#endif /* EFX_PRESETS_H */ diff --git a/contrib/prebuilt/include/AL/efx.h b/contrib/prebuilt/include/AL/efx.h new file mode 100644 index 0000000..5776698 --- /dev/null +++ b/contrib/prebuilt/include/AL/efx.h @@ -0,0 +1,761 @@ +#ifndef AL_EFX_H +#define AL_EFX_H + + +#include "alc.h" +#include "al.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ALC_EXT_EFX_NAME "ALC_EXT_EFX" + +#define ALC_EFX_MAJOR_VERSION 0x20001 +#define ALC_EFX_MINOR_VERSION 0x20002 +#define ALC_MAX_AUXILIARY_SENDS 0x20003 + + +/* Listener properties. */ +#define AL_METERS_PER_UNIT 0x20004 + +/* Source properties. */ +#define AL_DIRECT_FILTER 0x20005 +#define AL_AUXILIARY_SEND_FILTER 0x20006 +#define AL_AIR_ABSORPTION_FACTOR 0x20007 +#define AL_ROOM_ROLLOFF_FACTOR 0x20008 +#define AL_CONE_OUTER_GAINHF 0x20009 +#define AL_DIRECT_FILTER_GAINHF_AUTO 0x2000A +#define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO 0x2000B +#define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO 0x2000C + + +/* Effect properties. */ + +/* Reverb effect parameters */ +#define AL_REVERB_DENSITY 0x0001 +#define AL_REVERB_DIFFUSION 0x0002 +#define AL_REVERB_GAIN 0x0003 +#define AL_REVERB_GAINHF 0x0004 +#define AL_REVERB_DECAY_TIME 0x0005 +#define AL_REVERB_DECAY_HFRATIO 0x0006 +#define AL_REVERB_REFLECTIONS_GAIN 0x0007 +#define AL_REVERB_REFLECTIONS_DELAY 0x0008 +#define AL_REVERB_LATE_REVERB_GAIN 0x0009 +#define AL_REVERB_LATE_REVERB_DELAY 0x000A +#define AL_REVERB_AIR_ABSORPTION_GAINHF 0x000B +#define AL_REVERB_ROOM_ROLLOFF_FACTOR 0x000C +#define AL_REVERB_DECAY_HFLIMIT 0x000D + +/* EAX Reverb effect parameters */ +#define AL_EAXREVERB_DENSITY 0x0001 +#define AL_EAXREVERB_DIFFUSION 0x0002 +#define AL_EAXREVERB_GAIN 0x0003 +#define AL_EAXREVERB_GAINHF 0x0004 +#define AL_EAXREVERB_GAINLF 0x0005 +#define AL_EAXREVERB_DECAY_TIME 0x0006 +#define AL_EAXREVERB_DECAY_HFRATIO 0x0007 +#define AL_EAXREVERB_DECAY_LFRATIO 0x0008 +#define AL_EAXREVERB_REFLECTIONS_GAIN 0x0009 +#define AL_EAXREVERB_REFLECTIONS_DELAY 0x000A +#define AL_EAXREVERB_REFLECTIONS_PAN 0x000B +#define AL_EAXREVERB_LATE_REVERB_GAIN 0x000C +#define AL_EAXREVERB_LATE_REVERB_DELAY 0x000D +#define AL_EAXREVERB_LATE_REVERB_PAN 0x000E +#define AL_EAXREVERB_ECHO_TIME 0x000F +#define AL_EAXREVERB_ECHO_DEPTH 0x0010 +#define AL_EAXREVERB_MODULATION_TIME 0x0011 +#define AL_EAXREVERB_MODULATION_DEPTH 0x0012 +#define AL_EAXREVERB_AIR_ABSORPTION_GAINHF 0x0013 +#define AL_EAXREVERB_HFREFERENCE 0x0014 +#define AL_EAXREVERB_LFREFERENCE 0x0015 +#define AL_EAXREVERB_ROOM_ROLLOFF_FACTOR 0x0016 +#define AL_EAXREVERB_DECAY_HFLIMIT 0x0017 + +/* Chorus effect parameters */ +#define AL_CHORUS_WAVEFORM 0x0001 +#define AL_CHORUS_PHASE 0x0002 +#define AL_CHORUS_RATE 0x0003 +#define AL_CHORUS_DEPTH 0x0004 +#define AL_CHORUS_FEEDBACK 0x0005 +#define AL_CHORUS_DELAY 0x0006 + +/* Distortion effect parameters */ +#define AL_DISTORTION_EDGE 0x0001 +#define AL_DISTORTION_GAIN 0x0002 +#define AL_DISTORTION_LOWPASS_CUTOFF 0x0003 +#define AL_DISTORTION_EQCENTER 0x0004 +#define AL_DISTORTION_EQBANDWIDTH 0x0005 + +/* Echo effect parameters */ +#define AL_ECHO_DELAY 0x0001 +#define AL_ECHO_LRDELAY 0x0002 +#define AL_ECHO_DAMPING 0x0003 +#define AL_ECHO_FEEDBACK 0x0004 +#define AL_ECHO_SPREAD 0x0005 + +/* Flanger effect parameters */ +#define AL_FLANGER_WAVEFORM 0x0001 +#define AL_FLANGER_PHASE 0x0002 +#define AL_FLANGER_RATE 0x0003 +#define AL_FLANGER_DEPTH 0x0004 +#define AL_FLANGER_FEEDBACK 0x0005 +#define AL_FLANGER_DELAY 0x0006 + +/* Frequency shifter effect parameters */ +#define AL_FREQUENCY_SHIFTER_FREQUENCY 0x0001 +#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION 0x0002 +#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION 0x0003 + +/* Vocal morpher effect parameters */ +#define AL_VOCAL_MORPHER_PHONEMEA 0x0001 +#define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING 0x0002 +#define AL_VOCAL_MORPHER_PHONEMEB 0x0003 +#define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING 0x0004 +#define AL_VOCAL_MORPHER_WAVEFORM 0x0005 +#define AL_VOCAL_MORPHER_RATE 0x0006 + +/* Pitchshifter effect parameters */ +#define AL_PITCH_SHIFTER_COARSE_TUNE 0x0001 +#define AL_PITCH_SHIFTER_FINE_TUNE 0x0002 + +/* Ringmodulator effect parameters */ +#define AL_RING_MODULATOR_FREQUENCY 0x0001 +#define AL_RING_MODULATOR_HIGHPASS_CUTOFF 0x0002 +#define AL_RING_MODULATOR_WAVEFORM 0x0003 + +/* Autowah effect parameters */ +#define AL_AUTOWAH_ATTACK_TIME 0x0001 +#define AL_AUTOWAH_RELEASE_TIME 0x0002 +#define AL_AUTOWAH_RESONANCE 0x0003 +#define AL_AUTOWAH_PEAK_GAIN 0x0004 + +/* Compressor effect parameters */ +#define AL_COMPRESSOR_ONOFF 0x0001 + +/* Equalizer effect parameters */ +#define AL_EQUALIZER_LOW_GAIN 0x0001 +#define AL_EQUALIZER_LOW_CUTOFF 0x0002 +#define AL_EQUALIZER_MID1_GAIN 0x0003 +#define AL_EQUALIZER_MID1_CENTER 0x0004 +#define AL_EQUALIZER_MID1_WIDTH 0x0005 +#define AL_EQUALIZER_MID2_GAIN 0x0006 +#define AL_EQUALIZER_MID2_CENTER 0x0007 +#define AL_EQUALIZER_MID2_WIDTH 0x0008 +#define AL_EQUALIZER_HIGH_GAIN 0x0009 +#define AL_EQUALIZER_HIGH_CUTOFF 0x000A + +/* Effect type */ +#define AL_EFFECT_FIRST_PARAMETER 0x0000 +#define AL_EFFECT_LAST_PARAMETER 0x8000 +#define AL_EFFECT_TYPE 0x8001 + +/* Effect types, used with the AL_EFFECT_TYPE property */ +#define AL_EFFECT_NULL 0x0000 +#define AL_EFFECT_REVERB 0x0001 +#define AL_EFFECT_CHORUS 0x0002 +#define AL_EFFECT_DISTORTION 0x0003 +#define AL_EFFECT_ECHO 0x0004 +#define AL_EFFECT_FLANGER 0x0005 +#define AL_EFFECT_FREQUENCY_SHIFTER 0x0006 +#define AL_EFFECT_VOCAL_MORPHER 0x0007 +#define AL_EFFECT_PITCH_SHIFTER 0x0008 +#define AL_EFFECT_RING_MODULATOR 0x0009 +#define AL_EFFECT_AUTOWAH 0x000A +#define AL_EFFECT_COMPRESSOR 0x000B +#define AL_EFFECT_EQUALIZER 0x000C +#define AL_EFFECT_EAXREVERB 0x8000 + +/* Auxiliary Effect Slot properties. */ +#define AL_EFFECTSLOT_EFFECT 0x0001 +#define AL_EFFECTSLOT_GAIN 0x0002 +#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003 + +/* NULL Auxiliary Slot ID to disable a source send. */ +#define AL_EFFECTSLOT_NULL 0x0000 + + +/* Filter properties. */ + +/* Lowpass filter parameters */ +#define AL_LOWPASS_GAIN 0x0001 +#define AL_LOWPASS_GAINHF 0x0002 + +/* Highpass filter parameters */ +#define AL_HIGHPASS_GAIN 0x0001 +#define AL_HIGHPASS_GAINLF 0x0002 + +/* Bandpass filter parameters */ +#define AL_BANDPASS_GAIN 0x0001 +#define AL_BANDPASS_GAINLF 0x0002 +#define AL_BANDPASS_GAINHF 0x0003 + +/* Filter type */ +#define AL_FILTER_FIRST_PARAMETER 0x0000 +#define AL_FILTER_LAST_PARAMETER 0x8000 +#define AL_FILTER_TYPE 0x8001 + +/* Filter types, used with the AL_FILTER_TYPE property */ +#define AL_FILTER_NULL 0x0000 +#define AL_FILTER_LOWPASS 0x0001 +#define AL_FILTER_HIGHPASS 0x0002 +#define AL_FILTER_BANDPASS 0x0003 + + +/* Effect object function types. */ +typedef void (AL_APIENTRY *LPALGENEFFECTS)(ALsizei, ALuint*); +typedef void (AL_APIENTRY *LPALDELETEEFFECTS)(ALsizei, const ALuint*); +typedef ALboolean (AL_APIENTRY *LPALISEFFECT)(ALuint); +typedef void (AL_APIENTRY *LPALEFFECTI)(ALuint, ALenum, ALint); +typedef void (AL_APIENTRY *LPALEFFECTIV)(ALuint, ALenum, const ALint*); +typedef void (AL_APIENTRY *LPALEFFECTF)(ALuint, ALenum, ALfloat); +typedef void (AL_APIENTRY *LPALEFFECTFV)(ALuint, ALenum, const ALfloat*); +typedef void (AL_APIENTRY *LPALGETEFFECTI)(ALuint, ALenum, ALint*); +typedef void (AL_APIENTRY *LPALGETEFFECTIV)(ALuint, ALenum, ALint*); +typedef void (AL_APIENTRY *LPALGETEFFECTF)(ALuint, ALenum, ALfloat*); +typedef void (AL_APIENTRY *LPALGETEFFECTFV)(ALuint, ALenum, ALfloat*); + +/* Filter object function types. */ +typedef void (AL_APIENTRY *LPALGENFILTERS)(ALsizei, ALuint*); +typedef void (AL_APIENTRY *LPALDELETEFILTERS)(ALsizei, const ALuint*); +typedef ALboolean (AL_APIENTRY *LPALISFILTER)(ALuint); +typedef void (AL_APIENTRY *LPALFILTERI)(ALuint, ALenum, ALint); +typedef void (AL_APIENTRY *LPALFILTERIV)(ALuint, ALenum, const ALint*); +typedef void (AL_APIENTRY *LPALFILTERF)(ALuint, ALenum, ALfloat); +typedef void (AL_APIENTRY *LPALFILTERFV)(ALuint, ALenum, const ALfloat*); +typedef void (AL_APIENTRY *LPALGETFILTERI)(ALuint, ALenum, ALint*); +typedef void (AL_APIENTRY *LPALGETFILTERIV)(ALuint, ALenum, ALint*); +typedef void (AL_APIENTRY *LPALGETFILTERF)(ALuint, ALenum, ALfloat*); +typedef void (AL_APIENTRY *LPALGETFILTERFV)(ALuint, ALenum, ALfloat*); + +/* Auxiliary Effect Slot object function types. */ +typedef void (AL_APIENTRY *LPALGENAUXILIARYEFFECTSLOTS)(ALsizei, ALuint*); +typedef void (AL_APIENTRY *LPALDELETEAUXILIARYEFFECTSLOTS)(ALsizei, const ALuint*); +typedef ALboolean (AL_APIENTRY *LPALISAUXILIARYEFFECTSLOT)(ALuint); +typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint); +typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, const ALint*); +typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat); +typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, const ALfloat*); +typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint*); +typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, ALint*); +typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat*); +typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, ALfloat*); + +#ifdef AL_ALEXT_PROTOTYPES +AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects); +AL_API ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, const ALuint *effects); +AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect); +AL_API ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue); +AL_API ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, const ALint *piValues); +AL_API ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue); +AL_API ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, const ALfloat *pflValues); +AL_API ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue); +AL_API ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues); +AL_API ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue); +AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues); + +AL_API ALvoid AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters); +AL_API ALvoid AL_APIENTRY alDeleteFilters(ALsizei n, const ALuint *filters); +AL_API ALboolean AL_APIENTRY alIsFilter(ALuint filter); +AL_API ALvoid AL_APIENTRY alFilteri(ALuint filter, ALenum param, ALint iValue); +AL_API ALvoid AL_APIENTRY alFilteriv(ALuint filter, ALenum param, const ALint *piValues); +AL_API ALvoid AL_APIENTRY alFilterf(ALuint filter, ALenum param, ALfloat flValue); +AL_API ALvoid AL_APIENTRY alFilterfv(ALuint filter, ALenum param, const ALfloat *pflValues); +AL_API ALvoid AL_APIENTRY alGetFilteri(ALuint filter, ALenum param, ALint *piValue); +AL_API ALvoid AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piValues); +AL_API ALvoid AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue); +AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues); + +AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots); +AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint *effectslots); +AL_API ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot); +AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue); +AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, const ALint *piValues); +AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue); +AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, const ALfloat *pflValues); +AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue); +AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues); +AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue); +AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues); +#endif + +/* Filter ranges and defaults. */ + +/* Lowpass filter */ +#define AL_LOWPASS_MIN_GAIN (0.0f) +#define AL_LOWPASS_MAX_GAIN (1.0f) +#define AL_LOWPASS_DEFAULT_GAIN (1.0f) + +#define AL_LOWPASS_MIN_GAINHF (0.0f) +#define AL_LOWPASS_MAX_GAINHF (1.0f) +#define AL_LOWPASS_DEFAULT_GAINHF (1.0f) + +/* Highpass filter */ +#define AL_HIGHPASS_MIN_GAIN (0.0f) +#define AL_HIGHPASS_MAX_GAIN (1.0f) +#define AL_HIGHPASS_DEFAULT_GAIN (1.0f) + +#define AL_HIGHPASS_MIN_GAINLF (0.0f) +#define AL_HIGHPASS_MAX_GAINLF (1.0f) +#define AL_HIGHPASS_DEFAULT_GAINLF (1.0f) + +/* Bandpass filter */ +#define AL_BANDPASS_MIN_GAIN (0.0f) +#define AL_BANDPASS_MAX_GAIN (1.0f) +#define AL_BANDPASS_DEFAULT_GAIN (1.0f) + +#define AL_BANDPASS_MIN_GAINHF (0.0f) +#define AL_BANDPASS_MAX_GAINHF (1.0f) +#define AL_BANDPASS_DEFAULT_GAINHF (1.0f) + +#define AL_BANDPASS_MIN_GAINLF (0.0f) +#define AL_BANDPASS_MAX_GAINLF (1.0f) +#define AL_BANDPASS_DEFAULT_GAINLF (1.0f) + + +/* Effect parameter ranges and defaults. */ + +/* Standard reverb effect */ +#define AL_REVERB_MIN_DENSITY (0.0f) +#define AL_REVERB_MAX_DENSITY (1.0f) +#define AL_REVERB_DEFAULT_DENSITY (1.0f) + +#define AL_REVERB_MIN_DIFFUSION (0.0f) +#define AL_REVERB_MAX_DIFFUSION (1.0f) +#define AL_REVERB_DEFAULT_DIFFUSION (1.0f) + +#define AL_REVERB_MIN_GAIN (0.0f) +#define AL_REVERB_MAX_GAIN (1.0f) +#define AL_REVERB_DEFAULT_GAIN (0.32f) + +#define AL_REVERB_MIN_GAINHF (0.0f) +#define AL_REVERB_MAX_GAINHF (1.0f) +#define AL_REVERB_DEFAULT_GAINHF (0.89f) + +#define AL_REVERB_MIN_DECAY_TIME (0.1f) +#define AL_REVERB_MAX_DECAY_TIME (20.0f) +#define AL_REVERB_DEFAULT_DECAY_TIME (1.49f) + +#define AL_REVERB_MIN_DECAY_HFRATIO (0.1f) +#define AL_REVERB_MAX_DECAY_HFRATIO (2.0f) +#define AL_REVERB_DEFAULT_DECAY_HFRATIO (0.83f) + +#define AL_REVERB_MIN_REFLECTIONS_GAIN (0.0f) +#define AL_REVERB_MAX_REFLECTIONS_GAIN (3.16f) +#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN (0.05f) + +#define AL_REVERB_MIN_REFLECTIONS_DELAY (0.0f) +#define AL_REVERB_MAX_REFLECTIONS_DELAY (0.3f) +#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY (0.007f) + +#define AL_REVERB_MIN_LATE_REVERB_GAIN (0.0f) +#define AL_REVERB_MAX_LATE_REVERB_GAIN (10.0f) +#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN (1.26f) + +#define AL_REVERB_MIN_LATE_REVERB_DELAY (0.0f) +#define AL_REVERB_MAX_LATE_REVERB_DELAY (0.1f) +#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY (0.011f) + +#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f) +#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f) +#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f) + +#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f) +#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f) +#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f) + +#define AL_REVERB_MIN_DECAY_HFLIMIT AL_FALSE +#define AL_REVERB_MAX_DECAY_HFLIMIT AL_TRUE +#define AL_REVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE + +/* EAX reverb effect */ +#define AL_EAXREVERB_MIN_DENSITY (0.0f) +#define AL_EAXREVERB_MAX_DENSITY (1.0f) +#define AL_EAXREVERB_DEFAULT_DENSITY (1.0f) + +#define AL_EAXREVERB_MIN_DIFFUSION (0.0f) +#define AL_EAXREVERB_MAX_DIFFUSION (1.0f) +#define AL_EAXREVERB_DEFAULT_DIFFUSION (1.0f) + +#define AL_EAXREVERB_MIN_GAIN (0.0f) +#define AL_EAXREVERB_MAX_GAIN (1.0f) +#define AL_EAXREVERB_DEFAULT_GAIN (0.32f) + +#define AL_EAXREVERB_MIN_GAINHF (0.0f) +#define AL_EAXREVERB_MAX_GAINHF (1.0f) +#define AL_EAXREVERB_DEFAULT_GAINHF (0.89f) + +#define AL_EAXREVERB_MIN_GAINLF (0.0f) +#define AL_EAXREVERB_MAX_GAINLF (1.0f) +#define AL_EAXREVERB_DEFAULT_GAINLF (1.0f) + +#define AL_EAXREVERB_MIN_DECAY_TIME (0.1f) +#define AL_EAXREVERB_MAX_DECAY_TIME (20.0f) +#define AL_EAXREVERB_DEFAULT_DECAY_TIME (1.49f) + +#define AL_EAXREVERB_MIN_DECAY_HFRATIO (0.1f) +#define AL_EAXREVERB_MAX_DECAY_HFRATIO (2.0f) +#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO (0.83f) + +#define AL_EAXREVERB_MIN_DECAY_LFRATIO (0.1f) +#define AL_EAXREVERB_MAX_DECAY_LFRATIO (2.0f) +#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO (1.0f) + +#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN (0.0f) +#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN (3.16f) +#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN (0.05f) + +#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY (0.0f) +#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY (0.3f) +#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY (0.007f) + +#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (0.0f) + +#define AL_EAXREVERB_MIN_LATE_REVERB_GAIN (0.0f) +#define AL_EAXREVERB_MAX_LATE_REVERB_GAIN (10.0f) +#define AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN (1.26f) + +#define AL_EAXREVERB_MIN_LATE_REVERB_DELAY (0.0f) +#define AL_EAXREVERB_MAX_LATE_REVERB_DELAY (0.1f) +#define AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY (0.011f) + +#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ (0.0f) + +#define AL_EAXREVERB_MIN_ECHO_TIME (0.075f) +#define AL_EAXREVERB_MAX_ECHO_TIME (0.25f) +#define AL_EAXREVERB_DEFAULT_ECHO_TIME (0.25f) + +#define AL_EAXREVERB_MIN_ECHO_DEPTH (0.0f) +#define AL_EAXREVERB_MAX_ECHO_DEPTH (1.0f) +#define AL_EAXREVERB_DEFAULT_ECHO_DEPTH (0.0f) + +#define AL_EAXREVERB_MIN_MODULATION_TIME (0.04f) +#define AL_EAXREVERB_MAX_MODULATION_TIME (4.0f) +#define AL_EAXREVERB_DEFAULT_MODULATION_TIME (0.25f) + +#define AL_EAXREVERB_MIN_MODULATION_DEPTH (0.0f) +#define AL_EAXREVERB_MAX_MODULATION_DEPTH (1.0f) +#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH (0.0f) + +#define AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f) +#define AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f) +#define AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f) + +#define AL_EAXREVERB_MIN_HFREFERENCE (1000.0f) +#define AL_EAXREVERB_MAX_HFREFERENCE (20000.0f) +#define AL_EAXREVERB_DEFAULT_HFREFERENCE (5000.0f) + +#define AL_EAXREVERB_MIN_LFREFERENCE (20.0f) +#define AL_EAXREVERB_MAX_LFREFERENCE (1000.0f) +#define AL_EAXREVERB_DEFAULT_LFREFERENCE (250.0f) + +#define AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f) +#define AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f) +#define AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f) + +#define AL_EAXREVERB_MIN_DECAY_HFLIMIT AL_FALSE +#define AL_EAXREVERB_MAX_DECAY_HFLIMIT AL_TRUE +#define AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE + +/* Chorus effect */ +#define AL_CHORUS_WAVEFORM_SINUSOID (0) +#define AL_CHORUS_WAVEFORM_TRIANGLE (1) + +#define AL_CHORUS_MIN_WAVEFORM (0) +#define AL_CHORUS_MAX_WAVEFORM (1) +#define AL_CHORUS_DEFAULT_WAVEFORM (1) + +#define AL_CHORUS_MIN_PHASE (-180) +#define AL_CHORUS_MAX_PHASE (180) +#define AL_CHORUS_DEFAULT_PHASE (90) + +#define AL_CHORUS_MIN_RATE (0.0f) +#define AL_CHORUS_MAX_RATE (10.0f) +#define AL_CHORUS_DEFAULT_RATE (1.1f) + +#define AL_CHORUS_MIN_DEPTH (0.0f) +#define AL_CHORUS_MAX_DEPTH (1.0f) +#define AL_CHORUS_DEFAULT_DEPTH (0.1f) + +#define AL_CHORUS_MIN_FEEDBACK (-1.0f) +#define AL_CHORUS_MAX_FEEDBACK (1.0f) +#define AL_CHORUS_DEFAULT_FEEDBACK (0.25f) + +#define AL_CHORUS_MIN_DELAY (0.0f) +#define AL_CHORUS_MAX_DELAY (0.016f) +#define AL_CHORUS_DEFAULT_DELAY (0.016f) + +/* Distortion effect */ +#define AL_DISTORTION_MIN_EDGE (0.0f) +#define AL_DISTORTION_MAX_EDGE (1.0f) +#define AL_DISTORTION_DEFAULT_EDGE (0.2f) + +#define AL_DISTORTION_MIN_GAIN (0.01f) +#define AL_DISTORTION_MAX_GAIN (1.0f) +#define AL_DISTORTION_DEFAULT_GAIN (0.05f) + +#define AL_DISTORTION_MIN_LOWPASS_CUTOFF (80.0f) +#define AL_DISTORTION_MAX_LOWPASS_CUTOFF (24000.0f) +#define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF (8000.0f) + +#define AL_DISTORTION_MIN_EQCENTER (80.0f) +#define AL_DISTORTION_MAX_EQCENTER (24000.0f) +#define AL_DISTORTION_DEFAULT_EQCENTER (3600.0f) + +#define AL_DISTORTION_MIN_EQBANDWIDTH (80.0f) +#define AL_DISTORTION_MAX_EQBANDWIDTH (24000.0f) +#define AL_DISTORTION_DEFAULT_EQBANDWIDTH (3600.0f) + +/* Echo effect */ +#define AL_ECHO_MIN_DELAY (0.0f) +#define AL_ECHO_MAX_DELAY (0.207f) +#define AL_ECHO_DEFAULT_DELAY (0.1f) + +#define AL_ECHO_MIN_LRDELAY (0.0f) +#define AL_ECHO_MAX_LRDELAY (0.404f) +#define AL_ECHO_DEFAULT_LRDELAY (0.1f) + +#define AL_ECHO_MIN_DAMPING (0.0f) +#define AL_ECHO_MAX_DAMPING (0.99f) +#define AL_ECHO_DEFAULT_DAMPING (0.5f) + +#define AL_ECHO_MIN_FEEDBACK (0.0f) +#define AL_ECHO_MAX_FEEDBACK (1.0f) +#define AL_ECHO_DEFAULT_FEEDBACK (0.5f) + +#define AL_ECHO_MIN_SPREAD (-1.0f) +#define AL_ECHO_MAX_SPREAD (1.0f) +#define AL_ECHO_DEFAULT_SPREAD (-1.0f) + +/* Flanger effect */ +#define AL_FLANGER_WAVEFORM_SINUSOID (0) +#define AL_FLANGER_WAVEFORM_TRIANGLE (1) + +#define AL_FLANGER_MIN_WAVEFORM (0) +#define AL_FLANGER_MAX_WAVEFORM (1) +#define AL_FLANGER_DEFAULT_WAVEFORM (1) + +#define AL_FLANGER_MIN_PHASE (-180) +#define AL_FLANGER_MAX_PHASE (180) +#define AL_FLANGER_DEFAULT_PHASE (0) + +#define AL_FLANGER_MIN_RATE (0.0f) +#define AL_FLANGER_MAX_RATE (10.0f) +#define AL_FLANGER_DEFAULT_RATE (0.27f) + +#define AL_FLANGER_MIN_DEPTH (0.0f) +#define AL_FLANGER_MAX_DEPTH (1.0f) +#define AL_FLANGER_DEFAULT_DEPTH (1.0f) + +#define AL_FLANGER_MIN_FEEDBACK (-1.0f) +#define AL_FLANGER_MAX_FEEDBACK (1.0f) +#define AL_FLANGER_DEFAULT_FEEDBACK (-0.5f) + +#define AL_FLANGER_MIN_DELAY (0.0f) +#define AL_FLANGER_MAX_DELAY (0.004f) +#define AL_FLANGER_DEFAULT_DELAY (0.002f) + +/* Frequency shifter effect */ +#define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY (0.0f) +#define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY (24000.0f) +#define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY (0.0f) + +#define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION (0) +#define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION (2) +#define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION (0) + +#define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN (0) +#define AL_FREQUENCY_SHIFTER_DIRECTION_UP (1) +#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF (2) + +#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION (0) +#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION (2) +#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION (0) + +/* Vocal morpher effect */ +#define AL_VOCAL_MORPHER_MIN_PHONEMEA (0) +#define AL_VOCAL_MORPHER_MAX_PHONEMEA (29) +#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA (0) + +#define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24) +#define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING (24) +#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING (0) + +#define AL_VOCAL_MORPHER_MIN_PHONEMEB (0) +#define AL_VOCAL_MORPHER_MAX_PHONEMEB (29) +#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB (10) + +#define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24) +#define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING (24) +#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING (0) + +#define AL_VOCAL_MORPHER_PHONEME_A (0) +#define AL_VOCAL_MORPHER_PHONEME_E (1) +#define AL_VOCAL_MORPHER_PHONEME_I (2) +#define AL_VOCAL_MORPHER_PHONEME_O (3) +#define AL_VOCAL_MORPHER_PHONEME_U (4) +#define AL_VOCAL_MORPHER_PHONEME_AA (5) +#define AL_VOCAL_MORPHER_PHONEME_AE (6) +#define AL_VOCAL_MORPHER_PHONEME_AH (7) +#define AL_VOCAL_MORPHER_PHONEME_AO (8) +#define AL_VOCAL_MORPHER_PHONEME_EH (9) +#define AL_VOCAL_MORPHER_PHONEME_ER (10) +#define AL_VOCAL_MORPHER_PHONEME_IH (11) +#define AL_VOCAL_MORPHER_PHONEME_IY (12) +#define AL_VOCAL_MORPHER_PHONEME_UH (13) +#define AL_VOCAL_MORPHER_PHONEME_UW (14) +#define AL_VOCAL_MORPHER_PHONEME_B (15) +#define AL_VOCAL_MORPHER_PHONEME_D (16) +#define AL_VOCAL_MORPHER_PHONEME_F (17) +#define AL_VOCAL_MORPHER_PHONEME_G (18) +#define AL_VOCAL_MORPHER_PHONEME_J (19) +#define AL_VOCAL_MORPHER_PHONEME_K (20) +#define AL_VOCAL_MORPHER_PHONEME_L (21) +#define AL_VOCAL_MORPHER_PHONEME_M (22) +#define AL_VOCAL_MORPHER_PHONEME_N (23) +#define AL_VOCAL_MORPHER_PHONEME_P (24) +#define AL_VOCAL_MORPHER_PHONEME_R (25) +#define AL_VOCAL_MORPHER_PHONEME_S (26) +#define AL_VOCAL_MORPHER_PHONEME_T (27) +#define AL_VOCAL_MORPHER_PHONEME_V (28) +#define AL_VOCAL_MORPHER_PHONEME_Z (29) + +#define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID (0) +#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE (1) +#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH (2) + +#define AL_VOCAL_MORPHER_MIN_WAVEFORM (0) +#define AL_VOCAL_MORPHER_MAX_WAVEFORM (2) +#define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM (0) + +#define AL_VOCAL_MORPHER_MIN_RATE (0.0f) +#define AL_VOCAL_MORPHER_MAX_RATE (10.0f) +#define AL_VOCAL_MORPHER_DEFAULT_RATE (1.41f) + +/* Pitch shifter effect */ +#define AL_PITCH_SHIFTER_MIN_COARSE_TUNE (-12) +#define AL_PITCH_SHIFTER_MAX_COARSE_TUNE (12) +#define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE (12) + +#define AL_PITCH_SHIFTER_MIN_FINE_TUNE (-50) +#define AL_PITCH_SHIFTER_MAX_FINE_TUNE (50) +#define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE (0) + +/* Ring modulator effect */ +#define AL_RING_MODULATOR_MIN_FREQUENCY (0.0f) +#define AL_RING_MODULATOR_MAX_FREQUENCY (8000.0f) +#define AL_RING_MODULATOR_DEFAULT_FREQUENCY (440.0f) + +#define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF (0.0f) +#define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF (24000.0f) +#define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF (800.0f) + +#define AL_RING_MODULATOR_SINUSOID (0) +#define AL_RING_MODULATOR_SAWTOOTH (1) +#define AL_RING_MODULATOR_SQUARE (2) + +#define AL_RING_MODULATOR_MIN_WAVEFORM (0) +#define AL_RING_MODULATOR_MAX_WAVEFORM (2) +#define AL_RING_MODULATOR_DEFAULT_WAVEFORM (0) + +/* Autowah effect */ +#define AL_AUTOWAH_MIN_ATTACK_TIME (0.0001f) +#define AL_AUTOWAH_MAX_ATTACK_TIME (1.0f) +#define AL_AUTOWAH_DEFAULT_ATTACK_TIME (0.06f) + +#define AL_AUTOWAH_MIN_RELEASE_TIME (0.0001f) +#define AL_AUTOWAH_MAX_RELEASE_TIME (1.0f) +#define AL_AUTOWAH_DEFAULT_RELEASE_TIME (0.06f) + +#define AL_AUTOWAH_MIN_RESONANCE (2.0f) +#define AL_AUTOWAH_MAX_RESONANCE (1000.0f) +#define AL_AUTOWAH_DEFAULT_RESONANCE (1000.0f) + +#define AL_AUTOWAH_MIN_PEAK_GAIN (0.00003f) +#define AL_AUTOWAH_MAX_PEAK_GAIN (31621.0f) +#define AL_AUTOWAH_DEFAULT_PEAK_GAIN (11.22f) + +/* Compressor effect */ +#define AL_COMPRESSOR_MIN_ONOFF (0) +#define AL_COMPRESSOR_MAX_ONOFF (1) +#define AL_COMPRESSOR_DEFAULT_ONOFF (1) + +/* Equalizer effect */ +#define AL_EQUALIZER_MIN_LOW_GAIN (0.126f) +#define AL_EQUALIZER_MAX_LOW_GAIN (7.943f) +#define AL_EQUALIZER_DEFAULT_LOW_GAIN (1.0f) + +#define AL_EQUALIZER_MIN_LOW_CUTOFF (50.0f) +#define AL_EQUALIZER_MAX_LOW_CUTOFF (800.0f) +#define AL_EQUALIZER_DEFAULT_LOW_CUTOFF (200.0f) + +#define AL_EQUALIZER_MIN_MID1_GAIN (0.126f) +#define AL_EQUALIZER_MAX_MID1_GAIN (7.943f) +#define AL_EQUALIZER_DEFAULT_MID1_GAIN (1.0f) + +#define AL_EQUALIZER_MIN_MID1_CENTER (200.0f) +#define AL_EQUALIZER_MAX_MID1_CENTER (3000.0f) +#define AL_EQUALIZER_DEFAULT_MID1_CENTER (500.0f) + +#define AL_EQUALIZER_MIN_MID1_WIDTH (0.01f) +#define AL_EQUALIZER_MAX_MID1_WIDTH (1.0f) +#define AL_EQUALIZER_DEFAULT_MID1_WIDTH (1.0f) + +#define AL_EQUALIZER_MIN_MID2_GAIN (0.126f) +#define AL_EQUALIZER_MAX_MID2_GAIN (7.943f) +#define AL_EQUALIZER_DEFAULT_MID2_GAIN (1.0f) + +#define AL_EQUALIZER_MIN_MID2_CENTER (1000.0f) +#define AL_EQUALIZER_MAX_MID2_CENTER (8000.0f) +#define AL_EQUALIZER_DEFAULT_MID2_CENTER (3000.0f) + +#define AL_EQUALIZER_MIN_MID2_WIDTH (0.01f) +#define AL_EQUALIZER_MAX_MID2_WIDTH (1.0f) +#define AL_EQUALIZER_DEFAULT_MID2_WIDTH (1.0f) + +#define AL_EQUALIZER_MIN_HIGH_GAIN (0.126f) +#define AL_EQUALIZER_MAX_HIGH_GAIN (7.943f) +#define AL_EQUALIZER_DEFAULT_HIGH_GAIN (1.0f) + +#define AL_EQUALIZER_MIN_HIGH_CUTOFF (4000.0f) +#define AL_EQUALIZER_MAX_HIGH_CUTOFF (16000.0f) +#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF (6000.0f) + + +/* Source parameter value ranges and defaults. */ +#define AL_MIN_AIR_ABSORPTION_FACTOR (0.0f) +#define AL_MAX_AIR_ABSORPTION_FACTOR (10.0f) +#define AL_DEFAULT_AIR_ABSORPTION_FACTOR (0.0f) + +#define AL_MIN_ROOM_ROLLOFF_FACTOR (0.0f) +#define AL_MAX_ROOM_ROLLOFF_FACTOR (10.0f) +#define AL_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f) + +#define AL_MIN_CONE_OUTER_GAINHF (0.0f) +#define AL_MAX_CONE_OUTER_GAINHF (1.0f) +#define AL_DEFAULT_CONE_OUTER_GAINHF (1.0f) + +#define AL_MIN_DIRECT_FILTER_GAINHF_AUTO AL_FALSE +#define AL_MAX_DIRECT_FILTER_GAINHF_AUTO AL_TRUE +#define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO AL_TRUE + +#define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_FALSE +#define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE +#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE + +#define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE +#define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE +#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE + + +/* Listener parameter value ranges and defaults. */ +#define AL_MIN_METERS_PER_UNIT FLT_MIN +#define AL_MAX_METERS_PER_UNIT FLT_MAX +#define AL_DEFAULT_METERS_PER_UNIT (1.0f) + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* AL_EFX_H */ diff --git a/contrib/prebuilt/include/al.h b/contrib/prebuilt/include/al.h new file mode 100644 index 0000000..413b383 --- /dev/null +++ b/contrib/prebuilt/include/al.h @@ -0,0 +1,656 @@ +#ifndef AL_AL_H +#define AL_AL_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#ifndef AL_API + #if defined(AL_LIBTYPE_STATIC) + #define AL_API + #elif defined(_WIN32) + #define AL_API __declspec(dllimport) + #else + #define AL_API extern + #endif +#endif + +#if defined(_WIN32) + #define AL_APIENTRY __cdecl +#else + #define AL_APIENTRY +#endif + + +/** Deprecated macro. */ +#define OPENAL +#define ALAPI AL_API +#define ALAPIENTRY AL_APIENTRY +#define AL_INVALID (-1) +#define AL_ILLEGAL_ENUM AL_INVALID_ENUM +#define AL_ILLEGAL_COMMAND AL_INVALID_OPERATION + +/** Supported AL version. */ +#define AL_VERSION_1_0 +#define AL_VERSION_1_1 + +/** 8-bit boolean */ +typedef char ALboolean; + +/** character */ +typedef char ALchar; + +/** signed 8-bit 2's complement integer */ +typedef signed char ALbyte; + +/** unsigned 8-bit integer */ +typedef unsigned char ALubyte; + +/** signed 16-bit 2's complement integer */ +typedef short ALshort; + +/** unsigned 16-bit integer */ +typedef unsigned short ALushort; + +/** signed 32-bit 2's complement integer */ +typedef int ALint; + +/** unsigned 32-bit integer */ +typedef unsigned int ALuint; + +/** non-negative 32-bit binary integer size */ +typedef int ALsizei; + +/** enumerated 32-bit value */ +typedef int ALenum; + +/** 32-bit IEEE754 floating-point */ +typedef float ALfloat; + +/** 64-bit IEEE754 floating-point */ +typedef double ALdouble; + +/** void type (for opaque pointers only) */ +typedef void ALvoid; + + +/* Enumerant values begin at column 50. No tabs. */ + +/** "no distance model" or "no buffer" */ +#define AL_NONE 0 + +/** Boolean False. */ +#define AL_FALSE 0 + +/** Boolean True. */ +#define AL_TRUE 1 + + +/** + * Relative source. + * Type: ALboolean + * Range: [AL_TRUE, AL_FALSE] + * Default: AL_FALSE + * + * Specifies if the Source has relative coordinates. + */ +#define AL_SOURCE_RELATIVE 0x202 + + +/** + * Inner cone angle, in degrees. + * Type: ALint, ALfloat + * Range: [0 - 360] + * Default: 360 + * + * The angle covered by the inner cone, where the source will not attenuate. + */ +#define AL_CONE_INNER_ANGLE 0x1001 + +/** + * Outer cone angle, in degrees. + * Range: [0 - 360] + * Default: 360 + * + * The angle covered by the outer cone, where the source will be fully + * attenuated. + */ +#define AL_CONE_OUTER_ANGLE 0x1002 + +/** + * Source pitch. + * Type: ALfloat + * Range: [0.5 - 2.0] + * Default: 1.0 + * + * A multiplier for the frequency (sample rate) of the source's buffer. + */ +#define AL_PITCH 0x1003 + +/** + * Source or listener position. + * Type: ALfloat[3], ALint[3] + * Default: {0, 0, 0} + * + * The source or listener location in three dimensional space. + * + * OpenAL, like OpenGL, uses a right handed coordinate system, where in a + * frontal default view X (thumb) points right, Y points up (index finger), and + * Z points towards the viewer/camera (middle finger). + * + * To switch from a left handed coordinate system, flip the sign on the Z + * coordinate. + */ +#define AL_POSITION 0x1004 + +/** + * Source direction. + * Type: ALfloat[3], ALint[3] + * Default: {0, 0, 0} + * + * Specifies the current direction in local space. + * A zero-length vector specifies an omni-directional source (cone is ignored). + */ +#define AL_DIRECTION 0x1005 + +/** + * Source or listener velocity. + * Type: ALfloat[3], ALint[3] + * Default: {0, 0, 0} + * + * Specifies the current velocity in local space. + */ +#define AL_VELOCITY 0x1006 + +/** + * Source looping. + * Type: ALboolean + * Range: [AL_TRUE, AL_FALSE] + * Default: AL_FALSE + * + * Specifies whether source is looping. + */ +#define AL_LOOPING 0x1007 + +/** + * Source buffer. + * Type: ALuint + * Range: any valid Buffer. + * + * Specifies the buffer to provide sound samples. + */ +#define AL_BUFFER 0x1009 + +/** + * Source or listener gain. + * Type: ALfloat + * Range: [0.0 - ] + * + * A value of 1.0 means unattenuated. Each division by 2 equals an attenuation + * of about -6dB. Each multiplicaton by 2 equals an amplification of about + * +6dB. + * + * A value of 0.0 is meaningless with respect to a logarithmic scale; it is + * silent. + */ +#define AL_GAIN 0x100A + +/** + * Minimum source gain. + * Type: ALfloat + * Range: [0.0 - 1.0] + * + * The minimum gain allowed for a source, after distance and cone attenation is + * applied (if applicable). + */ +#define AL_MIN_GAIN 0x100D + +/** + * Maximum source gain. + * Type: ALfloat + * Range: [0.0 - 1.0] + * + * The maximum gain allowed for a source, after distance and cone attenation is + * applied (if applicable). + */ +#define AL_MAX_GAIN 0x100E + +/** + * Listener orientation. + * Type: ALfloat[6] + * Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0} + * + * Effectively two three dimensional vectors. The first vector is the front (or + * "at") and the second is the top (or "up"). + * + * Both vectors are in local space. + */ +#define AL_ORIENTATION 0x100F + +/** + * Source state (query only). + * Type: ALint + * Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED] + */ +#define AL_SOURCE_STATE 0x1010 + +/** Source state value. */ +#define AL_INITIAL 0x1011 +#define AL_PLAYING 0x1012 +#define AL_PAUSED 0x1013 +#define AL_STOPPED 0x1014 + +/** + * Source Buffer Queue size (query only). + * Type: ALint + * + * The number of buffers queued using alSourceQueueBuffers, minus the buffers + * removed with alSourceUnqueueBuffers. + */ +#define AL_BUFFERS_QUEUED 0x1015 + +/** + * Source Buffer Queue processed count (query only). + * Type: ALint + * + * The number of queued buffers that have been fully processed, and can be + * removed with alSourceUnqueueBuffers. + * + * Looping sources will never fully process buffers because they will be set to + * play again for when the source loops. + */ +#define AL_BUFFERS_PROCESSED 0x1016 + +/** + * Source reference distance. + * Type: ALfloat + * Range: [0.0 - ] + * Default: 1.0 + * + * The distance in units that no attenuation occurs. + * + * At 0.0, no distance attenuation ever occurs on non-linear attenuation models. + */ +#define AL_REFERENCE_DISTANCE 0x1020 + +/** + * Source rolloff factor. + * Type: ALfloat + * Range: [0.0 - ] + * Default: 1.0 + * + * Multiplier to exaggerate or diminish distance attenuation. + * + * At 0.0, no distance attenuation ever occurs. + */ +#define AL_ROLLOFF_FACTOR 0x1021 + +/** + * Outer cone gain. + * Type: ALfloat + * Range: [0.0 - 1.0] + * Default: 0.0 + * + * The gain attenuation applied when the listener is outside of the source's + * outer cone. + */ +#define AL_CONE_OUTER_GAIN 0x1022 + +/** + * Source maximum distance. + * Type: ALfloat + * Range: [0.0 - ] + * Default: +inf + * + * The distance above which the source is not attenuated any further with a + * clamped distance model, or where attenuation reaches 0.0 gain for linear + * distance models with a default rolloff factor. + */ +#define AL_MAX_DISTANCE 0x1023 + +/** Source buffer position, in seconds */ +#define AL_SEC_OFFSET 0x1024 +/** Source buffer position, in sample frames */ +#define AL_SAMPLE_OFFSET 0x1025 +/** Source buffer position, in bytes */ +#define AL_BYTE_OFFSET 0x1026 + +/** + * Source type (query only). + * Type: ALint + * Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED] + * + * A Source is Static if a Buffer has been attached using AL_BUFFER. + * + * A Source is Streaming if one or more Buffers have been attached using + * alSourceQueueBuffers. + * + * A Source is Undetermined when it has the NULL buffer attached using + * AL_BUFFER. + */ +#define AL_SOURCE_TYPE 0x1027 + +/** Source type value. */ +#define AL_STATIC 0x1028 +#define AL_STREAMING 0x1029 +#define AL_UNDETERMINED 0x1030 + +/** Buffer format specifier. */ +#define AL_FORMAT_MONO8 0x1100 +#define AL_FORMAT_MONO16 0x1101 +#define AL_FORMAT_STEREO8 0x1102 +#define AL_FORMAT_STEREO16 0x1103 + +/** Buffer frequency (query only). */ +#define AL_FREQUENCY 0x2001 +/** Buffer bits per sample (query only). */ +#define AL_BITS 0x2002 +/** Buffer channel count (query only). */ +#define AL_CHANNELS 0x2003 +/** Buffer data size (query only). */ +#define AL_SIZE 0x2004 + +/** + * Buffer state. + * + * Not for public use. + */ +#define AL_UNUSED 0x2010 +#define AL_PENDING 0x2011 +#define AL_PROCESSED 0x2012 + + +/** No error. */ +#define AL_NO_ERROR 0 + +/** Invalid name paramater passed to AL call. */ +#define AL_INVALID_NAME 0xA001 + +/** Invalid enum parameter passed to AL call. */ +#define AL_INVALID_ENUM 0xA002 + +/** Invalid value parameter passed to AL call. */ +#define AL_INVALID_VALUE 0xA003 + +/** Illegal AL call. */ +#define AL_INVALID_OPERATION 0xA004 + +/** Not enough memory. */ +#define AL_OUT_OF_MEMORY 0xA005 + + +/** Context string: Vendor ID. */ +#define AL_VENDOR 0xB001 +/** Context string: Version. */ +#define AL_VERSION 0xB002 +/** Context string: Renderer ID. */ +#define AL_RENDERER 0xB003 +/** Context string: Space-separated extension list. */ +#define AL_EXTENSIONS 0xB004 + + +/** + * Doppler scale. + * Type: ALfloat + * Range: [0.0 - ] + * Default: 1.0 + * + * Scale for source and listener velocities. + */ +#define AL_DOPPLER_FACTOR 0xC000 +AL_API void AL_APIENTRY alDopplerFactor(ALfloat value); + +/** + * Doppler velocity (deprecated). + * + * A multiplier applied to the Speed of Sound. + */ +#define AL_DOPPLER_VELOCITY 0xC001 +AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value); + +/** + * Speed of Sound, in units per second. + * Type: ALfloat + * Range: [0.0001 - ] + * Default: 343.3 + * + * The speed at which sound waves are assumed to travel, when calculating the + * doppler effect. + */ +#define AL_SPEED_OF_SOUND 0xC003 +AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value); + +/** + * Distance attenuation model. + * Type: ALint + * Range: [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED, + * AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED, + * AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED] + * Default: AL_INVERSE_DISTANCE_CLAMPED + * + * The model by which sources attenuate with distance. + * + * None - No distance attenuation. + * Inverse - Doubling the distance halves the source gain. + * Linear - Linear gain scaling between the reference and max distances. + * Exponent - Exponential gain dropoff. + * + * Clamped variations work like the non-clamped counterparts, except the + * distance calculated is clamped between the reference and max distances. + */ +#define AL_DISTANCE_MODEL 0xD000 +AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel); + +/** Distance model value. */ +#define AL_INVERSE_DISTANCE 0xD001 +#define AL_INVERSE_DISTANCE_CLAMPED 0xD002 +#define AL_LINEAR_DISTANCE 0xD003 +#define AL_LINEAR_DISTANCE_CLAMPED 0xD004 +#define AL_EXPONENT_DISTANCE 0xD005 +#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006 + +/** Renderer State management. */ +AL_API void AL_APIENTRY alEnable(ALenum capability); +AL_API void AL_APIENTRY alDisable(ALenum capability); +AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability); + +/** State retrieval. */ +AL_API const ALchar* AL_APIENTRY alGetString(ALenum param); +AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values); +AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values); +AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values); +AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values); +AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param); +AL_API ALint AL_APIENTRY alGetInteger(ALenum param); +AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param); +AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param); + +/** + * Error retrieval. + * + * Obtain the first error generated in the AL context since the last check. + */ +AL_API ALenum AL_APIENTRY alGetError(void); + +/** + * Extension support. + * + * Query for the presence of an extension, and obtain any appropriate function + * pointers and enum values. + */ +AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname); +AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname); +AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename); + + +/** Set Listener parameters */ +AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value); +AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values); +AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value); +AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3); +AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values); + +/** Get Listener parameters */ +AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value); +AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values); +AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value); +AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3); +AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values); + + +/** Create Source objects. */ +AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources); +/** Delete Source objects. */ +AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources); +/** Verify a handle is a valid Source. */ +AL_API ALboolean AL_APIENTRY alIsSource(ALuint source); + +/** Set Source parameters. */ +AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value); +AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values); +AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value); +AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3); +AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values); + +/** Get Source parameters. */ +AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value); +AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values); +AL_API void AL_APIENTRY alGetSourcei(ALuint source, ALenum param, ALint *value); +AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3); +AL_API void AL_APIENTRY alGetSourceiv(ALuint source, ALenum param, ALint *values); + + +/** Play, replay, or resume (if paused) a list of Sources */ +AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources); +/** Stop a list of Sources */ +AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources); +/** Rewind a list of Sources */ +AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources); +/** Pause a list of Sources */ +AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources); + +/** Play, replay, or resume a Source */ +AL_API void AL_APIENTRY alSourcePlay(ALuint source); +/** Stop a Source */ +AL_API void AL_APIENTRY alSourceStop(ALuint source); +/** Rewind a Source (set playback postiton to beginning) */ +AL_API void AL_APIENTRY alSourceRewind(ALuint source); +/** Pause a Source */ +AL_API void AL_APIENTRY alSourcePause(ALuint source); + +/** Queue buffers onto a source */ +AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers); +/** Unqueue processed buffers from a source */ +AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers); + + +/** Create Buffer objects */ +AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers); +/** Delete Buffer objects */ +AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers); +/** Verify a handle is a valid Buffer */ +AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer); + +/** Specifies the data to be copied into a buffer */ +AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq); + +/** Set Buffer parameters, */ +AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value); +AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values); +AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value); +AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3); +AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values); + +/** Get Buffer parameters. */ +AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value); +AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values); +AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value); +AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3); +AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values); + +/** Pointer-to-function type, useful for dynamically getting AL entry points. */ +typedef void (AL_APIENTRY *LPALENABLE)(ALenum capability); +typedef void (AL_APIENTRY *LPALDISABLE)(ALenum capability); +typedef ALboolean (AL_APIENTRY *LPALISENABLED)(ALenum capability); +typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param); +typedef void (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values); +typedef void (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values); +typedef void (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values); +typedef void (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values); +typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param); +typedef ALint (AL_APIENTRY *LPALGETINTEGER)(ALenum param); +typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)(ALenum param); +typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)(ALenum param); +typedef ALenum (AL_APIENTRY *LPALGETERROR)(void); +typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname); +typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname); +typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename); +typedef void (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value); +typedef void (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +typedef void (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values); +typedef void (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value); +typedef void (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3); +typedef void (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values); +typedef void (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value); +typedef void (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +typedef void (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values); +typedef void (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value); +typedef void (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3); +typedef void (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values); +typedef void (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources); +typedef void (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources); +typedef ALboolean (AL_APIENTRY *LPALISSOURCE)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value); +typedef void (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +typedef void (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values); +typedef void (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value); +typedef void (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3); +typedef void (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values); +typedef void (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value); +typedef void (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +typedef void (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values); +typedef void (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value); +typedef void (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3); +typedef void (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values); +typedef void (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources); +typedef void (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources); +typedef void (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources); +typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources); +typedef void (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCESTOP)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source); +typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers); +typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers); +typedef void (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers); +typedef void (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers); +typedef ALboolean (AL_APIENTRY *LPALISBUFFER)(ALuint buffer); +typedef void (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq); +typedef void (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value); +typedef void (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3); +typedef void (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values); +typedef void (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value); +typedef void (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3); +typedef void (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values); +typedef void (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value); +typedef void (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3); +typedef void (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values); +typedef void (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value); +typedef void (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3); +typedef void (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values); +typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value); +typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value); +typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value); +typedef void (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel); + +#if defined(__cplusplus) +} /* extern "C" */ +#endif + +#endif /* AL_AL_H */ diff --git a/contrib/prebuilt/include/alc.h b/contrib/prebuilt/include/alc.h new file mode 100644 index 0000000..294e8b3 --- /dev/null +++ b/contrib/prebuilt/include/alc.h @@ -0,0 +1,237 @@ +#ifndef AL_ALC_H +#define AL_ALC_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#ifndef ALC_API + #if defined(AL_LIBTYPE_STATIC) + #define ALC_API + #elif defined(_WIN32) + #define ALC_API __declspec(dllimport) + #else + #define ALC_API extern + #endif +#endif + +#if defined(_WIN32) + #define ALC_APIENTRY __cdecl +#else + #define ALC_APIENTRY +#endif + + +/** Deprecated macro. */ +#define ALCAPI ALC_API +#define ALCAPIENTRY ALC_APIENTRY +#define ALC_INVALID 0 + +/** Supported ALC version? */ +#define ALC_VERSION_0_1 1 + +/** Opaque device handle */ +typedef struct ALCdevice_struct ALCdevice; +/** Opaque context handle */ +typedef struct ALCcontext_struct ALCcontext; + +/** 8-bit boolean */ +typedef char ALCboolean; + +/** character */ +typedef char ALCchar; + +/** signed 8-bit 2's complement integer */ +typedef signed char ALCbyte; + +/** unsigned 8-bit integer */ +typedef unsigned char ALCubyte; + +/** signed 16-bit 2's complement integer */ +typedef short ALCshort; + +/** unsigned 16-bit integer */ +typedef unsigned short ALCushort; + +/** signed 32-bit 2's complement integer */ +typedef int ALCint; + +/** unsigned 32-bit integer */ +typedef unsigned int ALCuint; + +/** non-negative 32-bit binary integer size */ +typedef int ALCsizei; + +/** enumerated 32-bit value */ +typedef int ALCenum; + +/** 32-bit IEEE754 floating-point */ +typedef float ALCfloat; + +/** 64-bit IEEE754 floating-point */ +typedef double ALCdouble; + +/** void type (for opaque pointers only) */ +typedef void ALCvoid; + + +/* Enumerant values begin at column 50. No tabs. */ + +/** Boolean False. */ +#define ALC_FALSE 0 + +/** Boolean True. */ +#define ALC_TRUE 1 + +/** Context attribute: Hz. */ +#define ALC_FREQUENCY 0x1007 + +/** Context attribute: Hz. */ +#define ALC_REFRESH 0x1008 + +/** Context attribute: AL_TRUE or AL_FALSE. */ +#define ALC_SYNC 0x1009 + +/** Context attribute: requested Mono (3D) Sources. */ +#define ALC_MONO_SOURCES 0x1010 + +/** Context attribute: requested Stereo Sources. */ +#define ALC_STEREO_SOURCES 0x1011 + +/** No error. */ +#define ALC_NO_ERROR 0 + +/** Invalid device handle. */ +#define ALC_INVALID_DEVICE 0xA001 + +/** Invalid context handle. */ +#define ALC_INVALID_CONTEXT 0xA002 + +/** Invalid enum parameter passed to an ALC call. */ +#define ALC_INVALID_ENUM 0xA003 + +/** Invalid value parameter passed to an ALC call. */ +#define ALC_INVALID_VALUE 0xA004 + +/** Out of memory. */ +#define ALC_OUT_OF_MEMORY 0xA005 + + +/** Runtime ALC version. */ +#define ALC_MAJOR_VERSION 0x1000 +#define ALC_MINOR_VERSION 0x1001 + +/** Context attribute list properties. */ +#define ALC_ATTRIBUTES_SIZE 0x1002 +#define ALC_ALL_ATTRIBUTES 0x1003 + +/** String for the default device specifier. */ +#define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004 +/** + * String for the given device's specifier. + * + * If device handle is NULL, it is instead a null-char separated list of + * strings of known device specifiers (list ends with an empty string). + */ +#define ALC_DEVICE_SPECIFIER 0x1005 +/** String for space-separated list of ALC extensions. */ +#define ALC_EXTENSIONS 0x1006 + + +/** Capture extension */ +#define ALC_EXT_CAPTURE 1 +/** + * String for the given capture device's specifier. + * + * If device handle is NULL, it is instead a null-char separated list of + * strings of known capture device specifiers (list ends with an empty string). + */ +#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310 +/** String for the default capture device specifier. */ +#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311 +/** Number of sample frames available for capture. */ +#define ALC_CAPTURE_SAMPLES 0x312 + + +/** Enumerate All extension */ +#define ALC_ENUMERATE_ALL_EXT 1 +/** String for the default extended device specifier. */ +#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012 +/** + * String for the given extended device's specifier. + * + * If device handle is NULL, it is instead a null-char separated list of + * strings of known extended device specifiers (list ends with an empty string). + */ +#define ALC_ALL_DEVICES_SPECIFIER 0x1013 + + +/** Context management. */ +ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCint* attrlist); +ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent(ALCcontext *context); +ALC_API void ALC_APIENTRY alcProcessContext(ALCcontext *context); +ALC_API void ALC_APIENTRY alcSuspendContext(ALCcontext *context); +ALC_API void ALC_APIENTRY alcDestroyContext(ALCcontext *context); +ALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(void); +ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice(ALCcontext *context); + +/** Device management. */ +ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename); +ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device); + + +/** + * Error support. + * + * Obtain the most recent Device error. + */ +ALC_API ALCenum ALC_APIENTRY alcGetError(ALCdevice *device); + +/** + * Extension support. + * + * Query for the presence of an extension, and obtain any appropriate + * function pointers and enum values. + */ +ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname); +ALC_API void* ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcname); +ALC_API ALCenum ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *enumname); + +/** Query function. */ +ALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum param); +ALC_API void ALC_APIENTRY alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values); + +/** Capture function. */ +ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize); +ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device); +ALC_API void ALC_APIENTRY alcCaptureStart(ALCdevice *device); +ALC_API void ALC_APIENTRY alcCaptureStop(ALCdevice *device); +ALC_API void ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples); + +/** Pointer-to-function type, useful for dynamically getting ALC entry points. */ +typedef ALCcontext* (ALC_APIENTRY *LPALCCREATECONTEXT)(ALCdevice *device, const ALCint *attrlist); +typedef ALCboolean (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)(ALCcontext *context); +typedef void (ALC_APIENTRY *LPALCPROCESSCONTEXT)(ALCcontext *context); +typedef void (ALC_APIENTRY *LPALCSUSPENDCONTEXT)(ALCcontext *context); +typedef void (ALC_APIENTRY *LPALCDESTROYCONTEXT)(ALCcontext *context); +typedef ALCcontext* (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)(void); +typedef ALCdevice* (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)(ALCcontext *context); +typedef ALCdevice* (ALC_APIENTRY *LPALCOPENDEVICE)(const ALCchar *devicename); +typedef ALCboolean (ALC_APIENTRY *LPALCCLOSEDEVICE)(ALCdevice *device); +typedef ALCenum (ALC_APIENTRY *LPALCGETERROR)(ALCdevice *device); +typedef ALCboolean (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)(ALCdevice *device, const ALCchar *extname); +typedef void* (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname); +typedef ALCenum (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname); +typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)(ALCdevice *device, ALCenum param); +typedef void (ALC_APIENTRY *LPALCGETINTEGERV)(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values); +typedef ALCdevice* (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize); +typedef ALCboolean (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)(ALCdevice *device); +typedef void (ALC_APIENTRY *LPALCCAPTURESTART)(ALCdevice *device); +typedef void (ALC_APIENTRY *LPALCCAPTURESTOP)(ALCdevice *device); +typedef void (ALC_APIENTRY *LPALCCAPTURESAMPLES)(ALCdevice *device, ALCvoid *buffer, ALCsizei samples); + +#if defined(__cplusplus) +} +#endif + +#endif /* AL_ALC_H */ diff --git a/contrib/prebuilt/include/alext.h b/contrib/prebuilt/include/alext.h new file mode 100644 index 0000000..924db16 --- /dev/null +++ b/contrib/prebuilt/include/alext.h @@ -0,0 +1,309 @@ +/** + * OpenAL cross platform audio library + * Copyright (C) 2008 by authors. + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * Or go to http://www.gnu.org/copyleft/lgpl.html + */ + +#ifndef AL_ALEXT_H +#define AL_ALEXT_H + +#include + +#include "alc.h" +#include "al.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef AL_LOKI_IMA_ADPCM_format +#define AL_LOKI_IMA_ADPCM_format 1 +#define AL_FORMAT_IMA_ADPCM_MONO16_EXT 0x10000 +#define AL_FORMAT_IMA_ADPCM_STEREO16_EXT 0x10001 +#endif + +#ifndef AL_LOKI_WAVE_format +#define AL_LOKI_WAVE_format 1 +#define AL_FORMAT_WAVE_EXT 0x10002 +#endif + +#ifndef AL_EXT_vorbis +#define AL_EXT_vorbis 1 +#define AL_FORMAT_VORBIS_EXT 0x10003 +#endif + +#ifndef AL_LOKI_quadriphonic +#define AL_LOKI_quadriphonic 1 +#define AL_FORMAT_QUAD8_LOKI 0x10004 +#define AL_FORMAT_QUAD16_LOKI 0x10005 +#endif + +#ifndef AL_EXT_float32 +#define AL_EXT_float32 1 +#define AL_FORMAT_MONO_FLOAT32 0x10010 +#define AL_FORMAT_STEREO_FLOAT32 0x10011 +#endif + +#ifndef AL_EXT_double +#define AL_EXT_double 1 +#define AL_FORMAT_MONO_DOUBLE_EXT 0x10012 +#define AL_FORMAT_STEREO_DOUBLE_EXT 0x10013 +#endif + +#ifndef AL_EXT_MULAW +#define AL_EXT_MULAW 1 +#define AL_FORMAT_MONO_MULAW_EXT 0x10014 +#define AL_FORMAT_STEREO_MULAW_EXT 0x10015 +#endif + +#ifndef AL_EXT_ALAW +#define AL_EXT_ALAW 1 +#define AL_FORMAT_MONO_ALAW_EXT 0x10016 +#define AL_FORMAT_STEREO_ALAW_EXT 0x10017 +#endif + +#ifndef ALC_LOKI_audio_channel +#define ALC_LOKI_audio_channel 1 +#define ALC_CHAN_MAIN_LOKI 0x500001 +#define ALC_CHAN_PCM_LOKI 0x500002 +#define ALC_CHAN_CD_LOKI 0x500003 +#endif + +#ifndef AL_EXT_MCFORMATS +#define AL_EXT_MCFORMATS 1 +#define AL_FORMAT_QUAD8 0x1204 +#define AL_FORMAT_QUAD16 0x1205 +#define AL_FORMAT_QUAD32 0x1206 +#define AL_FORMAT_REAR8 0x1207 +#define AL_FORMAT_REAR16 0x1208 +#define AL_FORMAT_REAR32 0x1209 +#define AL_FORMAT_51CHN8 0x120A +#define AL_FORMAT_51CHN16 0x120B +#define AL_FORMAT_51CHN32 0x120C +#define AL_FORMAT_61CHN8 0x120D +#define AL_FORMAT_61CHN16 0x120E +#define AL_FORMAT_61CHN32 0x120F +#define AL_FORMAT_71CHN8 0x1210 +#define AL_FORMAT_71CHN16 0x1211 +#define AL_FORMAT_71CHN32 0x1212 +#endif + +#ifndef AL_EXT_MULAW_MCFORMATS +#define AL_EXT_MULAW_MCFORMATS 1 +#define AL_FORMAT_MONO_MULAW 0x10014 +#define AL_FORMAT_STEREO_MULAW 0x10015 +#define AL_FORMAT_QUAD_MULAW 0x10021 +#define AL_FORMAT_REAR_MULAW 0x10022 +#define AL_FORMAT_51CHN_MULAW 0x10023 +#define AL_FORMAT_61CHN_MULAW 0x10024 +#define AL_FORMAT_71CHN_MULAW 0x10025 +#endif + +#ifndef AL_EXT_IMA4 +#define AL_EXT_IMA4 1 +#define AL_FORMAT_MONO_IMA4 0x1300 +#define AL_FORMAT_STEREO_IMA4 0x1301 +#endif + +#ifndef AL_EXT_STATIC_BUFFER +#define AL_EXT_STATIC_BUFFER 1 +typedef ALvoid (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei); +#ifdef AL_ALEXT_PROTOTYPES +AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq); +#endif +#endif + +#ifndef ALC_EXT_EFX +#define ALC_EXT_EFX 1 +#include "efx.h" +#endif + +#ifndef ALC_EXT_disconnect +#define ALC_EXT_disconnect 1 +#define ALC_CONNECTED 0x313 +#endif + +#ifndef ALC_EXT_thread_local_context +#define ALC_EXT_thread_local_context 1 +typedef ALCboolean (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context); +typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void); +#ifdef AL_ALEXT_PROTOTYPES +ALC_API ALCboolean ALC_APIENTRY alcSetThreadContext(ALCcontext *context); +ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void); +#endif +#endif + +#ifndef AL_EXT_source_distance_model +#define AL_EXT_source_distance_model 1 +#define AL_SOURCE_DISTANCE_MODEL 0x200 +#endif + +#ifndef AL_SOFT_buffer_sub_data +#define AL_SOFT_buffer_sub_data 1 +#define AL_BYTE_RW_OFFSETS_SOFT 0x1031 +#define AL_SAMPLE_RW_OFFSETS_SOFT 0x1032 +typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei); +#ifdef AL_ALEXT_PROTOTYPES +AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length); +#endif +#endif + +#ifndef AL_SOFT_loop_points +#define AL_SOFT_loop_points 1 +#define AL_LOOP_POINTS_SOFT 0x2015 +#endif + +#ifndef AL_EXT_FOLDBACK +#define AL_EXT_FOLDBACK 1 +#define AL_EXT_FOLDBACK_NAME "AL_EXT_FOLDBACK" +#define AL_FOLDBACK_EVENT_BLOCK 0x4112 +#define AL_FOLDBACK_EVENT_START 0x4111 +#define AL_FOLDBACK_EVENT_STOP 0x4113 +#define AL_FOLDBACK_MODE_MONO 0x4101 +#define AL_FOLDBACK_MODE_STEREO 0x4102 +typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei); +typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK); +typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void); +#ifdef AL_ALEXT_PROTOTYPES +AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback); +AL_API void AL_APIENTRY alRequestFoldbackStop(void); +#endif +#endif + +#ifndef ALC_EXT_DEDICATED +#define ALC_EXT_DEDICATED 1 +#define AL_DEDICATED_GAIN 0x0001 +#define AL_EFFECT_DEDICATED_DIALOGUE 0x9001 +#define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000 +#endif + +#ifndef AL_SOFT_buffer_samples +#define AL_SOFT_buffer_samples 1 +/* Channel configurations */ +#define AL_MONO_SOFT 0x1500 +#define AL_STEREO_SOFT 0x1501 +#define AL_REAR_SOFT 0x1502 +#define AL_QUAD_SOFT 0x1503 +#define AL_5POINT1_SOFT 0x1504 +#define AL_6POINT1_SOFT 0x1505 +#define AL_7POINT1_SOFT 0x1506 + +/* Sample types */ +#define AL_BYTE_SOFT 0x1400 +#define AL_UNSIGNED_BYTE_SOFT 0x1401 +#define AL_SHORT_SOFT 0x1402 +#define AL_UNSIGNED_SHORT_SOFT 0x1403 +#define AL_INT_SOFT 0x1404 +#define AL_UNSIGNED_INT_SOFT 0x1405 +#define AL_FLOAT_SOFT 0x1406 +#define AL_DOUBLE_SOFT 0x1407 +#define AL_BYTE3_SOFT 0x1408 +#define AL_UNSIGNED_BYTE3_SOFT 0x1409 + +/* Storage formats */ +#define AL_MONO8_SOFT 0x1100 +#define AL_MONO16_SOFT 0x1101 +#define AL_MONO32F_SOFT 0x10010 +#define AL_STEREO8_SOFT 0x1102 +#define AL_STEREO16_SOFT 0x1103 +#define AL_STEREO32F_SOFT 0x10011 +#define AL_QUAD8_SOFT 0x1204 +#define AL_QUAD16_SOFT 0x1205 +#define AL_QUAD32F_SOFT 0x1206 +#define AL_REAR8_SOFT 0x1207 +#define AL_REAR16_SOFT 0x1208 +#define AL_REAR32F_SOFT 0x1209 +#define AL_5POINT1_8_SOFT 0x120A +#define AL_5POINT1_16_SOFT 0x120B +#define AL_5POINT1_32F_SOFT 0x120C +#define AL_6POINT1_8_SOFT 0x120D +#define AL_6POINT1_16_SOFT 0x120E +#define AL_6POINT1_32F_SOFT 0x120F +#define AL_7POINT1_8_SOFT 0x1210 +#define AL_7POINT1_16_SOFT 0x1211 +#define AL_7POINT1_32F_SOFT 0x1212 + +/* Buffer attributes */ +#define AL_INTERNAL_FORMAT_SOFT 0x2008 +#define AL_BYTE_LENGTH_SOFT 0x2009 +#define AL_SAMPLE_LENGTH_SOFT 0x200A +#define AL_SEC_LENGTH_SOFT 0x200B + +typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*); +typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*); +typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*); +typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum); +#ifdef AL_ALEXT_PROTOTYPES +AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data); +AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data); +AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data); +AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format); +#endif +#endif + +#ifndef AL_SOFT_direct_channels +#define AL_SOFT_direct_channels 1 +#define AL_DIRECT_CHANNELS_SOFT 0x1033 +#endif + +#ifndef ALC_SOFT_loopback +#define ALC_SOFT_loopback 1 +#define ALC_FORMAT_CHANNELS_SOFT 0x1990 +#define ALC_FORMAT_TYPE_SOFT 0x1991 + +/* Sample types */ +#define ALC_BYTE_SOFT 0x1400 +#define ALC_UNSIGNED_BYTE_SOFT 0x1401 +#define ALC_SHORT_SOFT 0x1402 +#define ALC_UNSIGNED_SHORT_SOFT 0x1403 +#define ALC_INT_SOFT 0x1404 +#define ALC_UNSIGNED_INT_SOFT 0x1405 +#define ALC_FLOAT_SOFT 0x1406 + +/* Channel configurations */ +#define ALC_MONO_SOFT 0x1500 +#define ALC_STEREO_SOFT 0x1501 +#define ALC_QUAD_SOFT 0x1503 +#define ALC_5POINT1_SOFT 0x1504 +#define ALC_6POINT1_SOFT 0x1505 +#define ALC_7POINT1_SOFT 0x1506 + +typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*); +typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum); +typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei); +#ifdef AL_ALEXT_PROTOTYPES +ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName); +ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type); +ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples); +#endif +#endif + +#ifndef AL_EXT_STEREO_ANGLES +#define AL_EXT_STEREO_ANGLES 1 +#define AL_STEREO_ANGLES 0x1030 +#endif + +#ifndef AL_EXT_SOURCE_RADIUS +#define AL_EXT_SOURCE_RADIUS 1 +#define AL_SOURCE_RADIUS 0x1031 +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/contrib/prebuilt/include/boost/algorithm/string.hpp b/contrib/prebuilt/include/boost/algorithm/string.hpp new file mode 100644 index 0000000..0771517 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string.hpp @@ -0,0 +1,31 @@ +// Boost string_algo library string_algo.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2004. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_ALGO_HPP +#define BOOST_STRING_ALGO_HPP + +/*! \file + Cumulative include for string_algo library +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#endif // BOOST_STRING_ALGO_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/case_conv.hpp b/contrib/prebuilt/include/boost/algorithm/string/case_conv.hpp new file mode 100644 index 0000000..683340b --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/case_conv.hpp @@ -0,0 +1,176 @@ +// Boost string_algo library case_conv.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CASE_CONV_HPP +#define BOOST_STRING_CASE_CONV_HPP + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +/*! \file + Defines sequence case-conversion algorithms. + Algorithms convert each element in the input sequence to the + desired case using provided locales. +*/ + +namespace boost { + namespace algorithm { + +// to_lower -----------------------------------------------// + + //! Convert to lower case + /*! + Each element of the input sequence is converted to lower + case. The result is a copy of the input converted to lower case. + It is returned as a sequence or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input range + \param Loc A locale used for conversion + \return + An output iterator pointing just after the last inserted character or + a copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + + */ + template + inline OutputIteratorT + to_lower_copy( + OutputIteratorT Output, + const RangeT& Input, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::detail::transform_range_copy( + Output, + ::boost::as_literal(Input), + ::boost::algorithm::detail::to_lowerF< + typename range_value::type >(Loc)); + } + + //! Convert to lower case + /*! + \overload + */ + template + inline SequenceT to_lower_copy( + const SequenceT& Input, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::detail::transform_range_copy( + Input, + ::boost::algorithm::detail::to_lowerF< + typename range_value::type >(Loc)); + } + + //! Convert to lower case + /*! + Each element of the input sequence is converted to lower + case. The input sequence is modified in-place. + + \param Input A range + \param Loc a locale used for conversion + */ + template + inline void to_lower( + WritableRangeT& Input, + const std::locale& Loc=std::locale()) + { + ::boost::algorithm::detail::transform_range( + ::boost::as_literal(Input), + ::boost::algorithm::detail::to_lowerF< + typename range_value::type >(Loc)); + } + +// to_upper -----------------------------------------------// + + //! Convert to upper case + /*! + Each element of the input sequence is converted to upper + case. The result is a copy of the input converted to upper case. + It is returned as a sequence or copied to the output iterator + + \param Output An output iterator to which the result will be copied + \param Input An input range + \param Loc A locale used for conversion + \return + An output iterator pointing just after the last inserted character or + a copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template + inline OutputIteratorT + to_upper_copy( + OutputIteratorT Output, + const RangeT& Input, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::detail::transform_range_copy( + Output, + ::boost::as_literal(Input), + ::boost::algorithm::detail::to_upperF< + typename range_value::type >(Loc)); + } + + //! Convert to upper case + /*! + \overload + */ + template + inline SequenceT to_upper_copy( + const SequenceT& Input, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::detail::transform_range_copy( + Input, + ::boost::algorithm::detail::to_upperF< + typename range_value::type >(Loc)); + } + + //! Convert to upper case + /*! + Each element of the input sequence is converted to upper + case. The input sequence is modified in-place. + + \param Input An input range + \param Loc a locale used for conversion + */ + template + inline void to_upper( + WritableRangeT& Input, + const std::locale& Loc=std::locale()) + { + ::boost::algorithm::detail::transform_range( + ::boost::as_literal(Input), + ::boost::algorithm::detail::to_upperF< + typename range_value::type >(Loc)); + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::to_lower; + using algorithm::to_lower_copy; + using algorithm::to_upper; + using algorithm::to_upper_copy; + +} // namespace boost + +#endif // BOOST_STRING_CASE_CONV_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/classification.hpp b/contrib/prebuilt/include/boost/algorithm/string/classification.hpp new file mode 100644 index 0000000..ca43602 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/classification.hpp @@ -0,0 +1,312 @@ +// Boost string_algo library classification.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CLASSIFICATION_HPP +#define BOOST_STRING_CLASSIFICATION_HPP + +#include +#include +#include +#include +#include +#include + + +/*! \file + Classification predicates are included in the library to give + some more convenience when using algorithms like \c trim() and \c all(). + They wrap functionality of STL classification functions ( e.g. \c std::isspace() ) + into generic functors. +*/ + +namespace boost { + namespace algorithm { + +// classification functor generator -------------------------------------// + + //! is_classified predicate + /*! + Construct the \c is_classified predicate. This predicate holds if the input is + of specified \c std::ctype category. + + \param Type A \c std::ctype category + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_classified(std::ctype_base::mask Type, const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(Type, Loc); + } + + //! is_space predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::space category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_space(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::space, Loc); + } + + //! is_alnum predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::alnum category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_alnum(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::alnum, Loc); + } + + //! is_alpha predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::alpha category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_alpha(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::alpha, Loc); + } + + //! is_cntrl predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::cntrl category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_cntrl(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::cntrl, Loc); + } + + //! is_digit predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::digit category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_digit(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::digit, Loc); + } + + //! is_graph predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::graph category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_graph(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::graph, Loc); + } + + //! is_lower predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::lower category. + + \param Loc A locale used for classification + \return An instance of \c is_classified predicate + */ + inline detail::is_classifiedF + is_lower(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::lower, Loc); + } + + //! is_print predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::print category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_print(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::print, Loc); + } + + //! is_punct predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::punct category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_punct(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::punct, Loc); + } + + //! is_upper predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::upper category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_upper(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::upper, Loc); + } + + //! is_xdigit predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::xdigit category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_xdigit(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::xdigit, Loc); + } + + //! is_any_of predicate + /*! + Construct the \c is_any_of predicate. The predicate holds if the input + is included in the specified set of characters. + + \param Set A set of characters to be recognized + \return An instance of the \c is_any_of predicate + */ + template + inline detail::is_any_ofF< + BOOST_STRING_TYPENAME range_value::type> + is_any_of( const RangeT& Set ) + { + iterator_range::type> lit_set(boost::as_literal(Set)); + return detail::is_any_ofF::type>(lit_set); + } + + //! is_from_range predicate + /*! + Construct the \c is_from_range predicate. The predicate holds if the input + is included in the specified range. (i.e. From <= Ch <= To ) + + \param From The start of the range + \param To The end of the range + \return An instance of the \c is_from_range predicate + */ + template + inline detail::is_from_rangeF is_from_range(CharT From, CharT To) + { + return detail::is_from_rangeF(From,To); + } + + // predicate combinators ---------------------------------------------------// + + //! predicate 'and' composition predicate + /*! + Construct the \c class_and predicate. This predicate can be used + to logically combine two classification predicates. \c class_and holds, + if both predicates return true. + + \param Pred1 The first predicate + \param Pred2 The second predicate + \return An instance of the \c class_and predicate + */ + template + inline detail::pred_andF + operator&&( + const predicate_facade& Pred1, + const predicate_facade& Pred2 ) + { + // Doing the static_cast with the pointer instead of the reference + // is a workaround for some compilers which have problems with + // static_cast's of template references, i.e. CW8. /grafik/ + return detail::pred_andF( + *static_cast(&Pred1), + *static_cast(&Pred2) ); + } + + //! predicate 'or' composition predicate + /*! + Construct the \c class_or predicate. This predicate can be used + to logically combine two classification predicates. \c class_or holds, + if one of the predicates return true. + + \param Pred1 The first predicate + \param Pred2 The second predicate + \return An instance of the \c class_or predicate + */ + template + inline detail::pred_orF + operator||( + const predicate_facade& Pred1, + const predicate_facade& Pred2 ) + { + // Doing the static_cast with the pointer instead of the reference + // is a workaround for some compilers which have problems with + // static_cast's of template references, i.e. CW8. /grafik/ + return detail::pred_orF( + *static_cast(&Pred1), + *static_cast(&Pred2)); + } + + //! predicate negation operator + /*! + Construct the \c class_not predicate. This predicate represents a negation. + \c class_or holds if of the predicates return false. + + \param Pred The predicate to be negated + \return An instance of the \c class_not predicate + */ + template + inline detail::pred_notF + operator!( const predicate_facade& Pred ) + { + // Doing the static_cast with the pointer instead of the reference + // is a workaround for some compilers which have problems with + // static_cast's of template references, i.e. CW8. /grafik/ + return detail::pred_notF(*static_cast(&Pred)); + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::is_classified; + using algorithm::is_space; + using algorithm::is_alnum; + using algorithm::is_alpha; + using algorithm::is_cntrl; + using algorithm::is_digit; + using algorithm::is_graph; + using algorithm::is_lower; + using algorithm::is_upper; + using algorithm::is_print; + using algorithm::is_punct; + using algorithm::is_xdigit; + using algorithm::is_any_of; + using algorithm::is_from_range; + +} // namespace boost + +#endif // BOOST_STRING_PREDICATE_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/compare.hpp b/contrib/prebuilt/include/boost/algorithm/string/compare.hpp new file mode 100644 index 0000000..734303a --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/compare.hpp @@ -0,0 +1,199 @@ +// Boost string_algo library compare.hpp header file -------------------------// + +// Copyright Pavol Droba 2002-2006. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_COMPARE_HPP +#define BOOST_STRING_COMPARE_HPP + +#include +#include + +/*! \file + Defines element comparison predicates. Many algorithms in this library can + take an additional argument with a predicate used to compare elements. + This makes it possible, for instance, to have case insensitive versions + of the algorithms. +*/ + +namespace boost { + namespace algorithm { + + // is_equal functor -----------------------------------------------// + + //! is_equal functor + /*! + Standard STL equal_to only handle comparison between arguments + of the same type. This is a less restrictive version which wraps operator ==. + */ + struct is_equal + { + //! Function operator + /*! + Compare two operands for equality + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + return Arg1==Arg2; + } + }; + + //! case insensitive version of is_equal + /*! + Case insensitive comparison predicate. Comparison is done using + specified locales. + */ + struct is_iequal + { + //! Constructor + /*! + \param Loc locales used for comparison + */ + is_iequal( const std::locale& Loc=std::locale() ) : + m_Loc( Loc ) {} + + //! Function operator + /*! + Compare two operands. Case is ignored. + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::toupper(Arg1)==std::toupper(Arg2); + #else + return std::toupper(Arg1,m_Loc)==std::toupper(Arg2,m_Loc); + #endif + } + + private: + std::locale m_Loc; + }; + + // is_less functor -----------------------------------------------// + + //! is_less functor + /*! + Convenient version of standard std::less. Operation is templated, therefore it is + not required to specify the exact types upon the construction + */ + struct is_less + { + //! Functor operation + /*! + Compare two operands using > operator + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + return Arg1 + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::toupper(Arg1)(Arg1,m_Loc)(Arg2,m_Loc); + #endif + } + + private: + std::locale m_Loc; + }; + + // is_not_greater functor -----------------------------------------------// + + //! is_not_greater functor + /*! + Convenient version of standard std::not_greater_to. Operation is templated, therefore it is + not required to specify the exact types upon the construction + */ + struct is_not_greater + { + //! Functor operation + /*! + Compare two operands using > operator + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + return Arg1<=Arg2; + } + }; + + + //! case insensitive version of is_not_greater + /*! + Case insensitive comparison predicate. Comparison is done using + specified locales. + */ + struct is_not_igreater + { + //! Constructor + /*! + \param Loc locales used for comparison + */ + is_not_igreater( const std::locale& Loc=std::locale() ) : + m_Loc( Loc ) {} + + //! Function operator + /*! + Compare two operands. Case is ignored. + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::toupper(Arg1)<=std::toupper(Arg2); + #else + return std::toupper(Arg1,m_Loc)<=std::toupper(Arg2,m_Loc); + #endif + } + + private: + std::locale m_Loc; + }; + + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::is_equal; + using algorithm::is_iequal; + using algorithm::is_less; + using algorithm::is_iless; + using algorithm::is_not_greater; + using algorithm::is_not_igreater; + +} // namespace boost + + +#endif // BOOST_STRING_COMPARE_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/concept.hpp b/contrib/prebuilt/include/boost/algorithm/string/concept.hpp new file mode 100644 index 0000000..9876e98 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/concept.hpp @@ -0,0 +1,83 @@ +// Boost string_algo library concept.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CONCEPT_HPP +#define BOOST_STRING_CONCEPT_HPP + +#include +#include +#include +#include + +/*! \file + Defines concepts used in string_algo library +*/ + +namespace boost { + namespace algorithm { + + //! Finder concept + /*! + Defines the Finder concept. Finder is a functor which selects + an arbitrary part of a string. Search is performed on + the range specified by starting and ending iterators. + + Result of the find operation must be convertible to iterator_range. + */ + template + struct FinderConcept + { + private: + typedef iterator_range range; + public: + void constraints() + { + // Operation + r=(*pF)(i,i); + } + private: + range r; + IteratorT i; + FinderT* pF; + }; // Finder_concept + + + //! Formatter concept + /*! + Defines the Formatter concept. Formatter is a functor, which + takes a result from a finder operation and transforms it + in a specific way. + + Result must be a container supported by container_traits, + or a reference to it. + */ + template + struct FormatterConcept + { + public: + void constraints() + { + // Operation + ::boost::begin((*pFo)( (*pF)(i,i) )); + ::boost::end((*pFo)( (*pF)(i,i) )); + } + private: + IteratorT i; + FinderT* pF; + FormatterT *pFo; + }; // FormatterConcept; + + } // namespace algorithm +} // namespace boost + + + + +#endif // BOOST_STRING_CONCEPT_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/config.hpp b/contrib/prebuilt/include/boost/algorithm/string/config.hpp new file mode 100644 index 0000000..559750a --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/config.hpp @@ -0,0 +1,28 @@ +// Boost string_algo library config.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CONFIG_HPP +#define BOOST_STRING_CONFIG_HPP + +#include +#include + +#ifdef BOOST_STRING_DEDUCED_TYPENAME +# error "macro already defined!" +#endif + +#define BOOST_STRING_TYPENAME BOOST_DEDUCED_TYPENAME + +// Metrowerks workaround +#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) // 8.x +#pragma parse_func_templ off +#endif + +#endif // BOOST_STRING_CONFIG_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/constants.hpp b/contrib/prebuilt/include/boost/algorithm/string/constants.hpp new file mode 100644 index 0000000..6ed70ef --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/constants.hpp @@ -0,0 +1,36 @@ +// Boost string_algo library constants.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CONSTANTS_HPP +#define BOOST_STRING_CONSTANTS_HPP + +namespace boost { + namespace algorithm { + + //! Token compression mode + /*! + Specifies token compression mode for the token_finder. + */ + enum token_compress_mode_type + { + token_compress_on, //!< Compress adjacent tokens + token_compress_off //!< Do not compress adjacent tokens + }; + + } // namespace algorithm + + // pull the names to the boost namespace + using algorithm::token_compress_on; + using algorithm::token_compress_off; + +} // namespace boost + +#endif // BOOST_STRING_CONSTANTS_HPP + diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/case_conv.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/case_conv.hpp new file mode 100644 index 0000000..42621c7 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/case_conv.hpp @@ -0,0 +1,123 @@ +// Boost string_algo library string_funct.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP +#define BOOST_STRING_CASE_CONV_DETAIL_HPP + +#include +#include +#include + +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// case conversion functors -----------------------------------------------// + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +#pragma warning(push) +#pragma warning(disable:4512) //assignment operator could not be generated +#endif + + // a tolower functor + template + struct to_lowerF : public std::unary_function + { + // Constructor + to_lowerF( const std::locale& Loc ) : m_Loc( &Loc ) {} + + // Operation + CharT operator ()( CharT Ch ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::tolower( static_cast::type> ( Ch )); + #else + return std::tolower( Ch, *m_Loc ); + #endif + } + private: + const std::locale* m_Loc; + }; + + // a toupper functor + template + struct to_upperF : public std::unary_function + { + // Constructor + to_upperF( const std::locale& Loc ) : m_Loc( &Loc ) {} + + // Operation + CharT operator ()( CharT Ch ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::toupper( static_cast::type> ( Ch )); + #else + return std::toupper( Ch, *m_Loc ); + #endif + } + private: + const std::locale* m_Loc; + }; + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +#pragma warning(pop) +#endif + +// algorithm implementation ------------------------------------------------------------------------- + + // Transform a range + template + OutputIteratorT transform_range_copy( + OutputIteratorT Output, + const RangeT& Input, + FunctorT Functor) + { + return std::transform( + ::boost::begin(Input), + ::boost::end(Input), + Output, + Functor); + } + + // Transform a range (in-place) + template + void transform_range( + const RangeT& Input, + FunctorT Functor) + { + std::transform( + ::boost::begin(Input), + ::boost::end(Input), + ::boost::begin(Input), + Functor); + } + + template + inline SequenceT transform_range_copy( + const RangeT& Input, + FunctorT Functor) + { + return SequenceT( + ::boost::make_transform_iterator( + ::boost::begin(Input), + Functor), + ::boost::make_transform_iterator( + ::boost::end(Input), + Functor)); + } + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_CASE_CONV_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/classification.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/classification.hpp new file mode 100644 index 0000000..704d9d2 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/classification.hpp @@ -0,0 +1,353 @@ +// Boost string_algo library classification.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP +#define BOOST_STRING_CLASSIFICATION_DETAIL_HPP + +#include +#include +#include +#include + +#include +#include + +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// classification functors -----------------------------------------------// + + // is_classified functor + struct is_classifiedF : + public predicate_facade + { + // Boost.ResultOf support + typedef bool result_type; + + // Constructor from a locale + is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) : + m_Type(Type), m_Locale(Loc) {} + // Operation + template + bool operator()( CharT Ch ) const + { + return std::use_facet< std::ctype >(m_Locale).is( m_Type, Ch ); + } + + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x582) && !defined(_USE_OLD_RW_STL) + template<> + bool operator()( char const Ch ) const + { + return std::use_facet< std::ctype >(m_Locale).is( m_Type, Ch ); + } + #endif + + private: + std::ctype_base::mask m_Type; + std::locale m_Locale; + }; + + + // is_any_of functor + /* + returns true if the value is from the specified set + */ + template + struct is_any_ofF : + public predicate_facade > + { + private: + // set cannot operate on const value-type + typedef typename ::boost::remove_const::type set_value_type; + + public: + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + template + is_any_ofF( const RangeT& Range ) : m_Size(0) + { + // Prepare storage + m_Storage.m_dynSet=0; + + std::size_t Size=::boost::distance(Range); + m_Size=Size; + set_value_type* Storage=0; + + if(use_fixed_storage(m_Size)) + { + // Use fixed storage + Storage=&m_Storage.m_fixSet[0]; + } + else + { + // Use dynamic storage + m_Storage.m_dynSet=new set_value_type[m_Size]; + Storage=m_Storage.m_dynSet; + } + + // Use fixed storage + ::std::copy(::boost::begin(Range), ::boost::end(Range), Storage); + ::std::sort(Storage, Storage+m_Size); + } + + // Copy constructor + is_any_ofF(const is_any_ofF& Other) : m_Size(Other.m_Size) + { + // Prepare storage + m_Storage.m_dynSet=0; + const set_value_type* SrcStorage=0; + set_value_type* DestStorage=0; + + if(use_fixed_storage(m_Size)) + { + // Use fixed storage + DestStorage=&m_Storage.m_fixSet[0]; + SrcStorage=&Other.m_Storage.m_fixSet[0]; + } + else + { + // Use dynamic storage + m_Storage.m_dynSet=new set_value_type[m_Size]; + DestStorage=m_Storage.m_dynSet; + SrcStorage=Other.m_Storage.m_dynSet; + } + + // Use fixed storage + ::std::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size); + } + + // Destructor + ~is_any_ofF() + { + if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0) + { + delete [] m_Storage.m_dynSet; + } + } + + // Assignment + is_any_ofF& operator=(const is_any_ofF& Other) + { + // Handle self assignment + if(this==&Other) return *this; + + // Prepare storage + const set_value_type* SrcStorage; + set_value_type* DestStorage; + + if(use_fixed_storage(Other.m_Size)) + { + // Use fixed storage + DestStorage=&m_Storage.m_fixSet[0]; + SrcStorage=&Other.m_Storage.m_fixSet[0]; + + // Delete old storage if was present + if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0) + { + delete [] m_Storage.m_dynSet; + } + + // Set new size + m_Size=Other.m_Size; + } + else + { + // Other uses dynamic storage + SrcStorage=Other.m_Storage.m_dynSet; + + // Check what kind of storage are we using right now + if(use_fixed_storage(m_Size)) + { + // Using fixed storage, allocate new + set_value_type* pTemp=new set_value_type[Other.m_Size]; + DestStorage=pTemp; + m_Storage.m_dynSet=pTemp; + m_Size=Other.m_Size; + } + else + { + // Using dynamic storage, check if can reuse + if(m_Storage.m_dynSet!=0 && m_Size>=Other.m_Size && m_Size + bool operator()( Char2T Ch ) const + { + const set_value_type* Storage= + (use_fixed_storage(m_Size)) + ? &m_Storage.m_fixSet[0] + : m_Storage.m_dynSet; + + return ::std::binary_search(Storage, Storage+m_Size, Ch); + } + private: + // check if the size is eligible for fixed storage + static bool use_fixed_storage(std::size_t size) + { + return size<=sizeof(set_value_type*)*2; + } + + + private: + // storage + // The actual used storage is selected on the type + union + { + set_value_type* m_dynSet; + set_value_type m_fixSet[sizeof(set_value_type*)*2]; + } + m_Storage; + + // storage size + ::std::size_t m_Size; + }; + + // is_from_range functor + /* + returns true if the value is from the specified range. + (i.e. x>=From && x>=To) + */ + template + struct is_from_rangeF : + public predicate_facade< is_from_rangeF > + { + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {} + + // Operation + template + bool operator()( Char2T Ch ) const + { + return ( m_From <= Ch ) && ( Ch <= m_To ); + } + + private: + CharT m_From; + CharT m_To; + }; + + // class_and composition predicate + template + struct pred_andF : + public predicate_facade< pred_andF > + { + public: + + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + pred_andF( Pred1T Pred1, Pred2T Pred2 ) : + m_Pred1(Pred1), m_Pred2(Pred2) {} + + // Operation + template + bool operator()( CharT Ch ) const + { + return m_Pred1(Ch) && m_Pred2(Ch); + } + + private: + Pred1T m_Pred1; + Pred2T m_Pred2; + }; + + // class_or composition predicate + template + struct pred_orF : + public predicate_facade< pred_orF > + { + public: + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + pred_orF( Pred1T Pred1, Pred2T Pred2 ) : + m_Pred1(Pred1), m_Pred2(Pred2) {} + + // Operation + template + bool operator()( CharT Ch ) const + { + return m_Pred1(Ch) || m_Pred2(Ch); + } + + private: + Pred1T m_Pred1; + Pred2T m_Pred2; + }; + + // class_not composition predicate + template< typename PredT > + struct pred_notF : + public predicate_facade< pred_notF > + { + public: + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + pred_notF( PredT Pred ) : m_Pred(Pred) {} + + // Operation + template + bool operator()( CharT Ch ) const + { + return !m_Pred(Ch); + } + + private: + PredT m_Pred; + }; + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_CLASSIFICATION_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/find_format.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/find_format.hpp new file mode 100644 index 0000000..8b9ad42 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/find_format.hpp @@ -0,0 +1,204 @@ +// Boost string_algo library find_format.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP +#define BOOST_STRING_FIND_FORMAT_DETAIL_HPP + +#include +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// find_format_copy (iterator variant) implementation -------------------------------// + + template< + typename OutputIteratorT, + typename InputT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline OutputIteratorT find_format_copy_impl2( + OutputIteratorT Output, + const InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult ) + { + typedef find_format_store< + BOOST_STRING_TYPENAME + range_const_iterator::type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + if ( !M ) + { + // Match not found - return original sequence + Output = std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); + return Output; + } + + // Copy the beginning of the sequence + Output = std::copy( ::boost::begin(Input), ::boost::begin(M), Output ); + // Format find result + // Copy formated result + Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output ); + // Copy the rest of the sequence + Output = std::copy( M.end(), ::boost::end(Input), Output ); + + return Output; + } + + template< + typename OutputIteratorT, + typename InputT, + typename FormatterT, + typename FindResultT > + inline OutputIteratorT find_format_copy_impl( + OutputIteratorT Output, + const InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult ) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + return ::boost::algorithm::detail::find_format_copy_impl2( + Output, + Input, + Formatter, + FindResult, + Formatter(FindResult) ); + } else { + return std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); + } + } + + +// find_format_copy implementation --------------------------------------------------// + + template< + typename InputT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline InputT find_format_copy_impl2( + const InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult) + { + typedef find_format_store< + BOOST_STRING_TYPENAME + range_const_iterator::type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + if ( !M ) + { + // Match not found - return original sequence + return InputT( Input ); + } + + InputT Output; + // Copy the beginning of the sequence + insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() ); + // Copy formated result + insert( Output, ::boost::end(Output), M.format_result() ); + // Copy the rest of the sequence + insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) ); + + return Output; + } + + template< + typename InputT, + typename FormatterT, + typename FindResultT > + inline InputT find_format_copy_impl( + const InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + return ::boost::algorithm::detail::find_format_copy_impl2( + Input, + Formatter, + FindResult, + Formatter(FindResult) ); + } else { + return Input; + } + } + + // replace implementation ----------------------------------------------------// + + template< + typename InputT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline void find_format_impl2( + InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult) + { + typedef find_format_store< + BOOST_STRING_TYPENAME + range_iterator::type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + if ( !M ) + { + // Search not found - return original sequence + return; + } + + // Replace match + ::boost::algorithm::detail::replace( Input, M.begin(), M.end(), M.format_result() ); + } + + template< + typename InputT, + typename FormatterT, + typename FindResultT > + inline void find_format_impl( + InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + ::boost::algorithm::detail::find_format_impl2( + Input, + Formatter, + FindResult, + Formatter(FindResult) ); + } + } + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FIND_FORMAT_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/find_format_all.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/find_format_all.hpp new file mode 100644 index 0000000..978710c --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/find_format_all.hpp @@ -0,0 +1,273 @@ +// Boost string_algo library find_format_all.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP +#define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP + +#include +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// find_format_all_copy (iterator variant) implementation ---------------------------// + + template< + typename OutputIteratorT, + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline OutputIteratorT find_format_all_copy_impl2( + OutputIteratorT Output, + const InputT& Input, + FinderT Finder, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult ) + { + typedef BOOST_STRING_TYPENAME + range_const_iterator::type input_iterator_type; + + typedef find_format_store< + input_iterator_type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + // Initialize last match + input_iterator_type LastMatch=::boost::begin(Input); + + // Iterate through all matches + while( M ) + { + // Copy the beginning of the sequence + Output = std::copy( LastMatch, M.begin(), Output ); + // Copy formated result + Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output ); + + // Proceed to the next match + LastMatch=M.end(); + M=Finder( LastMatch, ::boost::end(Input) ); + } + + // Copy the rest of the sequence + Output = std::copy( LastMatch, ::boost::end(Input), Output ); + + return Output; + } + + template< + typename OutputIteratorT, + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT > + inline OutputIteratorT find_format_all_copy_impl( + OutputIteratorT Output, + const InputT& Input, + FinderT Finder, + FormatterT Formatter, + const FindResultT& FindResult ) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + return ::boost::algorithm::detail::find_format_all_copy_impl2( + Output, + Input, + Finder, + Formatter, + FindResult, + Formatter(FindResult) ); + } else { + return std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); + } + } + + // find_format_all_copy implementation ----------------------------------------------// + + template< + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline InputT find_format_all_copy_impl2( + const InputT& Input, + FinderT Finder, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult) + { + typedef BOOST_STRING_TYPENAME + range_const_iterator::type input_iterator_type; + + typedef find_format_store< + input_iterator_type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + // Initialize last match + input_iterator_type LastMatch=::boost::begin(Input); + + // Output temporary + InputT Output; + + // Iterate through all matches + while( M ) + { + // Copy the beginning of the sequence + insert( Output, ::boost::end(Output), LastMatch, M.begin() ); + // Copy formated result + insert( Output, ::boost::end(Output), M.format_result() ); + + // Proceed to the next match + LastMatch=M.end(); + M=Finder( LastMatch, ::boost::end(Input) ); + } + + // Copy the rest of the sequence + ::boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) ); + + return Output; + } + + template< + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT > + inline InputT find_format_all_copy_impl( + const InputT& Input, + FinderT Finder, + FormatterT Formatter, + const FindResultT& FindResult) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + return ::boost::algorithm::detail::find_format_all_copy_impl2( + Input, + Finder, + Formatter, + FindResult, + Formatter(FindResult) ); + } else { + return Input; + } + } + + // find_format_all implementation ------------------------------------------------// + + template< + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline void find_format_all_impl2( + InputT& Input, + FinderT Finder, + FormatterT Formatter, + FindResultT FindResult, + FormatResultT FormatResult) + { + typedef BOOST_STRING_TYPENAME + range_iterator::type input_iterator_type; + typedef find_format_store< + input_iterator_type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + // Instantiate replacement storage + std::deque< + BOOST_STRING_TYPENAME range_value::type> Storage; + + // Initialize replacement iterators + input_iterator_type InsertIt=::boost::begin(Input); + input_iterator_type SearchIt=::boost::begin(Input); + + while( M ) + { + // process the segment + InsertIt=process_segment( + Storage, + Input, + InsertIt, + SearchIt, + M.begin() ); + + // Adjust search iterator + SearchIt=M.end(); + + // Copy formated replace to the storage + ::boost::algorithm::detail::copy_to_storage( Storage, M.format_result() ); + + // Find range for a next match + M=Finder( SearchIt, ::boost::end(Input) ); + } + + // process the last segment + InsertIt=::boost::algorithm::detail::process_segment( + Storage, + Input, + InsertIt, + SearchIt, + ::boost::end(Input) ); + + if ( Storage.empty() ) + { + // Truncate input + ::boost::algorithm::detail::erase( Input, InsertIt, ::boost::end(Input) ); + } + else + { + // Copy remaining data to the end of input + ::boost::algorithm::detail::insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() ); + } + } + + template< + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT > + inline void find_format_all_impl( + InputT& Input, + FinderT Finder, + FormatterT Formatter, + FindResultT FindResult) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + ::boost::algorithm::detail::find_format_all_impl2( + Input, + Finder, + Formatter, + FindResult, + Formatter(FindResult) ); + } + } + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/find_format_store.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/find_format_store.hpp new file mode 100644 index 0000000..e8bd84a --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/find_format_store.hpp @@ -0,0 +1,89 @@ +// Boost string_algo library find_format_store.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP +#define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP + +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// temporary format and find result storage --------------------------------// + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +#pragma warning(push) +#pragma warning(disable:4512) //assignment operator could not be generated +#endif + template< + typename ForwardIteratorT, + typename FormatterT, + typename FormatResultT > + class find_format_store : + public iterator_range + { + public: + // typedefs + typedef iterator_range base_type; + typedef FormatterT formatter_type; + typedef FormatResultT format_result_type; + + public: + // Construction + find_format_store( + const base_type& FindResult, + const format_result_type& FormatResult, + const formatter_type& Formatter ) : + base_type(FindResult), + m_FormatResult(FormatResult), + m_Formatter(Formatter) {} + + // Assignment + template< typename FindResultT > + find_format_store& operator=( FindResultT FindResult ) + { + iterator_range::operator=(FindResult); + if( !this->empty() ) { + m_FormatResult=m_Formatter(FindResult); + } + + return *this; + } + + // Retrieve format result + const format_result_type& format_result() + { + return m_FormatResult; + } + + private: + format_result_type m_FormatResult; + const formatter_type& m_Formatter; + }; + + template + bool check_find_result(InputT&, FindResultT& FindResult) + { + typedef BOOST_STRING_TYPENAME + range_const_iterator::type input_iterator_type; + iterator_range ResultRange(FindResult); + return !ResultRange.empty(); + } + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +#pragma warning(pop) +#endif + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/find_iterator.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/find_iterator.hpp new file mode 100644 index 0000000..c76993a --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/find_iterator.hpp @@ -0,0 +1,87 @@ +// Boost string_algo library find_iterator.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP +#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// find_iterator base -----------------------------------------------// + + // Find iterator base + template + class find_iterator_base + { + protected: + // typedefs + typedef IteratorT input_iterator_type; + typedef iterator_range match_type; + typedef function2< + match_type, + input_iterator_type, + input_iterator_type> finder_type; + + protected: + // Protected construction/destruction + + // Default constructor + find_iterator_base() {}; + // Copy construction + find_iterator_base( const find_iterator_base& Other ) : + m_Finder(Other.m_Finder) {} + + // Constructor + template + find_iterator_base( FinderT Finder, int ) : + m_Finder(Finder) {} + + // Destructor + ~find_iterator_base() {} + + // Find operation + match_type do_find( + input_iterator_type Begin, + input_iterator_type End ) const + { + if (!m_Finder.empty()) + { + return m_Finder(Begin,End); + } + else + { + return match_type(End,End); + } + } + + // Check + bool is_null() const + { + return m_Finder.empty(); + } + + private: + // Finder + finder_type m_Finder; + }; + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_FIND_ITERATOR_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/finder.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/finder.hpp new file mode 100644 index 0000000..45bcb7d --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/finder.hpp @@ -0,0 +1,646 @@ +// Boost string_algo library finder.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2006. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FINDER_DETAIL_HPP +#define BOOST_STRING_FINDER_DETAIL_HPP + +#include +#include +#include + +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + + +// find first functor -----------------------------------------------// + + // find a subsequence in the sequence ( functor ) + /* + Returns a pair marking the subsequence in the sequence. + If the find fails, functor returns + */ + template + struct first_finderF + { + typedef SearchIteratorT search_iterator_type; + + // Construction + template< typename SearchT > + first_finderF( const SearchT& Search, PredicateT Comp ) : + m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {} + first_finderF( + search_iterator_type SearchBegin, + search_iterator_type SearchEnd, + PredicateT Comp ) : + m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + typedef iterator_range result_type; + typedef ForwardIteratorT input_iterator_type; + + // Outer loop + for(input_iterator_type OuterIt=Begin; + OuterIt!=End; + ++OuterIt) + { + // Sanity check + if( boost::empty(m_Search) ) + return result_type( End, End ); + + input_iterator_type InnerIt=OuterIt; + search_iterator_type SubstrIt=m_Search.begin(); + for(; + InnerIt!=End && SubstrIt!=m_Search.end(); + ++InnerIt,++SubstrIt) + { + if( !( m_Comp(*InnerIt,*SubstrIt) ) ) + break; + } + + // Substring matching succeeded + if ( SubstrIt==m_Search.end() ) + return result_type( OuterIt, InnerIt ); + } + + return result_type( End, End ); + } + + private: + iterator_range m_Search; + PredicateT m_Comp; + }; + +// find last functor -----------------------------------------------// + + // find the last match a subseqeunce in the sequence ( functor ) + /* + Returns a pair marking the subsequence in the sequence. + If the find fails, returns + */ + template + struct last_finderF + { + typedef SearchIteratorT search_iterator_type; + typedef first_finderF< + search_iterator_type, + PredicateT> first_finder_type; + + // Construction + template< typename SearchT > + last_finderF( const SearchT& Search, PredicateT Comp ) : + m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {} + last_finderF( + search_iterator_type SearchBegin, + search_iterator_type SearchEnd, + PredicateT Comp ) : + m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + typedef iterator_range result_type; + + if( boost::empty(m_Search) ) + return result_type( End, End ); + + typedef BOOST_STRING_TYPENAME boost::detail:: + iterator_traits::iterator_category category; + + return findit( Begin, End, category() ); + } + + private: + // forward iterator + template< typename ForwardIteratorT > + iterator_range + findit( + ForwardIteratorT Begin, + ForwardIteratorT End, + std::forward_iterator_tag ) const + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + first_finder_type first_finder( + m_Search.begin(), m_Search.end(), m_Comp ); + + result_type M=first_finder( Begin, End ); + result_type Last=M; + + while( M ) + { + Last=M; + M=first_finder( ::boost::end(M), End ); + } + + return Last; + } + + // bidirectional iterator + template< typename ForwardIteratorT > + iterator_range + findit( + ForwardIteratorT Begin, + ForwardIteratorT End, + std::bidirectional_iterator_tag ) const + { + typedef iterator_range result_type; + typedef ForwardIteratorT input_iterator_type; + + // Outer loop + for(input_iterator_type OuterIt=End; + OuterIt!=Begin; ) + { + input_iterator_type OuterIt2=--OuterIt; + + input_iterator_type InnerIt=OuterIt2; + search_iterator_type SubstrIt=m_Search.begin(); + for(; + InnerIt!=End && SubstrIt!=m_Search.end(); + ++InnerIt,++SubstrIt) + { + if( !( m_Comp(*InnerIt,*SubstrIt) ) ) + break; + } + + // Substring matching succeeded + if( SubstrIt==m_Search.end() ) + return result_type( OuterIt2, InnerIt ); + } + + return result_type( End, End ); + } + + private: + iterator_range m_Search; + PredicateT m_Comp; + }; + +// find n-th functor -----------------------------------------------// + + // find the n-th match of a subsequence in the sequence ( functor ) + /* + Returns a pair marking the subsequence in the sequence. + If the find fails, returns + */ + template + struct nth_finderF + { + typedef SearchIteratorT search_iterator_type; + typedef first_finderF< + search_iterator_type, + PredicateT> first_finder_type; + typedef last_finderF< + search_iterator_type, + PredicateT> last_finder_type; + + // Construction + template< typename SearchT > + nth_finderF( + const SearchT& Search, + int Nth, + PredicateT Comp) : + m_Search(::boost::begin(Search), ::boost::end(Search)), + m_Nth(Nth), + m_Comp(Comp) {} + nth_finderF( + search_iterator_type SearchBegin, + search_iterator_type SearchEnd, + int Nth, + PredicateT Comp) : + m_Search(SearchBegin, SearchEnd), + m_Nth(Nth), + m_Comp(Comp) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + if(m_Nth>=0) + { + return find_forward(Begin, End, m_Nth); + } + else + { + return find_backward(Begin, End, -m_Nth); + } + + } + + private: + // Implementation helpers + template< typename ForwardIteratorT > + iterator_range + find_forward( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N) const + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + // Sanity check + if( boost::empty(m_Search) ) + return result_type( End, End ); + + // Instantiate find functor + first_finder_type first_finder( + m_Search.begin(), m_Search.end(), m_Comp ); + + result_type M( Begin, Begin ); + + for( unsigned int n=0; n<=N; ++n ) + { + // find next match + M=first_finder( ::boost::end(M), End ); + + if ( !M ) + { + // Subsequence not found, return + return M; + } + } + + return M; + } + + template< typename ForwardIteratorT > + iterator_range + find_backward( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N) const + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + // Sanity check + if( boost::empty(m_Search) ) + return result_type( End, End ); + + // Instantiate find functor + last_finder_type last_finder( + m_Search.begin(), m_Search.end(), m_Comp ); + + result_type M( End, End ); + + for( unsigned int n=1; n<=N; ++n ) + { + // find next match + M=last_finder( Begin, ::boost::begin(M) ); + + if ( !M ) + { + // Subsequence not found, return + return M; + } + } + + return M; + } + + + private: + iterator_range m_Search; + int m_Nth; + PredicateT m_Comp; + }; + +// find head/tail implementation helpers ---------------------------// + + template + iterator_range + find_head_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::forward_iterator_tag ) + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + input_iterator_type It=Begin; + for( + unsigned int Index=0; + Index + iterator_range + find_head_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::random_access_iterator_tag ) + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) + return result_type( Begin, End ); + + return result_type(Begin,Begin+N); + } + + // Find head implementation + template + iterator_range + find_head_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N ) + { + typedef BOOST_STRING_TYPENAME boost::detail:: + iterator_traits::iterator_category category; + + return ::boost::algorithm::detail::find_head_impl( Begin, End, N, category() ); + } + + template< typename ForwardIteratorT > + iterator_range + find_tail_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::forward_iterator_tag ) + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + unsigned int Index=0; + input_iterator_type It=Begin; + input_iterator_type It2=Begin; + + // Advance It2 by N increments + for( Index=0; Index + iterator_range + find_tail_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::bidirectional_iterator_tag ) + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + input_iterator_type It=End; + for( + unsigned int Index=0; + Index + iterator_range + find_tail_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::random_access_iterator_tag ) + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) + return result_type( Begin, End ); + + return result_type( End-N, End ); + } + + // Operation + template< typename ForwardIteratorT > + iterator_range + find_tail_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N ) + { + typedef BOOST_STRING_TYPENAME boost::detail:: + iterator_traits::iterator_category category; + + return ::boost::algorithm::detail::find_tail_impl( Begin, End, N, category() ); + } + + + +// find head functor -----------------------------------------------// + + + // find a head in the sequence ( functor ) + /* + This functor find a head of the specified range. For + a specified N, the head is a subsequence of N starting + elements of the range. + */ + struct head_finderF + { + // Construction + head_finderF( int N ) : m_N(N) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + if(m_N>=0) + { + return ::boost::algorithm::detail::find_head_impl( Begin, End, m_N ); + } + else + { + iterator_range Res= + ::boost::algorithm::detail::find_tail_impl( Begin, End, -m_N ); + + return ::boost::make_iterator_range(Begin, Res.begin()); + } + } + + private: + int m_N; + }; + +// find tail functor -----------------------------------------------// + + + // find a tail in the sequence ( functor ) + /* + This functor find a tail of the specified range. For + a specified N, the head is a subsequence of N starting + elements of the range. + */ + struct tail_finderF + { + // Construction + tail_finderF( int N ) : m_N(N) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + if(m_N>=0) + { + return ::boost::algorithm::detail::find_tail_impl( Begin, End, m_N ); + } + else + { + iterator_range Res= + ::boost::algorithm::detail::find_head_impl( Begin, End, -m_N ); + + return ::boost::make_iterator_range(Res.end(), End); + } + } + + private: + int m_N; + }; + +// find token functor -----------------------------------------------// + + // find a token in a sequence ( functor ) + /* + This find functor finds a token specified be a predicate + in a sequence. It is equivalent of std::find algorithm, + with an exception that it return range instead of a single + iterator. + + If bCompress is set to true, adjacent matching tokens are + concatenated into one match. + */ + template< typename PredicateT > + struct token_finderF + { + // Construction + token_finderF( + PredicateT Pred, + token_compress_mode_type eCompress=token_compress_off ) : + m_Pred(Pred), m_eCompress(eCompress) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + typedef iterator_range result_type; + + ForwardIteratorT It=std::find_if( Begin, End, m_Pred ); + + if( It==End ) + { + return result_type( End, End ); + } + else + { + ForwardIteratorT It2=It; + + if( m_eCompress==token_compress_on ) + { + // Find first non-matching character + while( It2!=End && m_Pred(*It2) ) ++It2; + } + else + { + // Advance by one position + ++It2; + } + + return result_type( It, It2 ); + } + } + + private: + PredicateT m_Pred; + token_compress_mode_type m_eCompress; + }; + +// find range functor -----------------------------------------------// + + // find a range in the sequence ( functor ) + /* + This functor actually does not perform any find operation. + It always returns given iterator range as a result. + */ + template + struct range_finderF + { + typedef ForwardIterator1T input_iterator_type; + typedef iterator_range result_type; + + // Construction + range_finderF( + input_iterator_type Begin, + input_iterator_type End ) : m_Range(Begin, End) {} + + range_finderF(const iterator_range& Range) : + m_Range(Range) {} + + // Operation + template< typename ForwardIterator2T > + iterator_range + operator()( + ForwardIterator2T, + ForwardIterator2T ) const + { +#if BOOST_WORKAROUND( __MWERKS__, <= 0x3003 ) + return iterator_range(this->m_Range); +#elif BOOST_WORKAROUND(BOOST_MSVC, <= 1300) + return iterator_range(m_Range.begin(), m_Range.end()); +#else + return m_Range; +#endif + } + + private: + iterator_range m_Range; + }; + + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FINDER_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/formatter.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/formatter.hpp new file mode 100644 index 0000000..8e7b727 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/formatter.hpp @@ -0,0 +1,119 @@ +// Boost string_algo library formatter.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FORMATTER_DETAIL_HPP +#define BOOST_STRING_FORMATTER_DETAIL_HPP + + +#include +#include +#include +#include + +#include + +// generic replace functors -----------------------------------------------// + +namespace boost { + namespace algorithm { + namespace detail { + +// const format functor ----------------------------------------------------// + + // constant format functor + template + struct const_formatF + { + private: + typedef BOOST_STRING_TYPENAME + range_const_iterator::type format_iterator; + typedef iterator_range result_type; + + public: + // Construction + const_formatF(const RangeT& Format) : + m_Format(::boost::begin(Format), ::boost::end(Format)) {} + + // Operation +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + template + result_type& operator()(const Range2T&) + { + return m_Format; + } +#endif + + template + const result_type& operator()(const Range2T&) const + { + return m_Format; + } + + private: + result_type m_Format; + }; + +// identity format functor ----------------------------------------------------// + + // identity format functor + template + struct identity_formatF + { + // Operation + template< typename Range2T > + const RangeT& operator()(const Range2T& Replace) const + { + return RangeT(::boost::begin(Replace), ::boost::end(Replace)); + } + }; + +// empty format functor ( used by erase ) ------------------------------------// + + // empty format functor + template< typename CharT > + struct empty_formatF + { + template< typename ReplaceT > + empty_container operator()(const ReplaceT&) const + { + return empty_container(); + } + }; + +// dissect format functor ----------------------------------------------------// + + // dissect format functor + template + struct dissect_formatF + { + public: + // Construction + dissect_formatF(FinderT Finder) : + m_Finder(Finder) {} + + // Operation + template + inline iterator_range< + BOOST_STRING_TYPENAME range_const_iterator::type> + operator()(const RangeT& Replace) const + { + return m_Finder(::boost::begin(Replace), ::boost::end(Replace)); + } + + private: + FinderT m_Finder; + }; + + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FORMATTER_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/predicate.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/predicate.hpp new file mode 100644 index 0000000..5acf3cc --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/predicate.hpp @@ -0,0 +1,77 @@ +// Boost string_algo library predicate.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_PREDICATE_DETAIL_HPP +#define BOOST_STRING_PREDICATE_DETAIL_HPP + +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// ends_with predicate implementation ----------------------------------// + + template< + typename ForwardIterator1T, + typename ForwardIterator2T, + typename PredicateT> + inline bool ends_with_iter_select( + ForwardIterator1T Begin, + ForwardIterator1T End, + ForwardIterator2T SubBegin, + ForwardIterator2T SubEnd, + PredicateT Comp, + std::bidirectional_iterator_tag) + { + ForwardIterator1T it=End; + ForwardIterator2T pit=SubEnd; + for(;it!=Begin && pit!=SubBegin;) + { + if( !(Comp(*(--it),*(--pit))) ) + return false; + } + + return pit==SubBegin; + } + + template< + typename ForwardIterator1T, + typename ForwardIterator2T, + typename PredicateT> + inline bool ends_with_iter_select( + ForwardIterator1T Begin, + ForwardIterator1T End, + ForwardIterator2T SubBegin, + ForwardIterator2T SubEnd, + PredicateT Comp, + std::forward_iterator_tag) + { + if ( SubBegin==SubEnd ) + { + // empty subsequence check + return true; + } + + iterator_range Result + =last_finder( + ::boost::make_iterator_range(SubBegin, SubEnd), + Comp)(Begin, End); + + return !Result.empty() && Result.end()==End; + } + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_PREDICATE_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/replace_storage.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/replace_storage.hpp new file mode 100644 index 0000000..db35e4c --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/replace_storage.hpp @@ -0,0 +1,159 @@ +// Boost string_algo library replace_storage.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP +#define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// storage handling routines -----------------------------------------------// + + template< typename StorageT, typename OutputIteratorT > + inline OutputIteratorT move_from_storage( + StorageT& Storage, + OutputIteratorT DestBegin, + OutputIteratorT DestEnd ) + { + OutputIteratorT OutputIt=DestBegin; + + while( !Storage.empty() && OutputIt!=DestEnd ) + { + *OutputIt=Storage.front(); + Storage.pop_front(); + ++OutputIt; + } + + return OutputIt; + } + + template< typename StorageT, typename WhatT > + inline void copy_to_storage( + StorageT& Storage, + const WhatT& What ) + { + Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) ); + } + + +// process segment routine -----------------------------------------------// + + template< bool HasStableIterators > + struct process_segment_helper + { + // Optimized version of process_segment for generic sequence + template< + typename StorageT, + typename InputT, + typename ForwardIteratorT > + ForwardIteratorT operator()( + StorageT& Storage, + InputT& /*Input*/, + ForwardIteratorT InsertIt, + ForwardIteratorT SegmentBegin, + ForwardIteratorT SegmentEnd ) + { + // Copy data from the storage until the beginning of the segment + ForwardIteratorT It=::boost::algorithm::detail::move_from_storage( Storage, InsertIt, SegmentBegin ); + + // 3 cases are possible : + // a) Storage is empty, It==SegmentBegin + // b) Storage is empty, It!=SegmentBegin + // c) Storage is not empty + + if( Storage.empty() ) + { + if( It==SegmentBegin ) + { + // Case a) everything is grand, just return end of segment + return SegmentEnd; + } + else + { + // Case b) move the segment backwards + return std::copy( SegmentBegin, SegmentEnd, It ); + } + } + else + { + // Case c) -> shift the segment to the left and keep the overlap in the storage + while( It!=SegmentEnd ) + { + // Store value into storage + Storage.push_back( *It ); + // Get the top from the storage and put it here + *It=Storage.front(); + Storage.pop_front(); + + // Advance + ++It; + } + + return It; + } + } + }; + + template<> + struct process_segment_helper< true > + { + // Optimized version of process_segment for list-like sequence + template< + typename StorageT, + typename InputT, + typename ForwardIteratorT > + ForwardIteratorT operator()( + StorageT& Storage, + InputT& Input, + ForwardIteratorT InsertIt, + ForwardIteratorT SegmentBegin, + ForwardIteratorT SegmentEnd ) + + { + // Call replace to do the job + ::boost::algorithm::detail::replace( Input, InsertIt, SegmentBegin, Storage ); + // Empty the storage + Storage.clear(); + // Iterators were not changed, simply return the end of segment + return SegmentEnd; + } + }; + + // Process one segment in the replace_all algorithm + template< + typename StorageT, + typename InputT, + typename ForwardIteratorT > + inline ForwardIteratorT process_segment( + StorageT& Storage, + InputT& Input, + ForwardIteratorT InsertIt, + ForwardIteratorT SegmentBegin, + ForwardIteratorT SegmentEnd ) + { + return + process_segment_helper< + has_stable_iterators::value>()( + Storage, Input, InsertIt, SegmentBegin, SegmentEnd ); + } + + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/sequence.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/sequence.hpp new file mode 100644 index 0000000..dc47409 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/sequence.hpp @@ -0,0 +1,200 @@ +// Boost string_algo library sequence.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP +#define BOOST_STRING_DETAIL_SEQUENCE_HPP + +#include +#include +#include +#include +#include + +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// insert helpers -------------------------------------------------// + + template< typename InputT, typename ForwardIteratorT > + inline void insert( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator At, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + Input.insert( At, Begin, End ); + } + + template< typename InputT, typename InsertT > + inline void insert( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator At, + const InsertT& Insert ) + { + ::boost::algorithm::detail::insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) ); + } + +// erase helper ---------------------------------------------------// + + // Erase a range in the sequence + /* + Returns the iterator pointing just after the erase subrange + */ + template< typename InputT > + inline typename InputT::iterator erase( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To ) + { + return Input.erase( From, To ); + } + +// replace helper implementation ----------------------------------// + + // Optimized version of replace for generic sequence containers + // Assumption: insert and erase are expensive + template< bool HasConstTimeOperations > + struct replace_const_time_helper + { + template< typename InputT, typename ForwardIteratorT > + void operator()( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + // Copy data to the container ( as much as possible ) + ForwardIteratorT InsertIt=Begin; + BOOST_STRING_TYPENAME InputT::iterator InputIt=From; + for(; InsertIt!=End && InputIt!=To; InsertIt++, InputIt++ ) + { + *InputIt=*InsertIt; + } + + if ( InsertIt!=End ) + { + // Replace sequence is longer, insert it + Input.insert( InputIt, InsertIt, End ); + } + else + { + if ( InputIt!=To ) + { + // Replace sequence is shorter, erase the rest + Input.erase( InputIt, To ); + } + } + } + }; + + template<> + struct replace_const_time_helper< true > + { + // Const-time erase and insert methods -> use them + template< typename InputT, typename ForwardIteratorT > + void operator()( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + BOOST_STRING_TYPENAME InputT::iterator At=Input.erase( From, To ); + if ( Begin!=End ) + { + if(!Input.empty()) + { + Input.insert( At, Begin, End ); + } + else + { + Input.insert( Input.begin(), Begin, End ); + } + } + } + }; + + // No native replace method + template< bool HasNative > + struct replace_native_helper + { + template< typename InputT, typename ForwardIteratorT > + void operator()( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + replace_const_time_helper< + boost::mpl::and_< + has_const_time_insert, + has_const_time_erase >::value >()( + Input, From, To, Begin, End ); + } + }; + + // Container has native replace method + template<> + struct replace_native_helper< true > + { + template< typename InputT, typename ForwardIteratorT > + void operator()( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + Input.replace( From, To, Begin, End ); + } + }; + +// replace helper -------------------------------------------------// + + template< typename InputT, typename ForwardIteratorT > + inline void replace( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + replace_native_helper< has_native_replace::value >()( + Input, From, To, Begin, End ); + } + + template< typename InputT, typename InsertT > + inline void replace( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + const InsertT& Insert ) + { + if(From!=To) + { + ::boost::algorithm::detail::replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) ); + } + else + { + ::boost::algorithm::detail::insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) ); + } + } + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_DETAIL_SEQUENCE_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/trim.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/trim.hpp new file mode 100644 index 0000000..1233e49 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/trim.hpp @@ -0,0 +1,95 @@ +// Boost string_algo library trim.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_TRIM_DETAIL_HPP +#define BOOST_STRING_TRIM_DETAIL_HPP + +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// trim iterator helper -----------------------------------------------// + + template< typename ForwardIteratorT, typename PredicateT > + inline ForwardIteratorT trim_end_iter_select( + ForwardIteratorT InBegin, + ForwardIteratorT InEnd, + PredicateT IsSpace, + std::forward_iterator_tag ) + { + ForwardIteratorT TrimIt=InBegin; + + for( ForwardIteratorT It=InBegin; It!=InEnd; ++It ) + { + if ( !IsSpace(*It) ) + { + TrimIt=It; + ++TrimIt; + } + } + + return TrimIt; + } + + template< typename ForwardIteratorT, typename PredicateT > + inline ForwardIteratorT trim_end_iter_select( + ForwardIteratorT InBegin, + ForwardIteratorT InEnd, + PredicateT IsSpace, + std::bidirectional_iterator_tag ) + { + for( ForwardIteratorT It=InEnd; It!=InBegin; ) + { + if ( !IsSpace(*(--It)) ) + return ++It; + } + + return InBegin; + } + // Search for first non matching character from the beginning of the sequence + template< typename ForwardIteratorT, typename PredicateT > + inline ForwardIteratorT trim_begin( + ForwardIteratorT InBegin, + ForwardIteratorT InEnd, + PredicateT IsSpace ) + { + ForwardIteratorT It=InBegin; + for(; It!=InEnd; ++It ) + { + if (!IsSpace(*It)) + return It; + } + + return It; + } + + // Search for first non matching character from the end of the sequence + template< typename ForwardIteratorT, typename PredicateT > + inline ForwardIteratorT trim_end( + ForwardIteratorT InBegin, + ForwardIteratorT InEnd, + PredicateT IsSpace ) + { + typedef BOOST_STRING_TYPENAME boost::detail:: + iterator_traits::iterator_category category; + + return ::boost::algorithm::detail::trim_end_iter_select( InBegin, InEnd, IsSpace, category() ); + } + + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_TRIM_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/detail/util.hpp b/contrib/prebuilt/include/boost/algorithm/string/detail/util.hpp new file mode 100644 index 0000000..7e8471f --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/detail/util.hpp @@ -0,0 +1,106 @@ +// Boost string_algo library util.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_UTIL_DETAIL_HPP +#define BOOST_STRING_UTIL_DETAIL_HPP + +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// empty container -----------------------------------------------// + + // empty_container + /* + This class represents always empty container, + containing elements of type CharT. + + It is supposed to be used in a const version only + */ + template< typename CharT > + struct empty_container + { + typedef empty_container type; + typedef CharT value_type; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef const value_type& reference; + typedef const value_type& const_reference; + typedef const value_type* iterator; + typedef const value_type* const_iterator; + + + // Operations + const_iterator begin() const + { + return reinterpret_cast(0); + } + + const_iterator end() const + { + return reinterpret_cast(0); + } + + bool empty() const + { + return false; + } + + size_type size() const + { + return 0; + } + }; + +// bounded copy algorithm -----------------------------------------------// + + // Bounded version of the std::copy algorithm + template + inline OutputIteratorT bounded_copy( + InputIteratorT First, + InputIteratorT Last, + OutputIteratorT DestFirst, + OutputIteratorT DestLast ) + { + InputIteratorT InputIt=First; + OutputIteratorT OutputIt=DestFirst; + for(; InputIt!=Last && OutputIt!=DestLast; InputIt++, OutputIt++ ) + { + *OutputIt=*InputIt; + } + + return OutputIt; + } + +// iterator range utilities -----------------------------------------// + + // copy range functor + template< + typename SeqT, + typename IteratorT=BOOST_STRING_TYPENAME SeqT::const_iterator > + struct copy_iterator_rangeF : + public std::unary_function< iterator_range, SeqT > + { + SeqT operator()( const iterator_range& Range ) const + { + return copy_range(Range); + } + }; + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_UTIL_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/erase.hpp b/contrib/prebuilt/include/boost/algorithm/string/erase.hpp new file mode 100644 index 0000000..e738b86 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/erase.hpp @@ -0,0 +1,844 @@ +// Boost string_algo library erase.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2006. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_ERASE_HPP +#define BOOST_STRING_ERASE_HPP + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +/*! \file + Defines various erase algorithms. Each algorithm removes + part(s) of the input according to a searching criteria. +*/ + +namespace boost { + namespace algorithm { + +// erase_range -------------------------------------------------------// + + //! Erase range algorithm + /*! + Remove the given range from the input. The result is a modified copy of + the input. It is returned as a sequence or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input sequence + \param SearchRange A range in the input to be removed + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template + inline OutputIteratorT erase_range_copy( + OutputIteratorT Output, + const RangeT& Input, + const iterator_range< + BOOST_STRING_TYPENAME + range_const_iterator::type>& SearchRange ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::range_finder(SearchRange), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase range algorithm + /*! + \overload + */ + template + inline SequenceT erase_range_copy( + const SequenceT& Input, + const iterator_range< + BOOST_STRING_TYPENAME + range_const_iterator::type>& SearchRange ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::range_finder(SearchRange), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase range algorithm + /*! + Remove the given range from the input. + The input sequence is modified in-place. + + \param Input An input sequence + \param SearchRange A range in the input to be removed + */ + template + inline void erase_range( + SequenceT& Input, + const iterator_range< + BOOST_STRING_TYPENAME + range_iterator::type>& SearchRange ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::range_finder(SearchRange), + ::boost::algorithm::empty_formatter(Input) ); + } + +// erase_first --------------------------------------------------------// + + //! Erase first algorithm + /*! + Remove the first occurrence of the substring from the input. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT erase_first_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase first algorithm + /*! + \overload + */ + template + inline SequenceT erase_first_copy( + const SequenceT& Input, + const RangeT& Search ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase first algorithm + /*! + Remove the first occurrence of the substring from the input. + The input sequence is modified in-place. + + \param Input An input string + \param Search A substring to be searched for. + */ + template + inline void erase_first( + SequenceT& Input, + const RangeT& Search ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::empty_formatter(Input) ); + } + +// erase_first ( case insensitive ) ------------------------------------// + + //! Erase first algorithm ( case insensitive ) + /*! + Remove the first occurrence of the substring from the input. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + Searching is case insensitive. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Loc A locale used for case insensitive comparison + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT ierase_first_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase first algorithm ( case insensitive ) + /*! + \overload + */ + template + inline SequenceT ierase_first_copy( + const SequenceT& Input, + const RangeT& Search, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase first algorithm ( case insensitive ) + /*! + Remove the first occurrence of the substring from the input. + The input sequence is modified in-place. Searching is case insensitive. + + \param Input An input string + \param Search A substring to be searched for + \param Loc A locale used for case insensitive comparison + */ + template + inline void ierase_first( + SequenceT& Input, + const RangeT& Search, + const std::locale& Loc=std::locale() ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + +// erase_last --------------------------------------------------------// + + //! Erase last algorithm + /*! + Remove the last occurrence of the substring from the input. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for. + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT erase_last_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::last_finder(Search), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase last algorithm + /*! + \overload + */ + template + inline SequenceT erase_last_copy( + const SequenceT& Input, + const RangeT& Search ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::last_finder(Search), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase last algorithm + /*! + Remove the last occurrence of the substring from the input. + The input sequence is modified in-place. + + \param Input An input string + \param Search A substring to be searched for + */ + template + inline void erase_last( + SequenceT& Input, + const RangeT& Search ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::last_finder(Search), + ::boost::algorithm::empty_formatter(Input) ); + } + +// erase_last ( case insensitive ) ------------------------------------// + + //! Erase last algorithm ( case insensitive ) + /*! + Remove the last occurrence of the substring from the input. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + Searching is case insensitive. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Loc A locale used for case insensitive comparison + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT ierase_last_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::last_finder(Search, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase last algorithm ( case insensitive ) + /*! + \overload + */ + template + inline SequenceT ierase_last_copy( + const SequenceT& Input, + const RangeT& Search, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::last_finder(Search, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase last algorithm ( case insensitive ) + /*! + Remove the last occurrence of the substring from the input. + The input sequence is modified in-place. Searching is case insensitive. + + \param Input An input string + \param Search A substring to be searched for + \param Loc A locale used for case insensitive comparison + */ + template + inline void ierase_last( + SequenceT& Input, + const RangeT& Search, + const std::locale& Loc=std::locale() ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::last_finder(Search, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + +// erase_nth --------------------------------------------------------------------// + + //! Erase nth algorithm + /*! + Remove the Nth occurrence of the substring in the input. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Nth An index of the match to be replaced. The index is 0-based. + For negative N, matches are counted from the end of string. + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT erase_nth_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + int Nth ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::nth_finder(Search, Nth), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase nth algorithm + /*! + \overload + */ + template + inline SequenceT erase_nth_copy( + const SequenceT& Input, + const RangeT& Search, + int Nth ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::nth_finder(Search, Nth), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase nth algorithm + /*! + Remove the Nth occurrence of the substring in the input. + The input sequence is modified in-place. + + \param Input An input string + \param Search A substring to be searched for. + \param Nth An index of the match to be replaced. The index is 0-based. + For negative N, matches are counted from the end of string. + */ + template + inline void erase_nth( + SequenceT& Input, + const RangeT& Search, + int Nth ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::nth_finder(Search, Nth), + ::boost::algorithm::empty_formatter(Input) ); + } + +// erase_nth ( case insensitive ) ---------------------------------------------// + + //! Erase nth algorithm ( case insensitive ) + /*! + Remove the Nth occurrence of the substring in the input. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + Searching is case insensitive. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for. + \param Nth An index of the match to be replaced. The index is 0-based. + For negative N, matches are counted from the end of string. + \param Loc A locale used for case insensitive comparison + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT ierase_nth_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + int Nth, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase nth algorithm + /*! + \overload + */ + template + inline SequenceT ierase_nth_copy( + const SequenceT& Input, + const RangeT& Search, + int Nth, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)), + empty_formatter(Input) ); + } + + //! Erase nth algorithm + /*! + Remove the Nth occurrence of the substring in the input. + The input sequence is modified in-place. Searching is case insensitive. + + \param Input An input string + \param Search A substring to be searched for. + \param Nth An index of the match to be replaced. The index is 0-based. + For negative N, matches are counted from the end of string. + \param Loc A locale used for case insensitive comparison + */ + template + inline void ierase_nth( + SequenceT& Input, + const RangeT& Search, + int Nth, + const std::locale& Loc=std::locale() ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + + +// erase_all --------------------------------------------------------// + + //! Erase all algorithm + /*! + Remove all the occurrences of the string from the input. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + + \param Output An output iterator to which the result will be copied + \param Input An input sequence + \param Search A substring to be searched for. + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT erase_all_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search ) + { + return ::boost::algorithm::find_format_all_copy( + Output, + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase all algorithm + /*! + \overload + */ + template + inline SequenceT erase_all_copy( + const SequenceT& Input, + const RangeT& Search ) + { + return ::boost::algorithm::find_format_all_copy( + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase all algorithm + /*! + Remove all the occurrences of the string from the input. + The input sequence is modified in-place. + + \param Input An input string + \param Search A substring to be searched for. + */ + template + inline void erase_all( + SequenceT& Input, + const RangeT& Search ) + { + ::boost::algorithm::find_format_all( + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::empty_formatter(Input) ); + } + +// erase_all ( case insensitive ) ------------------------------------// + + //! Erase all algorithm ( case insensitive ) + /*! + Remove all the occurrences of the string from the input. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + Searching is case insensitive. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Loc A locale used for case insensitive comparison + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT ierase_all_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_all_copy( + Output, + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase all algorithm ( case insensitive ) + /*! + \overload + */ + template + inline SequenceT ierase_all_copy( + const SequenceT& Input, + const RangeT& Search, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_all_copy( + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + + //! Erase all algorithm ( case insensitive ) + /*! + Remove all the occurrences of the string from the input. + The input sequence is modified in-place. Searching is case insensitive. + + \param Input An input string + \param Search A substring to be searched for. + \param Loc A locale used for case insensitive comparison + */ + template + inline void ierase_all( + SequenceT& Input, + const RangeT& Search, + const std::locale& Loc=std::locale() ) + { + ::boost::algorithm::find_format_all( + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::empty_formatter(Input) ); + } + +// erase_head --------------------------------------------------------------------// + + //! Erase head algorithm + /*! + Remove the head from the input. The head is a prefix of a sequence of given size. + If the sequence is shorter then required, the whole string is + considered to be the head. The result is a modified copy of the input. + It is returned as a sequence or copied to the output iterator. + + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param N Length of the head. + For N>=0, at most N characters are extracted. + For N<0, size(Input)-|N| characters are extracted. + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename RangeT> + inline OutputIteratorT erase_head_copy( + OutputIteratorT Output, + const RangeT& Input, + int N ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::head_finder(N), + ::boost::algorithm::empty_formatter( Input ) ); + } + + //! Erase head algorithm + /*! + \overload + */ + template + inline SequenceT erase_head_copy( + const SequenceT& Input, + int N ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::head_finder(N), + ::boost::algorithm::empty_formatter( Input ) ); + } + + //! Erase head algorithm + /*! + Remove the head from the input. The head is a prefix of a sequence of given size. + If the sequence is shorter then required, the whole string is + considered to be the head. The input sequence is modified in-place. + + \param Input An input string + \param N Length of the head + For N>=0, at most N characters are extracted. + For N<0, size(Input)-|N| characters are extracted. + */ + template + inline void erase_head( + SequenceT& Input, + int N ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::head_finder(N), + ::boost::algorithm::empty_formatter( Input ) ); + } + +// erase_tail --------------------------------------------------------------------// + + //! Erase tail algorithm + /*! + Remove the tail from the input. The tail is a suffix of a sequence of given size. + If the sequence is shorter then required, the whole string is + considered to be the tail. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param N Length of the tail. + For N>=0, at most N characters are extracted. + For N<0, size(Input)-|N| characters are extracted. + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename RangeT> + inline OutputIteratorT erase_tail_copy( + OutputIteratorT Output, + const RangeT& Input, + int N ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::tail_finder(N), + ::boost::algorithm::empty_formatter( Input ) ); + } + + //! Erase tail algorithm + /*! + \overload + */ + template + inline SequenceT erase_tail_copy( + const SequenceT& Input, + int N ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::tail_finder(N), + ::boost::algorithm::empty_formatter( Input ) ); + } + + //! Erase tail algorithm + /*! + Remove the tail from the input. The tail is a suffix of a sequence of given size. + If the sequence is shorter then required, the whole string is + considered to be the tail. The input sequence is modified in-place. + + \param Input An input string + \param N Length of the tail + For N>=0, at most N characters are extracted. + For N<0, size(Input)-|N| characters are extracted. + */ + template + inline void erase_tail( + SequenceT& Input, + int N ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::tail_finder(N), + ::boost::algorithm::empty_formatter( Input ) ); + } + + } // namespace algorithm + + // pull names into the boost namespace + using algorithm::erase_range_copy; + using algorithm::erase_range; + using algorithm::erase_first_copy; + using algorithm::erase_first; + using algorithm::ierase_first_copy; + using algorithm::ierase_first; + using algorithm::erase_last_copy; + using algorithm::erase_last; + using algorithm::ierase_last_copy; + using algorithm::ierase_last; + using algorithm::erase_nth_copy; + using algorithm::erase_nth; + using algorithm::ierase_nth_copy; + using algorithm::ierase_nth; + using algorithm::erase_all_copy; + using algorithm::erase_all; + using algorithm::ierase_all_copy; + using algorithm::ierase_all; + using algorithm::erase_head_copy; + using algorithm::erase_head; + using algorithm::erase_tail_copy; + using algorithm::erase_tail; + +} // namespace boost + + +#endif // BOOST_ERASE_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/find.hpp b/contrib/prebuilt/include/boost/algorithm/string/find.hpp new file mode 100644 index 0000000..cc99ca1 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/find.hpp @@ -0,0 +1,334 @@ +// Boost string_algo library find.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_HPP +#define BOOST_STRING_FIND_HPP + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +/*! \file + Defines a set of find algorithms. The algorithms are searching + for a substring of the input. The result is given as an \c iterator_range + delimiting the substring. +*/ + +namespace boost { + namespace algorithm { + +// Generic find -----------------------------------------------// + + //! Generic find algorithm + /*! + Search the input using the given finder. + + \param Input A string which will be searched. + \param Finder Finder object used for searching. + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c RangeT::iterator or + \c RangeT::const_iterator, depending on the constness of + the input parameter. + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + find( + RangeT& Input, + const FinderT& Finder) + { + iterator_range::type> lit_input(::boost::as_literal(Input)); + + return Finder(::boost::begin(lit_input),::boost::end(lit_input)); + } + +// find_first -----------------------------------------------// + + //! Find first algorithm + /*! + Search for the first occurrence of the substring in the input. + + \param Input A string which will be searched. + \param Search A substring to be searched for. + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c RangeT::iterator or + \c RangeT::const_iterator, depending on the constness of + the input parameter. + + \note This function provides the strong exception-safety guarantee + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + find_first( + Range1T& Input, + const Range2T& Search) + { + return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search)); + } + + //! Find first algorithm ( case insensitive ) + /*! + Search for the first occurence of the substring in the input. + Searching is case insensitive. + + \param Input A string which will be searched. + \param Search A substring to be searched for. + \param Loc A locale used for case insensitive comparison + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c Range1T::iterator or + \c Range1T::const_iterator, depending on the constness of + the input parameter. + + \note This function provides the strong exception-safety guarantee + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + ifind_first( + Range1T& Input, + const Range2T& Search, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::find(Input, ::boost::algorithm::first_finder(Search,is_iequal(Loc))); + } + +// find_last -----------------------------------------------// + + //! Find last algorithm + /*! + Search for the last occurrence of the substring in the input. + + \param Input A string which will be searched. + \param Search A substring to be searched for. + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c Range1T::iterator or + \c Range1T::const_iterator, depending on the constness of + the input parameter. + + \note This function provides the strong exception-safety guarantee + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + find_last( + Range1T& Input, + const Range2T& Search) + { + return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search)); + } + + //! Find last algorithm ( case insensitive ) + /*! + Search for the last match a string in the input. + Searching is case insensitive. + + \param Input A string which will be searched. + \param Search A substring to be searched for. + \param Loc A locale used for case insensitive comparison + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c Range1T::iterator or + \c Range1T::const_iterator, depending on the constness of + the input parameter. + + \note This function provides the strong exception-safety guarantee + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + ifind_last( + Range1T& Input, + const Range2T& Search, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::find(Input, ::boost::algorithm::last_finder(Search, is_iequal(Loc))); + } + +// find_nth ----------------------------------------------------------------------// + + //! Find n-th algorithm + /*! + Search for the n-th (zero-indexed) occurrence of the substring in the + input. + + \param Input A string which will be searched. + \param Search A substring to be searched for. + \param Nth An index (zero-indexed) of the match to be found. + For negative N, the matches are counted from the end of string. + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c Range1T::iterator or + \c Range1T::const_iterator, depending on the constness of + the input parameter. + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + find_nth( + Range1T& Input, + const Range2T& Search, + int Nth) + { + return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth)); + } + + //! Find n-th algorithm ( case insensitive ). + /*! + Search for the n-th (zero-indexed) occurrence of the substring in the + input. Searching is case insensitive. + + \param Input A string which will be searched. + \param Search A substring to be searched for. + \param Nth An index (zero-indexed) of the match to be found. + For negative N, the matches are counted from the end of string. + \param Loc A locale used for case insensitive comparison + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c Range1T::iterator or + \c Range1T::const_iterator, depending on the constness of + the input parameter. + + + \note This function provides the strong exception-safety guarantee + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + ifind_nth( + Range1T& Input, + const Range2T& Search, + int Nth, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::find(Input, ::boost::algorithm::nth_finder(Search,Nth,is_iequal(Loc))); + } + +// find_head ----------------------------------------------------------------------// + + //! Find head algorithm + /*! + Get the head of the input. Head is a prefix of the string of the + given size. If the input is shorter then required, whole input is considered + to be the head. + + \param Input An input string + \param N Length of the head + For N>=0, at most N characters are extracted. + For N<0, at most size(Input)-|N| characters are extracted. + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c Range1T::iterator or + \c Range1T::const_iterator, depending on the constness of + the input parameter. + + \note This function provides the strong exception-safety guarantee + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + find_head( + RangeT& Input, + int N) + { + return ::boost::algorithm::find(Input, ::boost::algorithm::head_finder(N)); + } + +// find_tail ----------------------------------------------------------------------// + + //! Find tail algorithm + /*! + Get the tail of the input. Tail is a suffix of the string of the + given size. If the input is shorter then required, whole input is considered + to be the tail. + + \param Input An input string + \param N Length of the tail. + For N>=0, at most N characters are extracted. + For N<0, at most size(Input)-|N| characters are extracted. + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c RangeT::iterator or + \c RangeT::const_iterator, depending on the constness of + the input parameter. + + + \note This function provides the strong exception-safety guarantee + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + find_tail( + RangeT& Input, + int N) + { + return ::boost::algorithm::find(Input, ::boost::algorithm::tail_finder(N)); + } + +// find_token --------------------------------------------------------------------// + + //! Find token algorithm + /*! + Look for a given token in the string. Token is a character that matches the + given predicate. + If the "token compress mode" is enabled, adjacent tokens are considered to be one match. + + \param Input A input string. + \param Pred An unary predicate to identify a token + \param eCompress Enable/Disable compressing of adjacent tokens + \return + An \c iterator_range delimiting the match. + Returned iterator is either \c RangeT::iterator or + \c RangeT::const_iterator, depending on the constness of + the input parameter. + + \note This function provides the strong exception-safety guarantee + */ + template + inline iterator_range< + BOOST_STRING_TYPENAME range_iterator::type> + find_token( + RangeT& Input, + PredicateT Pred, + token_compress_mode_type eCompress=token_compress_off) + { + return ::boost::algorithm::find(Input, ::boost::algorithm::token_finder(Pred, eCompress)); + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::find; + using algorithm::find_first; + using algorithm::ifind_first; + using algorithm::find_last; + using algorithm::ifind_last; + using algorithm::find_nth; + using algorithm::ifind_nth; + using algorithm::find_head; + using algorithm::find_tail; + using algorithm::find_token; + +} // namespace boost + + +#endif // BOOST_STRING_FIND_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/find_format.hpp b/contrib/prebuilt/include/boost/algorithm/string/find_format.hpp new file mode 100644 index 0000000..ef03739 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/find_format.hpp @@ -0,0 +1,287 @@ +// Boost string_algo library find_format.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_FORMAT_HPP +#define BOOST_STRING_FIND_FORMAT_HPP + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/*! \file + Defines generic replace algorithms. Each algorithm replaces + part(s) of the input. The part to be replaced is looked up using a Finder object. + Result of finding is then used by a Formatter object to generate the replacement. +*/ + +namespace boost { + namespace algorithm { + +// generic replace -----------------------------------------------------------------// + + //! Generic replace algorithm + /*! + Use the Finder to search for a substring. Use the Formatter to format + this substring and replace it in the input. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input sequence + \param Finder A Finder object used to search for a match to be replaced + \param Formatter A Formatter object used to format a match + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename RangeT, + typename FinderT, + typename FormatterT> + inline OutputIteratorT find_format_copy( + OutputIteratorT Output, + const RangeT& Input, + FinderT Finder, + FormatterT Formatter ) + { + // Concept check + BOOST_CONCEPT_ASSERT(( + FinderConcept< + FinderT, + BOOST_STRING_TYPENAME range_const_iterator::type> + )); + BOOST_CONCEPT_ASSERT(( + FormatterConcept< + FormatterT, + FinderT,BOOST_STRING_TYPENAME range_const_iterator::type> + )); + + iterator_range::type> lit_input(::boost::as_literal(Input)); + + return detail::find_format_copy_impl( + Output, + lit_input, + Formatter, + Finder( ::boost::begin(lit_input), ::boost::end(lit_input) ) ); + } + + //! Generic replace algorithm + /*! + \overload + */ + template< + typename SequenceT, + typename FinderT, + typename FormatterT> + inline SequenceT find_format_copy( + const SequenceT& Input, + FinderT Finder, + FormatterT Formatter ) + { + // Concept check + BOOST_CONCEPT_ASSERT(( + FinderConcept< + FinderT, + BOOST_STRING_TYPENAME range_const_iterator::type> + )); + BOOST_CONCEPT_ASSERT(( + FormatterConcept< + FormatterT, + FinderT,BOOST_STRING_TYPENAME range_const_iterator::type> + )); + + return detail::find_format_copy_impl( + Input, + Formatter, + Finder(::boost::begin(Input), ::boost::end(Input))); + } + + //! Generic replace algorithm + /*! + Use the Finder to search for a substring. Use the Formatter to format + this substring and replace it in the input. The input is modified in-place. + + \param Input An input sequence + \param Finder A Finder object used to search for a match to be replaced + \param Formatter A Formatter object used to format a match + */ + template< + typename SequenceT, + typename FinderT, + typename FormatterT> + inline void find_format( + SequenceT& Input, + FinderT Finder, + FormatterT Formatter) + { + // Concept check + BOOST_CONCEPT_ASSERT(( + FinderConcept< + FinderT, + BOOST_STRING_TYPENAME range_const_iterator::type> + )); + BOOST_CONCEPT_ASSERT(( + FormatterConcept< + FormatterT, + FinderT,BOOST_STRING_TYPENAME range_const_iterator::type> + )); + + detail::find_format_impl( + Input, + Formatter, + Finder(::boost::begin(Input), ::boost::end(Input))); + } + + +// find_format_all generic ----------------------------------------------------------------// + + //! Generic replace all algorithm + /*! + Use the Finder to search for a substring. Use the Formatter to format + this substring and replace it in the input. Repeat this for all matching + substrings. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input sequence + \param Finder A Finder object used to search for a match to be replaced + \param Formatter A Formatter object used to format a match + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename RangeT, + typename FinderT, + typename FormatterT> + inline OutputIteratorT find_format_all_copy( + OutputIteratorT Output, + const RangeT& Input, + FinderT Finder, + FormatterT Formatter) + { + // Concept check + BOOST_CONCEPT_ASSERT(( + FinderConcept< + FinderT, + BOOST_STRING_TYPENAME range_const_iterator::type> + )); + BOOST_CONCEPT_ASSERT(( + FormatterConcept< + FormatterT, + FinderT,BOOST_STRING_TYPENAME range_const_iterator::type> + )); + + iterator_range::type> lit_input(::boost::as_literal(Input)); + + return detail::find_format_all_copy_impl( + Output, + lit_input, + Finder, + Formatter, + Finder(::boost::begin(lit_input), ::boost::end(lit_input))); + } + + //! Generic replace all algorithm + /*! + \overload + */ + template< + typename SequenceT, + typename FinderT, + typename FormatterT > + inline SequenceT find_format_all_copy( + const SequenceT& Input, + FinderT Finder, + FormatterT Formatter ) + { + // Concept check + BOOST_CONCEPT_ASSERT(( + FinderConcept< + FinderT, + BOOST_STRING_TYPENAME range_const_iterator::type> + )); + BOOST_CONCEPT_ASSERT(( + FormatterConcept< + FormatterT, + FinderT,BOOST_STRING_TYPENAME range_const_iterator::type> + )); + + return detail::find_format_all_copy_impl( + Input, + Finder, + Formatter, + Finder( ::boost::begin(Input), ::boost::end(Input) ) ); + } + + //! Generic replace all algorithm + /*! + Use the Finder to search for a substring. Use the Formatter to format + this substring and replace it in the input. Repeat this for all matching + substrings.The input is modified in-place. + + \param Input An input sequence + \param Finder A Finder object used to search for a match to be replaced + \param Formatter A Formatter object used to format a match + */ + template< + typename SequenceT, + typename FinderT, + typename FormatterT > + inline void find_format_all( + SequenceT& Input, + FinderT Finder, + FormatterT Formatter ) + { + // Concept check + BOOST_CONCEPT_ASSERT(( + FinderConcept< + FinderT, + BOOST_STRING_TYPENAME range_const_iterator::type> + )); + BOOST_CONCEPT_ASSERT(( + FormatterConcept< + FormatterT, + FinderT,BOOST_STRING_TYPENAME range_const_iterator::type> + )); + + detail::find_format_all_impl( + Input, + Finder, + Formatter, + Finder(::boost::begin(Input), ::boost::end(Input))); + + } + + } // namespace algorithm + + // pull the names to the boost namespace + using algorithm::find_format_copy; + using algorithm::find_format; + using algorithm::find_format_all_copy; + using algorithm::find_format_all; + +} // namespace boost + + +#endif // BOOST_STRING_FIND_FORMAT_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/find_iterator.hpp b/contrib/prebuilt/include/boost/algorithm/string/find_iterator.hpp new file mode 100644 index 0000000..b72ba7c --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/find_iterator.hpp @@ -0,0 +1,383 @@ +// Boost string_algo library find_iterator.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2004. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_ITERATOR_HPP +#define BOOST_STRING_FIND_ITERATOR_HPP + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +/*! \file + Defines find iterator classes. Find iterator repeatedly applies a Finder + to the specified input string to search for matches. Dereferencing + the iterator yields the current match or a range between the last and the current + match depending on the iterator used. +*/ + +namespace boost { + namespace algorithm { + +// find_iterator -----------------------------------------------// + + //! find_iterator + /*! + Find iterator encapsulates a Finder and allows + for incremental searching in a string. + Each increment moves the iterator to the next match. + + Find iterator is a readable forward traversal iterator. + + Dereferencing the iterator yields an iterator_range delimiting + the current match. + */ + template + class find_iterator : + public iterator_facade< + find_iterator, + const iterator_range, + forward_traversal_tag >, + private detail::find_iterator_base + { + private: + // facade support + friend class ::boost::iterator_core_access; + + private: + // typedefs + + typedef detail::find_iterator_base base_type; + typedef BOOST_STRING_TYPENAME + base_type::input_iterator_type input_iterator_type; + typedef BOOST_STRING_TYPENAME + base_type::match_type match_type; + + public: + //! Default constructor + /*! + Construct null iterator. All null iterators are equal. + + \post eof()==true + */ + find_iterator() {} + + //! Copy constructor + /*! + Construct a copy of the find_iterator + */ + find_iterator( const find_iterator& Other ) : + base_type(Other), + m_Match(Other.m_Match), + m_End(Other.m_End) {} + + //! Constructor + /*! + Construct new find_iterator for a given finder + and a range. + */ + template + find_iterator( + IteratorT Begin, + IteratorT End, + FinderT Finder ) : + detail::find_iterator_base(Finder,0), + m_Match(Begin,Begin), + m_End(End) + { + increment(); + } + + //! Constructor + /*! + Construct new find_iterator for a given finder + and a range. + */ + template + find_iterator( + RangeT& Col, + FinderT Finder ) : + detail::find_iterator_base(Finder,0) + { + iterator_range::type> lit_col(::boost::as_literal(Col)); + m_Match=::boost::make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col)); + m_End=::boost::end(lit_col); + + increment(); + } + + private: + // iterator operations + + // dereference + const match_type& dereference() const + { + return m_Match; + } + + // increment + void increment() + { + m_Match=this->do_find(m_Match.end(),m_End); + } + + // comparison + bool equal( const find_iterator& Other ) const + { + bool bEof=eof(); + bool bOtherEof=Other.eof(); + + return bEof || bOtherEof ? bEof==bOtherEof : + ( + m_Match==Other.m_Match && + m_End==Other.m_End + ); + } + + public: + // operations + + //! Eof check + /*! + Check the eof condition. Eof condition means that + there is nothing more to be searched i.e. find_iterator + is after the last match. + */ + bool eof() const + { + return + this->is_null() || + ( + m_Match.begin() == m_End && + m_Match.end() == m_End + ); + } + + private: + // Attributes + match_type m_Match; + input_iterator_type m_End; + }; + + //! find iterator construction helper + /*! + * Construct a find iterator to iterate through the specified string + */ + template + inline find_iterator< + BOOST_STRING_TYPENAME range_iterator::type> + make_find_iterator( + RangeT& Collection, + FinderT Finder) + { + return find_iterator::type>( + Collection, Finder); + } + +// split iterator -----------------------------------------------// + + //! split_iterator + /*! + Split iterator encapsulates a Finder and allows + for incremental searching in a string. + Unlike the find iterator, split iterator iterates + through gaps between matches. + + Find iterator is a readable forward traversal iterator. + + Dereferencing the iterator yields an iterator_range delimiting + the current match. + */ + template + class split_iterator : + public iterator_facade< + split_iterator, + const iterator_range, + forward_traversal_tag >, + private detail::find_iterator_base + { + private: + // facade support + friend class ::boost::iterator_core_access; + + private: + // typedefs + + typedef detail::find_iterator_base base_type; + typedef BOOST_STRING_TYPENAME + base_type::input_iterator_type input_iterator_type; + typedef BOOST_STRING_TYPENAME + base_type::match_type match_type; + + public: + //! Default constructor + /*! + Construct null iterator. All null iterators are equal. + + \post eof()==true + */ + split_iterator() {} + //! Copy constructor + /*! + Construct a copy of the split_iterator + */ + split_iterator( const split_iterator& Other ) : + base_type(Other), + m_Match(Other.m_Match), + m_Next(Other.m_Next), + m_End(Other.m_End), + m_bEof(Other.m_bEof) + {} + + //! Constructor + /*! + Construct new split_iterator for a given finder + and a range. + */ + template + split_iterator( + IteratorT Begin, + IteratorT End, + FinderT Finder ) : + detail::find_iterator_base(Finder,0), + m_Match(Begin,Begin), + m_Next(Begin), + m_End(End), + m_bEof(false) + { + // force the correct behavior for empty sequences and yield at least one token + if(Begin!=End) + { + increment(); + } + } + //! Constructor + /*! + Construct new split_iterator for a given finder + and a collection. + */ + template + split_iterator( + RangeT& Col, + FinderT Finder ) : + detail::find_iterator_base(Finder,0), + m_bEof(false) + { + iterator_range::type> lit_col(::boost::as_literal(Col)); + m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col)); + m_Next=::boost::begin(lit_col); + m_End=::boost::end(lit_col); + + // force the correct behavior for empty sequences and yield at least one token + if(m_Next!=m_End) + { + increment(); + } + } + + + private: + // iterator operations + + // dereference + const match_type& dereference() const + { + return m_Match; + } + + // increment + void increment() + { + match_type FindMatch=this->do_find( m_Next, m_End ); + + if(FindMatch.begin()==m_End && FindMatch.end()==m_End) + { + if(m_Match.end()==m_End) + { + // Mark iterator as eof + m_bEof=true; + } + } + + m_Match=match_type( m_Next, FindMatch.begin() ); + m_Next=FindMatch.end(); + } + + // comparison + bool equal( const split_iterator& Other ) const + { + bool bEof=eof(); + bool bOtherEof=Other.eof(); + + return bEof || bOtherEof ? bEof==bOtherEof : + ( + m_Match==Other.m_Match && + m_Next==Other.m_Next && + m_End==Other.m_End + ); + } + + public: + // operations + + //! Eof check + /*! + Check the eof condition. Eof condition means that + there is nothing more to be searched i.e. find_iterator + is after the last match. + */ + bool eof() const + { + return this->is_null() || m_bEof; + } + + private: + // Attributes + match_type m_Match; + input_iterator_type m_Next; + input_iterator_type m_End; + bool m_bEof; + }; + + //! split iterator construction helper + /*! + * Construct a split iterator to iterate through the specified collection + */ + template + inline split_iterator< + BOOST_STRING_TYPENAME range_iterator::type> + make_split_iterator( + RangeT& Collection, + FinderT Finder) + { + return split_iterator::type>( + Collection, Finder); + } + + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::find_iterator; + using algorithm::make_find_iterator; + using algorithm::split_iterator; + using algorithm::make_split_iterator; + +} // namespace boost + + +#endif // BOOST_STRING_FIND_ITERATOR_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/finder.hpp b/contrib/prebuilt/include/boost/algorithm/string/finder.hpp new file mode 100644 index 0000000..4c7ac38 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/finder.hpp @@ -0,0 +1,270 @@ +// Boost string_algo library finder.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2006. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FINDER_HPP +#define BOOST_STRING_FINDER_HPP + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +/*! \file + Defines Finder generators. Finder object is a functor which is able to + find a substring matching a specific criteria in the input. + Finders are used as a pluggable components for replace, find + and split facilities. This header contains generator functions + for finders provided in this library. +*/ + +namespace boost { + namespace algorithm { + +// Finder generators ------------------------------------------// + + //! "First" finder + /*! + Construct the \c first_finder. The finder searches for the first + occurrence of the string in a given input. + The result is given as an \c iterator_range delimiting the match. + + \param Search A substring to be searched for. + \param Comp An element comparison predicate + \return An instance of the \c first_finder object + */ + template + inline detail::first_finderF< + BOOST_STRING_TYPENAME range_const_iterator::type, + is_equal> + first_finder( const RangeT& Search ) + { + return + detail::first_finderF< + BOOST_STRING_TYPENAME + range_const_iterator::type, + is_equal>( ::boost::as_literal(Search), is_equal() ) ; + } + + //! "First" finder + /*! + \overload + */ + template + inline detail::first_finderF< + BOOST_STRING_TYPENAME range_const_iterator::type, + PredicateT> + first_finder( + const RangeT& Search, PredicateT Comp ) + { + return + detail::first_finderF< + BOOST_STRING_TYPENAME + range_const_iterator::type, + PredicateT>( ::boost::as_literal(Search), Comp ); + } + + //! "Last" finder + /*! + Construct the \c last_finder. The finder searches for the last + occurrence of the string in a given input. + The result is given as an \c iterator_range delimiting the match. + + \param Search A substring to be searched for. + \param Comp An element comparison predicate + \return An instance of the \c last_finder object + */ + template + inline detail::last_finderF< + BOOST_STRING_TYPENAME range_const_iterator::type, + is_equal> + last_finder( const RangeT& Search ) + { + return + detail::last_finderF< + BOOST_STRING_TYPENAME + range_const_iterator::type, + is_equal>( ::boost::as_literal(Search), is_equal() ); + } + //! "Last" finder + /*! + \overload + */ + template + inline detail::last_finderF< + BOOST_STRING_TYPENAME range_const_iterator::type, + PredicateT> + last_finder( const RangeT& Search, PredicateT Comp ) + { + return + detail::last_finderF< + BOOST_STRING_TYPENAME + range_const_iterator::type, + PredicateT>( ::boost::as_literal(Search), Comp ) ; + } + + //! "Nth" finder + /*! + Construct the \c nth_finder. The finder searches for the n-th (zero-indexed) + occurrence of the string in a given input. + The result is given as an \c iterator_range delimiting the match. + + \param Search A substring to be searched for. + \param Nth An index of the match to be find + \param Comp An element comparison predicate + \return An instance of the \c nth_finder object + */ + template + inline detail::nth_finderF< + BOOST_STRING_TYPENAME range_const_iterator::type, + is_equal> + nth_finder( + const RangeT& Search, + int Nth) + { + return + detail::nth_finderF< + BOOST_STRING_TYPENAME + range_const_iterator::type, + is_equal>( ::boost::as_literal(Search), Nth, is_equal() ) ; + } + //! "Nth" finder + /*! + \overload + */ + template + inline detail::nth_finderF< + BOOST_STRING_TYPENAME range_const_iterator::type, + PredicateT> + nth_finder( + const RangeT& Search, + int Nth, + PredicateT Comp ) + { + return + detail::nth_finderF< + BOOST_STRING_TYPENAME + range_const_iterator::type, + PredicateT>( ::boost::as_literal(Search), Nth, Comp ); + } + + //! "Head" finder + /*! + Construct the \c head_finder. The finder returns a head of a given + input. The head is a prefix of a string up to n elements in + size. If an input has less then n elements, whole input is + considered a head. + The result is given as an \c iterator_range delimiting the match. + + \param N The size of the head + \return An instance of the \c head_finder object + */ + inline detail::head_finderF + head_finder( int N ) + { + return detail::head_finderF(N); + } + + //! "Tail" finder + /*! + Construct the \c tail_finder. The finder returns a tail of a given + input. The tail is a suffix of a string up to n elements in + size. If an input has less then n elements, whole input is + considered a head. + The result is given as an \c iterator_range delimiting the match. + + \param N The size of the head + \return An instance of the \c tail_finder object + */ + inline detail::tail_finderF + tail_finder( int N ) + { + return detail::tail_finderF(N); + } + + //! "Token" finder + /*! + Construct the \c token_finder. The finder searches for a token + specified by a predicate. It is similar to std::find_if + algorithm, with an exception that it return a range of + instead of a single iterator. + + If "compress token mode" is enabled, adjacent matching tokens are + concatenated into one match. Thus the finder can be used to + search for continuous segments of characters satisfying the + given predicate. + + The result is given as an \c iterator_range delimiting the match. + + \param Pred An element selection predicate + \param eCompress Compress flag + \return An instance of the \c token_finder object + */ + template< typename PredicateT > + inline detail::token_finderF + token_finder( + PredicateT Pred, + token_compress_mode_type eCompress=token_compress_off ) + { + return detail::token_finderF( Pred, eCompress ); + } + + //! "Range" finder + /*! + Construct the \c range_finder. The finder does not perform + any operation. It simply returns the given range for + any input. + + \param Begin Beginning of the range + \param End End of the range + \param Range The range. + \return An instance of the \c range_finger object + */ + template< typename ForwardIteratorT > + inline detail::range_finderF + range_finder( + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + return detail::range_finderF( Begin, End ); + } + + //! "Range" finder + /*! + \overload + */ + template< typename ForwardIteratorT > + inline detail::range_finderF + range_finder( iterator_range Range ) + { + return detail::range_finderF( Range ); + } + + } // namespace algorithm + + // pull the names to the boost namespace + using algorithm::first_finder; + using algorithm::last_finder; + using algorithm::nth_finder; + using algorithm::head_finder; + using algorithm::tail_finder; + using algorithm::token_finder; + using algorithm::range_finder; + +} // namespace boost + + +#endif // BOOST_STRING_FINDER_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/formatter.hpp b/contrib/prebuilt/include/boost/algorithm/string/formatter.hpp new file mode 100644 index 0000000..ab5921e --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/formatter.hpp @@ -0,0 +1,120 @@ +// Boost string_algo library formatter.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FORMATTER_HPP +#define BOOST_STRING_FORMATTER_HPP + +#include +#include +#include +#include + +#include + +/*! \file + Defines Formatter generators. Formatter is a functor which formats + a string according to given parameters. A Formatter works + in conjunction with a Finder. A Finder can provide additional information + for a specific Formatter. An example of such a cooperation is regex_finder + and regex_formatter. + + Formatters are used as pluggable components for replace facilities. + This header contains generator functions for the Formatters provided in this library. +*/ + +namespace boost { + namespace algorithm { + +// generic formatters ---------------------------------------------------------------// + + //! Constant formatter + /*! + Constructs a \c const_formatter. Const formatter always returns + the same value, regardless of the parameter. + + \param Format A predefined value used as a result for formating + \return An instance of the \c const_formatter object. + */ + template + inline detail::const_formatF< + iterator_range< + BOOST_STRING_TYPENAME range_const_iterator::type> > + const_formatter(const RangeT& Format) + { + return detail::const_formatF< + iterator_range< + BOOST_STRING_TYPENAME range_const_iterator::type> >(::boost::as_literal(Format)); + } + + //! Identity formatter + /*! + Constructs an \c identity_formatter. Identity formatter always returns + the parameter. + + \return An instance of the \c identity_formatter object. + */ + template + inline detail::identity_formatF< + iterator_range< + BOOST_STRING_TYPENAME range_const_iterator::type> > + identity_formatter() + { + return detail::identity_formatF< + iterator_range< + BOOST_STRING_TYPENAME range_const_iterator::type> >(); + } + + //! Empty formatter + /*! + Constructs an \c empty_formatter. Empty formatter always returns an empty + sequence. + + \param Input container used to select a correct value_type for the + resulting empty_container<>. + \return An instance of the \c empty_formatter object. + */ + template + inline detail::empty_formatF< + BOOST_STRING_TYPENAME range_value::type> + empty_formatter(const RangeT&) + { + return detail::empty_formatF< + BOOST_STRING_TYPENAME range_value::type>(); + } + + //! Empty formatter + /*! + Constructs a \c dissect_formatter. Dissect formatter uses a specified finder + to extract a portion of the formatted sequence. The first finder's match is returned + as a result + + \param Finder a finder used to select a portion of the formated sequence + \return An instance of the \c dissect_formatter object. + */ + template + inline detail::dissect_formatF< FinderT > + dissect_formatter(const FinderT& Finder) + { + return detail::dissect_formatF(Finder); + } + + + } // namespace algorithm + + // pull the names to the boost namespace + using algorithm::const_formatter; + using algorithm::identity_formatter; + using algorithm::empty_formatter; + using algorithm::dissect_formatter; + +} // namespace boost + + +#endif // BOOST_FORMATTER_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/iter_find.hpp b/contrib/prebuilt/include/boost/algorithm/string/iter_find.hpp new file mode 100644 index 0000000..e106528 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/iter_find.hpp @@ -0,0 +1,193 @@ +// Boost string_algo library iter_find.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_ITER_FIND_HPP +#define BOOST_STRING_ITER_FIND_HPP + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/*! \file + Defines generic split algorithms. Split algorithms can be + used to divide a sequence into several part according + to a given criteria. Result is given as a 'container + of containers' where elements are copies or references + to extracted parts. + + There are two algorithms provided. One iterates over matching + substrings, the other one over the gaps between these matches. +*/ + +namespace boost { + namespace algorithm { + +// iterate find ---------------------------------------------------// + + //! Iter find algorithm + /*! + This algorithm executes a given finder in iteration on the input, + until the end of input is reached, or no match is found. + Iteration is done using built-in find_iterator, so the real + searching is performed only when needed. + In each iteration new match is found and added to the result. + + \param Result A 'container container' to contain the result of search. + Both outer and inner container must have constructor taking a pair + of iterators as an argument. + Typical type of the result is + \c std::vector> + (each element of such a vector will container a range delimiting + a match). + \param Input A container which will be searched. + \param Finder A Finder object used for searching + \return A reference to the result + + \note Prior content of the result will be overwritten. + */ + template< + typename SequenceSequenceT, + typename RangeT, + typename FinderT > + inline SequenceSequenceT& + iter_find( + SequenceSequenceT& Result, + RangeT& Input, + FinderT Finder ) + { + BOOST_CONCEPT_ASSERT(( + FinderConcept< + FinderT, + BOOST_STRING_TYPENAME range_iterator::type> + )); + + iterator_range::type> lit_input(::boost::as_literal(Input)); + + typedef BOOST_STRING_TYPENAME + range_iterator::type input_iterator_type; + typedef find_iterator find_iterator_type; + typedef detail::copy_iterator_rangeF< + BOOST_STRING_TYPENAME + range_value::type, + input_iterator_type> copy_range_type; + + input_iterator_type InputEnd=::boost::end(lit_input); + + typedef transform_iterator + transform_iter_type; + + transform_iter_type itBegin= + ::boost::make_transform_iterator( + find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ), + copy_range_type()); + + transform_iter_type itEnd= + ::boost::make_transform_iterator( + find_iterator_type(), + copy_range_type()); + + SequenceSequenceT Tmp(itBegin, itEnd); + + Result.swap(Tmp); + return Result; + } + +// iterate split ---------------------------------------------------// + + //! Split find algorithm + /*! + This algorithm executes a given finder in iteration on the input, + until the end of input is reached, or no match is found. + Iteration is done using built-in find_iterator, so the real + searching is performed only when needed. + Each match is used as a separator of segments. These segments are then + returned in the result. + + \param Result A 'container container' to contain the result of search. + Both outer and inner container must have constructor taking a pair + of iterators as an argument. + Typical type of the result is + \c std::vector> + (each element of such a vector will container a range delimiting + a match). + \param Input A container which will be searched. + \param Finder A finder object used for searching + \return A reference to the result + + \note Prior content of the result will be overwritten. + */ + template< + typename SequenceSequenceT, + typename RangeT, + typename FinderT > + inline SequenceSequenceT& + iter_split( + SequenceSequenceT& Result, + RangeT& Input, + FinderT Finder ) + { + BOOST_CONCEPT_ASSERT(( + FinderConcept::type> + )); + + iterator_range::type> lit_input(::boost::as_literal(Input)); + + typedef BOOST_STRING_TYPENAME + range_iterator::type input_iterator_type; + typedef split_iterator find_iterator_type; + typedef detail::copy_iterator_rangeF< + BOOST_STRING_TYPENAME + range_value::type, + input_iterator_type> copy_range_type; + + input_iterator_type InputEnd=::boost::end(lit_input); + + typedef transform_iterator + transform_iter_type; + + transform_iter_type itBegin= + ::boost::make_transform_iterator( + find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ), + copy_range_type() ); + + transform_iter_type itEnd= + ::boost::make_transform_iterator( + find_iterator_type(), + copy_range_type() ); + + SequenceSequenceT Tmp(itBegin, itEnd); + + Result.swap(Tmp); + return Result; + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::iter_find; + using algorithm::iter_split; + +} // namespace boost + + +#endif // BOOST_STRING_ITER_FIND_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/join.hpp b/contrib/prebuilt/include/boost/algorithm/string/join.hpp new file mode 100644 index 0000000..b871eb4 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/join.hpp @@ -0,0 +1,145 @@ +// Boost string_algo library join.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2006. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_JOIN_HPP +#define BOOST_STRING_JOIN_HPP + +#include +#include +#include +#include + +/*! \file + Defines join algorithm. + + Join algorithm is a counterpart to split algorithms. + It joins strings from a 'list' by adding user defined separator. + Additionally there is a version that allows simple filtering + by providing a predicate. +*/ + +namespace boost { + namespace algorithm { + +// join --------------------------------------------------------------// + + //! Join algorithm + /*! + This algorithm joins all strings in a 'list' into one long string. + Segments are concatenated by given separator. + + \param Input A container that holds the input strings. It must be a container-of-containers. + \param Separator A string that will separate the joined segments. + \return Concatenated string. + + \note This function provides the strong exception-safety guarantee + */ + template< typename SequenceSequenceT, typename Range1T> + inline typename range_value::type + join( + const SequenceSequenceT& Input, + const Range1T& Separator) + { + // Define working types + typedef typename range_value::type ResultT; + typedef typename range_const_iterator::type InputIteratorT; + + // Parse input + InputIteratorT itBegin=::boost::begin(Input); + InputIteratorT itEnd=::boost::end(Input); + + // Construct container to hold the result + ResultT Result; + + // Append first element + if(itBegin!=itEnd) + { + detail::insert(Result, ::boost::end(Result), *itBegin); + ++itBegin; + } + + for(;itBegin!=itEnd; ++itBegin) + { + // Add separator + detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator)); + // Add element + detail::insert(Result, ::boost::end(Result), *itBegin); + } + + return Result; + } + +// join_if ----------------------------------------------------------// + + //! Conditional join algorithm + /*! + This algorithm joins all strings in a 'list' into one long string. + Segments are concatenated by given separator. Only segments that + satisfy the predicate will be added to the result. + + \param Input A container that holds the input strings. It must be a container-of-containers. + \param Separator A string that will separate the joined segments. + \param Pred A segment selection predicate + \return Concatenated string. + + \note This function provides the strong exception-safety guarantee + */ + template< typename SequenceSequenceT, typename Range1T, typename PredicateT> + inline typename range_value::type + join_if( + const SequenceSequenceT& Input, + const Range1T& Separator, + PredicateT Pred) + { + // Define working types + typedef typename range_value::type ResultT; + typedef typename range_const_iterator::type InputIteratorT; + + // Parse input + InputIteratorT itBegin=::boost::begin(Input); + InputIteratorT itEnd=::boost::end(Input); + + // Construct container to hold the result + ResultT Result; + + // Roll to the first element that will be added + while(itBegin!=itEnd && !Pred(*itBegin)) ++itBegin; + // Add this element + if(itBegin!=itEnd) + { + detail::insert(Result, ::boost::end(Result), *itBegin); + ++itBegin; + } + + for(;itBegin!=itEnd; ++itBegin) + { + if(Pred(*itBegin)) + { + // Add separator + detail::insert(Result, ::boost::end(Result), ::boost::as_literal(Separator)); + // Add element + detail::insert(Result, ::boost::end(Result), *itBegin); + } + } + + return Result; + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::join; + using algorithm::join_if; + +} // namespace boost + + +#endif // BOOST_STRING_JOIN_HPP + diff --git a/contrib/prebuilt/include/boost/algorithm/string/predicate.hpp b/contrib/prebuilt/include/boost/algorithm/string/predicate.hpp new file mode 100644 index 0000000..6642f42 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/predicate.hpp @@ -0,0 +1,475 @@ +// Boost string_algo library predicate.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_PREDICATE_HPP +#define BOOST_STRING_PREDICATE_HPP + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/*! \file boost/algorithm/string/predicate.hpp + Defines string-related predicates. + The predicates determine whether a substring is contained in the input string + under various conditions: a string starts with the substring, ends with the + substring, simply contains the substring or if both strings are equal. + Additionaly the algorithm \c all() checks all elements of a container to satisfy a + condition. + + All predicates provide the strong exception guarantee. +*/ + +namespace boost { + namespace algorithm { + +// starts_with predicate -----------------------------------------------// + + //! 'Starts with' predicate + /*! + This predicate holds when the test string is a prefix of the Input. + In other words, if the input starts with the test. + When the optional predicate is specified, it is used for character-wise + comparison. + + \param Input An input sequence + \param Test A test sequence + \param Comp An element comparison predicate + \return The result of the test + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool starts_with( + const Range1T& Input, + const Range2T& Test, + PredicateT Comp) + { + iterator_range::type> lit_input(::boost::as_literal(Input)); + iterator_range::type> lit_test(::boost::as_literal(Test)); + + typedef BOOST_STRING_TYPENAME + range_const_iterator::type Iterator1T; + typedef BOOST_STRING_TYPENAME + range_const_iterator::type Iterator2T; + + Iterator1T InputEnd=::boost::end(lit_input); + Iterator2T TestEnd=::boost::end(lit_test); + + Iterator1T it=::boost::begin(lit_input); + Iterator2T pit=::boost::begin(lit_test); + for(; + it!=InputEnd && pit!=TestEnd; + ++it,++pit) + { + if( !(Comp(*it,*pit)) ) + return false; + } + + return pit==TestEnd; + } + + //! 'Starts with' predicate + /*! + \overload + */ + template + inline bool starts_with( + const Range1T& Input, + const Range2T& Test) + { + return ::boost::algorithm::starts_with(Input, Test, is_equal()); + } + + //! 'Starts with' predicate ( case insensitive ) + /*! + This predicate holds when the test string is a prefix of the Input. + In other words, if the input starts with the test. + Elements are compared case insensitively. + + \param Input An input sequence + \param Test A test sequence + \param Loc A locale used for case insensitive comparison + \return The result of the test + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool istarts_with( + const Range1T& Input, + const Range2T& Test, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::starts_with(Input, Test, is_iequal(Loc)); + } + + +// ends_with predicate -----------------------------------------------// + + //! 'Ends with' predicate + /*! + This predicate holds when the test string is a suffix of the Input. + In other words, if the input ends with the test. + When the optional predicate is specified, it is used for character-wise + comparison. + + + \param Input An input sequence + \param Test A test sequence + \param Comp An element comparison predicate + \return The result of the test + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool ends_with( + const Range1T& Input, + const Range2T& Test, + PredicateT Comp) + { + iterator_range::type> lit_input(::boost::as_literal(Input)); + iterator_range::type> lit_test(::boost::as_literal(Test)); + + typedef BOOST_STRING_TYPENAME + range_const_iterator::type Iterator1T; + typedef BOOST_STRING_TYPENAME boost::detail:: + iterator_traits::iterator_category category; + + return detail:: + ends_with_iter_select( + ::boost::begin(lit_input), + ::boost::end(lit_input), + ::boost::begin(lit_test), + ::boost::end(lit_test), + Comp, + category()); + } + + + //! 'Ends with' predicate + /*! + \overload + */ + template + inline bool ends_with( + const Range1T& Input, + const Range2T& Test) + { + return ::boost::algorithm::ends_with(Input, Test, is_equal()); + } + + //! 'Ends with' predicate ( case insensitive ) + /*! + This predicate holds when the test container is a suffix of the Input. + In other words, if the input ends with the test. + Elements are compared case insensitively. + + \param Input An input sequence + \param Test A test sequence + \param Loc A locale used for case insensitive comparison + \return The result of the test + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool iends_with( + const Range1T& Input, + const Range2T& Test, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::ends_with(Input, Test, is_iequal(Loc)); + } + +// contains predicate -----------------------------------------------// + + //! 'Contains' predicate + /*! + This predicate holds when the test container is contained in the Input. + When the optional predicate is specified, it is used for character-wise + comparison. + + \param Input An input sequence + \param Test A test sequence + \param Comp An element comparison predicate + \return The result of the test + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool contains( + const Range1T& Input, + const Range2T& Test, + PredicateT Comp) + { + iterator_range::type> lit_input(::boost::as_literal(Input)); + iterator_range::type> lit_test(::boost::as_literal(Test)); + + if (::boost::empty(lit_test)) + { + // Empty range is contained always + return true; + } + + // Use the temporary variable to make VACPP happy + bool bResult=(::boost::algorithm::first_finder(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input))); + return bResult; + } + + //! 'Contains' predicate + /*! + \overload + */ + template + inline bool contains( + const Range1T& Input, + const Range2T& Test) + { + return ::boost::algorithm::contains(Input, Test, is_equal()); + } + + //! 'Contains' predicate ( case insensitive ) + /*! + This predicate holds when the test container is contained in the Input. + Elements are compared case insensitively. + + \param Input An input sequence + \param Test A test sequence + \param Loc A locale used for case insensitive comparison + \return The result of the test + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool icontains( + const Range1T& Input, + const Range2T& Test, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::contains(Input, Test, is_iequal(Loc)); + } + +// equals predicate -----------------------------------------------// + + //! 'Equals' predicate + /*! + This predicate holds when the test container is equal to the + input container i.e. all elements in both containers are same. + When the optional predicate is specified, it is used for character-wise + comparison. + + \param Input An input sequence + \param Test A test sequence + \param Comp An element comparison predicate + \return The result of the test + + \note This is a two-way version of \c std::equal algorithm + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool equals( + const Range1T& Input, + const Range2T& Test, + PredicateT Comp) + { + iterator_range::type> lit_input(::boost::as_literal(Input)); + iterator_range::type> lit_test(::boost::as_literal(Test)); + + typedef BOOST_STRING_TYPENAME + range_const_iterator::type Iterator1T; + typedef BOOST_STRING_TYPENAME + range_const_iterator::type Iterator2T; + + Iterator1T InputEnd=::boost::end(lit_input); + Iterator2T TestEnd=::boost::end(lit_test); + + Iterator1T it=::boost::begin(lit_input); + Iterator2T pit=::boost::begin(lit_test); + for(; + it!=InputEnd && pit!=TestEnd; + ++it,++pit) + { + if( !(Comp(*it,*pit)) ) + return false; + } + + return (pit==TestEnd) && (it==InputEnd); + } + + //! 'Equals' predicate + /*! + \overload + */ + template + inline bool equals( + const Range1T& Input, + const Range2T& Test) + { + return ::boost::algorithm::equals(Input, Test, is_equal()); + } + + //! 'Equals' predicate ( case insensitive ) + /*! + This predicate holds when the test container is equal to the + input container i.e. all elements in both containers are same. + Elements are compared case insensitively. + + \param Input An input sequence + \param Test A test sequence + \param Loc A locale used for case insensitive comparison + \return The result of the test + + \note This is a two-way version of \c std::equal algorithm + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool iequals( + const Range1T& Input, + const Range2T& Test, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::equals(Input, Test, is_iequal(Loc)); + } + +// lexicographical_compare predicate -----------------------------// + + //! Lexicographical compare predicate + /*! + This predicate is an overload of std::lexicographical_compare + for range arguments + + It check whether the first argument is lexicographically less + then the second one. + + If the optional predicate is specified, it is used for character-wise + comparison + + \param Arg1 First argument + \param Arg2 Second argument + \param Pred Comparison predicate + \return The result of the test + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool lexicographical_compare( + const Range1T& Arg1, + const Range2T& Arg2, + PredicateT Pred) + { + iterator_range::type> lit_arg1(::boost::as_literal(Arg1)); + iterator_range::type> lit_arg2(::boost::as_literal(Arg2)); + + return std::lexicographical_compare( + ::boost::begin(lit_arg1), + ::boost::end(lit_arg1), + ::boost::begin(lit_arg2), + ::boost::end(lit_arg2), + Pred); + } + + //! Lexicographical compare predicate + /*! + \overload + */ + template + inline bool lexicographical_compare( + const Range1T& Arg1, + const Range2T& Arg2) + { + return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_less()); + } + + //! Lexicographical compare predicate (case-insensitive) + /*! + This predicate is an overload of std::lexicographical_compare + for range arguments. + It check whether the first argument is lexicographically less + then the second one. + Elements are compared case insensitively + + + \param Arg1 First argument + \param Arg2 Second argument + \param Loc A locale used for case insensitive comparison + \return The result of the test + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool ilexicographical_compare( + const Range1T& Arg1, + const Range2T& Arg2, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::lexicographical_compare(Arg1, Arg2, is_iless(Loc)); + } + + +// all predicate -----------------------------------------------// + + //! 'All' predicate + /*! + This predicate holds it all its elements satisfy a given + condition, represented by the predicate. + + \param Input An input sequence + \param Pred A predicate + \return The result of the test + + \note This function provides the strong exception-safety guarantee + */ + template + inline bool all( + const RangeT& Input, + PredicateT Pred) + { + iterator_range::type> lit_input(::boost::as_literal(Input)); + + typedef BOOST_STRING_TYPENAME + range_const_iterator::type Iterator1T; + + Iterator1T InputEnd=::boost::end(lit_input); + for( Iterator1T It=::boost::begin(lit_input); It!=InputEnd; ++It) + { + if (!Pred(*It)) + return false; + } + + return true; + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::starts_with; + using algorithm::istarts_with; + using algorithm::ends_with; + using algorithm::iends_with; + using algorithm::contains; + using algorithm::icontains; + using algorithm::equals; + using algorithm::iequals; + using algorithm::all; + using algorithm::lexicographical_compare; + using algorithm::ilexicographical_compare; + +} // namespace boost + + +#endif // BOOST_STRING_PREDICATE_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/predicate_facade.hpp b/contrib/prebuilt/include/boost/algorithm/string/predicate_facade.hpp new file mode 100644 index 0000000..c8319f7 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/predicate_facade.hpp @@ -0,0 +1,42 @@ +// Boost string_algo library predicate_facade.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_PREDICATE_FACADE_HPP +#define BOOST_STRING_PREDICATE_FACADE_HPP + +#include + +/* + \file boost/algorith/string/predicate_facade.hpp + This file containes predicate_facade definition. This template class is used + to identify classification predicates, so they can be combined using + composition operators. +*/ + +namespace boost { + namespace algorithm { + +// predicate facade ------------------------------------------------------// + + //! Predicate facade + /*! + This class allows to recognize classification + predicates, so that they can be combined using + composition operators. + Every classification predicate must be derived from this class. + */ + template + struct predicate_facade {}; + + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_CLASSIFICATION_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/replace.hpp b/contrib/prebuilt/include/boost/algorithm/string/replace.hpp new file mode 100644 index 0000000..f2d201f --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/replace.hpp @@ -0,0 +1,928 @@ +// Boost string_algo library replace.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2006. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_REPLACE_HPP +#define BOOST_STRING_REPLACE_HPP + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +/*! \file + Defines various replace algorithms. Each algorithm replaces + part(s) of the input according to set of searching and replace criteria. +*/ + +namespace boost { + namespace algorithm { + +// replace_range --------------------------------------------------------------------// + + //! Replace range algorithm + /*! + Replace the given range in the input string. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param SearchRange A range in the input to be substituted + \param Format A substitute string + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT replace_range_copy( + OutputIteratorT Output, + const Range1T& Input, + const iterator_range< + BOOST_STRING_TYPENAME + range_const_iterator::type>& SearchRange, + const Range2T& Format) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::range_finder(SearchRange), + ::boost::algorithm::const_formatter(Format)); + } + + //! Replace range algorithm + /*! + \overload + */ + template + inline SequenceT replace_range_copy( + const SequenceT& Input, + const iterator_range< + BOOST_STRING_TYPENAME + range_const_iterator::type>& SearchRange, + const RangeT& Format) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::range_finder(SearchRange), + ::boost::algorithm::const_formatter(Format)); + } + + //! Replace range algorithm + /*! + Replace the given range in the input string. + The input sequence is modified in-place. + + \param Input An input string + \param SearchRange A range in the input to be substituted + \param Format A substitute string + */ + template + inline void replace_range( + SequenceT& Input, + const iterator_range< + BOOST_STRING_TYPENAME + range_iterator::type>& SearchRange, + const RangeT& Format) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::range_finder(SearchRange), + ::boost::algorithm::const_formatter(Format)); + } + +// replace_first --------------------------------------------------------------------// + + //! Replace first algorithm + /*! + Replace the first match of the search substring in the input + with the format string. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T, + typename Range3T> + inline OutputIteratorT replace_first_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + const Range3T& Format) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace first algorithm + /*! + \overload + */ + template + inline SequenceT replace_first_copy( + const SequenceT& Input, + const Range1T& Search, + const Range2T& Format ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace first algorithm + /*! + replace the first match of the search substring in the input + with the format string. The input sequence is modified in-place. + + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + */ + template + inline void replace_first( + SequenceT& Input, + const Range1T& Search, + const Range2T& Format ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::const_formatter(Format) ); + } + +// replace_first ( case insensitive ) ---------------------------------------------// + + //! Replace first algorithm ( case insensitive ) + /*! + Replace the first match of the search substring in the input + with the format string. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + Searching is case insensitive. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \param Loc A locale used for case insensitive comparison + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T, + typename Range3T> + inline OutputIteratorT ireplace_first_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + const Range3T& Format, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace first algorithm ( case insensitive ) + /*! + \overload + */ + template + inline SequenceT ireplace_first_copy( + const SequenceT& Input, + const Range2T& Search, + const Range1T& Format, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace first algorithm ( case insensitive ) + /*! + Replace the first match of the search substring in the input + with the format string. Input sequence is modified in-place. + Searching is case insensitive. + + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \param Loc A locale used for case insensitive comparison + */ + template + inline void ireplace_first( + SequenceT& Input, + const Range1T& Search, + const Range2T& Format, + const std::locale& Loc=std::locale() ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + +// replace_last --------------------------------------------------------------------// + + //! Replace last algorithm + /*! + Replace the last match of the search string in the input + with the format string. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T, + typename Range3T> + inline OutputIteratorT replace_last_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + const Range3T& Format ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::last_finder(Search), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace last algorithm + /*! + \overload + */ + template + inline SequenceT replace_last_copy( + const SequenceT& Input, + const Range1T& Search, + const Range2T& Format ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::last_finder(Search), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace last algorithm + /*! + Replace the last match of the search string in the input + with the format string. Input sequence is modified in-place. + + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + */ + template + inline void replace_last( + SequenceT& Input, + const Range1T& Search, + const Range2T& Format ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::last_finder(Search), + ::boost::algorithm::const_formatter(Format) ); + } + +// replace_last ( case insensitive ) -----------------------------------------------// + + //! Replace last algorithm ( case insensitive ) + /*! + Replace the last match of the search string in the input + with the format string. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + Searching is case insensitive. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \param Loc A locale used for case insensitive comparison + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T, + typename Range3T> + inline OutputIteratorT ireplace_last_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + const Range3T& Format, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::last_finder(Search, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace last algorithm ( case insensitive ) + /*! + \overload + */ + template + inline SequenceT ireplace_last_copy( + const SequenceT& Input, + const Range1T& Search, + const Range2T& Format, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::last_finder(Search, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace last algorithm ( case insensitive ) + /*! + Replace the last match of the search string in the input + with the format string.The input sequence is modified in-place. + Searching is case insensitive. + + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \param Loc A locale used for case insensitive comparison + \return A reference to the modified input + */ + template + inline void ireplace_last( + SequenceT& Input, + const Range1T& Search, + const Range2T& Format, + const std::locale& Loc=std::locale() ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::last_finder(Search, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + +// replace_nth --------------------------------------------------------------------// + + //! Replace nth algorithm + /*! + Replace an Nth (zero-indexed) match of the search string in the input + with the format string. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Nth An index of the match to be replaced. The index is 0-based. + For negative N, matches are counted from the end of string. + \param Format A substitute string + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T, + typename Range3T> + inline OutputIteratorT replace_nth_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + int Nth, + const Range3T& Format ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::nth_finder(Search, Nth), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace nth algorithm + /*! + \overload + */ + template + inline SequenceT replace_nth_copy( + const SequenceT& Input, + const Range1T& Search, + int Nth, + const Range2T& Format ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::nth_finder(Search, Nth), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace nth algorithm + /*! + Replace an Nth (zero-indexed) match of the search string in the input + with the format string. Input sequence is modified in-place. + + \param Input An input string + \param Search A substring to be searched for + \param Nth An index of the match to be replaced. The index is 0-based. + For negative N, matches are counted from the end of string. + \param Format A substitute string + */ + template + inline void replace_nth( + SequenceT& Input, + const Range1T& Search, + int Nth, + const Range2T& Format ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::nth_finder(Search, Nth), + ::boost::algorithm::const_formatter(Format) ); + } + +// replace_nth ( case insensitive ) -----------------------------------------------// + + //! Replace nth algorithm ( case insensitive ) + /*! + Replace an Nth (zero-indexed) match of the search string in the input + with the format string. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + Searching is case insensitive. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Nth An index of the match to be replaced. The index is 0-based. + For negative N, matches are counted from the end of string. + \param Format A substitute string + \param Loc A locale used for case insensitive comparison + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T, + typename Range3T> + inline OutputIteratorT ireplace_nth_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + int Nth, + const Range3T& Format, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc) ), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace nth algorithm ( case insensitive ) + /*! + \overload + */ + template + inline SequenceT ireplace_nth_copy( + const SequenceT& Input, + const Range1T& Search, + int Nth, + const Range2T& Format, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace nth algorithm ( case insensitive ) + /*! + Replace an Nth (zero-indexed) match of the search string in the input + with the format string. Input sequence is modified in-place. + Searching is case insensitive. + + \param Input An input string + \param Search A substring to be searched for + \param Nth An index of the match to be replaced. The index is 0-based. + For negative N, matches are counted from the end of string. + \param Format A substitute string + \param Loc A locale used for case insensitive comparison + */ + template + inline void ireplace_nth( + SequenceT& Input, + const Range1T& Search, + int Nth, + const Range2T& Format, + const std::locale& Loc=std::locale() ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::nth_finder(Search, Nth, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + +// replace_all --------------------------------------------------------------------// + + //! Replace all algorithm + /*! + Replace all occurrences of the search string in the input + with the format string. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T, + typename Range3T> + inline OutputIteratorT replace_all_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + const Range3T& Format ) + { + return ::boost::algorithm::find_format_all_copy( + Output, + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace all algorithm + /*! + \overload + */ + template + inline SequenceT replace_all_copy( + const SequenceT& Input, + const Range1T& Search, + const Range2T& Format ) + { + return ::boost::algorithm::find_format_all_copy( + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace all algorithm + /*! + Replace all occurrences of the search string in the input + with the format string. The input sequence is modified in-place. + + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \return A reference to the modified input + */ + template + inline void replace_all( + SequenceT& Input, + const Range1T& Search, + const Range2T& Format ) + { + ::boost::algorithm::find_format_all( + Input, + ::boost::algorithm::first_finder(Search), + ::boost::algorithm::const_formatter(Format) ); + } + +// replace_all ( case insensitive ) -----------------------------------------------// + + //! Replace all algorithm ( case insensitive ) + /*! + Replace all occurrences of the search string in the input + with the format string. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + Searching is case insensitive. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \param Loc A locale used for case insensitive comparison + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T, + typename Range3T> + inline OutputIteratorT ireplace_all_copy( + OutputIteratorT Output, + const Range1T& Input, + const Range2T& Search, + const Range3T& Format, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_all_copy( + Output, + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace all algorithm ( case insensitive ) + /*! + \overload + */ + template + inline SequenceT ireplace_all_copy( + const SequenceT& Input, + const Range1T& Search, + const Range2T& Format, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::find_format_all_copy( + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace all algorithm ( case insensitive ) + /*! + Replace all occurrences of the search string in the input + with the format string.The input sequence is modified in-place. + Searching is case insensitive. + + \param Input An input string + \param Search A substring to be searched for + \param Format A substitute string + \param Loc A locale used for case insensitive comparison + */ + template + inline void ireplace_all( + SequenceT& Input, + const Range1T& Search, + const Range2T& Format, + const std::locale& Loc=std::locale() ) + { + ::boost::algorithm::find_format_all( + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc)), + ::boost::algorithm::const_formatter(Format) ); + } + +// replace_head --------------------------------------------------------------------// + + //! Replace head algorithm + /*! + Replace the head of the input with the given format string. + The head is a prefix of a string of given size. + If the sequence is shorter then required, whole string if + considered to be the head. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param N Length of the head. + For N>=0, at most N characters are extracted. + For N<0, size(Input)-|N| characters are extracted. + \param Format A substitute string + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT replace_head_copy( + OutputIteratorT Output, + const Range1T& Input, + int N, + const Range2T& Format ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::head_finder(N), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace head algorithm + /*! + \overload + */ + template + inline SequenceT replace_head_copy( + const SequenceT& Input, + int N, + const RangeT& Format ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::head_finder(N), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace head algorithm + /*! + Replace the head of the input with the given format string. + The head is a prefix of a string of given size. + If the sequence is shorter then required, the whole string is + considered to be the head. The input sequence is modified in-place. + + \param Input An input string + \param N Length of the head. + For N>=0, at most N characters are extracted. + For N<0, size(Input)-|N| characters are extracted. + \param Format A substitute string + */ + template + inline void replace_head( + SequenceT& Input, + int N, + const RangeT& Format ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::head_finder(N), + ::boost::algorithm::const_formatter(Format) ); + } + +// replace_tail --------------------------------------------------------------------// + + //! Replace tail algorithm + /*! + Replace the tail of the input with the given format string. + The tail is a suffix of a string of given size. + If the sequence is shorter then required, whole string is + considered to be the tail. + The result is a modified copy of the input. It is returned as a sequence + or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input string + \param N Length of the tail. + For N>=0, at most N characters are extracted. + For N<0, size(Input)-|N| characters are extracted. + \param Format A substitute string + \return An output iterator pointing just after the last inserted character or + a modified copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template< + typename OutputIteratorT, + typename Range1T, + typename Range2T> + inline OutputIteratorT replace_tail_copy( + OutputIteratorT Output, + const Range1T& Input, + int N, + const Range2T& Format ) + { + return ::boost::algorithm::find_format_copy( + Output, + Input, + ::boost::algorithm::tail_finder(N), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace tail algorithm + /*! + \overload + */ + template + inline SequenceT replace_tail_copy( + const SequenceT& Input, + int N, + const RangeT& Format ) + { + return ::boost::algorithm::find_format_copy( + Input, + ::boost::algorithm::tail_finder(N), + ::boost::algorithm::const_formatter(Format) ); + } + + //! Replace tail algorithm + /*! + Replace the tail of the input with the given format sequence. + The tail is a suffix of a string of given size. + If the sequence is shorter then required, the whole string is + considered to be the tail. The input sequence is modified in-place. + + \param Input An input string + \param N Length of the tail. + For N>=0, at most N characters are extracted. + For N<0, size(Input)-|N| characters are extracted. + \param Format A substitute string + */ + template + inline void replace_tail( + SequenceT& Input, + int N, + const RangeT& Format ) + { + ::boost::algorithm::find_format( + Input, + ::boost::algorithm::tail_finder(N), + ::boost::algorithm::const_formatter(Format) ); + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::replace_range_copy; + using algorithm::replace_range; + using algorithm::replace_first_copy; + using algorithm::replace_first; + using algorithm::ireplace_first_copy; + using algorithm::ireplace_first; + using algorithm::replace_last_copy; + using algorithm::replace_last; + using algorithm::ireplace_last_copy; + using algorithm::ireplace_last; + using algorithm::replace_nth_copy; + using algorithm::replace_nth; + using algorithm::ireplace_nth_copy; + using algorithm::ireplace_nth; + using algorithm::replace_all_copy; + using algorithm::replace_all; + using algorithm::ireplace_all_copy; + using algorithm::ireplace_all; + using algorithm::replace_head_copy; + using algorithm::replace_head; + using algorithm::replace_tail_copy; + using algorithm::replace_tail; + +} // namespace boost + +#endif // BOOST_REPLACE_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/sequence_traits.hpp b/contrib/prebuilt/include/boost/algorithm/string/sequence_traits.hpp new file mode 100644 index 0000000..b1ac67e --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/sequence_traits.hpp @@ -0,0 +1,193 @@ +// Boost string_algo library sequence_traits.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_SEQUENCE_TRAITS_HPP +#define BOOST_STRING_SEQUENCE_TRAITS_HPP + +#include +#include +#include + +/*! \file + Traits defined in this header are used by various algorithms to achieve + better performance for specific containers. + Traits provide fail-safe defaults. If a container supports some of these + features, it is possible to specialize the specific trait for this container. + For lacking compilers, it is possible of define an override for a specific tester + function. + + Due to a language restriction, it is not currently possible to define specializations for + stl containers without including the corresponding header. To decrease the overhead + needed by this inclusion, user can selectively include a specialization + header for a specific container. They are located in boost/algorithm/string/stl + directory. Alternatively she can include boost/algorithm/string/std_collection_traits.hpp + header which contains specializations for all stl containers. +*/ + +namespace boost { + namespace algorithm { + +// sequence traits -----------------------------------------------// + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + //! Native replace tester + /*! + Declare an override of this tester function with return + type boost::string_algo::yes_type for a sequence with this property. + + \return yes_type if the container has basic_string like native replace + method. + */ + no_type has_native_replace_tester(...); + + //! Stable iterators tester + /*! + Declare an override of this tester function with return + type boost::string_algo::yes_type for a sequence with this property. + + \return yes_type if the sequence's insert/replace/erase methods do not invalidate + existing iterators. + */ + no_type has_stable_iterators_tester(...); + + //! const time insert tester + /*! + Declare an override of this tester function with return + type boost::string_algo::yes_type for a sequence with this property. + + \return yes_type if the sequence's insert method is working in constant time + */ + no_type has_const_time_insert_tester(...); + + //! const time erase tester + /*! + Declare an override of this tester function with return + type boost::string_algo::yes_type for a sequence with this property. + + \return yes_type if the sequence's erase method is working in constant time + */ + no_type has_const_time_erase_tester(...); + +#endif //BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + //! Native replace trait + /*! + This trait specifies that the sequence has \c std::string like replace method + */ + template< typename T > + class has_native_replace + { + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + private: + static T* t; + public: + BOOST_STATIC_CONSTANT(bool, value=( + sizeof(has_native_replace_tester(t))==sizeof(yes_type) ) ); +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + public: +# if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = false }; +# else + BOOST_STATIC_CONSTANT(bool, value=false); +# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + + typedef mpl::bool_::value> type; + }; + + + //! Stable iterators trait + /*! + This trait specifies that the sequence has stable iterators. It means + that operations like insert/erase/replace do not invalidate iterators. + */ + template< typename T > + class has_stable_iterators + { +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + private: + static T* t; + public: + BOOST_STATIC_CONSTANT(bool, value=( + sizeof(has_stable_iterators_tester(t))==sizeof(yes_type) ) ); +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + public: +# if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = false }; +# else + BOOST_STATIC_CONSTANT(bool, value=false); +# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + typedef mpl::bool_::value> type; + }; + + + //! Const time insert trait + /*! + This trait specifies that the sequence's insert method has + constant time complexity. + */ + template< typename T > + class has_const_time_insert + { +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + private: + static T* t; + public: + BOOST_STATIC_CONSTANT(bool, value=( + sizeof(has_const_time_insert_tester(t))==sizeof(yes_type) ) ); +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + public: +# if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = false }; +# else + BOOST_STATIC_CONSTANT(bool, value=false); +# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + typedef mpl::bool_::value> type; + }; + + + //! Const time erase trait + /*! + This trait specifies that the sequence's erase method has + constant time complexity. + */ + template< typename T > + class has_const_time_erase + { +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + private: + static T* t; + public: + BOOST_STATIC_CONSTANT(bool, value=( + sizeof(has_const_time_erase_tester(t))==sizeof(yes_type) ) ); +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + public: +# if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = false }; +# else + BOOST_STATIC_CONSTANT(bool, value=false); +# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + typedef mpl::bool_::value> type; + }; + + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_SEQUENCE_TRAITS_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/split.hpp b/contrib/prebuilt/include/boost/algorithm/string/split.hpp new file mode 100644 index 0000000..cae712c --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/split.hpp @@ -0,0 +1,163 @@ +// Boost string_algo library split.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2006. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_SPLIT_HPP +#define BOOST_STRING_SPLIT_HPP + +#include + +#include +#include +#include + +/*! \file + Defines basic split algorithms. + Split algorithms can be used to divide a string + into several parts according to given criteria. + + Each part is copied and added as a new element to the + output container. + Thus the result container must be able to hold copies + of the matches (in a compatible structure like std::string) or + a reference to it (e.g. using the iterator range class). + Examples of such a container are \c std::vector + or \c std::list> +*/ + +namespace boost { + namespace algorithm { + +// find_all ------------------------------------------------------------// + + //! Find all algorithm + /*! + This algorithm finds all occurrences of the search string + in the input. + + Each part is copied and added as a new element to the + output container. + Thus the result container must be able to hold copies + of the matches (in a compatible structure like std::string) or + a reference to it (e.g. using the iterator range class). + Examples of such a container are \c std::vector + or \c std::list> + + \param Result A container that can hold copies of references to the substrings + \param Input A container which will be searched. + \param Search A substring to be searched for. + \return A reference the result + + \note Prior content of the result will be overwritten. + + \note This function provides the strong exception-safety guarantee + */ + template< typename SequenceSequenceT, typename Range1T, typename Range2T > + inline SequenceSequenceT& find_all( + SequenceSequenceT& Result, + Range1T& Input, + const Range2T& Search) + { + return ::boost::algorithm::iter_find( + Result, + Input, + ::boost::algorithm::first_finder(Search) ); + } + + //! Find all algorithm ( case insensitive ) + /*! + This algorithm finds all occurrences of the search string + in the input. + Each part is copied and added as a new element to the + output container. Thus the result container must be able to hold copies + of the matches (in a compatible structure like std::string) or + a reference to it (e.g. using the iterator range class). + Examples of such a container are \c std::vector + or \c std::list> + + Searching is case insensitive. + + \param Result A container that can hold copies of references to the substrings + \param Input A container which will be searched. + \param Search A substring to be searched for. + \param Loc A locale used for case insensitive comparison + \return A reference the result + + \note Prior content of the result will be overwritten. + + \note This function provides the strong exception-safety guarantee + */ + template< typename SequenceSequenceT, typename Range1T, typename Range2T > + inline SequenceSequenceT& ifind_all( + SequenceSequenceT& Result, + Range1T& Input, + const Range2T& Search, + const std::locale& Loc=std::locale() ) + { + return ::boost::algorithm::iter_find( + Result, + Input, + ::boost::algorithm::first_finder(Search, is_iequal(Loc) ) ); + } + + +// tokenize -------------------------------------------------------------// + + //! Split algorithm + /*! + Tokenize expression. This function is equivalent to C strtok. Input + sequence is split into tokens, separated by separators. Separators + are given by means of the predicate. + + Each part is copied and added as a new element to the + output container. + Thus the result container must be able to hold copies + of the matches (in a compatible structure like std::string) or + a reference to it (e.g. using the iterator range class). + Examples of such a container are \c std::vector + or \c std::list> + + \param Result A container that can hold copies of references to the substrings + \param Input A container which will be searched. + \param Pred A predicate to identify separators. This predicate is + supposed to return true if a given element is a separator. + \param eCompress If eCompress argument is set to token_compress_on, adjacent + separators are merged together. Otherwise, every two separators + delimit a token. + \return A reference the result + + \note Prior content of the result will be overwritten. + + \note This function provides the strong exception-safety guarantee + */ + template< typename SequenceSequenceT, typename RangeT, typename PredicateT > + inline SequenceSequenceT& split( + SequenceSequenceT& Result, + RangeT& Input, + PredicateT Pred, + token_compress_mode_type eCompress=token_compress_off ) + { + return ::boost::algorithm::iter_split( + Result, + Input, + ::boost::algorithm::token_finder( Pred, eCompress ) ); + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::find_all; + using algorithm::ifind_all; + using algorithm::split; + +} // namespace boost + + +#endif // BOOST_STRING_SPLIT_HPP + diff --git a/contrib/prebuilt/include/boost/algorithm/string/std/list_traits.hpp b/contrib/prebuilt/include/boost/algorithm/string/std/list_traits.hpp new file mode 100644 index 0000000..ce2379d --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/std/list_traits.hpp @@ -0,0 +1,85 @@ +// Boost string_algo library list_traits.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_STD_LIST_TRAITS_HPP +#define BOOST_STRING_STD_LIST_TRAITS_HPP + +#include +#include +#include + +namespace boost { + namespace algorithm { + +// std::list<> traits -----------------------------------------------// + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + // stable iterators tester + template + yes_type has_stable_iterators_tester( const ::std::list* ); + + // const time insert tester + template + yes_type has_const_time_insert_tester( const ::std::list* ); + + // const time erase tester + template + yes_type has_const_time_erase_tester( const ::std::list* ); + + +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + // stable iterators trait + template + class has_stable_iterators< ::std::list > + { + public: +#if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = true }; +#else + BOOST_STATIC_CONSTANT(bool, value=true); +#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + typedef mpl::bool_::value> type; + }; + + // const time insert trait + template + class has_const_time_insert< ::std::list > + { + public: +#if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = true }; +#else + BOOST_STATIC_CONSTANT(bool, value=true); +#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + typedef mpl::bool_::value> type; + }; + + // const time erase trait + template + class has_const_time_erase< ::std::list > + { + public: +#if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = true }; +#else + BOOST_STATIC_CONSTANT(bool, value=true); +#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + typedef mpl::bool_::value> type; + }; +#endif + + + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_STD_LIST_TRAITS_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/std/slist_traits.hpp b/contrib/prebuilt/include/boost/algorithm/string/std/slist_traits.hpp new file mode 100644 index 0000000..7b915a3 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/std/slist_traits.hpp @@ -0,0 +1,85 @@ +// Boost string_algo library slist_traits.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_STD_SLIST_TRAITS_HPP +#define BOOST_STRING_STD_SLIST_TRAITS_HPP + +#include +#include +#include BOOST_SLIST_HEADER +#include + +namespace boost { + namespace algorithm { + +// SGI's std::slist<> traits -----------------------------------------------// + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + // stable iterators tester + template + yes_type has_stable_iterators_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist* ); + + // const time insert tester + template + yes_type has_const_time_insert_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist* ); + + // const time erase tester + template + yes_type has_const_time_erase_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist* ); + +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + // stable iterators trait + template + class has_stable_iterators< BOOST_STD_EXTENSION_NAMESPACE::slist > + { + public: +#if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = true }; +#else + BOOST_STATIC_CONSTANT(bool, value=true); +#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + typedef mpl::bool_::value> type; + }; + + // const time insert trait + template + class has_const_time_insert< BOOST_STD_EXTENSION_NAMESPACE::slist > + { + public: +#if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = true }; +#else + BOOST_STATIC_CONSTANT(bool, value=true); +#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + typedef mpl::bool_::value> type; + }; + + // const time erase trait + template + class has_const_time_erase< BOOST_STD_EXTENSION_NAMESPACE::slist > + { + public: +#if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = true }; +#else + BOOST_STATIC_CONSTANT(bool, value=true); +#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + typedef mpl::bool_::value> type; + }; +#endif + + + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_STD_LIST_TRAITS_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/std/string_traits.hpp b/contrib/prebuilt/include/boost/algorithm/string/std/string_traits.hpp new file mode 100644 index 0000000..c466d26 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/std/string_traits.hpp @@ -0,0 +1,52 @@ +// Boost string_algo library string_traits.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_STD_STRING_TRAITS_HPP +#define BOOST_STRING_STD_STRING_TRAITS_HPP + +#include +#include +#include + +namespace boost { + namespace algorithm { + +// std::basic_string<> traits -----------------------------------------------// + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + // native replace tester + template + yes_type has_native_replace_tester( const std::basic_string* ); + +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + // native replace trait + template + class has_native_replace< std::basic_string > + { + public: +#if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + enum { value = true } ; +#else + BOOST_STATIC_CONSTANT(bool, value=true); +#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) + + typedef mpl::bool_::value> type; + }; + + +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_LIST_TRAITS_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/std_containers_traits.hpp b/contrib/prebuilt/include/boost/algorithm/string/std_containers_traits.hpp new file mode 100644 index 0000000..3f02246 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/std_containers_traits.hpp @@ -0,0 +1,26 @@ +// Boost string_algo library std_containers_traits.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_STD_CONTAINERS_TRAITS_HPP +#define BOOST_STRING_STD_CONTAINERS_TRAITS_HPP + +/*!\file + This file includes sequence traits for stl containers. +*/ + +#include +#include +#include + +#ifdef BOOST_HAS_SLIST +# include +#endif + +#endif // BOOST_STRING_STD_CONTAINERS_TRAITS_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/trim.hpp b/contrib/prebuilt/include/boost/algorithm/string/trim.hpp new file mode 100644 index 0000000..eb408a3 --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/trim.hpp @@ -0,0 +1,398 @@ +// Boost string_algo library trim.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_TRIM_HPP +#define BOOST_STRING_TRIM_HPP + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +/*! \file + Defines trim algorithms. + Trim algorithms are used to remove trailing and leading spaces from a + sequence (string). Space is recognized using given locales. + + Parametric (\c _if) variants use a predicate (functor) to select which characters + are to be trimmed.. + Functions take a selection predicate as a parameter, which is used to determine + whether a character is a space. Common predicates are provided in classification.hpp header. + +*/ + +namespace boost { + namespace algorithm { + + // left trim -----------------------------------------------// + + + //! Left trim - parametric + /*! + Remove all leading spaces from the input. + The supplied predicate is used to determine which characters are considered spaces. + The result is a trimmed copy of the input. It is returned as a sequence + or copied to the output iterator + + \param Output An output iterator to which the result will be copied + \param Input An input range + \param IsSpace An unary predicate identifying spaces + \return + An output iterator pointing just after the last inserted character or + a copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template + inline OutputIteratorT trim_left_copy_if( + OutputIteratorT Output, + const RangeT& Input, + PredicateT IsSpace) + { + iterator_range::type> lit_range(::boost::as_literal(Input)); + + std::copy( + ::boost::algorithm::detail::trim_begin( + ::boost::begin(lit_range), + ::boost::end(lit_range), + IsSpace ), + ::boost::end(lit_range), + Output); + + return Output; + } + + //! Left trim - parametric + /*! + \overload + */ + template + inline SequenceT trim_left_copy_if(const SequenceT& Input, PredicateT IsSpace) + { + return SequenceT( + ::boost::algorithm::detail::trim_begin( + ::boost::begin(Input), + ::boost::end(Input), + IsSpace ), + ::boost::end(Input)); + } + + //! Left trim - parametric + /*! + Remove all leading spaces from the input. + The result is a trimmed copy of the input. + + \param Input An input sequence + \param Loc a locale used for 'space' classification + \return A trimmed copy of the input + + \note This function provides the strong exception-safety guarantee + */ + template + inline SequenceT trim_left_copy(const SequenceT& Input, const std::locale& Loc=std::locale()) + { + return + ::boost::algorithm::trim_left_copy_if( + Input, + is_space(Loc)); + } + + //! Left trim + /*! + Remove all leading spaces from the input. The supplied predicate is + used to determine which characters are considered spaces. + The input sequence is modified in-place. + + \param Input An input sequence + \param IsSpace An unary predicate identifying spaces + */ + template + inline void trim_left_if(SequenceT& Input, PredicateT IsSpace) + { + Input.erase( + ::boost::begin(Input), + ::boost::algorithm::detail::trim_begin( + ::boost::begin(Input), + ::boost::end(Input), + IsSpace)); + } + + //! Left trim + /*! + Remove all leading spaces from the input. + The Input sequence is modified in-place. + + \param Input An input sequence + \param Loc A locale used for 'space' classification + */ + template + inline void trim_left(SequenceT& Input, const std::locale& Loc=std::locale()) + { + ::boost::algorithm::trim_left_if( + Input, + is_space(Loc)); + } + + // right trim -----------------------------------------------// + + //! Right trim - parametric + /*! + Remove all trailing spaces from the input. + The supplied predicate is used to determine which characters are considered spaces. + The result is a trimmed copy of the input. It is returned as a sequence + or copied to the output iterator + + \param Output An output iterator to which the result will be copied + \param Input An input range + \param IsSpace An unary predicate identifying spaces + \return + An output iterator pointing just after the last inserted character or + a copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template + inline OutputIteratorT trim_right_copy_if( + OutputIteratorT Output, + const RangeT& Input, + PredicateT IsSpace ) + { + iterator_range::type> lit_range(::boost::as_literal(Input)); + + std::copy( + ::boost::begin(lit_range), + ::boost::algorithm::detail::trim_end( + ::boost::begin(lit_range), + ::boost::end(lit_range), + IsSpace ), + Output ); + + return Output; + } + + //! Right trim - parametric + /*! + \overload + */ + template + inline SequenceT trim_right_copy_if(const SequenceT& Input, PredicateT IsSpace) + { + return SequenceT( + ::boost::begin(Input), + ::boost::algorithm::detail::trim_end( + ::boost::begin(Input), + ::boost::end(Input), + IsSpace) + ); + } + + //! Right trim + /*! + Remove all trailing spaces from the input. + The result is a trimmed copy of the input + + \param Input An input sequence + \param Loc A locale used for 'space' classification + \return A trimmed copy of the input + + \note This function provides the strong exception-safety guarantee + */ + template + inline SequenceT trim_right_copy(const SequenceT& Input, const std::locale& Loc=std::locale()) + { + return + ::boost::algorithm::trim_right_copy_if( + Input, + is_space(Loc)); + } + + + //! Right trim - parametric + /*! + Remove all trailing spaces from the input. + The supplied predicate is used to determine which characters are considered spaces. + The input sequence is modified in-place. + + \param Input An input sequence + \param IsSpace An unary predicate identifying spaces + */ + template + inline void trim_right_if(SequenceT& Input, PredicateT IsSpace) + { + Input.erase( + ::boost::algorithm::detail::trim_end( + ::boost::begin(Input), + ::boost::end(Input), + IsSpace ), + ::boost::end(Input) + ); + } + + + //! Right trim + /*! + Remove all trailing spaces from the input. + The input sequence is modified in-place. + + \param Input An input sequence + \param Loc A locale used for 'space' classification + */ + template + inline void trim_right(SequenceT& Input, const std::locale& Loc=std::locale()) + { + ::boost::algorithm::trim_right_if( + Input, + is_space(Loc) ); + } + + // both side trim -----------------------------------------------// + + //! Trim - parametric + /*! + Remove all trailing and leading spaces from the input. + The supplied predicate is used to determine which characters are considered spaces. + The result is a trimmed copy of the input. It is returned as a sequence + or copied to the output iterator + + \param Output An output iterator to which the result will be copied + \param Input An input range + \param IsSpace An unary predicate identifying spaces + \return + An output iterator pointing just after the last inserted character or + a copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template + inline OutputIteratorT trim_copy_if( + OutputIteratorT Output, + const RangeT& Input, + PredicateT IsSpace) + { + iterator_range::type> lit_range(::boost::as_literal(Input)); + + BOOST_STRING_TYPENAME + range_const_iterator::type TrimEnd= + ::boost::algorithm::detail::trim_end( + ::boost::begin(lit_range), + ::boost::end(lit_range), + IsSpace); + + std::copy( + detail::trim_begin( + ::boost::begin(lit_range), TrimEnd, IsSpace), + TrimEnd, + Output + ); + + return Output; + } + + //! Trim - parametric + /*! + \overload + */ + template + inline SequenceT trim_copy_if(const SequenceT& Input, PredicateT IsSpace) + { + BOOST_STRING_TYPENAME + range_const_iterator::type TrimEnd= + ::boost::algorithm::detail::trim_end( + ::boost::begin(Input), + ::boost::end(Input), + IsSpace); + + return SequenceT( + detail::trim_begin( + ::boost::begin(Input), + TrimEnd, + IsSpace), + TrimEnd + ); + } + + //! Trim + /*! + Remove all leading and trailing spaces from the input. + The result is a trimmed copy of the input + + \param Input An input sequence + \param Loc A locale used for 'space' classification + \return A trimmed copy of the input + + \note This function provides the strong exception-safety guarantee + */ + template + inline SequenceT trim_copy( const SequenceT& Input, const std::locale& Loc=std::locale() ) + { + return + ::boost::algorithm::trim_copy_if( + Input, + is_space(Loc) ); + } + + //! Trim + /*! + Remove all leading and trailing spaces from the input. + The supplied predicate is used to determine which characters are considered spaces. + The input sequence is modified in-place. + + \param Input An input sequence + \param IsSpace An unary predicate identifying spaces + */ + template + inline void trim_if(SequenceT& Input, PredicateT IsSpace) + { + ::boost::algorithm::trim_right_if( Input, IsSpace ); + ::boost::algorithm::trim_left_if( Input, IsSpace ); + } + + //! Trim + /*! + Remove all leading and trailing spaces from the input. + The input sequence is modified in-place. + + \param Input An input sequence + \param Loc A locale used for 'space' classification + */ + template + inline void trim(SequenceT& Input, const std::locale& Loc=std::locale()) + { + ::boost::algorithm::trim_if( + Input, + is_space( Loc ) ); + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::trim_left; + using algorithm::trim_left_if; + using algorithm::trim_left_copy; + using algorithm::trim_left_copy_if; + using algorithm::trim_right; + using algorithm::trim_right_if; + using algorithm::trim_right_copy; + using algorithm::trim_right_copy_if; + using algorithm::trim; + using algorithm::trim_if; + using algorithm::trim_copy; + using algorithm::trim_copy_if; + +} // namespace boost + +#endif // BOOST_STRING_TRIM_HPP diff --git a/contrib/prebuilt/include/boost/algorithm/string/yes_no_type.hpp b/contrib/prebuilt/include/boost/algorithm/string/yes_no_type.hpp new file mode 100644 index 0000000..b76cc6c --- /dev/null +++ b/contrib/prebuilt/include/boost/algorithm/string/yes_no_type.hpp @@ -0,0 +1,33 @@ +// Boost string_algo library yes_no_type.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_YES_NO_TYPE_DETAIL_HPP +#define BOOST_STRING_YES_NO_TYPE_DETAIL_HPP + +namespace boost { + namespace algorithm { + + // taken from boost mailing-list + // when yes_no_type will become officially + // a part of boost distribution, this header + // will be deprecated + template struct size_descriptor + { + typedef char (& type)[I]; + }; + + typedef size_descriptor<1>::type yes_type; + typedef size_descriptor<2>::type no_type; + + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_YES_NO_TYPE_DETAIL_HPP diff --git a/contrib/prebuilt/include/boost/aligned_storage.hpp b/contrib/prebuilt/include/boost/aligned_storage.hpp new file mode 100644 index 0000000..ce277ab --- /dev/null +++ b/contrib/prebuilt/include/boost/aligned_storage.hpp @@ -0,0 +1,181 @@ +//----------------------------------------------------------------------------- +// boost aligned_storage.hpp header file +// See http://www.boost.org for updates, documentation, and revision history. +//----------------------------------------------------------------------------- +// +// Copyright (c) 2002-2003 +// Eric Friedman, Itay Maman +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_ALIGNED_STORAGE_HPP +#define BOOST_ALIGNED_STORAGE_HPP + +#include // for std::size_t + +#include "boost/config.hpp" +#include "boost/detail/workaround.hpp" +#include "boost/type_traits/alignment_of.hpp" +#include "boost/type_traits/type_with_alignment.hpp" +#include "boost/type_traits/is_pod.hpp" + +#include "boost/mpl/eval_if.hpp" +#include "boost/mpl/identity.hpp" + +#include "boost/type_traits/detail/bool_trait_def.hpp" + +namespace boost { + +namespace detail { namespace aligned_storage { + +BOOST_STATIC_CONSTANT( + std::size_t + , alignment_of_max_align = ::boost::alignment_of::value + ); + +// +// To be TR1 conforming this must be a POD type: +// +template < + std::size_t size_ + , std::size_t alignment_ +> +struct aligned_storage_imp +{ + union data_t + { + char buf[size_]; + + typename mpl::eval_if_c< + alignment_ == std::size_t(-1) + , mpl::identity + , type_with_alignment + >::type align_; + } data_; + void* address() const { return const_cast(this); } +}; + +template< std::size_t alignment_ > +struct aligned_storage_imp<0u,alignment_> +{ + /* intentionally empty */ + void* address() const { return 0; } +}; + +}} // namespace detail::aligned_storage + +template < + std::size_t size_ + , std::size_t alignment_ = std::size_t(-1) +> +class aligned_storage : +#ifndef __BORLANDC__ + private +#else + public +#endif + detail::aligned_storage::aligned_storage_imp +{ + +public: // constants + + typedef detail::aligned_storage::aligned_storage_imp type; + + BOOST_STATIC_CONSTANT( + std::size_t + , size = size_ + ); + BOOST_STATIC_CONSTANT( + std::size_t + , alignment = ( + alignment_ == std::size_t(-1) + ? ::boost::detail::aligned_storage::alignment_of_max_align + : alignment_ + ) + ); + +#if defined(__GNUC__) &&\ + (__GNUC__ > 3) ||\ + (__GNUC__ == 3 && (__GNUC_MINOR__ > 2 ||\ + (__GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ >=3))) + +private: // noncopyable + + aligned_storage(const aligned_storage&); + aligned_storage& operator=(const aligned_storage&); + +#else // gcc less than 3.2.3 + +public: // _should_ be noncopyable, but GCC compiler emits error + + aligned_storage(const aligned_storage&); + aligned_storage& operator=(const aligned_storage&); + +#endif // gcc < 3.2.3 workaround + +public: // structors + + aligned_storage() + { + } + + ~aligned_storage() + { + } + +public: // accessors + + void* address() + { + return static_cast(this)->address(); + } + +#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) + + const void* address() const + { + return static_cast(this)->address(); + } + +#else // MSVC6 + + const void* address() const; + +#endif // MSVC6 workaround + +}; + +#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) + +// MSVC6 seems not to like inline functions with const void* returns, so we +// declare the following here: + +template +const void* aligned_storage::address() const +{ + return const_cast< aligned_storage* >(this)->address(); +} + +#endif // MSVC6 workaround + +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +// +// Make sure that is_pod recognises aligned_storage<>::type +// as a POD (Note that aligned_storage<> itself is not a POD): +// +template +struct is_pod > + BOOST_TT_AUX_BOOL_C_BASE(true) +{ + BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(true) +}; +#endif + + +} // namespace boost + +#include "boost/type_traits/detail/bool_trait_undef.hpp" + +#endif // BOOST_ALIGNED_STORAGE_HPP diff --git a/contrib/prebuilt/include/boost/array.hpp b/contrib/prebuilt/include/boost/array.hpp new file mode 100644 index 0000000..fa06fa9 --- /dev/null +++ b/contrib/prebuilt/include/boost/array.hpp @@ -0,0 +1,446 @@ +/* The following code declares class array, + * an STL container (as wrapper) for arrays of constant size. + * + * See + * http://www.boost.org/libs/array/ + * for documentation. + * + * The original author site is at: http://www.josuttis.com/ + * + * (C) Copyright Nicolai M. Josuttis 2001. + * + * Distributed under the Boost Software License, Version 1.0. (See + * accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * 14 Apr 2012 - (mtc) Added support for boost::hash + * 28 Dec 2010 - (mtc) Added cbegin and cend (and crbegin and crend) for C++Ox compatibility. + * 10 Mar 2010 - (mtc) fill method added, matching resolution of the standard library working group. + * See or Trac issue #3168 + * Eventually, we should remove "assign" which is now a synonym for "fill" (Marshall Clow) + * 10 Mar 2010 - added workaround for SUNCC and !STLPort [trac #3893] (Marshall Clow) + * 29 Jan 2004 - c_array() added, BOOST_NO_PRIVATE_IN_AGGREGATE removed (Nico Josuttis) + * 23 Aug 2002 - fix for Non-MSVC compilers combined with MSVC libraries. + * 05 Aug 2001 - minor update (Nico Josuttis) + * 20 Jan 2001 - STLport fix (Beman Dawes) + * 29 Sep 2000 - Initial Revision (Nico Josuttis) + * + * Jan 29, 2004 + */ +#ifndef BOOST_ARRAY_HPP +#define BOOST_ARRAY_HPP + +#include + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +# pragma warning(push) +# pragma warning(disable:4996) // 'std::equal': Function call with parameters that may be unsafe +# pragma warning(disable:4510) // boost::array' : default constructor could not be generated +# pragma warning(disable:4610) // warning C4610: class 'boost::array' can never be instantiated - user defined constructor required +#endif + +#include +#include +#include +#include + +// Handles broken standard libraries better than +#include +#include +#include +#include + +// FIXES for broken compilers +#include + + +namespace boost { + + template + class array { + public: + T elems[N]; // fixed-size array of elements of type T + + public: + // type definitions + typedef T value_type; + typedef T* iterator; + typedef const T* const_iterator; + typedef T& reference; + typedef const T& const_reference; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + + // iterator support + iterator begin() { return elems; } + const_iterator begin() const { return elems; } + const_iterator cbegin() const { return elems; } + + iterator end() { return elems+N; } + const_iterator end() const { return elems+N; } + const_iterator cend() const { return elems+N; } + + // reverse iterator support +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310) + // workaround for broken reverse_iterator in VC7 + typedef std::reverse_iterator > reverse_iterator; + typedef std::reverse_iterator > const_reverse_iterator; +#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#else + // workaround for broken reverse_iterator implementations + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#endif + + reverse_iterator rbegin() { return reverse_iterator(end()); } + const_reverse_iterator rbegin() const { + return const_reverse_iterator(end()); + } + const_reverse_iterator crbegin() const { + return const_reverse_iterator(end()); + } + + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rend() const { + return const_reverse_iterator(begin()); + } + const_reverse_iterator crend() const { + return const_reverse_iterator(begin()); + } + + // operator[] + reference operator[](size_type i) + { + BOOST_ASSERT_MSG( i < N, "out of range" ); + return elems[i]; + } + + const_reference operator[](size_type i) const + { + BOOST_ASSERT_MSG( i < N, "out of range" ); + return elems[i]; + } + + // at() with range check + reference at(size_type i) { rangecheck(i); return elems[i]; } + const_reference at(size_type i) const { rangecheck(i); return elems[i]; } + + // front() and back() + reference front() + { + return elems[0]; + } + + const_reference front() const + { + return elems[0]; + } + + reference back() + { + return elems[N-1]; + } + + const_reference back() const + { + return elems[N-1]; + } + + // size is constant + static size_type size() { return N; } + static bool empty() { return false; } + static size_type max_size() { return N; } + enum { static_size = N }; + + // swap (note: linear complexity) + void swap (array& y) { + for (size_type i = 0; i < N; ++i) + boost::swap(elems[i],y.elems[i]); + } + + // direct access to data (read-only) + const T* data() const { return elems; } + T* data() { return elems; } + + // use array as C array (direct read/write access to data) + T* c_array() { return elems; } + + // assignment with type conversion + template + array& operator= (const array& rhs) { + std::copy(rhs.begin(),rhs.end(), begin()); + return *this; + } + + // assign one value to all elements + void assign (const T& value) { fill ( value ); } // A synonym for fill + void fill (const T& value) + { + std::fill_n(begin(),size(),value); + } + + // check range (may be private because it is static) + static void rangecheck (size_type i) { + if (i >= size()) { + std::out_of_range e("array<>: index out of range"); + boost::throw_exception(e); + } + } + + }; + +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) + template< class T > + class array< T, 0 > { + + public: + // type definitions + typedef T value_type; + typedef T* iterator; + typedef const T* const_iterator; + typedef T& reference; + typedef const T& const_reference; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + + // iterator support + iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); } + const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); } + const_iterator cbegin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); } + + iterator end() { return begin(); } + const_iterator end() const { return begin(); } + const_iterator cend() const { return cbegin(); } + + // reverse iterator support +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310) + // workaround for broken reverse_iterator in VC7 + typedef std::reverse_iterator > reverse_iterator; + typedef std::reverse_iterator > const_reverse_iterator; +#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#else + // workaround for broken reverse_iterator implementations + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#endif + + reverse_iterator rbegin() { return reverse_iterator(end()); } + const_reverse_iterator rbegin() const { + return const_reverse_iterator(end()); + } + const_reverse_iterator crbegin() const { + return const_reverse_iterator(end()); + } + + reverse_iterator rend() { return reverse_iterator(begin()); } + const_reverse_iterator rend() const { + return const_reverse_iterator(begin()); + } + const_reverse_iterator crend() const { + return const_reverse_iterator(begin()); + } + + // operator[] + reference operator[](size_type /*i*/) + { + return failed_rangecheck(); + } + + const_reference operator[](size_type /*i*/) const + { + return failed_rangecheck(); + } + + // at() with range check + reference at(size_type /*i*/) { return failed_rangecheck(); } + const_reference at(size_type /*i*/) const { return failed_rangecheck(); } + + // front() and back() + reference front() + { + return failed_rangecheck(); + } + + const_reference front() const + { + return failed_rangecheck(); + } + + reference back() + { + return failed_rangecheck(); + } + + const_reference back() const + { + return failed_rangecheck(); + } + + // size is constant + static size_type size() { return 0; } + static bool empty() { return true; } + static size_type max_size() { return 0; } + enum { static_size = 0 }; + + void swap (array& /*y*/) { + } + + // direct access to data (read-only) + const T* data() const { return 0; } + T* data() { return 0; } + + // use array as C array (direct read/write access to data) + T* c_array() { return 0; } + + // assignment with type conversion + template + array& operator= (const array& ) { + return *this; + } + + // assign one value to all elements + void assign (const T& value) { fill ( value ); } + void fill (const T& ) {} + + // check range (may be private because it is static) + static reference failed_rangecheck () { + std::out_of_range e("attempt to access element of an empty array"); + boost::throw_exception(e); +#if defined(BOOST_NO_EXCEPTIONS) || (!defined(BOOST_MSVC) && !defined(__PATHSCALE__)) + // + // We need to return something here to keep + // some compilers happy: however we will never + // actually get here.... + // + static T placeholder; + return placeholder; +#endif + } + }; +#endif + + // comparisons + template + bool operator== (const array& x, const array& y) { + return std::equal(x.begin(), x.end(), y.begin()); + } + template + bool operator< (const array& x, const array& y) { + return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end()); + } + template + bool operator!= (const array& x, const array& y) { + return !(x==y); + } + template + bool operator> (const array& x, const array& y) { + return y + bool operator<= (const array& x, const array& y) { + return !(y + bool operator>= (const array& x, const array& y) { + return !(x + inline void swap (array& x, array& y) { + x.swap(y); + } + +#if defined(__SUNPRO_CC) +// Trac ticket #4757; the Sun Solaris compiler can't handle +// syntax like 'T(&get_c_array(boost::array& arg))[N]' +// +// We can't just use this for all compilers, because the +// borland compilers can't handle this form. + namespace detail { + template struct c_array + { + typedef T type[N]; + }; + } + + // Specific for boost::array: simply returns its elems data member. + template + typename detail::c_array::type& get_c_array(boost::array& arg) + { + return arg.elems; + } + + // Specific for boost::array: simply returns its elems data member. + template + typename const detail::c_array::type& get_c_array(const boost::array& arg) + { + return arg.elems; + } +#else +// Specific for boost::array: simply returns its elems data member. + template + T(&get_c_array(boost::array& arg))[N] + { + return arg.elems; + } + + // Const version. + template + const T(&get_c_array(const boost::array& arg))[N] + { + return arg.elems; + } +#endif + +#if 0 + // Overload for std::array, assuming that std::array will have + // explicit conversion functions as discussed at the WG21 meeting + // in Summit, March 2009. + template + T(&get_c_array(std::array& arg))[N] + { + return static_cast(arg); + } + + // Const version. + template + const T(&get_c_array(const std::array& arg))[N] + { + return static_cast(arg); + } +#endif + + + template + std::size_t hash_value(const array& arr) + { + return boost::hash_range(arr.begin(), arr.end()); + } + +} /* namespace boost */ + + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +# pragma warning(pop) +#endif + +#endif /*BOOST_ARRAY_HPP*/ diff --git a/contrib/prebuilt/include/boost/assert.hpp b/contrib/prebuilt/include/boost/assert.hpp new file mode 100644 index 0000000..174f084 --- /dev/null +++ b/contrib/prebuilt/include/boost/assert.hpp @@ -0,0 +1,131 @@ +// +// boost/assert.hpp - BOOST_ASSERT(expr) +// BOOST_ASSERT_MSG(expr, msg) +// BOOST_VERIFY(expr) +// +// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. +// Copyright (c) 2007 Peter Dimov +// Copyright (c) Beman Dawes 2011 +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// Note: There are no include guards. This is intentional. +// +// See http://www.boost.org/libs/utility/assert.html for documentation. +// + +// +// Stop inspect complaining about use of 'assert': +// +// boostinspect:naassert_macro +// + +//--------------------------------------------------------------------------------------// +// BOOST_ASSERT // +//--------------------------------------------------------------------------------------// + +#undef BOOST_ASSERT + +#if defined(BOOST_DISABLE_ASSERTS) + +# define BOOST_ASSERT(expr) ((void)0) + +#elif defined(BOOST_ENABLE_ASSERT_HANDLER) + +#include + +namespace boost +{ + void assertion_failed(char const * expr, + char const * function, char const * file, long line); // user defined +} // namespace boost + +#define BOOST_ASSERT(expr) ((expr) \ + ? ((void)0) \ + : ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) + +#else +# include // .h to support old libraries w/o - effect is the same +# define BOOST_ASSERT(expr) assert(expr) +#endif + +//--------------------------------------------------------------------------------------// +// BOOST_ASSERT_MSG // +//--------------------------------------------------------------------------------------// + +# undef BOOST_ASSERT_MSG + +#if defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG) + + #define BOOST_ASSERT_MSG(expr, msg) ((void)0) + +#elif defined(BOOST_ENABLE_ASSERT_HANDLER) + + #include + + namespace boost + { + void assertion_failed_msg(char const * expr, char const * msg, + char const * function, char const * file, long line); // user defined + } // namespace boost + + #define BOOST_ASSERT_MSG(expr, msg) ((expr) \ + ? ((void)0) \ + : ::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) + +#else + #ifndef BOOST_ASSERT_HPP + #define BOOST_ASSERT_HPP + #include + #include + #include + + // IDE's like Visual Studio perform better if output goes to std::cout or + // some other stream, so allow user to configure output stream: + #ifndef BOOST_ASSERT_MSG_OSTREAM + # define BOOST_ASSERT_MSG_OSTREAM std::cerr + #endif + + namespace boost + { + namespace assertion + { + namespace detail + { + inline void assertion_failed_msg(char const * expr, char const * msg, char const * function, + char const * file, long line) + { + BOOST_ASSERT_MSG_OSTREAM + << "***** Internal Program Error - assertion (" << expr << ") failed in " + << function << ":\n" + << file << '(' << line << "): " << msg << std::endl; + std::abort(); + } + } // detail + } // assertion + } // detail + #endif + + #define BOOST_ASSERT_MSG(expr, msg) ((expr) \ + ? ((void)0) \ + : ::boost::assertion::detail::assertion_failed_msg(#expr, msg, \ + BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) +#endif + +//--------------------------------------------------------------------------------------// +// BOOST_VERIFY // +//--------------------------------------------------------------------------------------// + +#undef BOOST_VERIFY + +#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) ) + +# define BOOST_VERIFY(expr) ((void)(expr)) + +#else + +# define BOOST_VERIFY(expr) BOOST_ASSERT(expr) + +#endif diff --git a/contrib/prebuilt/include/boost/bind.hpp b/contrib/prebuilt/include/boost/bind.hpp new file mode 100644 index 0000000..fd3421e --- /dev/null +++ b/contrib/prebuilt/include/boost/bind.hpp @@ -0,0 +1,24 @@ +#ifndef BOOST_BIND_HPP_INCLUDED +#define BOOST_BIND_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// bind.hpp - binds function objects to arguments +// +// Copyright (c) 2009 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +#include + +#endif // #ifndef BOOST_BIND_HPP_INCLUDED diff --git a/contrib/prebuilt/include/boost/bind/arg.hpp b/contrib/prebuilt/include/boost/bind/arg.hpp new file mode 100644 index 0000000..0d5cd03 --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/arg.hpp @@ -0,0 +1,62 @@ +#ifndef BOOST_BIND_ARG_HPP_INCLUDED +#define BOOST_BIND_ARG_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// bind/arg.hpp +// +// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +#include +#include + +namespace boost +{ + +template< int I > struct arg +{ + arg() + { + } + + template< class T > arg( T const & /* t */ ) + { + // static assert I == is_placeholder::value + typedef char T_must_be_placeholder[ I == is_placeholder::value? 1: -1 ]; + } +}; + +template< int I > bool operator==( arg const &, arg const & ) +{ + return true; +} + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template< int I > struct is_placeholder< arg > +{ + enum _vt { value = I }; +}; + +template< int I > struct is_placeholder< arg (*) () > +{ + enum _vt { value = I }; +}; + +#endif + +} // namespace boost + +#endif // #ifndef BOOST_BIND_ARG_HPP_INCLUDED diff --git a/contrib/prebuilt/include/boost/bind/bind.hpp b/contrib/prebuilt/include/boost/bind/bind.hpp new file mode 100644 index 0000000..fb67097 --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/bind.hpp @@ -0,0 +1,1751 @@ +#ifndef BOOST_BIND_BIND_HPP_INCLUDED +#define BOOST_BIND_BIND_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// bind.hpp - binds function objects to arguments +// +// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd. +// Copyright (c) 2001 David Abrahams +// Copyright (c) 2005 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +#include +#include +#include +#include +#include +#include +#include +#include + +// Borland-specific bug, visit_each() silently fails to produce code + +#if defined(__BORLANDC__) +# define BOOST_BIND_VISIT_EACH boost::visit_each +#else +# define BOOST_BIND_VISIT_EACH visit_each +#endif + +#include + +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated +#endif + +namespace boost +{ + +template class weak_ptr; + +namespace _bi // implementation details +{ + +// result_traits + +template struct result_traits +{ + typedef R type; +}; + +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) + +struct unspecified {}; + +template struct result_traits +{ + typedef typename F::result_type type; +}; + +template struct result_traits< unspecified, reference_wrapper > +{ + typedef typename F::result_type type; +}; + +#endif + +// ref_compare + +template bool ref_compare( T const & a, T const & b, long ) +{ + return a == b; +} + +template bool ref_compare( arg const &, arg const &, int ) +{ + return true; +} + +template bool ref_compare( arg (*) (), arg (*) (), int ) +{ + return true; +} + +template bool ref_compare( reference_wrapper const & a, reference_wrapper const & b, int ) +{ + return a.get_pointer() == b.get_pointer(); +} + +// bind_t forward declaration for listN + +template class bind_t; + +template bool ref_compare( bind_t const & a, bind_t const & b, int ) +{ + return a.compare( b ); +} + +// value + +template class value +{ +public: + + value(T const & t): t_(t) {} + + T & get() { return t_; } + T const & get() const { return t_; } + + bool operator==(value const & rhs) const + { + return t_ == rhs.t_; + } + +private: + + T t_; +}; + +// ref_compare for weak_ptr + +template bool ref_compare( value< weak_ptr > const & a, value< weak_ptr > const & b, int ) +{ + return !(a.get() < b.get()) && !(b.get() < a.get()); +} + +// type + +template class type {}; + +// unwrap + +template struct unwrapper +{ + static inline F & unwrap( F & f, long ) + { + return f; + } + + template static inline F2 & unwrap( reference_wrapper rf, int ) + { + return rf.get(); + } + + template static inline _mfi::dm unwrap( R T::* pm, int ) + { + return _mfi::dm( pm ); + } +}; + +// listN + +class list0 +{ +public: + + list0() {} + + template T & operator[] (_bi::value & v) const { return v.get(); } + + template T const & operator[] (_bi::value const & v) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A &, long) + { + return unwrapper::unwrap(f, 0)(); + } + + template R operator()(type, F const & f, A &, long) const + { + return unwrapper::unwrap(f, 0)(); + } + + template void operator()(type, F & f, A &, int) + { + unwrapper::unwrap(f, 0)(); + } + + template void operator()(type, F const & f, A &, int) const + { + unwrapper::unwrap(f, 0)(); + } + + template void accept(V &) const + { + } + + bool operator==(list0 const &) const + { + return true; + } +}; + +#ifdef BOOST_MSVC +// MSVC is bright enough to realise that the parameter rhs +// in operator==may be unused for some template argument types: +#pragma warning(push) +#pragma warning(disable:4100) +#endif + +template< class A1 > class list1: private storage1< A1 > +{ +private: + + typedef storage1< A1 > base_type; + +public: + + explicit list1( A1 a1 ): base_type( a1 ) {} + + A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + + A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + + template T & operator[] ( _bi::value & v ) const { return v.get(); } + + template T const & operator[] ( _bi::value const & v ) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A & a, long) + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_]); + } + + template R operator()(type, F const & f, A & a, long) const + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_]); + } + + template void operator()(type, F & f, A & a, int) + { + unwrapper::unwrap(f, 0)(a[base_type::a1_]); + } + + template void operator()(type, F const & f, A & a, int) const + { + unwrapper::unwrap(f, 0)(a[base_type::a1_]); + } + + template void accept(V & v) const + { + base_type::accept(v); + } + + bool operator==(list1 const & rhs) const + { + return ref_compare(base_type::a1_, rhs.a1_, 0); + } +}; + +struct logical_and; +struct logical_or; + +template< class A1, class A2 > class list2: private storage2< A1, A2 > +{ +private: + + typedef storage2< A1, A2 > base_type; + +public: + + list2( A1 a1, A2 a2 ): base_type( a1, a2 ) {} + + A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + A2 operator[] (boost::arg<2>) const { return base_type::a2_; } + + A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } + + template T & operator[] (_bi::value & v) const { return v.get(); } + + template T const & operator[] (_bi::value const & v) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A & a, long) + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]); + } + + template R operator()(type, F const & f, A & a, long) const + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]); + } + + template void operator()(type, F & f, A & a, int) + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]); + } + + template void operator()(type, F const & f, A & a, int) const + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]); + } + + template bool operator()( type, logical_and & /*f*/, A & a, int ) + { + return a[ base_type::a1_ ] && a[ base_type::a2_ ]; + } + + template bool operator()( type, logical_and const & /*f*/, A & a, int ) const + { + return a[ base_type::a1_ ] && a[ base_type::a2_ ]; + } + + template bool operator()( type, logical_or & /*f*/, A & a, int ) + { + return a[ base_type::a1_ ] || a[ base_type::a2_ ]; + } + + template bool operator()( type, logical_or const & /*f*/, A & a, int ) const + { + return a[ base_type::a1_ ] || a[ base_type::a2_ ]; + } + + template void accept(V & v) const + { + base_type::accept(v); + } + + bool operator==(list2 const & rhs) const + { + return ref_compare(base_type::a1_, rhs.a1_, 0) && ref_compare(base_type::a2_, rhs.a2_, 0); + } +}; + +template< class A1, class A2, class A3 > class list3: private storage3< A1, A2, A3 > +{ +private: + + typedef storage3< A1, A2, A3 > base_type; + +public: + + list3( A1 a1, A2 a2, A3 a3 ): base_type( a1, a2, a3 ) {} + + A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + A2 operator[] (boost::arg<2>) const { return base_type::a2_; } + A3 operator[] (boost::arg<3>) const { return base_type::a3_; } + + A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } + A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } + + template T & operator[] (_bi::value & v) const { return v.get(); } + + template T const & operator[] (_bi::value const & v) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A & a, long) + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]); + } + + template R operator()(type, F const & f, A & a, long) const + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]); + } + + template void operator()(type, F & f, A & a, int) + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]); + } + + template void operator()(type, F const & f, A & a, int) const + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]); + } + + template void accept(V & v) const + { + base_type::accept(v); + } + + bool operator==(list3 const & rhs) const + { + return + + ref_compare( base_type::a1_, rhs.a1_, 0 ) && + ref_compare( base_type::a2_, rhs.a2_, 0 ) && + ref_compare( base_type::a3_, rhs.a3_, 0 ); + } +}; + +template< class A1, class A2, class A3, class A4 > class list4: private storage4< A1, A2, A3, A4 > +{ +private: + + typedef storage4< A1, A2, A3, A4 > base_type; + +public: + + list4( A1 a1, A2 a2, A3 a3, A4 a4 ): base_type( a1, a2, a3, a4 ) {} + + A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + A2 operator[] (boost::arg<2>) const { return base_type::a2_; } + A3 operator[] (boost::arg<3>) const { return base_type::a3_; } + A4 operator[] (boost::arg<4>) const { return base_type::a4_; } + + A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } + A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } + A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } + + template T & operator[] (_bi::value & v) const { return v.get(); } + + template T const & operator[] (_bi::value const & v) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A & a, long) + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]); + } + + template R operator()(type, F const & f, A & a, long) const + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]); + } + + template void operator()(type, F & f, A & a, int) + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]); + } + + template void operator()(type, F const & f, A & a, int) const + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]); + } + + template void accept(V & v) const + { + base_type::accept(v); + } + + bool operator==(list4 const & rhs) const + { + return + + ref_compare( base_type::a1_, rhs.a1_, 0 ) && + ref_compare( base_type::a2_, rhs.a2_, 0 ) && + ref_compare( base_type::a3_, rhs.a3_, 0 ) && + ref_compare( base_type::a4_, rhs.a4_, 0 ); + } +}; + +template< class A1, class A2, class A3, class A4, class A5 > class list5: private storage5< A1, A2, A3, A4, A5 > +{ +private: + + typedef storage5< A1, A2, A3, A4, A5 > base_type; + +public: + + list5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): base_type( a1, a2, a3, a4, a5 ) {} + + A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + A2 operator[] (boost::arg<2>) const { return base_type::a2_; } + A3 operator[] (boost::arg<3>) const { return base_type::a3_; } + A4 operator[] (boost::arg<4>) const { return base_type::a4_; } + A5 operator[] (boost::arg<5>) const { return base_type::a5_; } + + A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } + A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } + A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } + A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } + + template T & operator[] (_bi::value & v) const { return v.get(); } + + template T const & operator[] (_bi::value const & v) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A & a, long) + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]); + } + + template R operator()(type, F const & f, A & a, long) const + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]); + } + + template void operator()(type, F & f, A & a, int) + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]); + } + + template void operator()(type, F const & f, A & a, int) const + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]); + } + + template void accept(V & v) const + { + base_type::accept(v); + } + + bool operator==(list5 const & rhs) const + { + return + + ref_compare( base_type::a1_, rhs.a1_, 0 ) && + ref_compare( base_type::a2_, rhs.a2_, 0 ) && + ref_compare( base_type::a3_, rhs.a3_, 0 ) && + ref_compare( base_type::a4_, rhs.a4_, 0 ) && + ref_compare( base_type::a5_, rhs.a5_, 0 ); + } +}; + +template class list6: private storage6< A1, A2, A3, A4, A5, A6 > +{ +private: + + typedef storage6< A1, A2, A3, A4, A5, A6 > base_type; + +public: + + list6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): base_type( a1, a2, a3, a4, a5, a6 ) {} + + A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + A2 operator[] (boost::arg<2>) const { return base_type::a2_; } + A3 operator[] (boost::arg<3>) const { return base_type::a3_; } + A4 operator[] (boost::arg<4>) const { return base_type::a4_; } + A5 operator[] (boost::arg<5>) const { return base_type::a5_; } + A6 operator[] (boost::arg<6>) const { return base_type::a6_; } + + A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } + A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } + A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } + A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } + A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; } + + template T & operator[] (_bi::value & v) const { return v.get(); } + + template T const & operator[] (_bi::value const & v) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A & a, long) + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]); + } + + template R operator()(type, F const & f, A & a, long) const + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]); + } + + template void operator()(type, F & f, A & a, int) + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]); + } + + template void operator()(type, F const & f, A & a, int) const + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]); + } + + template void accept(V & v) const + { + base_type::accept(v); + } + + bool operator==(list6 const & rhs) const + { + return + + ref_compare( base_type::a1_, rhs.a1_, 0 ) && + ref_compare( base_type::a2_, rhs.a2_, 0 ) && + ref_compare( base_type::a3_, rhs.a3_, 0 ) && + ref_compare( base_type::a4_, rhs.a4_, 0 ) && + ref_compare( base_type::a5_, rhs.a5_, 0 ) && + ref_compare( base_type::a6_, rhs.a6_, 0 ); + } +}; + +template class list7: private storage7< A1, A2, A3, A4, A5, A6, A7 > +{ +private: + + typedef storage7< A1, A2, A3, A4, A5, A6, A7 > base_type; + +public: + + list7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): base_type( a1, a2, a3, a4, a5, a6, a7 ) {} + + A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + A2 operator[] (boost::arg<2>) const { return base_type::a2_; } + A3 operator[] (boost::arg<3>) const { return base_type::a3_; } + A4 operator[] (boost::arg<4>) const { return base_type::a4_; } + A5 operator[] (boost::arg<5>) const { return base_type::a5_; } + A6 operator[] (boost::arg<6>) const { return base_type::a6_; } + A7 operator[] (boost::arg<7>) const { return base_type::a7_; } + + A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } + A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } + A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } + A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } + A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; } + A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; } + + template T & operator[] (_bi::value & v) const { return v.get(); } + + template T const & operator[] (_bi::value const & v) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A & a, long) + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]); + } + + template R operator()(type, F const & f, A & a, long) const + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]); + } + + template void operator()(type, F & f, A & a, int) + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]); + } + + template void operator()(type, F const & f, A & a, int) const + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]); + } + + template void accept(V & v) const + { + base_type::accept(v); + } + + bool operator==(list7 const & rhs) const + { + return + + ref_compare( base_type::a1_, rhs.a1_, 0 ) && + ref_compare( base_type::a2_, rhs.a2_, 0 ) && + ref_compare( base_type::a3_, rhs.a3_, 0 ) && + ref_compare( base_type::a4_, rhs.a4_, 0 ) && + ref_compare( base_type::a5_, rhs.a5_, 0 ) && + ref_compare( base_type::a6_, rhs.a6_, 0 ) && + ref_compare( base_type::a7_, rhs.a7_, 0 ); + } +}; + +template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class list8: private storage8< A1, A2, A3, A4, A5, A6, A7, A8 > +{ +private: + + typedef storage8< A1, A2, A3, A4, A5, A6, A7, A8 > base_type; + +public: + + list8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8 ) {} + + A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + A2 operator[] (boost::arg<2>) const { return base_type::a2_; } + A3 operator[] (boost::arg<3>) const { return base_type::a3_; } + A4 operator[] (boost::arg<4>) const { return base_type::a4_; } + A5 operator[] (boost::arg<5>) const { return base_type::a5_; } + A6 operator[] (boost::arg<6>) const { return base_type::a6_; } + A7 operator[] (boost::arg<7>) const { return base_type::a7_; } + A8 operator[] (boost::arg<8>) const { return base_type::a8_; } + + A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } + A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } + A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } + A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } + A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; } + A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; } + A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; } + + template T & operator[] (_bi::value & v) const { return v.get(); } + + template T const & operator[] (_bi::value const & v) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A & a, long) + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]); + } + + template R operator()(type, F const & f, A & a, long) const + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]); + } + + template void operator()(type, F & f, A & a, int) + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]); + } + + template void operator()(type, F const & f, A & a, int) const + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]); + } + + template void accept(V & v) const + { + base_type::accept(v); + } + + bool operator==(list8 const & rhs) const + { + return + + ref_compare( base_type::a1_, rhs.a1_, 0 ) && + ref_compare( base_type::a2_, rhs.a2_, 0 ) && + ref_compare( base_type::a3_, rhs.a3_, 0 ) && + ref_compare( base_type::a4_, rhs.a4_, 0 ) && + ref_compare( base_type::a5_, rhs.a5_, 0 ) && + ref_compare( base_type::a6_, rhs.a6_, 0 ) && + ref_compare( base_type::a7_, rhs.a7_, 0 ) && + ref_compare( base_type::a8_, rhs.a8_, 0 ); + } +}; + +template class list9: private storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > +{ +private: + + typedef storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > base_type; + +public: + + list9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) {} + + A1 operator[] (boost::arg<1>) const { return base_type::a1_; } + A2 operator[] (boost::arg<2>) const { return base_type::a2_; } + A3 operator[] (boost::arg<3>) const { return base_type::a3_; } + A4 operator[] (boost::arg<4>) const { return base_type::a4_; } + A5 operator[] (boost::arg<5>) const { return base_type::a5_; } + A6 operator[] (boost::arg<6>) const { return base_type::a6_; } + A7 operator[] (boost::arg<7>) const { return base_type::a7_; } + A8 operator[] (boost::arg<8>) const { return base_type::a8_; } + A9 operator[] (boost::arg<9>) const { return base_type::a9_; } + + A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; } + A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; } + A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; } + A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; } + A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; } + A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; } + A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; } + A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; } + A9 operator[] (boost::arg<9> (*) ()) const { return base_type::a9_; } + + template T & operator[] (_bi::value & v) const { return v.get(); } + + template T const & operator[] (_bi::value const & v) const { return v.get(); } + + template T & operator[] (reference_wrapper const & v) const { return v.get(); } + + template typename result_traits::type operator[] (bind_t & b) const { return b.eval(*this); } + + template typename result_traits::type operator[] (bind_t const & b) const { return b.eval(*this); } + + template R operator()(type, F & f, A & a, long) + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]); + } + + template R operator()(type, F const & f, A & a, long) const + { + return unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]); + } + + template void operator()(type, F & f, A & a, int) + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]); + } + + template void operator()(type, F const & f, A & a, int) const + { + unwrapper::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]); + } + + template void accept(V & v) const + { + base_type::accept(v); + } + + bool operator==(list9 const & rhs) const + { + return + + ref_compare( base_type::a1_, rhs.a1_, 0 ) && + ref_compare( base_type::a2_, rhs.a2_, 0 ) && + ref_compare( base_type::a3_, rhs.a3_, 0 ) && + ref_compare( base_type::a4_, rhs.a4_, 0 ) && + ref_compare( base_type::a5_, rhs.a5_, 0 ) && + ref_compare( base_type::a6_, rhs.a6_, 0 ) && + ref_compare( base_type::a7_, rhs.a7_, 0 ) && + ref_compare( base_type::a8_, rhs.a8_, 0 ) && + ref_compare( base_type::a9_, rhs.a9_, 0 ); + } +}; + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +// bind_t + +#ifndef BOOST_NO_VOID_RETURNS + +template class bind_t +{ +public: + + typedef bind_t this_type; + + bind_t(F f, L const & l): f_(f), l_(l) {} + +#define BOOST_BIND_RETURN return +#include +#undef BOOST_BIND_RETURN + +}; + +#else + +template struct bind_t_generator +{ + +template class implementation +{ +public: + + typedef implementation this_type; + + implementation(F f, L const & l): f_(f), l_(l) {} + +#define BOOST_BIND_RETURN return +#include +#undef BOOST_BIND_RETURN + +}; + +}; + +template<> struct bind_t_generator +{ + +template class implementation +{ +private: + + typedef void R; + +public: + + typedef implementation this_type; + + implementation(F f, L const & l): f_(f), l_(l) {} + +#define BOOST_BIND_RETURN +#include +#undef BOOST_BIND_RETURN + +}; + +}; + +template class bind_t: public bind_t_generator::BOOST_NESTED_TEMPLATE implementation +{ +public: + + bind_t(F f, L const & l): bind_t_generator::BOOST_NESTED_TEMPLATE implementation(f, l) {} + +}; + +#endif + +// function_equal + +#ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP + +// put overloads in _bi, rely on ADL + +# ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING + +template bool function_equal( bind_t const & a, bind_t const & b ) +{ + return a.compare(b); +} + +# else + +template bool function_equal_impl( bind_t const & a, bind_t const & b, int ) +{ + return a.compare(b); +} + +# endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING + +#else // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP + +// put overloads in boost + +} // namespace _bi + +# ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING + +template bool function_equal( _bi::bind_t const & a, _bi::bind_t const & b ) +{ + return a.compare(b); +} + +# else + +template bool function_equal_impl( _bi::bind_t const & a, _bi::bind_t const & b, int ) +{ + return a.compare(b); +} + +# endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING + +namespace _bi +{ + +#endif // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP + +// add_value + +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || (__SUNPRO_CC >= 0x530) + +#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x582) ) + +template struct add_value +{ + typedef _bi::value type; +}; + +#else + +template< class T, int I > struct add_value_2 +{ + typedef boost::arg type; +}; + +template< class T > struct add_value_2< T, 0 > +{ + typedef _bi::value< T > type; +}; + +template struct add_value +{ + typedef typename add_value_2< T, boost::is_placeholder< T >::value >::type type; +}; + +#endif + +template struct add_value< value > +{ + typedef _bi::value type; +}; + +template struct add_value< reference_wrapper > +{ + typedef reference_wrapper type; +}; + +template struct add_value< arg > +{ + typedef boost::arg type; +}; + +template struct add_value< arg (*) () > +{ + typedef boost::arg (*type) (); +}; + +template struct add_value< bind_t > +{ + typedef bind_t type; +}; + +#else + +template struct _avt_0; + +template<> struct _avt_0<1> +{ + template struct inner + { + typedef T type; + }; +}; + +template<> struct _avt_0<2> +{ + template struct inner + { + typedef value type; + }; +}; + +typedef char (&_avt_r1) [1]; +typedef char (&_avt_r2) [2]; + +template _avt_r1 _avt_f(value); +template _avt_r1 _avt_f(reference_wrapper); +template _avt_r1 _avt_f(arg); +template _avt_r1 _avt_f(arg (*) ()); +template _avt_r1 _avt_f(bind_t); + +_avt_r2 _avt_f(...); + +template struct add_value +{ + static T t(); + typedef typename _avt_0::template inner::type type; +}; + +#endif + +// list_av_N + +template struct list_av_1 +{ + typedef typename add_value::type B1; + typedef list1 type; +}; + +template struct list_av_2 +{ + typedef typename add_value::type B1; + typedef typename add_value::type B2; + typedef list2 type; +}; + +template struct list_av_3 +{ + typedef typename add_value::type B1; + typedef typename add_value::type B2; + typedef typename add_value::type B3; + typedef list3 type; +}; + +template struct list_av_4 +{ + typedef typename add_value::type B1; + typedef typename add_value::type B2; + typedef typename add_value::type B3; + typedef typename add_value::type B4; + typedef list4 type; +}; + +template struct list_av_5 +{ + typedef typename add_value::type B1; + typedef typename add_value::type B2; + typedef typename add_value::type B3; + typedef typename add_value::type B4; + typedef typename add_value::type B5; + typedef list5 type; +}; + +template struct list_av_6 +{ + typedef typename add_value::type B1; + typedef typename add_value::type B2; + typedef typename add_value::type B3; + typedef typename add_value::type B4; + typedef typename add_value::type B5; + typedef typename add_value::type B6; + typedef list6 type; +}; + +template struct list_av_7 +{ + typedef typename add_value::type B1; + typedef typename add_value::type B2; + typedef typename add_value::type B3; + typedef typename add_value::type B4; + typedef typename add_value::type B5; + typedef typename add_value::type B6; + typedef typename add_value::type B7; + typedef list7 type; +}; + +template struct list_av_8 +{ + typedef typename add_value::type B1; + typedef typename add_value::type B2; + typedef typename add_value::type B3; + typedef typename add_value::type B4; + typedef typename add_value::type B5; + typedef typename add_value::type B6; + typedef typename add_value::type B7; + typedef typename add_value::type B8; + typedef list8 type; +}; + +template struct list_av_9 +{ + typedef typename add_value::type B1; + typedef typename add_value::type B2; + typedef typename add_value::type B3; + typedef typename add_value::type B4; + typedef typename add_value::type B5; + typedef typename add_value::type B6; + typedef typename add_value::type B7; + typedef typename add_value::type B8; + typedef typename add_value::type B9; + typedef list9 type; +}; + +// operator! + +struct logical_not +{ + template bool operator()(V const & v) const { return !v; } +}; + +template + bind_t< bool, logical_not, list1< bind_t > > + operator! (bind_t const & f) +{ + typedef list1< bind_t > list_type; + return bind_t ( logical_not(), list_type(f) ); +} + +// relational operators + +#define BOOST_BIND_OPERATOR( op, name ) \ +\ +struct name \ +{ \ + template bool operator()(V const & v, W const & w) const { return v op w; } \ +}; \ + \ +template \ + bind_t< bool, name, list2< bind_t, typename add_value::type > > \ + operator op (bind_t const & f, A2 a2) \ +{ \ + typedef typename add_value::type B2; \ + typedef list2< bind_t, B2> list_type; \ + return bind_t ( name(), list_type(f, a2) ); \ +} + +BOOST_BIND_OPERATOR( ==, equal ) +BOOST_BIND_OPERATOR( !=, not_equal ) + +BOOST_BIND_OPERATOR( <, less ) +BOOST_BIND_OPERATOR( <=, less_equal ) + +BOOST_BIND_OPERATOR( >, greater ) +BOOST_BIND_OPERATOR( >=, greater_equal ) + +BOOST_BIND_OPERATOR( &&, logical_and ) +BOOST_BIND_OPERATOR( ||, logical_or ) + +#undef BOOST_BIND_OPERATOR + +#if defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3) + +// resolve ambiguity with rel_ops + +#define BOOST_BIND_OPERATOR( op, name ) \ +\ +template \ + bind_t< bool, name, list2< bind_t, bind_t > > \ + operator op (bind_t const & f, bind_t const & g) \ +{ \ + typedef list2< bind_t, bind_t > list_type; \ + return bind_t ( name(), list_type(f, g) ); \ +} + +BOOST_BIND_OPERATOR( !=, not_equal ) +BOOST_BIND_OPERATOR( <=, less_equal ) +BOOST_BIND_OPERATOR( >, greater ) +BOOST_BIND_OPERATOR( >=, greater_equal ) + +#endif + +// visit_each, ADL + +#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ ) \ + && !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3) + +template void visit_each( V & v, value const & t, int ) +{ + using boost::visit_each; + BOOST_BIND_VISIT_EACH( v, t.get(), 0 ); +} + +template void visit_each( V & v, bind_t const & t, int ) +{ + t.accept( v ); +} + +#endif + +} // namespace _bi + +// visit_each, no ADL + +#if defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) || defined( __BORLANDC__ ) \ + || (defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3) + +template void visit_each( V & v, _bi::value const & t, int ) +{ + BOOST_BIND_VISIT_EACH( v, t.get(), 0 ); +} + +template void visit_each( V & v, _bi::bind_t const & t, int ) +{ + t.accept( v ); +} + +#endif + +// is_bind_expression + +template< class T > struct is_bind_expression +{ + enum _vt { value = 0 }; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template< class R, class F, class L > struct is_bind_expression< _bi::bind_t< R, F, L > > +{ + enum _vt { value = 1 }; +}; + +#endif + +// bind + +#ifndef BOOST_BIND +#define BOOST_BIND bind +#endif + +// generic function objects + +template + _bi::bind_t + BOOST_BIND(F f) +{ + typedef _bi::list0 list_type; + return _bi::bind_t (f, list_type()); +} + +template + _bi::bind_t::type> + BOOST_BIND(F f, A1 a1) +{ + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t (f, list_type(a1)); +} + +template + _bi::bind_t::type> + BOOST_BIND(F f, A1 a1, A2 a2) +{ + typedef typename _bi::list_av_2::type list_type; + return _bi::bind_t (f, list_type(a1, a2)); +} + +template + _bi::bind_t::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3) +{ + typedef typename _bi::list_av_3::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3)); +} + +template + _bi::bind_t::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4) +{ + typedef typename _bi::list_av_4::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4)); +} + +template + _bi::bind_t::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) +{ + typedef typename _bi::list_av_5::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5)); +} + +template + _bi::bind_t::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) +{ + typedef typename _bi::list_av_6::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6)); +} + +template + _bi::bind_t::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +{ + typedef typename _bi::list_av_7::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7)); +} + +template + _bi::bind_t::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) +{ + typedef typename _bi::list_av_8::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); +} + +template + _bi::bind_t::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) +{ + typedef typename _bi::list_av_9::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); +} + +// generic function objects, alternative syntax + +template + _bi::bind_t + BOOST_BIND(boost::type, F f) +{ + typedef _bi::list0 list_type; + return _bi::bind_t (f, list_type()); +} + +template + _bi::bind_t::type> + BOOST_BIND(boost::type, F f, A1 a1) +{ + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t (f, list_type(a1)); +} + +template + _bi::bind_t::type> + BOOST_BIND(boost::type, F f, A1 a1, A2 a2) +{ + typedef typename _bi::list_av_2::type list_type; + return _bi::bind_t (f, list_type(a1, a2)); +} + +template + _bi::bind_t::type> + BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3) +{ + typedef typename _bi::list_av_3::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3)); +} + +template + _bi::bind_t::type> + BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4) +{ + typedef typename _bi::list_av_4::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4)); +} + +template + _bi::bind_t::type> + BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) +{ + typedef typename _bi::list_av_5::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5)); +} + +template + _bi::bind_t::type> + BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) +{ + typedef typename _bi::list_av_6::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6)); +} + +template + _bi::bind_t::type> + BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +{ + typedef typename _bi::list_av_7::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7)); +} + +template + _bi::bind_t::type> + BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) +{ + typedef typename _bi::list_av_8::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); +} + +template + _bi::bind_t::type> + BOOST_BIND(boost::type, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) +{ + typedef typename _bi::list_av_9::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); +} + +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) + +// adaptable function objects + +template + _bi::bind_t<_bi::unspecified, F, _bi::list0> + BOOST_BIND(F f) +{ + typedef _bi::list0 list_type; + return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type()); +} + +template + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_1::type> + BOOST_BIND(F f, A1 a1) +{ + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1)); +} + +template + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_2::type> + BOOST_BIND(F f, A1 a1, A2 a2) +{ + typedef typename _bi::list_av_2::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1, a2)); +} + +template + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_3::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3) +{ + typedef typename _bi::list_av_3::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3)); +} + +template + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_4::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4) +{ + typedef typename _bi::list_av_4::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4)); +} + +template + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_5::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) +{ + typedef typename _bi::list_av_5::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5)); +} + +template + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_6::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) +{ + typedef typename _bi::list_av_6::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6)); +} + +template + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_7::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +{ + typedef typename _bi::list_av_7::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7)); +} + +template + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_8::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) +{ + typedef typename _bi::list_av_8::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); +} + +template + _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_9::type> + BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) +{ + typedef typename _bi::list_av_9::type list_type; + return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); +} + +#endif // !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) + +// function pointers + +#define BOOST_BIND_CC +#define BOOST_BIND_ST + +#include + +#undef BOOST_BIND_CC +#undef BOOST_BIND_ST + +#ifdef BOOST_BIND_ENABLE_STDCALL + +#define BOOST_BIND_CC __stdcall +#define BOOST_BIND_ST + +#include + +#undef BOOST_BIND_CC +#undef BOOST_BIND_ST + +#endif + +#ifdef BOOST_BIND_ENABLE_FASTCALL + +#define BOOST_BIND_CC __fastcall +#define BOOST_BIND_ST + +#include + +#undef BOOST_BIND_CC +#undef BOOST_BIND_ST + +#endif + +#ifdef BOOST_BIND_ENABLE_PASCAL + +#define BOOST_BIND_ST pascal +#define BOOST_BIND_CC + +#include + +#undef BOOST_BIND_ST +#undef BOOST_BIND_CC + +#endif + +// member function pointers + +#define BOOST_BIND_MF_NAME(X) X +#define BOOST_BIND_MF_CC + +#include +#include + +#undef BOOST_BIND_MF_NAME +#undef BOOST_BIND_MF_CC + +#ifdef BOOST_MEM_FN_ENABLE_CDECL + +#define BOOST_BIND_MF_NAME(X) X##_cdecl +#define BOOST_BIND_MF_CC __cdecl + +#include +#include + +#undef BOOST_BIND_MF_NAME +#undef BOOST_BIND_MF_CC + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_STDCALL + +#define BOOST_BIND_MF_NAME(X) X##_stdcall +#define BOOST_BIND_MF_CC __stdcall + +#include +#include + +#undef BOOST_BIND_MF_NAME +#undef BOOST_BIND_MF_CC + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_FASTCALL + +#define BOOST_BIND_MF_NAME(X) X##_fastcall +#define BOOST_BIND_MF_CC __fastcall + +#include +#include + +#undef BOOST_BIND_MF_NAME +#undef BOOST_BIND_MF_CC + +#endif + +// data member pointers + +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + || ( defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x620 ) ) ) + +template +_bi::bind_t< R, _mfi::dm, typename _bi::list_av_1::type > + BOOST_BIND(R T::*f, A1 a1) +{ + typedef _mfi::dm F; + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t( F(f), list_type(a1) ); +} + +#else + +namespace _bi +{ + +template< class Pm, int I > struct add_cref; + +template< class M, class T > struct add_cref< M T::*, 0 > +{ + typedef M type; +}; + +template< class M, class T > struct add_cref< M T::*, 1 > +{ +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4180) +#endif + typedef M const & type; +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif +}; + +template< class R, class T > struct add_cref< R (T::*) (), 1 > +{ + typedef void type; +}; + +#if !defined(__IBMCPP__) || __IBMCPP_FUNC_CV_TMPL_ARG_DEDUCTION + +template< class R, class T > struct add_cref< R (T::*) () const, 1 > +{ + typedef void type; +}; + +#endif // __IBMCPP__ + +template struct isref +{ + enum value_type { value = 0 }; +}; + +template struct isref< R& > +{ + enum value_type { value = 1 }; +}; + +template struct isref< R* > +{ + enum value_type { value = 1 }; +}; + +template struct dm_result +{ + typedef typename add_cref< Pm, 1 >::type type; +}; + +template struct dm_result< Pm, bind_t > +{ + typedef typename bind_t::result_type result_type; + typedef typename add_cref< Pm, isref< result_type >::value >::type type; +}; + +} // namespace _bi + +template< class A1, class M, class T > + +_bi::bind_t< + typename _bi::dm_result< M T::*, A1 >::type, + _mfi::dm, + typename _bi::list_av_1::type +> + +BOOST_BIND( M T::*f, A1 a1 ) +{ + typedef typename _bi::dm_result< M T::*, A1 >::type result_type; + typedef _mfi::dm F; + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t< result_type, F, list_type >( F( f ), list_type( a1 ) ); +} + +#endif + +} // namespace boost + +#ifndef BOOST_BIND_NO_PLACEHOLDERS + +# include + +#endif + +#ifdef BOOST_MSVC +# pragma warning(default: 4512) // assignment operator could not be generated +# pragma warning(pop) +#endif + +#endif // #ifndef BOOST_BIND_BIND_HPP_INCLUDED diff --git a/contrib/prebuilt/include/boost/bind/bind_cc.hpp b/contrib/prebuilt/include/boost/bind/bind_cc.hpp new file mode 100644 index 0000000..35f8ece --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/bind_cc.hpp @@ -0,0 +1,117 @@ +// +// bind/bind_cc.hpp - support for different calling conventions +// +// Do not include this header directly. +// +// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +template + _bi::bind_t + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) ()) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (); + typedef _bi::list0 list_type; + return _bi::bind_t (f, list_type()); +} + +template + _bi::bind_t::type> + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1), A1 a1) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1); + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t (f, list_type(a1)); +} + +template + _bi::bind_t::type> + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2), A1 a1, A2 a2) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2); + typedef typename _bi::list_av_2::type list_type; + return _bi::bind_t (f, list_type(a1, a2)); +} + +template + _bi::bind_t::type> + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3), A1 a1, A2 a2, A3 a3) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3); + typedef typename _bi::list_av_3::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3)); +} + +template + _bi::bind_t::type> + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4); + typedef typename _bi::list_av_4::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4)); +} + +template + _bi::bind_t::type> + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5); + typedef typename _bi::list_av_5::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5)); +} + +template + _bi::bind_t::type> + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6); + typedef typename _bi::list_av_6::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6)); +} + +template + _bi::bind_t::type> + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7); + typedef typename _bi::list_av_7::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7)); +} + +template + _bi::bind_t::type> + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8); + typedef typename _bi::list_av_8::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8)); +} + +template + _bi::bind_t::type> + BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8, B9), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) +{ + typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8, B9); + typedef typename _bi::list_av_9::type list_type; + return _bi::bind_t(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); +} diff --git a/contrib/prebuilt/include/boost/bind/bind_mf2_cc.hpp b/contrib/prebuilt/include/boost/bind/bind_mf2_cc.hpp new file mode 100644 index 0000000..66476bc --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/bind_mf2_cc.hpp @@ -0,0 +1,228 @@ +// +// bind/bind_mf2_cc.hpp - member functions, type<> syntax +// +// Do not include this header directly. +// +// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. +// Copyright (c) 2008 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +// 0 + +template + _bi::bind_t, typename _bi::list_av_1::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (), A1 a1) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf0) F; + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t(F(f), list_type(a1)); +} + +template + _bi::bind_t, typename _bi::list_av_1::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) () const, A1 a1) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf0) F; + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t(F(f), list_type(a1)); +} + +// 1 + +template + _bi::bind_t, typename _bi::list_av_2::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf1) F; + typedef typename _bi::list_av_2::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2)); +} + +template + _bi::bind_t, typename _bi::list_av_2::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf1) F; + typedef typename _bi::list_av_2::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2)); +} + +// 2 + +template + _bi::bind_t, typename _bi::list_av_3::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf2) F; + typedef typename _bi::list_av_3::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3)); +} + +template + _bi::bind_t, typename _bi::list_av_3::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf2) F; + typedef typename _bi::list_av_3::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3)); +} + +// 3 + +template + _bi::bind_t, typename _bi::list_av_4::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf3) F; + typedef typename _bi::list_av_4::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); +} + +template + _bi::bind_t, typename _bi::list_av_4::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf3) F; + typedef typename _bi::list_av_4::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); +} + +// 4 + +template + _bi::bind_t, typename _bi::list_av_5::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf4) F; + typedef typename _bi::list_av_5::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); +} + +template + _bi::bind_t, typename _bi::list_av_5::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf4) F; + typedef typename _bi::list_av_5::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); +} + +// 5 + +template + _bi::bind_t, typename _bi::list_av_6::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf5) F; + typedef typename _bi::list_av_6::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); +} + +template + _bi::bind_t, typename _bi::list_av_6::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf5) F; + typedef typename _bi::list_av_6::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); +} + +// 6 + +template + _bi::bind_t, typename _bi::list_av_7::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf6) F; + typedef typename _bi::list_av_7::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); +} + +template + _bi::bind_t, typename _bi::list_av_7::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf6) F; + typedef typename _bi::list_av_7::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); +} + +// 7 + +template + _bi::bind_t, typename _bi::list_av_8::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf7) F; + typedef typename _bi::list_av_8::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); +} + +template + _bi::bind_t, typename _bi::list_av_8::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf7) F; + typedef typename _bi::list_av_8::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); +} + +// 8 + +template + _bi::bind_t, typename _bi::list_av_9::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf8) F; + typedef typename _bi::list_av_9::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); +} + +template + _bi::bind_t, typename _bi::list_av_9::type> + BOOST_BIND(boost::type, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf8) F; + typedef typename _bi::list_av_9::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); +} diff --git a/contrib/prebuilt/include/boost/bind/bind_mf_cc.hpp b/contrib/prebuilt/include/boost/bind/bind_mf_cc.hpp new file mode 100644 index 0000000..88be822 --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/bind_mf_cc.hpp @@ -0,0 +1,227 @@ +// +// bind/bind_mf_cc.hpp - support for different calling conventions +// +// Do not include this header directly. +// +// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +// 0 + +template + _bi::bind_t, typename _bi::list_av_1::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf0) F; + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t(F(f), list_type(a1)); +} + +template + _bi::bind_t, typename _bi::list_av_1::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf0) F; + typedef typename _bi::list_av_1::type list_type; + return _bi::bind_t(F(f), list_type(a1)); +} + +// 1 + +template + _bi::bind_t, typename _bi::list_av_2::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf1) F; + typedef typename _bi::list_av_2::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2)); +} + +template + _bi::bind_t, typename _bi::list_av_2::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf1) F; + typedef typename _bi::list_av_2::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2)); +} + +// 2 + +template + _bi::bind_t, typename _bi::list_av_3::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf2) F; + typedef typename _bi::list_av_3::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3)); +} + +template + _bi::bind_t, typename _bi::list_av_3::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf2) F; + typedef typename _bi::list_av_3::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3)); +} + +// 3 + +template + _bi::bind_t, typename _bi::list_av_4::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf3) F; + typedef typename _bi::list_av_4::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); +} + +template + _bi::bind_t, typename _bi::list_av_4::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf3) F; + typedef typename _bi::list_av_4::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4)); +} + +// 4 + +template + _bi::bind_t, typename _bi::list_av_5::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf4) F; + typedef typename _bi::list_av_5::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); +} + +template + _bi::bind_t, typename _bi::list_av_5::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf4) F; + typedef typename _bi::list_av_5::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5)); +} + +// 5 + +template + _bi::bind_t, typename _bi::list_av_6::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf5) F; + typedef typename _bi::list_av_6::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); +} + +template + _bi::bind_t, typename _bi::list_av_6::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf5) F; + typedef typename _bi::list_av_6::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6)); +} + +// 6 + +template + _bi::bind_t, typename _bi::list_av_7::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf6) F; + typedef typename _bi::list_av_7::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); +} + +template + _bi::bind_t, typename _bi::list_av_7::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf6) F; + typedef typename _bi::list_av_7::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7)); +} + +// 7 + +template + _bi::bind_t, typename _bi::list_av_8::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf7) F; + typedef typename _bi::list_av_8::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); +} + +template + _bi::bind_t, typename _bi::list_av_8::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf7) F; + typedef typename _bi::list_av_8::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8)); +} + +// 8 + +template + _bi::bind_t, typename _bi::list_av_9::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) +{ + typedef _mfi::BOOST_BIND_MF_NAME(mf8) F; + typedef typename _bi::list_av_9::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); +} + +template + _bi::bind_t, typename _bi::list_av_9::type> + BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) +{ + typedef _mfi::BOOST_BIND_MF_NAME(cmf8) F; + typedef typename _bi::list_av_9::type list_type; + return _bi::bind_t(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)); +} diff --git a/contrib/prebuilt/include/boost/bind/bind_template.hpp b/contrib/prebuilt/include/boost/bind/bind_template.hpp new file mode 100644 index 0000000..411d20c --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/bind_template.hpp @@ -0,0 +1,345 @@ +// +// bind/bind_template.hpp +// +// Do not include this header directly. +// +// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + + typedef typename result_traits::type result_type; + + result_type operator()() + { + list0 a; + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + result_type operator()() const + { + list0 a; + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1) + { + list1 a(a1); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1) const + { + list1 a(a1); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) + + template result_type operator()(A1 const & a1) + { + list1 a(a1); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1) const + { + list1 a(a1); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#endif + + template result_type operator()(A1 & a1, A2 & a2) + { + list2 a(a1, a2); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1, A2 & a2) const + { + list2 a(a1, a2); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) + + template result_type operator()(A1 const & a1, A2 & a2) + { + list2 a(a1, a2); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1, A2 & a2) const + { + list2 a(a1, a2); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + + template result_type operator()(A1 & a1, A2 const & a2) + { + list2 a(a1, a2); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1, A2 const & a2) const + { + list2 a(a1, a2); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + + template result_type operator()(A1 const & a1, A2 const & a2) + { + list2 a(a1, a2); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1, A2 const & a2) const + { + list2 a(a1, a2); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#endif + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3) + { + list3 a(a1, a2, a3); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3) const + { + list3 a(a1, a2, a3); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) + { + list3 a(a1, a2, a3); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) const + { + list3 a(a1, a2, a3); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#endif + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) + { + list4 a(a1, a2, a3, a4); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const + { + list4 a(a1, a2, a3, a4); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) + { + list4 a(a1, a2, a3, a4); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) const + { + list4 a(a1, a2, a3, a4); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#endif + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) + { + list5 a(a1, a2, a3, a4, a5); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const + { + list5 a(a1, a2, a3, a4, a5); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) + { + list5 a(a1, a2, a3, a4, a5); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) const + { + list5 a(a1, a2, a3, a4, a5); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#endif + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) + { + list6 a(a1, a2, a3, a4, a5, a6); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const + { + list6 a(a1, a2, a3, a4, a5, a6); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) + { + list6 a(a1, a2, a3, a4, a5, a6); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) const + { + list6 a(a1, a2, a3, a4, a5, a6); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#endif + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) + { + list7 a(a1, a2, a3, a4, a5, a6, a7); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const + { + list7 a(a1, a2, a3, a4, a5, a6, a7); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) + { + list7 a(a1, a2, a3, a4, a5, a6, a7); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) const + { + list7 a(a1, a2, a3, a4, a5, a6, a7); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#endif + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) + { + list8 a(a1, a2, a3, a4, a5, a6, a7, a8); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const + { + list8 a(a1, a2, a3, a4, a5, a6, a7, a8); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) + { + list8 a(a1, a2, a3, a4, a5, a6, a7, a8); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) const + { + list8 a(a1, a2, a3, a4, a5, a6, a7, a8); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#endif + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) + { + list9 a(a1, a2, a3, a4, a5, a6, a7, a8, a9); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const + { + list9 a(a1, a2, a3, a4, a5, a6, a7, a8, a9); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \ + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238) + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) + { + list9 a(a1, a2, a3, a4, a5, a6, a7, a8, a9); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) const + { + list9 a(a1, a2, a3, a4, a5, a6, a7, a8, a9); + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + +#endif + + template result_type eval(A & a) + { + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template result_type eval(A & a) const + { + BOOST_BIND_RETURN l_(type(), f_, a, 0); + } + + template void accept(V & v) const + { +#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ ) + + using boost::visit_each; + +#endif + BOOST_BIND_VISIT_EACH(v, f_, 0); + l_.accept(v); + } + + bool compare(this_type const & rhs) const + { + return ref_compare(f_, rhs.f_, 0) && l_ == rhs.l_; + } + +private: + + F f_; + L l_; diff --git a/contrib/prebuilt/include/boost/bind/mem_fn.hpp b/contrib/prebuilt/include/boost/bind/mem_fn.hpp new file mode 100644 index 0000000..956e7d8 --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/mem_fn.hpp @@ -0,0 +1,389 @@ +#ifndef BOOST_BIND_MEM_FN_HPP_INCLUDED +#define BOOST_BIND_MEM_FN_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// mem_fn.hpp - a generalization of std::mem_fun[_ref] +// +// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. +// Copyright (c) 2001 David Abrahams +// Copyright (c) 2003-2005 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/mem_fn.html for documentation. +// + +#include +#include +#include + +namespace boost +{ + +#if defined(BOOST_NO_VOID_RETURNS) + +#define BOOST_MEM_FN_CLASS_F , class F +#define BOOST_MEM_FN_TYPEDEF(X) + +namespace _mfi // mem_fun_impl +{ + +template struct mf +{ + +#define BOOST_MEM_FN_RETURN return + +#define BOOST_MEM_FN_NAME(X) inner_##X +#define BOOST_MEM_FN_CC + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#ifdef BOOST_MEM_FN_ENABLE_CDECL + +#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl +#define BOOST_MEM_FN_CC __cdecl + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_STDCALL + +#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall +#define BOOST_MEM_FN_CC __stdcall + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_FASTCALL + +#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall +#define BOOST_MEM_FN_CC __fastcall + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#endif + +#undef BOOST_MEM_FN_RETURN + +}; // struct mf + +template<> struct mf +{ + +#define BOOST_MEM_FN_RETURN + +#define BOOST_MEM_FN_NAME(X) inner_##X +#define BOOST_MEM_FN_CC + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#ifdef BOOST_MEM_FN_ENABLE_CDECL + +#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl +#define BOOST_MEM_FN_CC __cdecl + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_STDCALL + +#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall +#define BOOST_MEM_FN_CC __stdcall + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_FASTCALL + +#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall +#define BOOST_MEM_FN_CC __fastcall + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#endif + +#undef BOOST_MEM_FN_RETURN + +}; // struct mf + +#undef BOOST_MEM_FN_CLASS_F +#undef BOOST_MEM_FN_TYPEDEF_F + +#define BOOST_MEM_FN_NAME(X) X +#define BOOST_MEM_FN_NAME2(X) inner_##X +#define BOOST_MEM_FN_CC + +#include + +#undef BOOST_MEM_FN_NAME +#undef BOOST_MEM_FN_NAME2 +#undef BOOST_MEM_FN_CC + +#ifdef BOOST_MEM_FN_ENABLE_CDECL + +#define BOOST_MEM_FN_NAME(X) X##_cdecl +#define BOOST_MEM_FN_NAME2(X) inner_##X##_cdecl +#define BOOST_MEM_FN_CC __cdecl + +#include + +#undef BOOST_MEM_FN_NAME +#undef BOOST_MEM_FN_NAME2 +#undef BOOST_MEM_FN_CC + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_STDCALL + +#define BOOST_MEM_FN_NAME(X) X##_stdcall +#define BOOST_MEM_FN_NAME2(X) inner_##X##_stdcall +#define BOOST_MEM_FN_CC __stdcall + +#include + +#undef BOOST_MEM_FN_NAME +#undef BOOST_MEM_FN_NAME2 +#undef BOOST_MEM_FN_CC + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_FASTCALL + +#define BOOST_MEM_FN_NAME(X) X##_fastcall +#define BOOST_MEM_FN_NAME2(X) inner_##X##_fastcall +#define BOOST_MEM_FN_CC __fastcall + +#include + +#undef BOOST_MEM_FN_NAME +#undef BOOST_MEM_FN_NAME2 +#undef BOOST_MEM_FN_CC + +#endif + +} // namespace _mfi + +#else // #ifdef BOOST_NO_VOID_RETURNS + +#define BOOST_MEM_FN_CLASS_F +#define BOOST_MEM_FN_TYPEDEF(X) typedef X; + +namespace _mfi +{ + +#define BOOST_MEM_FN_RETURN return + +#define BOOST_MEM_FN_NAME(X) X +#define BOOST_MEM_FN_CC + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#ifdef BOOST_MEM_FN_ENABLE_CDECL + +#define BOOST_MEM_FN_NAME(X) X##_cdecl +#define BOOST_MEM_FN_CC __cdecl + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_STDCALL + +#define BOOST_MEM_FN_NAME(X) X##_stdcall +#define BOOST_MEM_FN_CC __stdcall + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_FASTCALL + +#define BOOST_MEM_FN_NAME(X) X##_fastcall +#define BOOST_MEM_FN_CC __fastcall + +#include + +#undef BOOST_MEM_FN_CC +#undef BOOST_MEM_FN_NAME + +#endif + +#undef BOOST_MEM_FN_RETURN + +} // namespace _mfi + +#undef BOOST_MEM_FN_CLASS_F +#undef BOOST_MEM_FN_TYPEDEF + +#endif // #ifdef BOOST_NO_VOID_RETURNS + +#define BOOST_MEM_FN_NAME(X) X +#define BOOST_MEM_FN_CC + +#include + +#undef BOOST_MEM_FN_NAME +#undef BOOST_MEM_FN_CC + +#ifdef BOOST_MEM_FN_ENABLE_CDECL + +#define BOOST_MEM_FN_NAME(X) X##_cdecl +#define BOOST_MEM_FN_CC __cdecl + +#include + +#undef BOOST_MEM_FN_NAME +#undef BOOST_MEM_FN_CC + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_STDCALL + +#define BOOST_MEM_FN_NAME(X) X##_stdcall +#define BOOST_MEM_FN_CC __stdcall + +#include + +#undef BOOST_MEM_FN_NAME +#undef BOOST_MEM_FN_CC + +#endif + +#ifdef BOOST_MEM_FN_ENABLE_FASTCALL + +#define BOOST_MEM_FN_NAME(X) X##_fastcall +#define BOOST_MEM_FN_CC __fastcall + +#include + +#undef BOOST_MEM_FN_NAME +#undef BOOST_MEM_FN_CC + +#endif + +// data member support + +namespace _mfi +{ + +template class dm +{ +public: + + typedef R const & result_type; + typedef T const * argument_type; + +private: + + typedef R (T::*F); + F f_; + + template R const & call(U & u, T const *) const + { + return (u.*f_); + } + + template R const & call(U & u, void const *) const + { + return (get_pointer(u)->*f_); + } + +public: + + explicit dm(F f): f_(f) {} + + R & operator()(T * p) const + { + return (p->*f_); + } + + R const & operator()(T const * p) const + { + return (p->*f_); + } + + template R const & operator()(U const & u) const + { + return call(u, &u); + } + +#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) && !BOOST_WORKAROUND(__MWERKS__, < 0x3200) + + R & operator()(T & t) const + { + return (t.*f_); + } + + R const & operator()(T const & t) const + { + return (t.*f_); + } + +#endif + + bool operator==(dm const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(dm const & rhs) const + { + return f_ != rhs.f_; + } +}; + +} // namespace _mfi + +template _mfi::dm mem_fn(R T::*f) +{ + return _mfi::dm(f); +} + +} // namespace boost + +#endif // #ifndef BOOST_BIND_MEM_FN_HPP_INCLUDED diff --git a/contrib/prebuilt/include/boost/bind/mem_fn_cc.hpp b/contrib/prebuilt/include/boost/bind/mem_fn_cc.hpp new file mode 100644 index 0000000..8b6ea0b --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/mem_fn_cc.hpp @@ -0,0 +1,103 @@ +// +// bind/mem_fn_cc.hpp - support for different calling conventions +// +// Do not include this header directly. +// +// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/mem_fn.html for documentation. +// + +template _mfi::BOOST_MEM_FN_NAME(mf0) mem_fn(R (BOOST_MEM_FN_CC T::*f) ()) +{ + return _mfi::BOOST_MEM_FN_NAME(mf0)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(cmf0) mem_fn(R (BOOST_MEM_FN_CC T::*f) () const) +{ + return _mfi::BOOST_MEM_FN_NAME(cmf0)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(mf1) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1)) +{ + return _mfi::BOOST_MEM_FN_NAME(mf1)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(cmf1) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1) const) +{ + return _mfi::BOOST_MEM_FN_NAME(cmf1)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(mf2) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2)) +{ + return _mfi::BOOST_MEM_FN_NAME(mf2)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(cmf2) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2) const) +{ + return _mfi::BOOST_MEM_FN_NAME(cmf2)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(mf3) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3)) +{ + return _mfi::BOOST_MEM_FN_NAME(mf3)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(cmf3) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3) const) +{ + return _mfi::BOOST_MEM_FN_NAME(cmf3)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(mf4) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4)) +{ + return _mfi::BOOST_MEM_FN_NAME(mf4)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(cmf4) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4) const) +{ + return _mfi::BOOST_MEM_FN_NAME(cmf4)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(mf5) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5)) +{ + return _mfi::BOOST_MEM_FN_NAME(mf5)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(cmf5) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5) const) +{ + return _mfi::BOOST_MEM_FN_NAME(cmf5)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(mf6) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6)) +{ + return _mfi::BOOST_MEM_FN_NAME(mf6)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(cmf6) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6) const) +{ + return _mfi::BOOST_MEM_FN_NAME(cmf6)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(mf7) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7)) +{ + return _mfi::BOOST_MEM_FN_NAME(mf7)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(cmf7) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7) const) +{ + return _mfi::BOOST_MEM_FN_NAME(cmf7)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(mf8) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8)) +{ + return _mfi::BOOST_MEM_FN_NAME(mf8)(f); +} + +template _mfi::BOOST_MEM_FN_NAME(cmf8) mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) const) +{ + return _mfi::BOOST_MEM_FN_NAME(cmf8)(f); +} diff --git a/contrib/prebuilt/include/boost/bind/mem_fn_template.hpp b/contrib/prebuilt/include/boost/bind/mem_fn_template.hpp new file mode 100644 index 0000000..b26d585 --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/mem_fn_template.hpp @@ -0,0 +1,1047 @@ +// +// bind/mem_fn_template.hpp +// +// Do not include this header directly +// +// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/mem_fn.html for documentation. +// + +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) +# define BOOST_MEM_FN_ENABLE_CONST_OVERLOADS +#endif + +// mf0 + +template class BOOST_MEM_FN_NAME(mf0) +{ +public: + + typedef R result_type; + typedef T * argument_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) ()) + F f_; + + template R call(U & u, T const *) const + { + BOOST_MEM_FN_RETURN (u.*f_)(); + } + + template R call(U & u, void const *) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(); + } + +public: + + explicit BOOST_MEM_FN_NAME(mf0)(F f): f_(f) {} + + R operator()(T * p) const + { + BOOST_MEM_FN_RETURN (p->*f_)(); + } + + template R operator()(U & u) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p); + } + +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS + + template R operator()(U const & u) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p); + } + +#endif + + R operator()(T & t) const + { + BOOST_MEM_FN_RETURN (t.*f_)(); + } + + bool operator==(BOOST_MEM_FN_NAME(mf0) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(mf0) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// cmf0 + +template class BOOST_MEM_FN_NAME(cmf0) +{ +public: + + typedef R result_type; + typedef T const * argument_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) () const) + F f_; + + template R call(U & u, T const *) const + { + BOOST_MEM_FN_RETURN (u.*f_)(); + } + + template R call(U & u, void const *) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(); + } + +public: + + explicit BOOST_MEM_FN_NAME(cmf0)(F f): f_(f) {} + + template R operator()(U const & u) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p); + } + + R operator()(T const & t) const + { + BOOST_MEM_FN_RETURN (t.*f_)(); + } + + bool operator==(BOOST_MEM_FN_NAME(cmf0) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(cmf0) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// mf1 + +template class BOOST_MEM_FN_NAME(mf1) +{ +public: + + typedef R result_type; + typedef T * first_argument_type; + typedef A1 second_argument_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1)) + F f_; + + template R call(U & u, T const *, B1 & b1) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1); + } + + template R call(U & u, void const *, B1 & b1) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1); + } + +public: + + explicit BOOST_MEM_FN_NAME(mf1)(F f): f_(f) {} + + R operator()(T * p, A1 a1) const + { + BOOST_MEM_FN_RETURN (p->*f_)(a1); + } + + template R operator()(U & u, A1 a1) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1); + } + +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS + + template R operator()(U const & u, A1 a1) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1); + } + +#endif + + R operator()(T & t, A1 a1) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1); + } + + bool operator==(BOOST_MEM_FN_NAME(mf1) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(mf1) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// cmf1 + +template class BOOST_MEM_FN_NAME(cmf1) +{ +public: + + typedef R result_type; + typedef T const * first_argument_type; + typedef A1 second_argument_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1) const) + F f_; + + template R call(U & u, T const *, B1 & b1) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1); + } + + template R call(U & u, void const *, B1 & b1) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1); + } + +public: + + explicit BOOST_MEM_FN_NAME(cmf1)(F f): f_(f) {} + + template R operator()(U const & u, A1 a1) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1); + } + + R operator()(T const & t, A1 a1) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1); + } + + bool operator==(BOOST_MEM_FN_NAME(cmf1) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(cmf1) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// mf2 + +template class BOOST_MEM_FN_NAME(mf2) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2)) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2); + } + +public: + + explicit BOOST_MEM_FN_NAME(mf2)(F f): f_(f) {} + + R operator()(T * p, A1 a1, A2 a2) const + { + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2); + } + + template R operator()(U & u, A1 a1, A2 a2) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2); + } + +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS + + template R operator()(U const & u, A1 a1, A2 a2) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2); + } + +#endif + + R operator()(T & t, A1 a1, A2 a2) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2); + } + + bool operator==(BOOST_MEM_FN_NAME(mf2) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(mf2) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// cmf2 + +template class BOOST_MEM_FN_NAME(cmf2) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2) const) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2); + } + +public: + + explicit BOOST_MEM_FN_NAME(cmf2)(F f): f_(f) {} + + template R operator()(U const & u, A1 a1, A2 a2) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2); + } + + R operator()(T const & t, A1 a1, A2 a2) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2); + } + + bool operator==(BOOST_MEM_FN_NAME(cmf2) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(cmf2) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// mf3 + +template class BOOST_MEM_FN_NAME(mf3) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3)) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3); + } + +public: + + explicit BOOST_MEM_FN_NAME(mf3)(F f): f_(f) {} + + R operator()(T * p, A1 a1, A2 a2, A3 a3) const + { + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3); + } + + template R operator()(U & u, A1 a1, A2 a2, A3 a3) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3); + } + +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3); + } + +#endif + + R operator()(T & t, A1 a1, A2 a2, A3 a3) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3); + } + + bool operator==(BOOST_MEM_FN_NAME(mf3) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(mf3) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// cmf3 + +template class BOOST_MEM_FN_NAME(cmf3) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3); + } + +public: + + explicit BOOST_MEM_FN_NAME(cmf3)(F f): f_(f) {} + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3); + } + + R operator()(T const & t, A1 a1, A2 a2, A3 a3) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3); + } + + bool operator==(BOOST_MEM_FN_NAME(cmf3) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(cmf3) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// mf4 + +template class BOOST_MEM_FN_NAME(mf4) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4)) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4); + } + +public: + + explicit BOOST_MEM_FN_NAME(mf4)(F f): f_(f) {} + + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const + { + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4); + } + + template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4); + } + +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4); + } + +#endif + + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4); + } + + bool operator==(BOOST_MEM_FN_NAME(mf4) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(mf4) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// cmf4 + +template class BOOST_MEM_FN_NAME(cmf4) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4); + } + +public: + + explicit BOOST_MEM_FN_NAME(cmf4)(F f): f_(f) {} + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4); + } + + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4); + } + + bool operator==(BOOST_MEM_FN_NAME(cmf4) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(cmf4) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// mf5 + +template class BOOST_MEM_FN_NAME(mf5) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5)) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5); + } + +public: + + explicit BOOST_MEM_FN_NAME(mf5)(F f): f_(f) {} + + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const + { + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5); + } + + template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5); + } + +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5); + } + +#endif + + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5); + } + + bool operator==(BOOST_MEM_FN_NAME(mf5) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(mf5) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// cmf5 + +template class BOOST_MEM_FN_NAME(cmf5) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5); + } + +public: + + explicit BOOST_MEM_FN_NAME(cmf5)(F f): f_(f) {} + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5); + } + + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5); + } + + bool operator==(BOOST_MEM_FN_NAME(cmf5) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(cmf5) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// mf6 + +template class BOOST_MEM_FN_NAME(mf6) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6)) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6); + } + +public: + + explicit BOOST_MEM_FN_NAME(mf6)(F f): f_(f) {} + + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const + { + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6); + } + + template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6); + } + +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6); + } + +#endif + + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6); + } + + bool operator==(BOOST_MEM_FN_NAME(mf6) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(mf6) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// cmf6 + +template class BOOST_MEM_FN_NAME(cmf6) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6); + } + +public: + + explicit BOOST_MEM_FN_NAME(cmf6)(F f): f_(f) {} + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6); + } + + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6); + } + + bool operator==(BOOST_MEM_FN_NAME(cmf6) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(cmf6) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// mf7 + +template class BOOST_MEM_FN_NAME(mf7) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7)) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7); + } + +public: + + explicit BOOST_MEM_FN_NAME(mf7)(F f): f_(f) {} + + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const + { + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7); + } + + template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7); + } + +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7); + } + +#endif + + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7); + } + + bool operator==(BOOST_MEM_FN_NAME(mf7) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(mf7) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// cmf7 + +template class BOOST_MEM_FN_NAME(cmf7) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7); + } + +public: + + explicit BOOST_MEM_FN_NAME(cmf7)(F f): f_(f) {} + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7); + } + + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7); + } + + bool operator==(BOOST_MEM_FN_NAME(cmf7) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(cmf7) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// mf8 + +template class BOOST_MEM_FN_NAME(mf8) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8)) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8); + } + +public: + + explicit BOOST_MEM_FN_NAME(mf8)(F f): f_(f) {} + + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const + { + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8); + } + + template R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8); + } + +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8); + } + +#endif + + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8); + } + + bool operator==(BOOST_MEM_FN_NAME(mf8) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(mf8) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +// cmf8 + +template class BOOST_MEM_FN_NAME(cmf8) +{ +public: + + typedef R result_type; + +private: + + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const) + F f_; + + template R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const + { + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8); + } + + template R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const + { + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8); + } + +public: + + explicit BOOST_MEM_FN_NAME(cmf8)(F f): f_(f) {} + + R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const + { + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8); + } + + template R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const + { + U const * p = 0; + BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8); + } + + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const + { + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8); + } + + bool operator==(BOOST_MEM_FN_NAME(cmf8) const & rhs) const + { + return f_ == rhs.f_; + } + + bool operator!=(BOOST_MEM_FN_NAME(cmf8) const & rhs) const + { + return f_ != rhs.f_; + } +}; + +#undef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS diff --git a/contrib/prebuilt/include/boost/bind/mem_fn_vw.hpp b/contrib/prebuilt/include/boost/bind/mem_fn_vw.hpp new file mode 100644 index 0000000..f3fc58d --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/mem_fn_vw.hpp @@ -0,0 +1,130 @@ +// +// bind/mem_fn_vw.hpp - void return helper wrappers +// +// Do not include this header directly +// +// Copyright (c) 2001 Peter Dimov and Multi Media Ltd. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/mem_fn.html for documentation. +// + +template struct BOOST_MEM_FN_NAME(mf0): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (); + explicit BOOST_MEM_FN_NAME(mf0)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)(f) {} +}; + +template struct BOOST_MEM_FN_NAME(cmf0): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0) +{ + typedef R (BOOST_MEM_FN_CC T::*F) () const; + explicit BOOST_MEM_FN_NAME(cmf0)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)(f) {} +}; + + +template struct BOOST_MEM_FN_NAME(mf1): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1); + explicit BOOST_MEM_FN_NAME(mf1)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)(f) {} +}; + +template struct BOOST_MEM_FN_NAME(cmf1): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1) const; + explicit BOOST_MEM_FN_NAME(cmf1)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)(f) {} +}; + + +template struct BOOST_MEM_FN_NAME(mf2): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2); + explicit BOOST_MEM_FN_NAME(mf2)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)(f) {} +}; + +template struct BOOST_MEM_FN_NAME(cmf2): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2) const; + explicit BOOST_MEM_FN_NAME(cmf2)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)(f) {} +}; + + +template struct BOOST_MEM_FN_NAME(mf3): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3); + explicit BOOST_MEM_FN_NAME(mf3)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)(f) {} +}; + +template struct BOOST_MEM_FN_NAME(cmf3): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const; + explicit BOOST_MEM_FN_NAME(cmf3)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)(f) {} +}; + + +template struct BOOST_MEM_FN_NAME(mf4): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4); + explicit BOOST_MEM_FN_NAME(mf4)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)(f) {} +}; + +template struct BOOST_MEM_FN_NAME(cmf4): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const; + explicit BOOST_MEM_FN_NAME(cmf4)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)(f) {} +}; + + +template struct BOOST_MEM_FN_NAME(mf5): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5); + explicit BOOST_MEM_FN_NAME(mf5)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)(f) {} +}; + +template struct BOOST_MEM_FN_NAME(cmf5): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const; + explicit BOOST_MEM_FN_NAME(cmf5)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)(f) {} +}; + + +template struct BOOST_MEM_FN_NAME(mf6): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6); + explicit BOOST_MEM_FN_NAME(mf6)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)(f) {} +}; + +template struct BOOST_MEM_FN_NAME(cmf6): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const; + explicit BOOST_MEM_FN_NAME(cmf6)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)(f) {} +}; + + +template struct BOOST_MEM_FN_NAME(mf7): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7); + explicit BOOST_MEM_FN_NAME(mf7)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)(f) {} +}; + +template struct BOOST_MEM_FN_NAME(cmf7): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const; + explicit BOOST_MEM_FN_NAME(cmf7)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)(f) {} +}; + + +template struct BOOST_MEM_FN_NAME(mf8): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8); + explicit BOOST_MEM_FN_NAME(mf8)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)(f) {} +}; + +template struct BOOST_MEM_FN_NAME(cmf8): public mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8) +{ + typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const; + explicit BOOST_MEM_FN_NAME(cmf8)(F f): mf::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)(f) {} +}; + diff --git a/contrib/prebuilt/include/boost/bind/placeholders.hpp b/contrib/prebuilt/include/boost/bind/placeholders.hpp new file mode 100644 index 0000000..3b098b1 --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/placeholders.hpp @@ -0,0 +1,69 @@ +#ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED +#define BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// bind/placeholders.hpp - _N definitions +// +// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +#include +#include + +namespace +{ + +#if defined(__BORLANDC__) || defined(__GNUC__) && (__GNUC__ < 4) + +static inline boost::arg<1> _1() { return boost::arg<1>(); } +static inline boost::arg<2> _2() { return boost::arg<2>(); } +static inline boost::arg<3> _3() { return boost::arg<3>(); } +static inline boost::arg<4> _4() { return boost::arg<4>(); } +static inline boost::arg<5> _5() { return boost::arg<5>(); } +static inline boost::arg<6> _6() { return boost::arg<6>(); } +static inline boost::arg<7> _7() { return boost::arg<7>(); } +static inline boost::arg<8> _8() { return boost::arg<8>(); } +static inline boost::arg<9> _9() { return boost::arg<9>(); } + +#elif defined(BOOST_MSVC) || (defined(__DECCXX_VER) && __DECCXX_VER <= 60590031) || defined(__MWERKS__) || \ + defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 2) + +static boost::arg<1> _1; +static boost::arg<2> _2; +static boost::arg<3> _3; +static boost::arg<4> _4; +static boost::arg<5> _5; +static boost::arg<6> _6; +static boost::arg<7> _7; +static boost::arg<8> _8; +static boost::arg<9> _9; + +#else + +boost::arg<1> _1; +boost::arg<2> _2; +boost::arg<3> _3; +boost::arg<4> _4; +boost::arg<5> _5; +boost::arg<6> _6; +boost::arg<7> _7; +boost::arg<8> _8; +boost::arg<9> _9; + +#endif + +} // unnamed namespace + +#endif // #ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED diff --git a/contrib/prebuilt/include/boost/bind/storage.hpp b/contrib/prebuilt/include/boost/bind/storage.hpp new file mode 100644 index 0000000..be490b0 --- /dev/null +++ b/contrib/prebuilt/include/boost/bind/storage.hpp @@ -0,0 +1,475 @@ +#ifndef BOOST_BIND_STORAGE_HPP_INCLUDED +#define BOOST_BIND_STORAGE_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// bind/storage.hpp +// +// boost/bind.hpp support header, optimized storage +// +// Copyright (c) 2006 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt +// +// See http://www.boost.org/libs/bind/bind.html for documentation. +// + +#include +#include + +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated +#endif + +namespace boost +{ + +namespace _bi +{ + +// 1 + +template struct storage1 +{ + explicit storage1( A1 a1 ): a1_( a1 ) {} + + template void accept(V & v) const + { + BOOST_BIND_VISIT_EACH(v, a1_, 0); + } + + A1 a1_; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( __BORLANDC__ ) + +template struct storage1< boost::arg > +{ + explicit storage1( boost::arg ) {} + + template void accept(V &) const { } + + static boost::arg a1_() { return boost::arg(); } +}; + +template struct storage1< boost::arg (*) () > +{ + explicit storage1( boost::arg (*) () ) {} + + template void accept(V &) const { } + + static boost::arg a1_() { return boost::arg(); } +}; + +#endif + +// 2 + +template struct storage2: public storage1 +{ + typedef storage1 inherited; + + storage2( A1 a1, A2 a2 ): storage1( a1 ), a2_( a2 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + BOOST_BIND_VISIT_EACH(v, a2_, 0); + } + + A2 a2_; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template struct storage2< A1, boost::arg >: public storage1 +{ + typedef storage1 inherited; + + storage2( A1 a1, boost::arg ): storage1( a1 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a2_() { return boost::arg(); } +}; + +template struct storage2< A1, boost::arg (*) () >: public storage1 +{ + typedef storage1 inherited; + + storage2( A1 a1, boost::arg (*) () ): storage1( a1 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a2_() { return boost::arg(); } +}; + +#endif + +// 3 + +template struct storage3: public storage2< A1, A2 > +{ + typedef storage2 inherited; + + storage3( A1 a1, A2 a2, A3 a3 ): storage2( a1, a2 ), a3_( a3 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + BOOST_BIND_VISIT_EACH(v, a3_, 0); + } + + A3 a3_; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template struct storage3< A1, A2, boost::arg >: public storage2< A1, A2 > +{ + typedef storage2 inherited; + + storage3( A1 a1, A2 a2, boost::arg ): storage2( a1, a2 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a3_() { return boost::arg(); } +}; + +template struct storage3< A1, A2, boost::arg (*) () >: public storage2< A1, A2 > +{ + typedef storage2 inherited; + + storage3( A1 a1, A2 a2, boost::arg (*) () ): storage2( a1, a2 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a3_() { return boost::arg(); } +}; + +#endif + +// 4 + +template struct storage4: public storage3< A1, A2, A3 > +{ + typedef storage3 inherited; + + storage4( A1 a1, A2 a2, A3 a3, A4 a4 ): storage3( a1, a2, a3 ), a4_( a4 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + BOOST_BIND_VISIT_EACH(v, a4_, 0); + } + + A4 a4_; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template struct storage4< A1, A2, A3, boost::arg >: public storage3< A1, A2, A3 > +{ + typedef storage3 inherited; + + storage4( A1 a1, A2 a2, A3 a3, boost::arg ): storage3( a1, a2, a3 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a4_() { return boost::arg(); } +}; + +template struct storage4< A1, A2, A3, boost::arg (*) () >: public storage3< A1, A2, A3 > +{ + typedef storage3 inherited; + + storage4( A1 a1, A2 a2, A3 a3, boost::arg (*) () ): storage3( a1, a2, a3 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a4_() { return boost::arg(); } +}; + +#endif + +// 5 + +template struct storage5: public storage4< A1, A2, A3, A4 > +{ + typedef storage4 inherited; + + storage5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): storage4( a1, a2, a3, a4 ), a5_( a5 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + BOOST_BIND_VISIT_EACH(v, a5_, 0); + } + + A5 a5_; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template struct storage5< A1, A2, A3, A4, boost::arg >: public storage4< A1, A2, A3, A4 > +{ + typedef storage4 inherited; + + storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg ): storage4( a1, a2, a3, a4 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a5_() { return boost::arg(); } +}; + +template struct storage5< A1, A2, A3, A4, boost::arg (*) () >: public storage4< A1, A2, A3, A4 > +{ + typedef storage4 inherited; + + storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg (*) () ): storage4( a1, a2, a3, a4 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a5_() { return boost::arg(); } +}; + +#endif + +// 6 + +template struct storage6: public storage5< A1, A2, A3, A4, A5 > +{ + typedef storage5 inherited; + + storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): storage5( a1, a2, a3, a4, a5 ), a6_( a6 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + BOOST_BIND_VISIT_EACH(v, a6_, 0); + } + + A6 a6_; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template struct storage6< A1, A2, A3, A4, A5, boost::arg >: public storage5< A1, A2, A3, A4, A5 > +{ + typedef storage5 inherited; + + storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg ): storage5( a1, a2, a3, a4, a5 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a6_() { return boost::arg(); } +}; + +template struct storage6< A1, A2, A3, A4, A5, boost::arg (*) () >: public storage5< A1, A2, A3, A4, A5 > +{ + typedef storage5 inherited; + + storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg (*) () ): storage5( a1, a2, a3, a4, a5 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a6_() { return boost::arg(); } +}; + +#endif + +// 7 + +template struct storage7: public storage6< A1, A2, A3, A4, A5, A6 > +{ + typedef storage6 inherited; + + storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): storage6( a1, a2, a3, a4, a5, a6 ), a7_( a7 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + BOOST_BIND_VISIT_EACH(v, a7_, 0); + } + + A7 a7_; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template struct storage7< A1, A2, A3, A4, A5, A6, boost::arg >: public storage6< A1, A2, A3, A4, A5, A6 > +{ + typedef storage6 inherited; + + storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg ): storage6( a1, a2, a3, a4, a5, a6 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a7_() { return boost::arg(); } +}; + +template struct storage7< A1, A2, A3, A4, A5, A6, boost::arg (*) () >: public storage6< A1, A2, A3, A4, A5, A6 > +{ + typedef storage6 inherited; + + storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg (*) () ): storage6( a1, a2, a3, a4, a5, a6 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a7_() { return boost::arg(); } +}; + +#endif + +// 8 + +template struct storage8: public storage7< A1, A2, A3, A4, A5, A6, A7 > +{ + typedef storage7 inherited; + + storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): storage7( a1, a2, a3, a4, a5, a6, a7 ), a8_( a8 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + BOOST_BIND_VISIT_EACH(v, a8_, 0); + } + + A8 a8_; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg >: public storage7< A1, A2, A3, A4, A5, A6, A7 > +{ + typedef storage7 inherited; + + storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg ): storage7( a1, a2, a3, a4, a5, a6, a7 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a8_() { return boost::arg(); } +}; + +template struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg (*) () >: public storage7< A1, A2, A3, A4, A5, A6, A7 > +{ + typedef storage7 inherited; + + storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg (*) () ): storage7( a1, a2, a3, a4, a5, a6, a7 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a8_() { return boost::arg(); } +}; + +#endif + +// 9 + +template struct storage9: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 > +{ + typedef storage8 inherited; + + storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): storage8( a1, a2, a3, a4, a5, a6, a7, a8 ), a9_( a9 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + BOOST_BIND_VISIT_EACH(v, a9_, 0); + } + + A9 a9_; +}; + +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) + +template struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 > +{ + typedef storage8 inherited; + + storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg ): storage8( a1, a2, a3, a4, a5, a6, a7, a8 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a9_() { return boost::arg(); } +}; + +template struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg (*) () >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 > +{ + typedef storage8 inherited; + + storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg (*) () ): storage8( a1, a2, a3, a4, a5, a6, a7, a8 ) {} + + template void accept(V & v) const + { + inherited::accept(v); + } + + static boost::arg a9_() { return boost::arg(); } +}; + +#endif + +} // namespace _bi + +} // namespace boost + +#ifdef BOOST_MSVC +# pragma warning(default: 4512) // assignment operator could not be generated +# pragma warning(pop) +#endif + +#endif // #ifndef BOOST_BIND_STORAGE_HPP_INCLUDED diff --git a/contrib/prebuilt/include/boost/call_traits.hpp b/contrib/prebuilt/include/boost/call_traits.hpp new file mode 100644 index 0000000..5253a6d --- /dev/null +++ b/contrib/prebuilt/include/boost/call_traits.hpp @@ -0,0 +1,24 @@ +// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). +// +// See http://www.boost.org/libs/utility for most recent version including documentation. + +// See boost/detail/call_traits.hpp and boost/detail/ob_call_traits.hpp +// for full copyright notices. + +#ifndef BOOST_CALL_TRAITS_HPP +#define BOOST_CALL_TRAITS_HPP + +#ifndef BOOST_CONFIG_HPP +#include +#endif + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +#include +#else +#include +#endif + +#endif // BOOST_CALL_TRAITS_HPP diff --git a/contrib/prebuilt/include/boost/cerrno.hpp b/contrib/prebuilt/include/boost/cerrno.hpp new file mode 100644 index 0000000..6f26698 --- /dev/null +++ b/contrib/prebuilt/include/boost/cerrno.hpp @@ -0,0 +1,331 @@ +// Boost cerrno.hpp header -------------------------------------------------// + +// Copyright Beman Dawes 2005. +// Use, modification, and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See library home page at http://www.boost.org/libs/system + +#ifndef BOOST_CERRNO_HPP +#define BOOST_CERRNO_HPP + +#include + +// supply errno values likely to be missing, particularly on Windows + +#ifndef EAFNOSUPPORT +#define EAFNOSUPPORT 9901 +#endif + +#ifndef EADDRINUSE +#define EADDRINUSE 9902 +#endif + +#ifndef EADDRNOTAVAIL +#define EADDRNOTAVAIL 9903 +#endif + +#ifndef EISCONN +#define EISCONN 9904 +#endif + +#ifndef EBADMSG +#define EBADMSG 9905 +#endif + +#ifndef ECONNABORTED +#define ECONNABORTED 9906 +#endif + +#ifndef EALREADY +#define EALREADY 9907 +#endif + +#ifndef ECONNREFUSED +#define ECONNREFUSED 9908 +#endif + +#ifndef ECONNRESET +#define ECONNRESET 9909 +#endif + +#ifndef EDESTADDRREQ +#define EDESTADDRREQ 9910 +#endif + +#ifndef EHOSTUNREACH +#define EHOSTUNREACH 9911 +#endif + +#ifndef EIDRM +#define EIDRM 9912 +#endif + +#ifndef EMSGSIZE +#define EMSGSIZE 9913 +#endif + +#ifndef ENETDOWN +#define ENETDOWN 9914 +#endif + +#ifndef ENETRESET +#define ENETRESET 9915 +#endif + +#ifndef ENETUNREACH +#define ENETUNREACH 9916 +#endif + +#ifndef ENOBUFS +#define ENOBUFS 9917 +#endif + +#ifndef ENOLINK +#define ENOLINK 9918 +#endif + +#ifndef ENODATA +#define ENODATA 9919 +#endif + +#ifndef ENOMSG +#define ENOMSG 9920 +#endif + +#ifndef ENOPROTOOPT +#define ENOPROTOOPT 9921 +#endif + +#ifndef ENOSR +#define ENOSR 9922 +#endif + +#ifndef ENOTSOCK +#define ENOTSOCK 9923 +#endif + +#ifndef ENOSTR +#define ENOSTR 9924 +#endif + +#ifndef ENOTCONN +#define ENOTCONN 9925 +#endif + +#ifndef ENOTSUP +#define ENOTSUP 9926 +#endif + +#ifndef ECANCELED +#define ECANCELED 9927 +#endif + +#ifndef EINPROGRESS +#define EINPROGRESS 9928 +#endif + +#ifndef EOPNOTSUPP +#define EOPNOTSUPP 9929 +#endif + +#ifndef EWOULDBLOCK +#define EWOULDBLOCK 9930 +#endif + +#ifndef EOWNERDEAD +#define EOWNERDEAD 9931 +#endif + +#ifndef EPROTO +#define EPROTO 9932 +#endif + +#ifndef EPROTONOSUPPORT +#define EPROTONOSUPPORT 9933 +#endif + +#ifndef ENOTRECOVERABLE +#define ENOTRECOVERABLE 9934 +#endif + +#ifndef ETIME +#define ETIME 9935 +#endif + +#ifndef ETXTBSY +#define ETXTBSY 9936 +#endif + +#ifndef ETIMEDOUT +#define ETIMEDOUT 9938 +#endif + +#ifndef ELOOP +#define ELOOP 9939 +#endif + +#ifndef EOVERFLOW +#define EOVERFLOW 9940 +#endif + +#ifndef EPROTOTYPE +#define EPROTOTYPE 9941 +#endif + +#ifndef ENOSYS +#define ENOSYS 9942 +#endif + +#ifndef EINVAL +#define EINVAL 9943 +#endif + +#ifndef ERANGE +#define ERANGE 9944 +#endif + +#ifndef EILSEQ +#define EILSEQ 9945 +#endif + +// Windows Mobile doesn't appear to define these: + +#ifndef E2BIG +#define E2BIG 9946 +#endif + +#ifndef EDOM +#define EDOM 9947 +#endif + +#ifndef EFAULT +#define EFAULT 9948 +#endif + +#ifndef EBADF +#define EBADF 9949 +#endif + +#ifndef EPIPE +#define EPIPE 9950 +#endif + +#ifndef EXDEV +#define EXDEV 9951 +#endif + +#ifndef EBUSY +#define EBUSY 9952 +#endif + +#ifndef ENOTEMPTY +#define ENOTEMPTY 9953 +#endif + +#ifndef ENOEXEC +#define ENOEXEC 9954 +#endif + +#ifndef EEXIST +#define EEXIST 9955 +#endif + +#ifndef EFBIG +#define EFBIG 9956 +#endif + +#ifndef ENAMETOOLONG +#define ENAMETOOLONG 9957 +#endif + +#ifndef ENOTTY +#define ENOTTY 9958 +#endif + +#ifndef EINTR +#define EINTR 9959 +#endif + +#ifndef ESPIPE +#define ESPIPE 9960 +#endif + +#ifndef EIO +#define EIO 9961 +#endif + +#ifndef EISDIR +#define EISDIR 9962 +#endif + +#ifndef ECHILD +#define ECHILD 9963 +#endif + +#ifndef ENOLCK +#define ENOLCK 9964 +#endif + +#ifndef ENOSPC +#define ENOSPC 9965 +#endif + +#ifndef ENXIO +#define ENXIO 9966 +#endif + +#ifndef ENODEV +#define ENODEV 9967 +#endif + +#ifndef ENOENT +#define ENOENT 9968 +#endif + +#ifndef ESRCH +#define ESRCH 9969 +#endif + +#ifndef ENOTDIR +#define ENOTDIR 9970 +#endif + +#ifndef ENOMEM +#define ENOMEM 9971 +#endif + +#ifndef EPERM +#define EPERM 9972 +#endif + +#ifndef EACCES +#define EACCES 9973 +#endif + +#ifndef EROFS +#define EROFS 9974 +#endif + +#ifndef EDEADLK +#define EDEADLK 9975 +#endif + +#ifndef EAGAIN +#define EAGAIN 9976 +#endif + +#ifndef ENFILE +#define ENFILE 9977 +#endif + +#ifndef EMFILE +#define EMFILE 9978 +#endif + +#ifndef EMLINK +#define EMLINK 9979 +#endif + +#endif // include guard diff --git a/contrib/prebuilt/include/boost/checked_delete.hpp b/contrib/prebuilt/include/boost/checked_delete.hpp new file mode 100644 index 0000000..9bb84e8 --- /dev/null +++ b/contrib/prebuilt/include/boost/checked_delete.hpp @@ -0,0 +1,69 @@ +#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED +#define BOOST_CHECKED_DELETE_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// boost/checked_delete.hpp +// +// Copyright (c) 2002, 2003 Peter Dimov +// Copyright (c) 2003 Daniel Frey +// Copyright (c) 2003 Howard Hinnant +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/utility/checked_delete.html for documentation. +// + +namespace boost +{ + +// verify that types are complete for increased safety + +template inline void checked_delete(T * x) +{ + // intentionally complex - simplification causes regressions + typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; + (void) sizeof(type_must_be_complete); + delete x; +} + +template inline void checked_array_delete(T * x) +{ + typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; + (void) sizeof(type_must_be_complete); + delete [] x; +} + +template struct checked_deleter +{ + typedef void result_type; + typedef T * argument_type; + + void operator()(T * x) const + { + // boost:: disables ADL + boost::checked_delete(x); + } +}; + +template struct checked_array_deleter +{ + typedef void result_type; + typedef T * argument_type; + + void operator()(T * x) const + { + boost::checked_array_delete(x); + } +}; + +} // namespace boost + +#endif // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED diff --git a/contrib/prebuilt/include/boost/chrono/ceil.hpp b/contrib/prebuilt/include/boost/chrono/ceil.hpp new file mode 100644 index 0000000..7fbf9dd --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/ceil.hpp @@ -0,0 +1,36 @@ +// boost/chrono/round.hpp ------------------------------------------------------------// + +// (C) Copyright Howard Hinnant +// Copyright 2011 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/chrono for documentation. + +#ifndef BOOST_CHRONO_CEIL_HPP +#define BOOST_CHRONO_CEIL_HPP + +#include + +namespace boost +{ + namespace chrono + { + + /** + * rounds up + */ + template + To ceil(const duration& d) + { + To t = duration_cast(d); + if (t < d) + ++t; + return t; + } + + } // namespace chrono +} // namespace boost + +#endif diff --git a/contrib/prebuilt/include/boost/chrono/chrono.hpp b/contrib/prebuilt/include/boost/chrono/chrono.hpp new file mode 100644 index 0000000..ebc29d8 --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/chrono.hpp @@ -0,0 +1,15 @@ +// chrono.hpp --------------------------------------------------------------// + +// Copyright 2009-2011 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_CHRONO_CHRONO_HPP +#define BOOST_CHRONO_CHRONO_HPP + +#include +#include +#include + +#endif // BOOST_CHRONO_CHRONO_HPP diff --git a/contrib/prebuilt/include/boost/chrono/clock_string.hpp b/contrib/prebuilt/include/boost/chrono/clock_string.hpp new file mode 100644 index 0000000..af025f2 --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/clock_string.hpp @@ -0,0 +1,25 @@ +// +// (C) Copyright 2010-2011 Vicente J. Botet Escriba +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). +// + +#ifndef BOOST_CHRONO_CLOCK_STRING_HPP +#define BOOST_CHRONO_CLOCK_STRING_HPP + +#include + +namespace boost +{ + namespace chrono + { + + template + struct clock_string; + + } // chrono + +} // boost + +#endif // BOOST_CHRONO_CLOCK_STRING_HPP diff --git a/contrib/prebuilt/include/boost/chrono/config.hpp b/contrib/prebuilt/include/boost/chrono/config.hpp new file mode 100644 index 0000000..b7d0c0d --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/config.hpp @@ -0,0 +1,168 @@ +// boost/chrono/config.hpp -------------------------------------------------// + +// Copyright Beman Dawes 2003, 2006, 2008 +// Copyright 2009-2011 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/chrono for documentation. + +#ifndef BOOST_CHRONO_CONFIG_HPP +#define BOOST_CHRONO_CONFIG_HPP + +#include + +#if !defined BOOST_CHRONO_VERSION +#define BOOST_CHRONO_VERSION 1 +#else +#if BOOST_CHRONO_VERSION!=1 && BOOST_CHRONO_VERSION!=2 +#error "BOOST_CHRONO_VERSION must be 1 or 2" +#endif +#endif + +#if defined(BOOST_CHRONO_SOURCE) && !defined(BOOST_USE_WINDOWS_H) +#define BOOST_USE_WINDOWS_H +#endif + +// BOOST_CHRONO_POSIX_API, BOOST_CHRONO_MAC_API, or BOOST_CHRONO_WINDOWS_API +// can be defined by the user to specify which API should be used + +#if defined(BOOST_CHRONO_WINDOWS_API) +# warning Boost.Chrono will use the Windows API +#elif defined(BOOST_CHRONO_MAC_API) +# warning Boost.Chrono will use the Mac API +#elif defined(BOOST_CHRONO_POSIX_API) +# warning Boost.Chrono will use the POSIX API +#endif + +# if defined( BOOST_CHRONO_WINDOWS_API ) && defined( BOOST_CHRONO_POSIX_API ) +# error both BOOST_CHRONO_WINDOWS_API and BOOST_CHRONO_POSIX_API are defined +# elif defined( BOOST_CHRONO_WINDOWS_API ) && defined( BOOST_CHRONO_MAC_API ) +# error both BOOST_CHRONO_WINDOWS_API and BOOST_CHRONO_MAC_API are defined +# elif defined( BOOST_CHRONO_MAC_API ) && defined( BOOST_CHRONO_POSIX_API ) +# error both BOOST_CHRONO_MAC_API and BOOST_CHRONO_POSIX_API are defined +# elif !defined( BOOST_CHRONO_WINDOWS_API ) && !defined( BOOST_CHRONO_MAC_API ) && !defined( BOOST_CHRONO_POSIX_API ) +# if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) +# define BOOST_CHRONO_WINDOWS_API +# elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) +# define BOOST_CHRONO_MAC_API +# else +# define BOOST_CHRONO_POSIX_API +# endif +# endif + +# if defined( BOOST_CHRONO_WINDOWS_API ) +# ifndef UNDER_CE +# define BOOST_CHRONO_HAS_PROCESS_CLOCKS +# endif +# define BOOST_CHRONO_HAS_CLOCK_STEADY +# define BOOST_CHRONO_HAS_THREAD_CLOCK +# define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true +# endif + +# if defined( BOOST_CHRONO_MAC_API ) +# define BOOST_CHRONO_HAS_PROCESS_CLOCKS +# define BOOST_CHRONO_HAS_CLOCK_STEADY +# define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true +# endif + +# if defined( BOOST_CHRONO_POSIX_API ) +# define BOOST_CHRONO_HAS_PROCESS_CLOCKS +# include //to check for CLOCK_REALTIME and CLOCK_MONOTONIC and _POSIX_THREAD_CPUTIME +# if defined(CLOCK_MONOTONIC) +# define BOOST_CHRONO_HAS_CLOCK_STEADY +# endif +# if defined(_POSIX_THREAD_CPUTIME) && !defined(BOOST_DISABLE_THREADS) +# define BOOST_CHRONO_HAS_THREAD_CLOCK +# define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true +# endif +# if defined(CLOCK_THREAD_CPUTIME_ID) && !defined(BOOST_DISABLE_THREADS) +# define BOOST_CHRONO_HAS_THREAD_CLOCK +# define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true +# endif +# if defined(sun) || defined(__sun) +# undef BOOST_CHRONO_HAS_THREAD_CLOCK +# undef BOOST_CHRONO_THREAD_CLOCK_IS_STEADY +# endif +# if defined(__HP_aCC) && defined(__hpux) +# undef BOOST_CHRONO_HAS_THREAD_CLOCK +# undef BOOST_CHRONO_THREAD_CLOCK_IS_STEADY +# endif +# endif + +#if defined(BOOST_CHRONO_THREAD_DISABLED) && defined(BOOST_CHRONO_HAS_THREAD_CLOCK) +#undef BOOST_CHRONO_HAS_THREAD_CLOCK +#undef BOOST_CHRONO_THREAD_CLOCK_IS_STEADY +#endif + +//#undef BOOST_CHRONO_HAS_PROCESS_CLOCKS + +// unicode support ------------------------------// + +#if defined(BOOST_NO_UNICODE_LITERALS) || defined(BOOST_NO_CHAR16_T) || defined(BOOST_NO_CHAR32_T) +//~ #define BOOST_CHRONO_HAS_UNICODE_SUPPORT +#else +#define BOOST_CHRONO_HAS_UNICODE_SUPPORT 1 +#endif + +#if ! defined BOOST_NOEXCEPT +#if defined(BOOST_NO_NOEXCEPT) +#define BOOST_NOEXCEPT +#else +#define BOOST_NOEXCEPT noexcept +#endif +#endif + +#ifdef BOOST_CHRONO_HEADER_ONLY +#define BOOST_CHRONO_INLINE inline +#define BOOST_CHRONO_STATIC inline +#define BOOST_CHRONO_DECL + +#else +#define BOOST_CHRONO_INLINE +#define BOOST_CHRONO_STATIC static + +// enable dynamic linking on Windows ---------------------------------------// + +// we need to import/export our code only if the user has specifically +// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost +// libraries to be dynamically linked, or BOOST_CHRONO_DYN_LINK +// if they want just this one to be dynamically liked: +#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_CHRONO_DYN_LINK) +// export if this is our own source, otherwise import: +#ifdef BOOST_CHRONO_SOURCE +# define BOOST_CHRONO_DECL BOOST_SYMBOL_EXPORT +#else +# define BOOST_CHRONO_DECL BOOST_SYMBOL_IMPORT +#endif // BOOST_CHRONO_SOURCE +#endif // DYN_LINK +// +// if BOOST_CHRONO_DECL isn't defined yet define it now: +#ifndef BOOST_CHRONO_DECL +#define BOOST_CHRONO_DECL +#endif + +//#define BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING + +// enable automatic library variant selection ------------------------------// + +#if !defined(BOOST_CHRONO_SOURCE) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_CHRONO_NO_LIB) +// +// Set the name of our library; this will get undef'ed by auto_link.hpp +// once it's done with it: +// +#define BOOST_LIB_NAME boost_chrono +// +// If we're importing code from a dll, then tell auto_link.hpp about it: +// +#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_CHRONO_DYN_LINK) +# define BOOST_DYN_LINK +#endif +// +// And include the header that does the work: +// +#include +#endif // auto-linking disabled +#endif // BOOST_CHRONO_HEADER_ONLY +#endif // BOOST_CHRONO_CONFIG_HPP diff --git a/contrib/prebuilt/include/boost/chrono/detail/inlined/chrono.hpp b/contrib/prebuilt/include/boost/chrono/detail/inlined/chrono.hpp new file mode 100644 index 0000000..0278843 --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/detail/inlined/chrono.hpp @@ -0,0 +1,44 @@ +// chrono.cpp --------------------------------------------------------------// + +// Copyright Beman Dawes 2008 +// Copyright Vicente J. Botet Escriba 2009 + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_CHRONO_DETAIL_INLINED_CHRONO_HPP +#define BOOST_CHRONO_DETAIL_INLINED_CHRONO_HPP + +#include +#include +#include +#include +#include + +//----------------------------------------------------------------------------// +// // +// Platform-specific Implementations // +// // +//----------------------------------------------------------------------------// + +//----------------------------------------------------------------------------// +// Windows // +//----------------------------------------------------------------------------// +#if defined(BOOST_CHRONO_WINDOWS_API) +#include + +//----------------------------------------------------------------------------// +// Mac // +//----------------------------------------------------------------------------// +#elif defined(BOOST_CHRONO_MAC_API) +#include + +//----------------------------------------------------------------------------// +// POSIX // +//----------------------------------------------------------------------------// +#elif defined(BOOST_CHRONO_POSIX_API) +#include + +#endif // POSIX + +#endif diff --git a/contrib/prebuilt/include/boost/chrono/detail/inlined/mac/chrono.hpp b/contrib/prebuilt/include/boost/chrono/detail/inlined/mac/chrono.hpp new file mode 100644 index 0000000..bf20ae9 --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/detail/inlined/mac/chrono.hpp @@ -0,0 +1,241 @@ +// mac/chrono.cpp --------------------------------------------------------------// + +// Copyright Beman Dawes 2008 +// Copyright 2009-2010 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +//----------------------------------------------------------------------------// +// Mac // +//----------------------------------------------------------------------------// + +#include //for gettimeofday and timeval +#include // mach_absolute_time, mach_timebase_info_data_t + +namespace boost +{ +namespace chrono +{ + +// system_clock + +// gettimeofday is the most precise "system time" available on this platform. +// It returns the number of microseconds since New Years 1970 in a struct called timeval +// which has a field for seconds and a field for microseconds. +// Fill in the timeval and then convert that to the time_point +system_clock::time_point +system_clock::now() BOOST_NOEXCEPT +{ + timeval tv; + gettimeofday(&tv, 0); + return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec)); +} + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING +system_clock::time_point +system_clock::now(system::error_code & ec) +{ + timeval tv; + gettimeofday(&tv, 0); + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec)); +} +#endif +// Take advantage of the fact that on this platform time_t is nothing but +// an integral count of seconds since New Years 1970 (same epoch as timeval). +// Just get the duration out of the time_point and truncate it to seconds. +time_t +system_clock::to_time_t(const time_point& t) BOOST_NOEXCEPT +{ + return time_t(duration_cast(t.time_since_epoch()).count()); +} + +// Just turn the time_t into a count of seconds and construct a time_point with it. +system_clock::time_point +system_clock::from_time_t(time_t t) BOOST_NOEXCEPT +{ + return system_clock::time_point(seconds(t)); +} + +namespace chrono_detail +{ + +// steady_clock + +// Note, in this implementation steady_clock and high_resolution_clock +// are the same clock. They are both based on mach_absolute_time(). +// mach_absolute_time() * MachInfo.numer / MachInfo.denom is the number of +// nanoseconds since the computer booted up. MachInfo.numer and MachInfo.denom +// are run time constants supplied by the OS. This clock has no relationship +// to the Gregorian calendar. It's main use is as a high resolution timer. + +// MachInfo.numer / MachInfo.denom is often 1 on the latest equipment. Specialize +// for that case as an optimization. +BOOST_CHRONO_STATIC +steady_clock::rep +steady_simplified() +{ + return mach_absolute_time(); +} + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING +BOOST_CHRONO_STATIC +steady_clock::rep +steady_simplified_ec(system::error_code & ec) +{ + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + return mach_absolute_time(); +} +#endif + +BOOST_CHRONO_STATIC +double +compute_steady_factor(kern_return_t& err) +{ + mach_timebase_info_data_t MachInfo; + err = mach_timebase_info(&MachInfo); + if ( err != 0 ) { + return 0; + } + return static_cast(MachInfo.numer) / MachInfo.denom; +} + +BOOST_CHRONO_STATIC +steady_clock::rep +steady_full() +{ + static kern_return_t err; + static const double factor = chrono_detail::compute_steady_factor(err); + if (err != 0) + { + BOOST_ASSERT(0 && "Boost::Chrono - Internal Error"); + } + return static_cast(mach_absolute_time() * factor); +} + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING +BOOST_CHRONO_STATIC +steady_clock::rep +steady_full_ec(system::error_code & ec) +{ + static kern_return_t err; + static const double factor = chrono_detail::compute_steady_factor(err); + if (err != 0) + { + if (BOOST_CHRONO_IS_THROWS(ec)) + { + boost::throw_exception( + system::system_error( + err, + BOOST_CHRONO_SYSTEM_CATEGORY, + "chrono::steady_clock" )); + } + else + { + ec.assign( errno, BOOST_CHRONO_SYSTEM_CATEGORY ); + return steady_clock::rep(); + } + } + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + return static_cast(mach_absolute_time() * factor); +} +#endif + +typedef steady_clock::rep (*FP)(); +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING +typedef steady_clock::rep (*FP_ec)(system::error_code &); +#endif + +BOOST_CHRONO_STATIC +FP +init_steady_clock(kern_return_t & err) +{ + mach_timebase_info_data_t MachInfo; + err = mach_timebase_info(&MachInfo); + if ( err != 0 ) + { + return 0; + } + + if (MachInfo.numer == MachInfo.denom) + { + return &chrono_detail::steady_simplified; + } + return &chrono_detail::steady_full; +} + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING +BOOST_CHRONO_STATIC +FP_ec +init_steady_clock_ec(kern_return_t & err) +{ + mach_timebase_info_data_t MachInfo; + err = mach_timebase_info(&MachInfo); + if ( err != 0 ) + { + return 0; + } + + if (MachInfo.numer == MachInfo.denom) + { + return &chrono_detail::steady_simplified_ec; + } + return &chrono_detail::steady_full_ec; +} +#endif +} + +steady_clock::time_point +steady_clock::now() BOOST_NOEXCEPT +{ + static kern_return_t err; + static chrono_detail::FP fp = chrono_detail::init_steady_clock(err); + if ( err != 0 ) + { + BOOST_ASSERT(0 && "Boost::Chrono - Internal Error"); + } + return time_point(duration(fp())); +} + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING +steady_clock::time_point +steady_clock::now(system::error_code & ec) +{ + static kern_return_t err; + static chrono_detail::FP_ec fp = chrono_detail::init_steady_clock_ec(err); + if ( err != 0 ) + { + if (BOOST_CHRONO_IS_THROWS(ec)) + { + boost::throw_exception( + system::system_error( + err, + BOOST_CHRONO_SYSTEM_CATEGORY, + "chrono::steady_clock" )); + } + else + { + ec.assign( err, BOOST_CHRONO_SYSTEM_CATEGORY ); + return time_point(); + } + } + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + return time_point(duration(fp(ec))); +} +#endif +} // namespace chrono +} // namespace boost diff --git a/contrib/prebuilt/include/boost/chrono/detail/inlined/posix/chrono.hpp b/contrib/prebuilt/include/boost/chrono/detail/inlined/posix/chrono.hpp new file mode 100644 index 0000000..e35a7ce --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/detail/inlined/posix/chrono.hpp @@ -0,0 +1,120 @@ +// posix/chrono.cpp --------------------------------------------------------------// + +// Copyright Beman Dawes 2008 +// Copyright Vicente J. Botet Escriba 2009 + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +//----------------------------------------------------------------------------// +// POSIX // +//----------------------------------------------------------------------------// + +#include // for clock_gettime + +namespace boost +{ +namespace chrono +{ + + system_clock::time_point system_clock::now() BOOST_NOEXCEPT + { + timespec ts; + if ( ::clock_gettime( CLOCK_REALTIME, &ts ) ) + { + BOOST_ASSERT(0 && "Boost::Chrono - Internal Error"); + } + + return time_point(duration( + static_cast( ts.tv_sec ) * 1000000000 + ts.tv_nsec)); + } + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING + system_clock::time_point system_clock::now(system::error_code & ec) + { + timespec ts; + if ( ::clock_gettime( CLOCK_REALTIME, &ts ) ) + { + if (BOOST_CHRONO_IS_THROWS(ec)) + { + boost::throw_exception( + system::system_error( + errno, + BOOST_CHRONO_SYSTEM_CATEGORY, + "chrono::system_clock" )); + } + else + { + ec.assign( errno, BOOST_CHRONO_SYSTEM_CATEGORY ); + return time_point(); + } + } + + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + return time_point(duration( + static_cast( ts.tv_sec ) * 1000000000 + ts.tv_nsec)); + } +#endif + + std::time_t system_clock::to_time_t(const system_clock::time_point& t) BOOST_NOEXCEPT + { + return static_cast( t.time_since_epoch().count() / 1000000000 ); + } + + system_clock::time_point system_clock::from_time_t(std::time_t t) BOOST_NOEXCEPT + { + return time_point(duration(static_cast(t) * 1000000000)); + } + +#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY + + steady_clock::time_point steady_clock::now() BOOST_NOEXCEPT + { + timespec ts; + if ( ::clock_gettime( CLOCK_MONOTONIC, &ts ) ) + { + BOOST_ASSERT(0 && "Boost::Chrono - Internal Error"); + } + + return time_point(duration( + static_cast( ts.tv_sec ) * 1000000000 + ts.tv_nsec)); + } + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING + steady_clock::time_point steady_clock::now(system::error_code & ec) + { + timespec ts; + if ( ::clock_gettime( CLOCK_MONOTONIC, &ts ) ) + { + if (BOOST_CHRONO_IS_THROWS(ec)) + { + boost::throw_exception( + system::system_error( + errno, + BOOST_CHRONO_SYSTEM_CATEGORY, + "chrono::steady_clock" )); + } + else + { + ec.assign( errno, BOOST_CHRONO_SYSTEM_CATEGORY ); + return time_point(); + } + } + + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + return time_point(duration( + static_cast( ts.tv_sec ) * 1000000000 + ts.tv_nsec)); + } +#endif +#endif + +} // namespace chrono +} // namespace boost + + diff --git a/contrib/prebuilt/include/boost/chrono/detail/inlined/win/chrono.hpp b/contrib/prebuilt/include/boost/chrono/detail/inlined/win/chrono.hpp new file mode 100644 index 0000000..75160db --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/detail/inlined/win/chrono.hpp @@ -0,0 +1,160 @@ +// win/chrono.cpp --------------------------------------------------------------// + +// Copyright Beman Dawes 2008 +// Copyright 2009-2010 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +//----------------------------------------------------------------------------// +// Windows // +//----------------------------------------------------------------------------// +#ifndef BOOST_CHRONO_DETAIL_INLINED_WIN_CHRONO_HPP +#define BOOST_CHRONO_DETAIL_INLINED_WIN_CHRONO_HPP + +#include +#include +#include + +namespace boost +{ +namespace chrono +{ +namespace chrono_detail +{ + + BOOST_CHRONO_INLINE double get_nanosecs_per_tic() BOOST_NOEXCEPT + { + boost::detail::win32::LARGE_INTEGER_ freq; + if ( !boost::detail::win32::QueryPerformanceFrequency( &freq ) ) + return 0.0L; + return double(1000000000.0L / freq.QuadPart); + } + +} + + steady_clock::time_point steady_clock::now() BOOST_NOEXCEPT + { + static double nanosecs_per_tic = chrono_detail::get_nanosecs_per_tic(); + + boost::detail::win32::LARGE_INTEGER_ pcount; + if ( (nanosecs_per_tic <= 0.0L) || + (!boost::detail::win32::QueryPerformanceCounter( &pcount )) ) + { + BOOST_ASSERT(0 && "Boost::Chrono - Internal Error"); + return steady_clock::time_point(); + } + + return steady_clock::time_point(steady_clock::duration( + static_cast((nanosecs_per_tic) * pcount.QuadPart))); + } + + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING + steady_clock::time_point steady_clock::now( system::error_code & ec ) + { + static double nanosecs_per_tic = chrono_detail::get_nanosecs_per_tic(); + + boost::detail::win32::LARGE_INTEGER_ pcount; + if ( (nanosecs_per_tic <= 0.0L) + || (!boost::detail::win32::QueryPerformanceCounter( &pcount )) ) + { + boost::detail::win32::DWORD_ cause = + ((nanosecs_per_tic <= 0.0L) + ? ERROR_NOT_SUPPORTED + : boost::detail::win32::GetLastError()); + if (BOOST_CHRONO_IS_THROWS(ec)) { + boost::throw_exception( + system::system_error( + cause, + BOOST_CHRONO_SYSTEM_CATEGORY, + "chrono::steady_clock" )); + } + else + { + ec.assign( cause, BOOST_CHRONO_SYSTEM_CATEGORY ); + return steady_clock::time_point(duration(0)); + } + } + + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + return time_point(duration( + static_cast(nanosecs_per_tic * pcount.QuadPart))); + } +#endif + + BOOST_CHRONO_INLINE + system_clock::time_point system_clock::now() BOOST_NOEXCEPT + { + boost::detail::win32::FILETIME_ ft; + #if defined(UNDER_CE) + // Windows CE does not define GetSystemTimeAsFileTime so we do it in two steps. + boost::detail::win32::SYSTEMTIME_ st; + boost::detail::win32::GetSystemTime( &st ); + boost::detail::win32::SystemTimeToFileTime( &st, &ft ); + #else + boost::detail::win32::GetSystemTimeAsFileTime( &ft ); // never fails + #endif + return system_clock::time_point(system_clock::duration( + (static_cast<__int64>( ft.dwHighDateTime ) << 32) | ft.dwLowDateTime)); + } + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING + BOOST_CHRONO_INLINE + system_clock::time_point system_clock::now( system::error_code & ec ) + { + boost::detail::win32::FILETIME_ ft; + #if defined(UNDER_CE) + // Windows CE does not define GetSystemTimeAsFileTime so we do it in two steps. + boost::detail::win32::SYSTEMTIME_ st; + boost::detail::win32::GetSystemTime( &st ); + boost::detail::win32::SystemTimeToFileTime( &st, &ft ); + #else + boost::detail::win32::GetSystemTimeAsFileTime( &ft ); // never fails + #endif + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + return time_point(duration( + (static_cast<__int64>( ft.dwHighDateTime ) << 32) | ft.dwLowDateTime)); + } +#endif + + BOOST_CHRONO_INLINE + std::time_t system_clock::to_time_t(const system_clock::time_point& t) BOOST_NOEXCEPT + { + __int64 temp = t.time_since_epoch().count(); + + # if (!defined( BOOST_MSVC )) || (BOOST_MSVC > 1300) // > VC++ 7.0 + temp -= 116444736000000000LL; // delta from epoch in microseconds + # else + temp -= 116444736000000000; + # endif + + temp /= 10000000; + return static_cast( temp ); + } + + BOOST_CHRONO_INLINE + system_clock::time_point system_clock::from_time_t(std::time_t t) BOOST_NOEXCEPT + { + __int64 temp = t; + temp *= 10000000; + + # if (!defined( BOOST_MSVC )) || (BOOST_MSVC > 1300) // > VC++ 7.0 + temp += 116444736000000000LL; + # else + temp += 116444736000000000; + # endif + + return time_point(duration(temp)); + } + +} // namespace chrono +} // namespace boost + +#endif diff --git a/contrib/prebuilt/include/boost/chrono/detail/is_evenly_divisible_by.hpp b/contrib/prebuilt/include/boost/chrono/detail/is_evenly_divisible_by.hpp new file mode 100644 index 0000000..960a208 --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/detail/is_evenly_divisible_by.hpp @@ -0,0 +1,31 @@ +// is_evenly_divisible_by.hpp --------------------------------------------------------------// + +// Copyright 2009-2010 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_CHRONO_DETAIL_IS_EVENLY_DIVISIBLE_BY_HPP +#define BOOST_CHRONO_DETAIL_IS_EVENLY_DIVISIBLE_BY_HPP + +#include + +#include +#include + +namespace boost { +namespace chrono { +namespace chrono_detail { + +// template +// struct is_evenly_divisible_by : public boost::mpl::bool_ < ratio_divide::type::den == 1 > +// {}; + template + struct is_evenly_divisible_by : public boost::ratio_detail::is_evenly_divisible_by + {}; + +} // namespace chrono_detail +} // namespace detail +} // namespace chrono + +#endif // BOOST_CHRONO_DETAIL_IS_EVENLY_DIVISIBLE_BY_HPP diff --git a/contrib/prebuilt/include/boost/chrono/detail/static_assert.hpp b/contrib/prebuilt/include/boost/chrono/detail/static_assert.hpp new file mode 100644 index 0000000..1ad21a5 --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/detail/static_assert.hpp @@ -0,0 +1,30 @@ +// static_assert.hpp --------------------------------------------------------------// + +// Copyright 2009-2010 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +#ifndef BOOST_CHRONO_DETAIL_STATIC_ASSERT_HPP +#define BOOST_CHRONO_DETAIL_STATIC_ASSERT_HPP + +#include + +#ifndef BOOST_NO_STATIC_ASSERT +#define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) static_assert(CND,MSG) +#elif defined(BOOST_CHRONO_USES_STATIC_ASSERT) +#include +#define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) BOOST_STATIC_ASSERT(CND) +#elif defined(BOOST_CHRONO_USES_MPL_ASSERT) +#include +#include +#define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) \ + BOOST_MPL_ASSERT_MSG(boost::mpl::bool_< (CND) >::type::value, MSG, TYPES) +#else +//~ #elif defined(BOOST_CHRONO_USES_ARRAY_ASSERT) +#define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) static char BOOST_JOIN(boost_chrono_test_,__LINE__)[(CND)?1:-1] +//~ #define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) +#endif + +#endif // BOOST_CHRONO_DETAIL_STATIC_ASSERT_HPP diff --git a/contrib/prebuilt/include/boost/chrono/detail/system.hpp b/contrib/prebuilt/include/boost/chrono/detail/system.hpp new file mode 100644 index 0000000..0dcffe8 --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/detail/system.hpp @@ -0,0 +1,29 @@ +// Copyright 2009-2010 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_CHRONO_DETAIL_SYSTEM_HPP +#define BOOST_CHRONO_DETAIL_SYSTEM_HPP + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING + +#include +#include + +#if ((BOOST_VERSION / 100000) < 2) && ((BOOST_VERSION / 100 % 1000) < 44) +#define BOOST_CHRONO_SYSTEM_CATEGORY boost::system::system_category +#else +#define BOOST_CHRONO_SYSTEM_CATEGORY boost::system::system_category() +#endif + +#ifdef BOOST_SYSTEM_NO_DEPRECATED +#define BOOST_CHRONO_THROWS boost::throws() +#define BOOST_CHRONO_IS_THROWS(EC) (&EC==&boost::throws()) +#else +#define BOOST_CHRONO_THROWS boost::system::throws +#define BOOST_CHRONO_IS_THROWS(EC) (&EC==&boost::system::throws) +#endif + +#endif +#endif diff --git a/contrib/prebuilt/include/boost/chrono/duration.hpp b/contrib/prebuilt/include/boost/chrono/duration.hpp new file mode 100644 index 0000000..e32357c --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/duration.hpp @@ -0,0 +1,795 @@ +// duration.hpp --------------------------------------------------------------// + +// Copyright 2008 Howard Hinnant +// Copyright 2008 Beman Dawes +// Copyright 2009-2011 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +/* + +This code was derived by Beman Dawes from Howard Hinnant's time2_demo prototype. +Many thanks to Howard for making his code available under the Boost license. +The original code was modified to conform to Boost conventions and to section +20.9 Time utilities [time] of the C++ committee's working paper N2798. +See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2798.pdf. + +time2_demo contained this comment: + + Much thanks to Andrei Alexandrescu, + Walter Brown, + Peter Dimov, + Jeff Garland, + Terry Golubiewski, + Daniel Krugler, + Anthony Williams. +*/ + + +#ifndef BOOST_CHRONO_DURATION_HPP +#define BOOST_CHRONO_DURATION_HPP + +#include +#include + +#include +#include + + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#if !defined(BOOST_NO_STATIC_ASSERT) || !defined(BOOST_CHRONO_USES_MPL_ASSERT) +#define BOOST_CHRONO_A_DURATION_REPRESENTATION_CAN_NOT_BE_A_DURATION "A duration representation can not be a duration" +#define BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_DURATION_MUST_BE_A_STD_RATIO "Second template parameter of duration must be a boost::ratio" +#define BOOST_CHRONO_DURATION_PERIOD_MUST_BE_POSITIVE "duration period must be positive" +#define BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_TIME_POINT_MUST_BE_A_BOOST_CHRONO_DURATION "Second template parameter of time_point must be a boost::chrono::duration" +#endif + +#ifndef BOOST_CHRONO_HEADER_ONLY +// this must occur after all of the includes and before any code appears: +#include // must be the last #include +#endif + +//----------------------------------------------------------------------------// +// // +// 20.9 Time utilities [time] // +// synopsis // +// // +//----------------------------------------------------------------------------// + +namespace boost { +namespace chrono { + + template > + class duration; + + namespace detail + { + template + struct is_duration + : boost::false_type {}; + + template + struct is_duration > + : boost::true_type {}; + + template ::value> + struct duration_divide_result + { + }; + + template ::type>::value)) + && ((boost::is_convertible::type>::value)) + ) + > + struct duration_divide_imp + { + }; + + template + struct duration_divide_imp, Rep2, true> + { + typedef duration::type, Period> type; + }; + + template + struct duration_divide_result, Rep2, false> + : duration_divide_imp, Rep2> + { + }; + +/// + template ::value> + struct duration_divide_result2 + { + }; + + template ::type>::value)) + && ((boost::is_convertible::type>::value)) + ) + > + struct duration_divide_imp2 + { + }; + + template + struct duration_divide_imp2, true> + { + //typedef typename common_type::type type; + typedef double type; + }; + + template + struct duration_divide_result2, false> + : duration_divide_imp2 > + { + }; + +/// + template ::value> + struct duration_modulo_result + { + }; + + template ::type>::value + //&& + boost::is_convertible::type>::value + ) + > + struct duration_modulo_imp + { + }; + + template + struct duration_modulo_imp, Rep2, true> + { + typedef duration::type, Period> type; + }; + + template + struct duration_modulo_result, Rep2, false> + : duration_modulo_imp, Rep2> + { + }; + +} // namespace detail +} // namespace chrono + + +// common_type trait specializations + +template +struct common_type, + chrono::duration >; + + +namespace chrono { + + // customization traits + template struct treat_as_floating_point; + template struct duration_values; + + // convenience typedefs + typedef duration nanoseconds; // at least 64 bits needed + typedef duration microseconds; // at least 55 bits needed + typedef duration milliseconds; // at least 45 bits needed + typedef duration seconds; // at least 35 bits needed + typedef duration > minutes; // at least 29 bits needed + typedef duration > hours; // at least 23 bits needed + +//----------------------------------------------------------------------------// +// duration helpers // +//----------------------------------------------------------------------------// + +namespace detail +{ + + // duration_cast + + // duration_cast is the heart of this whole prototype. It can convert any + // duration to any other. It is also (implicitly) used in converting + // time_points. The conversion is always exact if possible. And it is + // always as efficient as hand written code. If different representations + // are involved, care is taken to never require implicit conversions. + // Instead static_cast is used explicitly for every required conversion. + // If there are a mixture of integral and floating point representations, + // the use of common_type ensures that the most logical "intermediate" + // representation is used. + template + struct duration_cast_aux; + + // When the two periods are the same, all that is left to do is static_cast from + // the source representation to the target representation (which may be a no-op). + // This conversion is always exact as long as the static_cast from the source + // representation to the destination representation is exact. + template + struct duration_cast_aux + { + BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const + { + return ToDuration(static_cast(fd.count())); + } + }; + + // When the numerator of FromPeriod / ToPeriod is 1, then all we need to do is + // divide by the denominator of FromPeriod / ToPeriod. The common_type of + // the two representations is used for the intermediate computation before + // static_cast'ing to the destination. + // This conversion is generally not exact because of the division (but could be + // if you get lucky on the run time value of fd.count()). + template + struct duration_cast_aux + { + BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const + { + typedef typename common_type< + typename ToDuration::rep, + typename FromDuration::rep, + boost::intmax_t>::type C; + return ToDuration(static_cast( + static_cast(fd.count()) / static_cast(Period::den))); + } + }; + + // When the denominator of FromPeriod / ToPeriod is 1, then all we need to do is + // multiply by the numerator of FromPeriod / ToPeriod. The common_type of + // the two representations is used for the intermediate computation before + // static_cast'ing to the destination. + // This conversion is always exact as long as the static_cast's involved are exact. + template + struct duration_cast_aux + { + BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const + { + typedef typename common_type< + typename ToDuration::rep, + typename FromDuration::rep, + boost::intmax_t>::type C; + return ToDuration(static_cast( + static_cast(fd.count()) * static_cast(Period::num))); + } + }; + + // When neither the numerator or denominator of FromPeriod / ToPeriod is 1, then we need to + // multiply by the numerator and divide by the denominator of FromPeriod / ToPeriod. The + // common_type of the two representations is used for the intermediate computation before + // static_cast'ing to the destination. + // This conversion is generally not exact because of the division (but could be + // if you get lucky on the run time value of fd.count()). + template + struct duration_cast_aux + { + BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const + { + typedef typename common_type< + typename ToDuration::rep, + typename FromDuration::rep, + boost::intmax_t>::type C; + return ToDuration(static_cast( + static_cast(fd.count()) * static_cast(Period::num) + / static_cast(Period::den))); + } + }; + + template + struct duration_cast { + typedef typename ratio_divide::type Period; + typedef duration_cast_aux< + FromDuration, + ToDuration, + Period, + Period::num == 1, + Period::den == 1 + > Aux; + BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const + { + return Aux()(fd); + } + }; + +} // namespace detail + +//----------------------------------------------------------------------------// +// // +// 20.9.2 Time-related traits [time.traits] // +// // +//----------------------------------------------------------------------------// +//----------------------------------------------------------------------------// +// 20.9.2.1 treat_as_floating_point [time.traits.is_fp] // +// Probably should have been treat_as_floating_point. Editor notifed. // +//----------------------------------------------------------------------------// + + // Support bidirectional (non-exact) conversions for floating point rep types + // (or user defined rep types which specialize treat_as_floating_point). + template + struct treat_as_floating_point : boost::is_floating_point {}; + +//----------------------------------------------------------------------------// +// 20.9.2.2 duration_values [time.traits.duration_values] // +//----------------------------------------------------------------------------// + +namespace detail { + template ::value> + struct chrono_numeric_limits { + static T lowest() throw() {return (std::numeric_limits::min) ();} + }; + + template + struct chrono_numeric_limits { + static T lowest() throw() {return (std::numeric_limits::min) ();} + }; + + template <> + struct chrono_numeric_limits { + static float lowest() throw() + { + return -(std::numeric_limits::max) (); + } + }; + + template <> + struct chrono_numeric_limits { + static double lowest() throw() + { + return -(std::numeric_limits::max) (); + } + }; + + template <> + struct chrono_numeric_limits { + static long double lowest() throw() + { + return -(std::numeric_limits::max)(); + } + }; + + template + struct numeric_limits : chrono_numeric_limits::type> + {}; + +} +template +struct duration_values +{ + static BOOST_CONSTEXPR Rep zero() {return Rep(0);} + static BOOST_CONSTEXPR Rep max BOOST_PREVENT_MACRO_SUBSTITUTION () + { + return (std::numeric_limits::max)(); + } + + static BOOST_CONSTEXPR Rep min BOOST_PREVENT_MACRO_SUBSTITUTION () + { + return detail::numeric_limits::lowest(); + } +}; + +} // namespace chrono + +//----------------------------------------------------------------------------// +// 20.9.2.3 Specializations of common_type [time.traits.specializations] // +//----------------------------------------------------------------------------// + +template +struct common_type, + chrono::duration > +{ + typedef chrono::duration::type, + typename boost::ratio_gcd::type> type; +}; + + +//----------------------------------------------------------------------------// +// // +// 20.9.3 Class template duration [time.duration] // +// // +//----------------------------------------------------------------------------// + + +namespace chrono { + + template + class duration + { + //BOOST_CHRONO_STATIC_ASSERT(boost::is_integral::value, BOOST_CHRONO_A_DURATION_REPRESENTATION_MUST_BE_INTEGRAL, ()); + BOOST_CHRONO_STATIC_ASSERT(!boost::chrono::detail::is_duration::value, + BOOST_CHRONO_A_DURATION_REPRESENTATION_CAN_NOT_BE_A_DURATION, ()); + BOOST_CHRONO_STATIC_ASSERT(boost::ratio_detail::is_ratio::value, + BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_DURATION_MUST_BE_A_STD_RATIO, ()); + BOOST_CHRONO_STATIC_ASSERT(Period::num>0, + BOOST_CHRONO_DURATION_PERIOD_MUST_BE_POSITIVE, ()); + public: + typedef Rep rep; + typedef Period period; + private: + rep rep_; + public: + + BOOST_CONSTEXPR + duration() : rep_(duration_values::zero()) { } + template + BOOST_CONSTEXPR + explicit duration(const Rep2& r + , typename boost::enable_if < + mpl::and_ < + boost::is_convertible, + mpl::or_ < + treat_as_floating_point, + mpl::and_ < + mpl::not_ < treat_as_floating_point >, + mpl::not_ < treat_as_floating_point > + > + > + > + >::type* = 0 + ) : rep_(r) { } + //~duration() {} //= default; + BOOST_CONSTEXPR + duration(const duration& rhs) : rep_(rhs.rep_) {} // = default; + duration& operator=(const duration& rhs) // = default; + { + if (&rhs != this) rep_= rhs.rep_; + return *this; + } + + // conversions + template + BOOST_CONSTEXPR + duration(const duration& d + , typename boost::enable_if < + mpl::or_ < + treat_as_floating_point, + mpl::and_ < + chrono_detail::is_evenly_divisible_by, + mpl::not_ < treat_as_floating_point > + > + > + >::type* = 0 + ) + : rep_(chrono::detail::duration_cast, duration>()(d).count()) {} + + // observer + + BOOST_CONSTEXPR + rep count() const {return rep_;} + + // arithmetic + + BOOST_CONSTEXPR + duration operator+() const {return *this;} + BOOST_CONSTEXPR + duration operator-() const {return duration(-rep_);} + duration& operator++() {++rep_; return *this;} + duration operator++(int) {return duration(rep_++);} + duration& operator--() {--rep_; return *this;} + duration operator--(int) {return duration(rep_--);} + + duration& operator+=(const duration& d) + { + rep_ += d.count(); return *this; + } + duration& operator-=(const duration& d) + { + rep_ -= d.count(); return *this; + } + + duration& operator*=(const rep& rhs) {rep_ *= rhs; return *this;} + duration& operator/=(const rep& rhs) {rep_ /= rhs; return *this;} + duration& operator%=(const rep& rhs) {rep_ %= rhs; return *this;} + duration& operator%=(const duration& rhs) + { + rep_ %= rhs.count(); return *this; + } + // 20.9.3.4 duration special values [time.duration.special] + + static BOOST_CONSTEXPR duration zero() + { + return duration(duration_values::zero()); + } + static BOOST_CONSTEXPR duration min BOOST_PREVENT_MACRO_SUBSTITUTION () + { + return duration((duration_values::min)()); + } + static BOOST_CONSTEXPR duration max BOOST_PREVENT_MACRO_SUBSTITUTION () + { + return duration((duration_values::max)()); + } + }; + +//----------------------------------------------------------------------------// +// 20.9.3.5 duration non-member arithmetic [time.duration.nonmember] // +//----------------------------------------------------------------------------// + + // Duration + + + template + inline BOOST_CONSTEXPR + typename common_type, duration >::type + operator+(const duration& lhs, + const duration& rhs) + { + typedef typename common_type, + duration >::type CD; + return CD(CD(lhs).count()+CD(rhs).count()); + } + + // Duration - + + template + inline BOOST_CONSTEXPR + typename common_type, duration >::type + operator-(const duration& lhs, + const duration& rhs) + { + typedef typename common_type, + duration >::type CD; + return CD(CD(lhs).count()-CD(rhs).count()); + } + + // Duration * + + template + inline BOOST_CONSTEXPR + typename boost::enable_if < + mpl::and_ < + boost::is_convertible::type>, + boost::is_convertible::type> + >, + duration::type, Period> + >::type + operator*(const duration& d, const Rep2& s) + { + typedef typename common_type::type CR; + typedef duration CD; + return CD(CD(d).count()*static_cast(s)); + } + + template + inline BOOST_CONSTEXPR + typename boost::enable_if < + mpl::and_ < + boost::is_convertible::type>, + boost::is_convertible::type> + >, + duration::type, Period> + >::type + operator*(const Rep1& s, const duration& d) + { + return d * s; + } + + // Duration / + + template + inline BOOST_CONSTEXPR + typename boost::disable_if , + typename boost::chrono::detail::duration_divide_result< + duration, Rep2>::type + >::type + operator/(const duration& d, const Rep2& s) + { + typedef typename common_type::type CR; + typedef duration CD; + + return CD(CD(d).count()/static_cast(s)); + } + + template + inline BOOST_CONSTEXPR + typename common_type::type + operator/(const duration& lhs, const duration& rhs) + { + typedef typename common_type, + duration >::type CD; + return CD(lhs).count() / CD(rhs).count(); + } + + #ifdef BOOST_CHRONO_EXTENSIONS + template + inline BOOST_CONSTEXPR + typename boost::disable_if , + typename boost::chrono::detail::duration_divide_result2< + Rep1, duration >::type + >::type + operator/(const Rep1& s, const duration& d) + { + typedef typename common_type::type CR; + typedef duration CD; + + return static_cast(s)/CD(d).count(); + } + #endif + // Duration % + + template + inline BOOST_CONSTEXPR + typename boost::disable_if , + typename boost::chrono::detail::duration_modulo_result< + duration, Rep2>::type + >::type + operator%(const duration& d, const Rep2& s) + { + typedef typename common_type::type CR; + typedef duration CD; + + return CD(CD(d).count()%static_cast(s)); + } + + template + inline BOOST_CONSTEXPR + typename common_type, duration >::type + operator%(const duration& lhs, + const duration& rhs) { + typedef typename common_type, + duration >::type CD; + + return CD(CD(lhs).count()%CD(rhs).count()); + } + + +//----------------------------------------------------------------------------// +// 20.9.3.6 duration comparisons [time.duration.comparisons] // +//----------------------------------------------------------------------------// + +namespace detail +{ + template + struct duration_eq + { + BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const RhsDuration& rhs) + { + typedef typename common_type::type CD; + return CD(lhs).count() == CD(rhs).count(); + } + }; + + template + struct duration_eq + { + BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const LhsDuration& rhs) + { + return lhs.count() == rhs.count(); + } + }; + + template + struct duration_lt + { + BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const RhsDuration& rhs) + { + typedef typename common_type::type CD; + return CD(lhs).count() < CD(rhs).count(); + } + }; + + template + struct duration_lt + { + BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const LhsDuration& rhs) + { + return lhs.count() < rhs.count(); + } + }; + +} // namespace detail + + // Duration == + + template + inline BOOST_CONSTEXPR + bool + operator==(const duration& lhs, + const duration& rhs) + { + return boost::chrono::detail::duration_eq< + duration, duration >()(lhs, rhs); + } + + // Duration != + + template + inline BOOST_CONSTEXPR + bool + operator!=(const duration& lhs, + const duration& rhs) + { + return !(lhs == rhs); + } + + // Duration < + + template + inline BOOST_CONSTEXPR + bool + operator< (const duration& lhs, + const duration& rhs) + { + return boost::chrono::detail::duration_lt< + duration, duration >()(lhs, rhs); + } + + // Duration > + + template + inline BOOST_CONSTEXPR + bool + operator> (const duration& lhs, + const duration& rhs) + { + return rhs < lhs; + } + + // Duration <= + + template + inline BOOST_CONSTEXPR + bool + operator<=(const duration& lhs, + const duration& rhs) + { + return !(rhs < lhs); + } + + // Duration >= + + template + inline + bool + operator>=(const duration& lhs, + const duration& rhs) + { + return !(lhs < rhs); + } + +//----------------------------------------------------------------------------// +// 20.9.3.7 duration_cast [time.duration.cast] // +//----------------------------------------------------------------------------// + + // Compile-time select the most efficient algorithm for the conversion... + template + inline BOOST_CONSTEXPR + typename boost::enable_if < + boost::chrono::detail::is_duration, ToDuration>::type + duration_cast(const duration& fd) + { + return boost::chrono::detail::duration_cast< + duration, ToDuration>()(fd); + } + +} // namespace chrono +} // namespace boost + +#ifndef BOOST_CHRONO_HEADER_ONLY +// the suffix header occurs after all of our code: +#include // pops abi_prefix.hpp pragmas +#endif + +#endif // BOOST_CHRONO_DURATION_HPP diff --git a/contrib/prebuilt/include/boost/chrono/system_clocks.hpp b/contrib/prebuilt/include/boost/chrono/system_clocks.hpp new file mode 100644 index 0000000..df8b79e --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/system_clocks.hpp @@ -0,0 +1,233 @@ +// boost/chrono/system_clocks.hpp --------------------------------------------------------------// + +// Copyright 2008 Howard Hinnant +// Copyright 2008 Beman Dawes +// Copyright 2009-2011 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +/* + +This code was derived by Beman Dawes from Howard Hinnant's time2_demo prototype. +Many thanks to Howard for making his code available under the Boost license. +The original code was modified to conform to Boost conventions and to section +20.9 Time utilities [time] of the C++ committee's working paper N2798. +See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2798.pdf. + +time2_demo contained this comment: + + Much thanks to Andrei Alexandrescu, + Walter Brown, + Peter Dimov, + Jeff Garland, + Terry Golubiewski, + Daniel Krugler, + Anthony Williams. +*/ + +/* + +TODO: + + * Fully implement error handling, with test cases. + * Consider issues raised by Michael Marcin: + + > In the past I've seen QueryPerformanceCounter give incorrect results, + > especially with SpeedStep processors on laptops. This was many years ago and + > might have been fixed by service packs and drivers. + > + > Typically you check the results of QPC against GetTickCount to see if the + > results are reasonable. + > http://support.microsoft.com/kb/274323 + > + > I've also heard of problems with QueryPerformanceCounter in multi-processor + > systems. + > + > I know some people SetThreadAffinityMask to 1 for the current thread call + > their QueryPerformance* functions then restore SetThreadAffinityMask. This + > seems horrible to me because it forces your program to jump to another + > physical processor if it isn't already on cpu0 but they claim it worked well + > in practice because they called the timing functions infrequently. + > + > In the past I have chosen to use timeGetTime with timeBeginPeriod(1) for + > high resolution timers to avoid these issues. + +*/ + +#ifndef BOOST_CHRONO_SYSTEM_CLOCKS_HPP +#define BOOST_CHRONO_SYSTEM_CLOCKS_HPP + +#include +#include +#include +#include +#include + +#include + +# if defined( BOOST_CHRONO_POSIX_API ) +# if ! defined(CLOCK_REALTIME) +# error does not supply CLOCK_REALTIME +# endif +# endif + +#ifdef BOOST_CHRONO_WINDOWS_API +// The system_clock tick is 100 nanoseconds +# define BOOST_SYSTEM_CLOCK_DURATION boost::chrono::duration > +#else +# define BOOST_SYSTEM_CLOCK_DURATION boost::chrono::nanoseconds +#endif + +// this must occur after all of the includes and before any code appears: +#ifndef BOOST_CHRONO_HEADER_ONLY +#include // must be the last #include +#endif + + +//----------------------------------------------------------------------------// +// // +// 20.9 Time utilities [time] // +// synopsis // +// // +//----------------------------------------------------------------------------// + +namespace boost { +namespace chrono { + + // Clocks + class BOOST_CHRONO_DECL system_clock; +#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY + class BOOST_CHRONO_DECL steady_clock; +#endif + +#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY + typedef steady_clock high_resolution_clock; // as permitted by [time.clock.hires] +#else + typedef system_clock high_resolution_clock; // as permitted by [time.clock.hires] +#endif + +//----------------------------------------------------------------------------// +// // +// 20.9.5 Clocks [time.clock] // +// // +//----------------------------------------------------------------------------// + +// If you're porting, clocks are the system-specific (non-portable) part. +// You'll need to know how to get the current time and implement that under now(). +// You'll need to know what units (tick period) and representation makes the most +// sense for your clock and set those accordingly. +// If you know how to map this clock to time_t (perhaps your clock is std::time, which +// makes that trivial), then you can fill out system_clock's to_time_t() and from_time_t(). + +//----------------------------------------------------------------------------// +// 20.9.5.1 Class system_clock [time.clock.system] // +//----------------------------------------------------------------------------// + + class BOOST_CHRONO_DECL system_clock + { + public: + typedef BOOST_SYSTEM_CLOCK_DURATION duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + BOOST_STATIC_CONSTEXPR bool is_steady = false; + + static BOOST_CHRONO_INLINE time_point now() BOOST_NOEXCEPT; +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING + static BOOST_CHRONO_INLINE time_point now(system::error_code & ec); +#endif + + static BOOST_CHRONO_INLINE std::time_t to_time_t(const time_point& t) BOOST_NOEXCEPT; + static BOOST_CHRONO_INLINE time_point from_time_t(std::time_t t) BOOST_NOEXCEPT; + }; + +//----------------------------------------------------------------------------// +// 20.9.5.2 Class steady_clock [time.clock.steady] // +//----------------------------------------------------------------------------// + +// As permitted by [time.clock.steady] +// The class steady_clock is conditionally supported. + +#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY + class BOOST_CHRONO_DECL steady_clock + { + public: + typedef nanoseconds duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + BOOST_STATIC_CONSTEXPR bool is_steady = true; + + static BOOST_CHRONO_INLINE time_point now() BOOST_NOEXCEPT; +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING + static BOOST_CHRONO_INLINE time_point now(system::error_code & ec); +#endif + }; +#endif +//----------------------------------------------------------------------------// +// 20.9.5.3 Class high_resolution_clock [time.clock.hires] // +//----------------------------------------------------------------------------// + +// As permitted, steady_clock or system_clock is a typedef for high_resolution_clock. +// See synopsis. + + + template + struct clock_string + { + static std::basic_string name() + { + static const CharT u[] = + { 's', 'y', 's', 't', 'e', 'm', '_', 'c', 'l', 'o', 'c', 'k' }; + static const std::basic_string str(u, u + sizeof(u) + / sizeof(u[0])); + return str; + } + static std::basic_string since() + { + static const CharT + u[] = + { ' ', 's', 'i', 'n', 'c', 'e', ' ', 'J', 'a', 'n', ' ', '1', ',', ' ', '1', '9', '7', '0' }; + static const std::basic_string str(u, u + sizeof(u) + / sizeof(u[0])); + return str; + } + }; + +#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY + + template + struct clock_string + { + static std::basic_string name() + { + static const CharT + u[] = + { 's', 't', 'e', 'a', 'd', 'y', '_', 'c', 'l', 'o', 'c', 'k' }; + static const std::basic_string str(u, u + sizeof(u) + / sizeof(u[0])); + return str; + } + static std::basic_string since() + { + const CharT u[] = + { ' ', 's', 'i', 'n', 'c', 'e', ' ', 'b', 'o', 'o', 't' }; + const std::basic_string str(u, u + sizeof(u) / sizeof(u[0])); + return str; + } + }; + +#endif + +} // namespace chrono +} // namespace boost + +#ifndef BOOST_CHRONO_HEADER_ONLY +// the suffix header occurs after all of our code: +#include // pops abi_prefix.hpp pragmas +#else +#include +#endif + +#endif // BOOST_CHRONO_SYSTEM_CLOCKS_HPP diff --git a/contrib/prebuilt/include/boost/chrono/time_point.hpp b/contrib/prebuilt/include/boost/chrono/time_point.hpp new file mode 100644 index 0000000..9aad25e --- /dev/null +++ b/contrib/prebuilt/include/boost/chrono/time_point.hpp @@ -0,0 +1,379 @@ +// duration.hpp --------------------------------------------------------------// + +// Copyright 2008 Howard Hinnant +// Copyright 2008 Beman Dawes +// Copyright 2009-2012 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +/* + +This code was derived by Beman Dawes from Howard Hinnant's time2_demo prototype. +Many thanks to Howard for making his code available under the Boost license. +The original code was modified to conform to Boost conventions and to section +20.9 Time utilities [time] of the C++ committee's working paper N2798. +See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2798.pdf. + +time2_demo contained this comment: + + Much thanks to Andrei Alexandrescu, + Walter Brown, + Peter Dimov, + Jeff Garland, + Terry Golubiewski, + Daniel Krugler, + Anthony Williams. +*/ + + +#ifndef BOOST_CHRONO_TIME_POINT_HPP +#define BOOST_CHRONO_TIME_POINT_HPP + +#include +#include + +#ifndef BOOST_CHRONO_HEADER_ONLY +// this must occur after all of the includes and before any code appears: +#include // must be the last #include +#endif + +//----------------------------------------------------------------------------// +// // +// 20.9 Time utilities [time] // +// synopsis // +// // +//----------------------------------------------------------------------------// + +namespace boost { +namespace chrono { + + template + class time_point; + + +} // namespace chrono + + +// common_type trait specializations + +template + struct common_type, + chrono::time_point >; + + +//----------------------------------------------------------------------------// +// 20.9.2.3 Specializations of common_type [time.traits.specializations] // +//----------------------------------------------------------------------------// + + +template +struct common_type, + chrono::time_point > +{ + typedef chrono::time_point::type> type; +}; + + + +namespace chrono { + + // time_point arithmetic + template + inline BOOST_CONSTEXPR + time_point >::type> + operator+( + const time_point& lhs, + const duration& rhs); + template + inline BOOST_CONSTEXPR + time_point, Duration2>::type> + operator+( + const duration& lhs, + const time_point& rhs); + template + inline BOOST_CONSTEXPR + time_point >::type> + operator-( + const time_point& lhs, + const duration& rhs); + template + inline BOOST_CONSTEXPR + typename common_type::type + operator-( + const time_point& lhs, + const time_point& rhs); + + // time_point comparisons + template + inline BOOST_CONSTEXPR + bool operator==( + const time_point& lhs, + const time_point& rhs); + template + inline BOOST_CONSTEXPR + bool operator!=( + const time_point& lhs, + const time_point& rhs); + template + inline BOOST_CONSTEXPR + bool operator< ( + const time_point& lhs, + const time_point& rhs); + template + inline BOOST_CONSTEXPR + bool operator<=( + const time_point& lhs, + const time_point& rhs); + template + inline BOOST_CONSTEXPR + bool operator> ( + const time_point& lhs, + const time_point& rhs); + template + inline BOOST_CONSTEXPR + bool operator>=( + const time_point& lhs, + const time_point& rhs); + + // time_point_cast + template + inline BOOST_CONSTEXPR + time_point time_point_cast(const time_point& t); + +//----------------------------------------------------------------------------// +// // +// 20.9.4 Class template time_point [time.point] // +// // +//----------------------------------------------------------------------------// + + template + class time_point + { + BOOST_CHRONO_STATIC_ASSERT(boost::chrono::detail::is_duration::value, + BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_TIME_POINT_MUST_BE_A_BOOST_CHRONO_DURATION, (Duration)); + public: + typedef Clock clock; + typedef Duration duration; + typedef typename duration::rep rep; + typedef typename duration::period period; + typedef Duration difference_type; + + private: + duration d_; + + public: + BOOST_CONSTEXPR + time_point() : d_(duration::zero()) + {} + BOOST_CONSTEXPR explicit time_point(const duration& d) + : d_(d) + {} + + // conversions + template + BOOST_CONSTEXPR + time_point(const time_point& t + , typename boost::enable_if + < + boost::is_convertible + >::type* = 0 + ) + : d_(t.time_since_epoch()) + { + } + // observer + + BOOST_CONSTEXPR + duration time_since_epoch() const + { + return d_; + } + + // arithmetic + +#ifdef BOOST_CHRONO_EXTENSIONS + BOOST_CONSTEXPR + time_point operator+() const {return *this;} + BOOST_CONSTEXPR + time_point operator-() const {return time_point(-d_);} + time_point& operator++() {++d_; return *this;} + time_point operator++(int) {return time_point(d_++);} + time_point& operator--() {--d_; return *this;} + time_point operator--(int) {return time_point(d_--);} + + time_point& operator+=(const rep& r) {d_ += duration(r); return *this;} + time_point& operator-=(const rep& r) {d_ -= duration(r); return *this;} + +#endif + + time_point& operator+=(const duration& d) {d_ += d; return *this;} + time_point& operator-=(const duration& d) {d_ -= d; return *this;} + + // special values + + static BOOST_CONSTEXPR time_point + min BOOST_PREVENT_MACRO_SUBSTITUTION () + { + return time_point((duration::min)()); + } + static BOOST_CONSTEXPR time_point + max BOOST_PREVENT_MACRO_SUBSTITUTION () + { + return time_point((duration::max)()); + } + }; + +//----------------------------------------------------------------------------// +// 20.9.4.5 time_point non-member arithmetic [time.point.nonmember] // +//----------------------------------------------------------------------------// + + // time_point operator+(time_point x, duration y); + + template + inline BOOST_CONSTEXPR + time_point >::type> + operator+(const time_point& lhs, + const duration& rhs) + { + typedef typename common_type >::type CDuration; + typedef time_point< + Clock, + CDuration + > TimeResult; + return TimeResult(lhs.time_since_epoch() + CDuration(rhs)); + } + + // time_point operator+(duration x, time_point y); + + template + inline BOOST_CONSTEXPR + time_point, Duration2>::type> + operator+(const duration& lhs, + const time_point& rhs) + { + return rhs + lhs; + } + + // time_point operator-(time_point x, duration y); + + template + inline BOOST_CONSTEXPR + time_point >::type> + operator-(const time_point& lhs, + const duration& rhs) + { + return lhs + (-rhs); + } + + // duration operator-(time_point x, time_point y); + + template + inline BOOST_CONSTEXPR + typename common_type::type + operator-(const time_point& lhs, + const time_point& rhs) + { + return lhs.time_since_epoch() - rhs.time_since_epoch(); + } + +//----------------------------------------------------------------------------// +// 20.9.4.6 time_point comparisons [time.point.comparisons] // +//----------------------------------------------------------------------------// + + // time_point == + + template + inline BOOST_CONSTEXPR + bool + operator==(const time_point& lhs, + const time_point& rhs) + { + return lhs.time_since_epoch() == rhs.time_since_epoch(); + } + + // time_point != + + template + inline BOOST_CONSTEXPR + bool + operator!=(const time_point& lhs, + const time_point& rhs) + { + return !(lhs == rhs); + } + + // time_point < + + template + inline BOOST_CONSTEXPR + bool + operator<(const time_point& lhs, + const time_point& rhs) + { + return lhs.time_since_epoch() < rhs.time_since_epoch(); + } + + // time_point > + + template + inline BOOST_CONSTEXPR + bool + operator>(const time_point& lhs, + const time_point& rhs) + { + return rhs < lhs; + } + + // time_point <= + + template + inline BOOST_CONSTEXPR + bool + operator<=(const time_point& lhs, + const time_point& rhs) + { + return !(rhs < lhs); + } + + // time_point >= + + template + inline BOOST_CONSTEXPR + bool + operator>=(const time_point& lhs, + const time_point& rhs) + { + return !(lhs < rhs); + } + +//----------------------------------------------------------------------------// +// 20.9.4.7 time_point_cast [time.point.cast] // +//----------------------------------------------------------------------------// + + template + inline BOOST_CONSTEXPR + time_point + time_point_cast(const time_point& t) + { + return time_point( + duration_cast(t.time_since_epoch())); + } + +} // namespace chrono +} // namespace boost + +#ifndef BOOST_CHRONO_HEADER_ONLY +// the suffix header occurs after all of our code: +#include // pops abi_prefix.hpp pragmas +#endif + +#endif // BOOST_CHRONO_TIME_POINT_HPP diff --git a/contrib/prebuilt/include/boost/compressed_pair.hpp b/contrib/prebuilt/include/boost/compressed_pair.hpp new file mode 100644 index 0000000..e6cd6a0 --- /dev/null +++ b/contrib/prebuilt/include/boost/compressed_pair.hpp @@ -0,0 +1,24 @@ +// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). +// +// See http://www.boost.org/libs/utility for most recent version including documentation. + +// See boost/detail/compressed_pair.hpp and boost/detail/ob_compressed_pair.hpp +// for full copyright notices. + +#ifndef BOOST_COMPRESSED_PAIR_HPP +#define BOOST_COMPRESSED_PAIR_HPP + +#ifndef BOOST_CONFIG_HPP +#include +#endif + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +#include +#else +#include +#endif + +#endif // BOOST_COMPRESSED_PAIR_HPP diff --git a/contrib/prebuilt/include/boost/concept/assert.hpp b/contrib/prebuilt/include/boost/concept/assert.hpp new file mode 100644 index 0000000..80eca81 --- /dev/null +++ b/contrib/prebuilt/include/boost/concept/assert.hpp @@ -0,0 +1,46 @@ +// Copyright David Abrahams 2006. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_CONCEPT_ASSERT_DWA2006430_HPP +# define BOOST_CONCEPT_ASSERT_DWA2006430_HPP + +# include +# include + +// The old protocol used a constraints() member function in concept +// checking classes. If the compiler supports SFINAE, we can detect +// that function and seamlessly support the old concept checking +// classes. In this release, backward compatibility with the old +// concept checking classes is enabled by default, where available. +// The old protocol is deprecated, though, and backward compatibility +// will no longer be the default in the next release. + +# if !defined(BOOST_NO_OLD_CONCEPT_SUPPORT) \ + && !defined(BOOST_NO_SFINAE) \ + \ + && !(BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4)) \ + && !(BOOST_WORKAROUND(__GNUC__, == 2)) + +// Note: gcc-2.96 through 3.3.x have some SFINAE, but no ability to +// check for the presence of particularmember functions. + +# define BOOST_OLD_CONCEPT_SUPPORT + +# endif + +# ifdef BOOST_MSVC +# include +# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +# include +# else +# include +# endif + + // Usage, in class or function context: + // + // BOOST_CONCEPT_ASSERT((UnaryFunctionConcept)); + // +# define BOOST_CONCEPT_ASSERT(ModelInParens) \ + BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) + +#endif // BOOST_CONCEPT_ASSERT_DWA2006430_HPP diff --git a/contrib/prebuilt/include/boost/concept/detail/backward_compatibility.hpp b/contrib/prebuilt/include/boost/concept/detail/backward_compatibility.hpp new file mode 100644 index 0000000..66d573e --- /dev/null +++ b/contrib/prebuilt/include/boost/concept/detail/backward_compatibility.hpp @@ -0,0 +1,16 @@ +// Copyright David Abrahams 2009. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP +# define BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP + +namespace boost +{ + namespace concepts {} + +# if defined(BOOST_HAS_CONCEPTS) && !defined(BOOST_CONCEPT_NO_BACKWARD_KEYWORD) + namespace concept = concepts; +# endif +} // namespace boost::concept + +#endif // BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP diff --git a/contrib/prebuilt/include/boost/concept/detail/borland.hpp b/contrib/prebuilt/include/boost/concept/detail/borland.hpp new file mode 100644 index 0000000..300d5d4 --- /dev/null +++ b/contrib/prebuilt/include/boost/concept/detail/borland.hpp @@ -0,0 +1,30 @@ +// Copyright David Abrahams 2006. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP +# define BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP + +# include +# include + +namespace boost { namespace concepts { + +template +struct require; + +template +struct require +{ + enum { instantiate = sizeof((((Model*)0)->~Model()), 3) }; +}; + +# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \ + enum \ + { \ + BOOST_PP_CAT(boost_concept_check,__LINE__) = \ + boost::concepts::require::instantiate \ + } + +}} // namespace boost::concept + +#endif // BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP diff --git a/contrib/prebuilt/include/boost/concept/detail/concept_def.hpp b/contrib/prebuilt/include/boost/concept/detail/concept_def.hpp new file mode 100644 index 0000000..79f628e --- /dev/null +++ b/contrib/prebuilt/include/boost/concept/detail/concept_def.hpp @@ -0,0 +1,51 @@ +// Copyright David Abrahams 2006. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP +# define BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP +# include +# include +# include +# include +#endif // BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP + +// BOOST_concept(SomeName, (p1)(p2)...(pN)) +// +// Expands to "template struct SomeName" +// +// Also defines an equivalent SomeNameConcept for backward compatibility. +// Maybe in the next release we can kill off the "Concept" suffix for good. +#if BOOST_WORKAROUND(__GNUC__, <= 3) +# define BOOST_concept(name, params) \ + template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ + struct name; /* forward declaration */ \ + \ + template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ + struct BOOST_PP_CAT(name,Concept) \ + : name< BOOST_PP_SEQ_ENUM(params) > \ + { \ + /* at least 2.96 and 3.4.3 both need this */ \ + BOOST_PP_CAT(name,Concept)(); \ + }; \ + \ + template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ + struct name +#else +# define BOOST_concept(name, params) \ + template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ + struct name; /* forward declaration */ \ + \ + template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ + struct BOOST_PP_CAT(name,Concept) \ + : name< BOOST_PP_SEQ_ENUM(params) > \ + { \ + }; \ + \ + template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ + struct name +#endif + +// Helper for BOOST_concept, above. +# define BOOST_CONCEPT_typename(r, ignored, index, t) \ + BOOST_PP_COMMA_IF(index) typename t + diff --git a/contrib/prebuilt/include/boost/concept/detail/concept_undef.hpp b/contrib/prebuilt/include/boost/concept/detail/concept_undef.hpp new file mode 100644 index 0000000..713db89 --- /dev/null +++ b/contrib/prebuilt/include/boost/concept/detail/concept_undef.hpp @@ -0,0 +1,5 @@ +// Copyright David Abrahams 2006. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +# undef BOOST_concept_typename +# undef BOOST_concept diff --git a/contrib/prebuilt/include/boost/concept/detail/general.hpp b/contrib/prebuilt/include/boost/concept/detail/general.hpp new file mode 100644 index 0000000..e3014c1 --- /dev/null +++ b/contrib/prebuilt/include/boost/concept/detail/general.hpp @@ -0,0 +1,75 @@ +// Copyright David Abrahams 2006. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP +# define BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP + +# include +# include + +# ifdef BOOST_OLD_CONCEPT_SUPPORT +# include +# include +# endif + +// This implementation works on Comeau and GCC, all the way back to +// 2.95 +namespace boost { namespace concepts { + +template +struct requirement_; + +namespace detail +{ + template struct instantiate {}; +} + +template +struct requirement +{ + static void failed() { ((Model*)0)->~Model(); } +}; + +struct failed {}; + +template +struct requirement +{ + static void failed() { ((Model*)0)->~Model(); } +}; + +# ifdef BOOST_OLD_CONCEPT_SUPPORT + +template +struct constraint +{ + static void failed() { ((Model*)0)->constraints(); } +}; + +template +struct requirement_ + : mpl::if_< + concepts::not_satisfied + , constraint + , requirement + >::type +{}; + +# else + +// For GCC-2.x, these can't have exactly the same name +template +struct requirement_ + : requirement +{}; + +# endif + +# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \ + typedef ::boost::concepts::detail::instantiate< \ + &::boost::concepts::requirement_::failed> \ + BOOST_PP_CAT(boost_concept_check,__LINE__) + +}} + +#endif // BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP diff --git a/contrib/prebuilt/include/boost/concept/detail/has_constraints.hpp b/contrib/prebuilt/include/boost/concept/detail/has_constraints.hpp new file mode 100644 index 0000000..a309db3 --- /dev/null +++ b/contrib/prebuilt/include/boost/concept/detail/has_constraints.hpp @@ -0,0 +1,50 @@ +// Copyright David Abrahams 2006. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP +# define BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP + +# include +# include +# include + +namespace boost { namespace concepts { + +namespace detail +{ + +// Here we implement the metafunction that detects whether a +// constraints metafunction exists + typedef char yes; + typedef char (&no)[2]; + + template + struct wrap_constraints {}; + +#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580) || defined(__CUDACC__) + // Work around the following bogus error in Sun Studio 11, by + // turning off the has_constraints function entirely: + // Error: complex expression not allowed in dependent template + // argument expression + inline no has_constraints_(...); +#else + template + inline yes has_constraints_(Model*, wrap_constraints* = 0); + inline no has_constraints_(...); +#endif +} + +// This would be called "detail::has_constraints," but it has a strong +// tendency to show up in error messages. +template +struct not_satisfied +{ + BOOST_STATIC_CONSTANT( + bool + , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); + typedef mpl::bool_ type; +}; + +}} // namespace boost::concepts::detail + +#endif // BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP diff --git a/contrib/prebuilt/include/boost/concept/detail/msvc.hpp b/contrib/prebuilt/include/boost/concept/detail/msvc.hpp new file mode 100644 index 0000000..9fbd250 --- /dev/null +++ b/contrib/prebuilt/include/boost/concept/detail/msvc.hpp @@ -0,0 +1,114 @@ +// Copyright David Abrahams 2006. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP +# define BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP + +# include +# include + +# ifdef BOOST_OLD_CONCEPT_SUPPORT +# include +# include +# endif + + +namespace boost { namespace concepts { + + +template +struct check +{ + virtual void failed(Model* x) + { + x->~Model(); + } +}; + +# ifndef BOOST_NO_PARTIAL_SPECIALIZATION +struct failed {}; +template +struct check +{ + virtual void failed(Model* x) + { + x->~Model(); + } +}; +# endif + +# ifdef BOOST_OLD_CONCEPT_SUPPORT + +namespace detail +{ + // No need for a virtual function here, since evaluating + // not_satisfied below will have already instantiated the + // constraints() member. + struct constraint {}; +} + +template +struct require + : mpl::if_c< + not_satisfied::value + , detail::constraint +# ifndef BOOST_NO_PARTIAL_SPECIALIZATION + , check +# else + , check +# endif + >::type +{}; + +# else + +template +struct require +# ifndef BOOST_NO_PARTIAL_SPECIALIZATION + : check +# else + : check +# endif +{}; + +# endif + +# if BOOST_WORKAROUND(BOOST_MSVC, == 1310) + +// +// The iterator library sees some really strange errors unless we +// do things this way. +// +template +struct require +{ + virtual void failed(Model*) + { + require(); + } +}; + +# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \ +enum \ +{ \ + BOOST_PP_CAT(boost_concept_check,__LINE__) = \ + sizeof(::boost::concepts::require) \ +} + +# else // Not vc-7.1 + +template +require +require_(void(*)(Model)); + +# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \ +enum \ +{ \ + BOOST_PP_CAT(boost_concept_check,__LINE__) = \ + sizeof(::boost::concepts::require_((ModelFnPtr)0)) \ +} + +# endif +}} + +#endif // BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP diff --git a/contrib/prebuilt/include/boost/concept/usage.hpp b/contrib/prebuilt/include/boost/concept/usage.hpp new file mode 100644 index 0000000..21547c3 --- /dev/null +++ b/contrib/prebuilt/include/boost/concept/usage.hpp @@ -0,0 +1,44 @@ +// Copyright David Abrahams 2006. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_CONCEPT_USAGE_DWA2006919_HPP +# define BOOST_CONCEPT_USAGE_DWA2006919_HPP + +# include +# include +# include + +namespace boost { namespace concepts { + +# if BOOST_WORKAROUND(__GNUC__, == 2) + +# define BOOST_CONCEPT_USAGE(model) ~model() + +# else + +template +struct usage_requirements +{ + ~usage_requirements() { ((Model*)0)->~Model(); } +}; + +# if BOOST_WORKAROUND(__GNUC__, <= 3) + +# define BOOST_CONCEPT_USAGE(model) \ + model(); /* at least 2.96 and 3.4.3 both need this :( */ \ + BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements)); \ + ~model() + +# else + +# define BOOST_CONCEPT_USAGE(model) \ + BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements)); \ + ~model() + +# endif + +# endif + +}} // namespace boost::concepts + +#endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP diff --git a/contrib/prebuilt/include/boost/concept_check.hpp b/contrib/prebuilt/include/boost/concept_check.hpp new file mode 100644 index 0000000..bf5a2af --- /dev/null +++ b/contrib/prebuilt/include/boost/concept_check.hpp @@ -0,0 +1,1083 @@ +// +// (C) Copyright Jeremy Siek 2000. +// Copyright 2002 The Trustees of Indiana University. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// Revision History: +// 05 May 2001: Workarounds for HP aCC from Thomas Matelich. (Jeremy Siek) +// 02 April 2001: Removed limits header altogether. (Jeremy Siek) +// 01 April 2001: Modified to use new header. (JMaddock) +// + +// See http://www.boost.org/libs/concept_check for documentation. + +#ifndef BOOST_CONCEPT_CHECKS_HPP +# define BOOST_CONCEPT_CHECKS_HPP + +# include + +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# include +# include + +namespace boost +{ + + // + // Backward compatibility + // + + template + inline void function_requires(Model* = 0) + { + BOOST_CONCEPT_ASSERT((Model)); + } + template inline void ignore_unused_variable_warning(T const&) {} + +# define BOOST_CLASS_REQUIRE(type_var, ns, concept) \ + BOOST_CONCEPT_ASSERT((ns::concept)) + +# define BOOST_CLASS_REQUIRE2(type_var1, type_var2, ns, concept) \ + BOOST_CONCEPT_ASSERT((ns::concept)) + +# define BOOST_CLASS_REQUIRE3(tv1, tv2, tv3, ns, concept) \ + BOOST_CONCEPT_ASSERT((ns::concept)) + +# define BOOST_CLASS_REQUIRE4(tv1, tv2, tv3, tv4, ns, concept) \ + BOOST_CONCEPT_ASSERT((ns::concept)) + + + // + // Begin concept definitions + // + BOOST_concept(Integer, (T)) + { + BOOST_CONCEPT_USAGE(Integer) + { + x.error_type_must_be_an_integer_type(); + } + private: + T x; + }; + + template <> struct Integer {}; + template <> struct Integer {}; + template <> struct Integer {}; + template <> struct Integer {}; + template <> struct Integer {}; + template <> struct Integer {}; + template <> struct Integer {}; + template <> struct Integer {}; + template <> struct Integer {}; +# if defined(BOOST_HAS_LONG_LONG) + template <> struct Integer< ::boost::long_long_type> {}; + template <> struct Integer< ::boost::ulong_long_type> {}; +# elif defined(BOOST_HAS_MS_INT64) + template <> struct Integer<__int64> {}; + template <> struct Integer {}; +# endif + + BOOST_concept(SignedInteger,(T)) { + BOOST_CONCEPT_USAGE(SignedInteger) { + x.error_type_must_be_a_signed_integer_type(); + } + private: + T x; + }; + template <> struct SignedInteger { }; + template <> struct SignedInteger {}; + template <> struct SignedInteger {}; + template <> struct SignedInteger {}; +# if defined(BOOST_HAS_LONG_LONG) + template <> struct SignedInteger< ::boost::long_long_type> {}; +# elif defined(BOOST_HAS_MS_INT64) + template <> struct SignedInteger<__int64> {}; +# endif + + BOOST_concept(UnsignedInteger,(T)) { + BOOST_CONCEPT_USAGE(UnsignedInteger) { + x.error_type_must_be_an_unsigned_integer_type(); + } + private: + T x; + }; + + template <> struct UnsignedInteger {}; + template <> struct UnsignedInteger {}; + template <> struct UnsignedInteger {}; + template <> struct UnsignedInteger {}; +# if defined(BOOST_HAS_LONG_LONG) + template <> struct UnsignedInteger< ::boost::ulong_long_type> {}; +# elif defined(BOOST_HAS_MS_INT64) + template <> struct UnsignedInteger {}; +# endif + + //=========================================================================== + // Basic Concepts + + BOOST_concept(DefaultConstructible,(TT)) + { + BOOST_CONCEPT_USAGE(DefaultConstructible) { + TT a; // require default constructor + ignore_unused_variable_warning(a); + } + }; + + BOOST_concept(Assignable,(TT)) + { + BOOST_CONCEPT_USAGE(Assignable) { +#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL + a = b; // require assignment operator +#endif + const_constraints(b); + } + private: + void const_constraints(const TT& x) { +#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL + a = x; // const required for argument to assignment +#else + ignore_unused_variable_warning(x); +#endif + } + private: + TT a; + TT b; + }; + + + BOOST_concept(CopyConstructible,(TT)) + { + BOOST_CONCEPT_USAGE(CopyConstructible) { + TT a(b); // require copy constructor + TT* ptr = &a; // require address of operator + const_constraints(a); + ignore_unused_variable_warning(ptr); + } + private: + void const_constraints(const TT& a) { + TT c(a); // require const copy constructor + const TT* ptr = &a; // require const address of operator + ignore_unused_variable_warning(c); + ignore_unused_variable_warning(ptr); + } + TT b; + }; + +#if (defined _MSC_VER) +# pragma warning( push ) +# pragma warning( disable : 4510 ) // default constructor could not be generated +# pragma warning( disable : 4610 ) // object 'class' can never be instantiated - user-defined constructor required +#endif + // The SGI STL version of Assignable requires copy constructor and operator= + BOOST_concept(SGIAssignable,(TT)) + { + BOOST_CONCEPT_USAGE(SGIAssignable) { + TT c(a); +#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL + a = b; // require assignment operator +#endif + const_constraints(b); + ignore_unused_variable_warning(c); + } + private: + void const_constraints(const TT& x) { + TT c(x); +#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL + a = x; // const required for argument to assignment +#endif + ignore_unused_variable_warning(c); + } + TT a; + TT b; + }; +#if (defined _MSC_VER) +# pragma warning( pop ) +#endif + + BOOST_concept(Convertible,(X)(Y)) + { + BOOST_CONCEPT_USAGE(Convertible) { + Y y = x; + ignore_unused_variable_warning(y); + } + private: + X x; + }; + + // The C++ standard requirements for many concepts talk about return + // types that must be "convertible to bool". The problem with this + // requirement is that it leaves the door open for evil proxies that + // define things like operator|| with strange return types. Two + // possible solutions are: + // 1) require the return type to be exactly bool + // 2) stay with convertible to bool, and also + // specify stuff about all the logical operators. + // For now we just test for convertible to bool. + template + void require_boolean_expr(const TT& t) { + bool x = t; + ignore_unused_variable_warning(x); + } + + BOOST_concept(EqualityComparable,(TT)) + { + BOOST_CONCEPT_USAGE(EqualityComparable) { + require_boolean_expr(a == b); + require_boolean_expr(a != b); + } + private: + TT a, b; + }; + + BOOST_concept(LessThanComparable,(TT)) + { + BOOST_CONCEPT_USAGE(LessThanComparable) { + require_boolean_expr(a < b); + } + private: + TT a, b; + }; + + // This is equivalent to SGI STL's LessThanComparable. + BOOST_concept(Comparable,(TT)) + { + BOOST_CONCEPT_USAGE(Comparable) { + require_boolean_expr(a < b); + require_boolean_expr(a > b); + require_boolean_expr(a <= b); + require_boolean_expr(a >= b); + } + private: + TT a, b; + }; + +#define BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(OP,NAME) \ + BOOST_concept(NAME, (First)(Second)) \ + { \ + BOOST_CONCEPT_USAGE(NAME) { (void)constraints_(); } \ + private: \ + bool constraints_() { return a OP b; } \ + First a; \ + Second b; \ + } + +#define BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(OP,NAME) \ + BOOST_concept(NAME, (Ret)(First)(Second)) \ + { \ + BOOST_CONCEPT_USAGE(NAME) { (void)constraints_(); } \ + private: \ + Ret constraints_() { return a OP b; } \ + First a; \ + Second b; \ + } + + BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(==, EqualOp); + BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(!=, NotEqualOp); + BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<, LessThanOp); + BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<=, LessEqualOp); + BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>, GreaterThanOp); + BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>=, GreaterEqualOp); + + BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(+, PlusOp); + BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(*, TimesOp); + BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(/, DivideOp); + BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(-, SubtractOp); + BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(%, ModOp); + + //=========================================================================== + // Function Object Concepts + + BOOST_concept(Generator,(Func)(Return)) + { + BOOST_CONCEPT_USAGE(Generator) { test(is_void()); } + + private: + void test(boost::mpl::false_) + { + // Do we really want a reference here? + const Return& r = f(); + ignore_unused_variable_warning(r); + } + + void test(boost::mpl::true_) + { + f(); + } + + Func f; + }; + + BOOST_concept(UnaryFunction,(Func)(Return)(Arg)) + { + BOOST_CONCEPT_USAGE(UnaryFunction) { test(is_void()); } + + private: + void test(boost::mpl::false_) + { + f(arg); // "priming the pump" this way keeps msvc6 happy (ICE) + Return r = f(arg); + ignore_unused_variable_warning(r); + } + + void test(boost::mpl::true_) + { + f(arg); + } + +#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \ + && BOOST_WORKAROUND(__GNUC__, > 3))) + // Declare a dummy construktor to make gcc happy. + // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type. + // (warning: non-static reference "const double& boost::UnaryFunction::arg" + // in class without a constructor [-Wuninitialized]) + UnaryFunction(); +#endif + + Func f; + Arg arg; + }; + + BOOST_concept(BinaryFunction,(Func)(Return)(First)(Second)) + { + BOOST_CONCEPT_USAGE(BinaryFunction) { test(is_void()); } + private: + void test(boost::mpl::false_) + { + f(first,second); + Return r = f(first, second); // require operator() + (void)r; + } + + void test(boost::mpl::true_) + { + f(first,second); + } + +#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \ + && BOOST_WORKAROUND(__GNUC__, > 3))) + // Declare a dummy constructor to make gcc happy. + // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type. + // (warning: non-static reference "const double& boost::BinaryFunction::arg" + // in class without a constructor [-Wuninitialized]) + BinaryFunction(); +#endif + + Func f; + First first; + Second second; + }; + + BOOST_concept(UnaryPredicate,(Func)(Arg)) + { + BOOST_CONCEPT_USAGE(UnaryPredicate) { + require_boolean_expr(f(arg)); // require operator() returning bool + } + private: +#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \ + && BOOST_WORKAROUND(__GNUC__, > 3))) + // Declare a dummy constructor to make gcc happy. + // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type. + // (warning: non-static reference "const double& boost::UnaryPredicate::arg" + // in class without a constructor [-Wuninitialized]) + UnaryPredicate(); +#endif + + Func f; + Arg arg; + }; + + BOOST_concept(BinaryPredicate,(Func)(First)(Second)) + { + BOOST_CONCEPT_USAGE(BinaryPredicate) { + require_boolean_expr(f(a, b)); // require operator() returning bool + } + private: +#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \ + && BOOST_WORKAROUND(__GNUC__, > 3))) + // Declare a dummy constructor to make gcc happy. + // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type. + // (warning: non-static reference "const double& boost::BinaryPredicate::arg" + // in class without a constructor [-Wuninitialized]) + BinaryPredicate(); +#endif + Func f; + First a; + Second b; + }; + + // use this when functor is used inside a container class like std::set + BOOST_concept(Const_BinaryPredicate,(Func)(First)(Second)) + : BinaryPredicate + { + BOOST_CONCEPT_USAGE(Const_BinaryPredicate) { + const_constraints(f); + } + private: + void const_constraints(const Func& fun) { + // operator() must be a const member function + require_boolean_expr(fun(a, b)); + } +#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \ + && BOOST_WORKAROUND(__GNUC__, > 3))) + // Declare a dummy constructor to make gcc happy. + // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type. + // (warning: non-static reference "const double& boost::Const_BinaryPredicate::arg" + // in class without a constructor [-Wuninitialized]) + Const_BinaryPredicate(); +#endif + + Func f; + First a; + Second b; + }; + + BOOST_concept(AdaptableGenerator,(Func)(Return)) + : Generator + { + typedef typename Func::result_type result_type; + + BOOST_CONCEPT_USAGE(AdaptableGenerator) + { + BOOST_CONCEPT_ASSERT((Convertible)); + } + }; + + BOOST_concept(AdaptableUnaryFunction,(Func)(Return)(Arg)) + : UnaryFunction + { + typedef typename Func::argument_type argument_type; + typedef typename Func::result_type result_type; + + ~AdaptableUnaryFunction() + { + BOOST_CONCEPT_ASSERT((Convertible)); + BOOST_CONCEPT_ASSERT((Convertible)); + } + }; + + BOOST_concept(AdaptableBinaryFunction,(Func)(Return)(First)(Second)) + : BinaryFunction< + Func + , typename Func::result_type + , typename Func::first_argument_type + , typename Func::second_argument_type + > + { + typedef typename Func::first_argument_type first_argument_type; + typedef typename Func::second_argument_type second_argument_type; + typedef typename Func::result_type result_type; + + ~AdaptableBinaryFunction() + { + BOOST_CONCEPT_ASSERT((Convertible)); + BOOST_CONCEPT_ASSERT((Convertible)); + BOOST_CONCEPT_ASSERT((Convertible)); + } + }; + + BOOST_concept(AdaptablePredicate,(Func)(Arg)) + : UnaryPredicate + , AdaptableUnaryFunction + { + }; + + BOOST_concept(AdaptableBinaryPredicate,(Func)(First)(Second)) + : BinaryPredicate + , AdaptableBinaryFunction + { + }; + + //=========================================================================== + // Iterator Concepts + + BOOST_concept(InputIterator,(TT)) + : Assignable + , EqualityComparable + { + typedef typename boost::detail::iterator_traits::value_type value_type; + typedef typename boost::detail::iterator_traits::difference_type difference_type; + typedef typename boost::detail::iterator_traits::reference reference; + typedef typename boost::detail::iterator_traits::pointer pointer; + typedef typename boost::detail::iterator_traits::iterator_category iterator_category; + + BOOST_CONCEPT_USAGE(InputIterator) + { + BOOST_CONCEPT_ASSERT((SignedInteger)); + BOOST_CONCEPT_ASSERT((Convertible)); + + TT j(i); + (void)*i; // require dereference operator + ++j; // require preincrement operator + i++; // require postincrement operator + } + private: + TT i; + }; + + BOOST_concept(OutputIterator,(TT)(ValueT)) + : Assignable + { + BOOST_CONCEPT_USAGE(OutputIterator) { + + ++i; // require preincrement operator + i++; // require postincrement operator + *i++ = t; // require postincrement and assignment + } + private: + TT i, j; + ValueT t; + }; + + BOOST_concept(ForwardIterator,(TT)) + : InputIterator + { + BOOST_CONCEPT_USAGE(ForwardIterator) + { + BOOST_CONCEPT_ASSERT((Convertible< + BOOST_DEDUCED_TYPENAME ForwardIterator::iterator_category + , std::forward_iterator_tag + >)); + + typename InputIterator::reference r = *i; + ignore_unused_variable_warning(r); + } + + private: + TT i; + }; + + BOOST_concept(Mutable_ForwardIterator,(TT)) + : ForwardIterator + { + BOOST_CONCEPT_USAGE(Mutable_ForwardIterator) { + *i++ = *i; // require postincrement and assignment + } + private: + TT i; + }; + + BOOST_concept(BidirectionalIterator,(TT)) + : ForwardIterator + { + BOOST_CONCEPT_USAGE(BidirectionalIterator) + { + BOOST_CONCEPT_ASSERT((Convertible< + BOOST_DEDUCED_TYPENAME BidirectionalIterator::iterator_category + , std::bidirectional_iterator_tag + >)); + + --i; // require predecrement operator + i--; // require postdecrement operator + } + private: + TT i; + }; + + BOOST_concept(Mutable_BidirectionalIterator,(TT)) + : BidirectionalIterator + , Mutable_ForwardIterator + { + BOOST_CONCEPT_USAGE(Mutable_BidirectionalIterator) + { + *i-- = *i; // require postdecrement and assignment + } + private: + TT i; + }; + + BOOST_concept(RandomAccessIterator,(TT)) + : BidirectionalIterator + , Comparable + { + BOOST_CONCEPT_USAGE(RandomAccessIterator) + { + BOOST_CONCEPT_ASSERT((Convertible< + BOOST_DEDUCED_TYPENAME BidirectionalIterator::iterator_category + , std::random_access_iterator_tag + >)); + + i += n; // require assignment addition operator + i = i + n; i = n + i; // require addition with difference type + i -= n; // require assignment subtraction operator + i = i - n; // require subtraction with difference type + n = i - j; // require difference operator + (void)i[n]; // require element access operator + } + + private: + TT a, b; + TT i, j; + typename boost::detail::iterator_traits::difference_type n; + }; + + BOOST_concept(Mutable_RandomAccessIterator,(TT)) + : RandomAccessIterator + , Mutable_BidirectionalIterator + { + BOOST_CONCEPT_USAGE(Mutable_RandomAccessIterator) + { + i[n] = *i; // require element access and assignment + } + private: + TT i; + typename boost::detail::iterator_traits::difference_type n; + }; + + //=========================================================================== + // Container s + + BOOST_concept(Container,(C)) + : Assignable + { + typedef typename C::value_type value_type; + typedef typename C::difference_type difference_type; + typedef typename C::size_type size_type; + typedef typename C::const_reference const_reference; + typedef typename C::const_pointer const_pointer; + typedef typename C::const_iterator const_iterator; + + BOOST_CONCEPT_USAGE(Container) + { + BOOST_CONCEPT_ASSERT((InputIterator)); + const_constraints(c); + } + + private: + void const_constraints(const C& cc) { + i = cc.begin(); + i = cc.end(); + n = cc.size(); + n = cc.max_size(); + b = cc.empty(); + } + C c; + bool b; + const_iterator i; + size_type n; + }; + + BOOST_concept(Mutable_Container,(C)) + : Container + { + typedef typename C::reference reference; + typedef typename C::iterator iterator; + typedef typename C::pointer pointer; + + BOOST_CONCEPT_USAGE(Mutable_Container) + { + BOOST_CONCEPT_ASSERT(( + Assignable)); + + BOOST_CONCEPT_ASSERT((InputIterator)); + + i = c.begin(); + i = c.end(); + c.swap(c2); + } + + private: + iterator i; + C c, c2; + }; + + BOOST_concept(ForwardContainer,(C)) + : Container + { + BOOST_CONCEPT_USAGE(ForwardContainer) + { + BOOST_CONCEPT_ASSERT(( + ForwardIterator< + typename ForwardContainer::const_iterator + >)); + } + }; + + BOOST_concept(Mutable_ForwardContainer,(C)) + : ForwardContainer + , Mutable_Container + { + BOOST_CONCEPT_USAGE(Mutable_ForwardContainer) + { + BOOST_CONCEPT_ASSERT(( + Mutable_ForwardIterator< + typename Mutable_ForwardContainer::iterator + >)); + } + }; + + BOOST_concept(ReversibleContainer,(C)) + : ForwardContainer + { + typedef typename + C::const_reverse_iterator + const_reverse_iterator; + + BOOST_CONCEPT_USAGE(ReversibleContainer) + { + BOOST_CONCEPT_ASSERT(( + BidirectionalIterator< + typename ReversibleContainer::const_iterator>)); + + BOOST_CONCEPT_ASSERT((BidirectionalIterator)); + + const_constraints(c); + } + private: + void const_constraints(const C& cc) + { + const_reverse_iterator i = cc.rbegin(); + i = cc.rend(); + } + C c; + }; + + BOOST_concept(Mutable_ReversibleContainer,(C)) + : Mutable_ForwardContainer + , ReversibleContainer + { + typedef typename C::reverse_iterator reverse_iterator; + + BOOST_CONCEPT_USAGE(Mutable_ReversibleContainer) + { + typedef typename Mutable_ForwardContainer::iterator iterator; + BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator)); + BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator)); + + reverse_iterator i = c.rbegin(); + i = c.rend(); + } + private: + C c; + }; + + BOOST_concept(RandomAccessContainer,(C)) + : ReversibleContainer + { + typedef typename C::size_type size_type; + typedef typename C::const_reference const_reference; + + BOOST_CONCEPT_USAGE(RandomAccessContainer) + { + BOOST_CONCEPT_ASSERT(( + RandomAccessIterator< + typename RandomAccessContainer::const_iterator + >)); + + const_constraints(c); + } + private: + void const_constraints(const C& cc) + { + const_reference r = cc[n]; + ignore_unused_variable_warning(r); + } + + C c; + size_type n; + }; + + BOOST_concept(Mutable_RandomAccessContainer,(C)) + : Mutable_ReversibleContainer + , RandomAccessContainer + { + private: + typedef Mutable_RandomAccessContainer self; + public: + BOOST_CONCEPT_USAGE(Mutable_RandomAccessContainer) + { + BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator)); + BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator)); + + typename self::reference r = c[i]; + ignore_unused_variable_warning(r); + } + + private: + typename Mutable_ReversibleContainer::size_type i; + C c; + }; + + // A Sequence is inherently mutable + BOOST_concept(Sequence,(S)) + : Mutable_ForwardContainer + // Matt Austern's book puts DefaultConstructible here, the C++ + // standard places it in Container --JGS + // ... so why aren't we following the standard? --DWA + , DefaultConstructible + { + BOOST_CONCEPT_USAGE(Sequence) + { + S + c(n), + c2(n, t), + c3(first, last); + + c.insert(p, t); + c.insert(p, n, t); + c.insert(p, first, last); + + c.erase(p); + c.erase(p, q); + + typename Sequence::reference r = c.front(); + + ignore_unused_variable_warning(c); + ignore_unused_variable_warning(c2); + ignore_unused_variable_warning(c3); + ignore_unused_variable_warning(r); + const_constraints(c); + } + private: + void const_constraints(const S& c) { + typename Sequence::const_reference r = c.front(); + ignore_unused_variable_warning(r); + } + + typename S::value_type t; + typename S::size_type n; + typename S::value_type* first, *last; + typename S::iterator p, q; + }; + + BOOST_concept(FrontInsertionSequence,(S)) + : Sequence + { + BOOST_CONCEPT_USAGE(FrontInsertionSequence) + { + c.push_front(t); + c.pop_front(); + } + private: + S c; + typename S::value_type t; + }; + + BOOST_concept(BackInsertionSequence,(S)) + : Sequence + { + BOOST_CONCEPT_USAGE(BackInsertionSequence) + { + c.push_back(t); + c.pop_back(); + typename BackInsertionSequence::reference r = c.back(); + ignore_unused_variable_warning(r); + const_constraints(c); + } + private: + void const_constraints(const S& cc) { + typename BackInsertionSequence::const_reference + r = cc.back(); + ignore_unused_variable_warning(r); + }; + S c; + typename S::value_type t; + }; + + BOOST_concept(AssociativeContainer,(C)) + : ForwardContainer + , DefaultConstructible + { + typedef typename C::key_type key_type; + typedef typename C::key_compare key_compare; + typedef typename C::value_compare value_compare; + typedef typename C::iterator iterator; + + BOOST_CONCEPT_USAGE(AssociativeContainer) + { + i = c.find(k); + r = c.equal_range(k); + c.erase(k); + c.erase(i); + c.erase(r.first, r.second); + const_constraints(c); + BOOST_CONCEPT_ASSERT((BinaryPredicate)); + + typedef typename AssociativeContainer::value_type value_type_; + BOOST_CONCEPT_ASSERT((BinaryPredicate)); + } + + // Redundant with the base concept, but it helps below. + typedef typename C::const_iterator const_iterator; + private: + void const_constraints(const C& cc) + { + ci = cc.find(k); + n = cc.count(k); + cr = cc.equal_range(k); + } + + C c; + iterator i; + std::pair r; + const_iterator ci; + std::pair cr; + typename C::key_type k; + typename C::size_type n; + }; + + BOOST_concept(UniqueAssociativeContainer,(C)) + : AssociativeContainer + { + BOOST_CONCEPT_USAGE(UniqueAssociativeContainer) + { + C c(first, last); + + pos_flag = c.insert(t); + c.insert(first, last); + + ignore_unused_variable_warning(c); + } + private: + std::pair pos_flag; + typename C::value_type t; + typename C::value_type* first, *last; + }; + + BOOST_concept(MultipleAssociativeContainer,(C)) + : AssociativeContainer + { + BOOST_CONCEPT_USAGE(MultipleAssociativeContainer) + { + C c(first, last); + + pos = c.insert(t); + c.insert(first, last); + + ignore_unused_variable_warning(c); + ignore_unused_variable_warning(pos); + } + private: + typename C::iterator pos; + typename C::value_type t; + typename C::value_type* first, *last; + }; + + BOOST_concept(SimpleAssociativeContainer,(C)) + : AssociativeContainer + { + BOOST_CONCEPT_USAGE(SimpleAssociativeContainer) + { + typedef typename C::key_type key_type; + typedef typename C::value_type value_type; + BOOST_MPL_ASSERT((boost::is_same)); + } + }; + + BOOST_concept(PairAssociativeContainer,(C)) + : AssociativeContainer + { + BOOST_CONCEPT_USAGE(PairAssociativeContainer) + { + typedef typename C::key_type key_type; + typedef typename C::value_type value_type; + typedef typename C::mapped_type mapped_type; + typedef std::pair required_value_type; + BOOST_MPL_ASSERT((boost::is_same)); + } + }; + + BOOST_concept(SortedAssociativeContainer,(C)) + : AssociativeContainer + , ReversibleContainer + { + BOOST_CONCEPT_USAGE(SortedAssociativeContainer) + { + C + c(kc), + c2(first, last), + c3(first, last, kc); + + p = c.upper_bound(k); + p = c.lower_bound(k); + r = c.equal_range(k); + + c.insert(p, t); + + ignore_unused_variable_warning(c); + ignore_unused_variable_warning(c2); + ignore_unused_variable_warning(c3); + const_constraints(c); + } + + void const_constraints(const C& c) + { + kc = c.key_comp(); + vc = c.value_comp(); + + cp = c.upper_bound(k); + cp = c.lower_bound(k); + cr = c.equal_range(k); + } + + private: + typename C::key_compare kc; + typename C::value_compare vc; + typename C::value_type t; + typename C::key_type k; + typedef typename C::iterator iterator; + typedef typename C::const_iterator const_iterator; + + typedef SortedAssociativeContainer self; + iterator p; + const_iterator cp; + std::pair r; + std::pair cr; + typename C::value_type* first, *last; + }; + + // HashedAssociativeContainer + + BOOST_concept(Collection,(C)) + { + BOOST_CONCEPT_USAGE(Collection) + { + boost::function_requires >(); + boost::function_requires >(); + boost::function_requires >(); + const_constraints(c); + i = c.begin(); + i = c.end(); + c.swap(c); + } + + void const_constraints(const C& cc) { + ci = cc.begin(); + ci = cc.end(); + n = cc.size(); + b = cc.empty(); + } + + private: + typedef typename C::value_type value_type; + typedef typename C::iterator iterator; + typedef typename C::const_iterator const_iterator; + typedef typename C::reference reference; + typedef typename C::const_reference const_reference; + // typedef typename C::pointer pointer; + typedef typename C::difference_type difference_type; + typedef typename C::size_type size_type; + + C c; + bool b; + iterator i; + const_iterator ci; + size_type n; + }; +} // namespace boost + +# include + +#endif // BOOST_CONCEPT_CHECKS_HPP + diff --git a/contrib/prebuilt/include/boost/config.hpp b/contrib/prebuilt/include/boost/config.hpp new file mode 100644 index 0000000..f37585e --- /dev/null +++ b/contrib/prebuilt/include/boost/config.hpp @@ -0,0 +1,70 @@ +// Boost config.hpp configuration header file ------------------------------// + +// (C) Copyright John Maddock 2002. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for most recent version. + +// Boost config.hpp policy and rationale documentation has been moved to +// http://www.boost.org/libs/config +// +// CAUTION: This file is intended to be completely stable - +// DO NOT MODIFY THIS FILE! +// + +#ifndef BOOST_CONFIG_HPP +#define BOOST_CONFIG_HPP + +// if we don't have a user config, then use the default location: +#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG) +# define BOOST_USER_CONFIG +#endif +// include it first: +#ifdef BOOST_USER_CONFIG +# include BOOST_USER_CONFIG +#endif + +// if we don't have a compiler config set, try and find one: +#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG) +# include +#endif +// if we have a compiler config, include it now: +#ifdef BOOST_COMPILER_CONFIG +# include BOOST_COMPILER_CONFIG +#endif + +// if we don't have a std library config set, try and find one: +#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG) && defined(__cplusplus) +# include +#endif +// if we have a std library config, include it now: +#ifdef BOOST_STDLIB_CONFIG +# include BOOST_STDLIB_CONFIG +#endif + +// if we don't have a platform config set, try and find one: +#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG) +# include +#endif +// if we have a platform config, include it now: +#ifdef BOOST_PLATFORM_CONFIG +# include BOOST_PLATFORM_CONFIG +#endif + +// get config suffix code: +#include + +#endif // BOOST_CONFIG_HPP + + + + + + + + + + + diff --git a/contrib/prebuilt/include/boost/config/abi/borland_prefix.hpp b/contrib/prebuilt/include/boost/config/abi/borland_prefix.hpp new file mode 100644 index 0000000..3a0e5ae --- /dev/null +++ b/contrib/prebuilt/include/boost/config/abi/borland_prefix.hpp @@ -0,0 +1,27 @@ +// (C) Copyright John Maddock 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// for C++ Builder the following options effect the ABI: +// +// -b (on or off - effect emum sizes) +// -Vx (on or off - empty members) +// -Ve (on or off - empty base classes) +// -aX (alignment - 5 options). +// -pX (Calling convention - 4 options) +// -VmX (member pointer size and layout - 5 options) +// -VC (on or off, changes name mangling) +// -Vl (on or off, changes struct layout). + +// In addition the following warnings are sufficiently annoying (and +// unfixable) to have them turned off by default: +// +// 8027 - functions containing [for|while] loops are not expanded inline +// 8026 - functions taking class by value arguments are not expanded inline + +#pragma nopushoptwarn +# pragma option push -a8 -Vx- -Ve- -b- -pc -Vmv -VC- -Vl- -w-8027 -w-8026 + + + diff --git a/contrib/prebuilt/include/boost/config/abi/borland_suffix.hpp b/contrib/prebuilt/include/boost/config/abi/borland_suffix.hpp new file mode 100644 index 0000000..940535f --- /dev/null +++ b/contrib/prebuilt/include/boost/config/abi/borland_suffix.hpp @@ -0,0 +1,12 @@ +// (C) Copyright John Maddock 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +# pragma option pop +#pragma nopushoptwarn + + + + + diff --git a/contrib/prebuilt/include/boost/config/abi/msvc_prefix.hpp b/contrib/prebuilt/include/boost/config/abi/msvc_prefix.hpp new file mode 100644 index 0000000..97f06cd --- /dev/null +++ b/contrib/prebuilt/include/boost/config/abi/msvc_prefix.hpp @@ -0,0 +1,22 @@ +// (C) Copyright John Maddock 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// +// Boost binaries are built with the compiler's default ABI settings, +// if the user changes their default alignment in the VS IDE then their +// code will no longer be binary compatible with the bjam built binaries +// unless this header is included to force Boost code into a consistent ABI. +// +// Note that inclusion of this header is only necessary for libraries with +// separate source, header only libraries DO NOT need this as long as all +// translation units are built with the same options. +// +#if defined(_M_X64) +# pragma pack(push,16) +#else +# pragma pack(push,8) +#endif + + diff --git a/contrib/prebuilt/include/boost/config/abi/msvc_suffix.hpp b/contrib/prebuilt/include/boost/config/abi/msvc_suffix.hpp new file mode 100644 index 0000000..a64d783 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/abi/msvc_suffix.hpp @@ -0,0 +1,8 @@ +// (C) Copyright John Maddock 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#pragma pack(pop) + + diff --git a/contrib/prebuilt/include/boost/config/abi_prefix.hpp b/contrib/prebuilt/include/boost/config/abi_prefix.hpp new file mode 100644 index 0000000..3b13474 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/abi_prefix.hpp @@ -0,0 +1,25 @@ +// abi_prefix header -------------------------------------------------------// + +// (c) Copyright John Maddock 2003 + +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). + +#ifndef BOOST_CONFIG_ABI_PREFIX_HPP +# define BOOST_CONFIG_ABI_PREFIX_HPP +#else +# error double inclusion of header boost/config/abi_prefix.hpp is an error +#endif + +#include + +// this must occur after all other includes and before any code appears: +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +#if defined( __BORLANDC__ ) +#pragma nopushoptwarn +#endif + diff --git a/contrib/prebuilt/include/boost/config/abi_suffix.hpp b/contrib/prebuilt/include/boost/config/abi_suffix.hpp new file mode 100644 index 0000000..9391616 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/abi_suffix.hpp @@ -0,0 +1,27 @@ +// abi_sufffix header -------------------------------------------------------// + +// (c) Copyright John Maddock 2003 + +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). + +// This header should be #included AFTER code that was preceded by a #include +// . + +#ifndef BOOST_CONFIG_ABI_PREFIX_HPP +# error Header boost/config/abi_suffix.hpp must only be used after boost/config/abi_prefix.hpp +#else +# undef BOOST_CONFIG_ABI_PREFIX_HPP +#endif + +// the suffix header occurs after all of our code: +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#if defined( __BORLANDC__ ) +#pragma nopushoptwarn +#endif + + diff --git a/contrib/prebuilt/include/boost/config/auto_link.hpp b/contrib/prebuilt/include/boost/config/auto_link.hpp new file mode 100644 index 0000000..ad021f4 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/auto_link.hpp @@ -0,0 +1,422 @@ +// (C) Copyright John Maddock 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + /* + * LOCATION: see http://www.boost.org for most recent version. + * FILE auto_link.hpp + * VERSION see + * DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers. + */ + +/************************************************************************* + +USAGE: +~~~~~~ + +Before including this header you must define one or more of define the following macros: + +BOOST_LIB_NAME: Required: A string containing the basename of the library, + for example boost_regex. +BOOST_LIB_TOOLSET: Optional: the base name of the toolset. +BOOST_DYN_LINK: Optional: when set link to dll rather than static library. +BOOST_LIB_DIAGNOSTIC: Optional: when set the header will print out the name + of the library selected (useful for debugging). +BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib, + rather than a mangled-name version. +BOOST_AUTO_LINK_TAGGED: Specifies that we link to libraries built with the --layout=tagged option. + This is essentially the same as the default name-mangled version, but without + the compiler name and version, or the Boost version. Just the build options. + +These macros will be undef'ed at the end of the header, further this header +has no include guards - so be sure to include it only once from your library! + +Algorithm: +~~~~~~~~~~ + +Libraries for Borland and Microsoft compilers are automatically +selected here, the name of the lib is selected according to the following +formula: + +BOOST_LIB_PREFIX + + BOOST_LIB_NAME + + "_" + + BOOST_LIB_TOOLSET + + BOOST_LIB_THREAD_OPT + + BOOST_LIB_RT_OPT + "-" + + BOOST_LIB_VERSION + +These are defined as: + +BOOST_LIB_PREFIX: "lib" for static libraries otherwise "". + +BOOST_LIB_NAME: The base name of the lib ( for example boost_regex). + +BOOST_LIB_TOOLSET: The compiler toolset name (vc6, vc7, bcb5 etc). + +BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing. + +BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used, + contains one or more of the following letters after + a hiphen: + + s static runtime (dynamic if not present). + g debug/diagnostic runtime (release if not present). + y Python debug/diagnostic runtime (release if not present). + d debug build (release if not present). + g debug/diagnostic runtime (release if not present). + p STLPort Build. + +BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. + + +***************************************************************************/ + +#ifdef __cplusplus +# ifndef BOOST_CONFIG_HPP +# include +# endif +#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__) +// +// C language compatability (no, honestly) +// +# define BOOST_MSVC _MSC_VER +# define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X) +# define BOOST_DO_STRINGIZE(X) #X +#endif +// +// Only include what follows for known and supported compilers: +// +#if defined(BOOST_MSVC) \ + || defined(__BORLANDC__) \ + || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \ + || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200)) + +#ifndef BOOST_VERSION_HPP +# include +#endif + +#ifndef BOOST_LIB_NAME +# error "Macro BOOST_LIB_NAME not set (internal error)" +#endif + +// +// error check: +// +#if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG) +# pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors") +# pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes") +# error "Incompatible build options" +#endif +// +// select toolset if not defined already: +// +#ifndef BOOST_LIB_TOOLSET +// Note: no compilers before 1200 are supported +#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300) + +# ifdef UNDER_CE + // vc6: +# define BOOST_LIB_TOOLSET "evc4" +# else + // vc6: +# define BOOST_LIB_TOOLSET "vc6" +# endif + +#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300) + + // vc7: +# define BOOST_LIB_TOOLSET "vc7" + +#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1310) + + // vc71: +# define BOOST_LIB_TOOLSET "vc71" + +#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1400) + + // vc80: +# define BOOST_LIB_TOOLSET "vc80" + +#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1500) + + // vc90: +# define BOOST_LIB_TOOLSET "vc90" + +#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1600) + + // vc10: +# define BOOST_LIB_TOOLSET "vc100" + +#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1700) + + // vc11: +# define BOOST_LIB_TOOLSET "vc110" + +#elif defined(__BORLANDC__) + + // CBuilder 6: +# define BOOST_LIB_TOOLSET "bcb" + +#elif defined(__ICL) + + // Intel C++, no version number: +# define BOOST_LIB_TOOLSET "iw" + +#elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF ) + + // Metrowerks CodeWarrior 8.x +# define BOOST_LIB_TOOLSET "cw8" + +#elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF ) + + // Metrowerks CodeWarrior 9.x +# define BOOST_LIB_TOOLSET "cw9" + +#endif +#endif // BOOST_LIB_TOOLSET + +// +// select thread opt: +// +#if defined(_MT) || defined(__MT__) +# define BOOST_LIB_THREAD_OPT "-mt" +#else +# define BOOST_LIB_THREAD_OPT +#endif + +#if defined(_MSC_VER) || defined(__MWERKS__) + +# ifdef _DLL + +# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS)) + +# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gydp" +# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) +# define BOOST_LIB_RT_OPT "-gdp" +# elif defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gydp" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" +# elif defined(_DEBUG) +# define BOOST_LIB_RT_OPT "-gdp" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" +# else +# define BOOST_LIB_RT_OPT "-p" +# endif + +# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) + +# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gydpn" +# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) +# define BOOST_LIB_RT_OPT "-gdpn" +# elif defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gydpn" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" +# elif defined(_DEBUG) +# define BOOST_LIB_RT_OPT "-gdpn" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" +# else +# define BOOST_LIB_RT_OPT "-pn" +# endif + +# else + +# if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gyd" +# elif defined(_DEBUG) +# define BOOST_LIB_RT_OPT "-gd" +# else +# define BOOST_LIB_RT_OPT +# endif + +# endif + +# else + +# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS)) + +# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgydp" +# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) +# define BOOST_LIB_RT_OPT "-sgdp" +# elif defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgydp" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" +# elif defined(_DEBUG) +# define BOOST_LIB_RT_OPT "-sgdp" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" +# else +# define BOOST_LIB_RT_OPT "-sp" +# endif + +# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) + +# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgydpn" +# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) +# define BOOST_LIB_RT_OPT "-sgdpn" +# elif defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgydpn" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" +# elif defined(_DEBUG) +# define BOOST_LIB_RT_OPT "-sgdpn" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" +# else +# define BOOST_LIB_RT_OPT "-spn" +# endif + +# else + +# if defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgyd" +# elif defined(_DEBUG) +# define BOOST_LIB_RT_OPT "-sgd" +# else +# define BOOST_LIB_RT_OPT "-s" +# endif + +# endif + +# endif + +#elif defined(__BORLANDC__) + +// +// figure out whether we want the debug builds or not: +// +#if __BORLANDC__ > 0x561 +#pragma defineonoption BOOST_BORLAND_DEBUG -v +#endif +// +// sanity check: +// +#if defined(__STL_DEBUG) || defined(_STLP_DEBUG) +#error "Pre-built versions of the Boost libraries are not provided in STLPort-debug form" +#endif + +# ifdef _RTLDLL + +# if defined(BOOST_BORLAND_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-yd" +# elif defined(BOOST_BORLAND_DEBUG) +# define BOOST_LIB_RT_OPT "-d" +# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT -y +# else +# define BOOST_LIB_RT_OPT +# endif + +# else + +# if defined(BOOST_BORLAND_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-syd" +# elif defined(BOOST_BORLAND_DEBUG) +# define BOOST_LIB_RT_OPT "-sd" +# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sy" +# else +# define BOOST_LIB_RT_OPT "-s" +# endif + +# endif + +#endif + +// +// select linkage opt: +// +#if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK) +# define BOOST_LIB_PREFIX +#elif defined(BOOST_DYN_LINK) +# error "Mixing a dll boost library with a static runtime is a really bad idea..." +#else +# define BOOST_LIB_PREFIX "lib" +#endif + +// +// now include the lib: +// +#if defined(BOOST_LIB_NAME) \ + && defined(BOOST_LIB_PREFIX) \ + && defined(BOOST_LIB_TOOLSET) \ + && defined(BOOST_LIB_THREAD_OPT) \ + && defined(BOOST_LIB_RT_OPT) \ + && defined(BOOST_LIB_VERSION) + +#ifdef BOOST_AUTO_LINK_TAGGED +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib") +# ifdef BOOST_LIB_DIAGNOSTIC +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib") +# endif +#elif defined(BOOST_AUTO_LINK_NOMANGLE) +# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") +# ifdef BOOST_LIB_DIAGNOSTIC +# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") +# endif +#else +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") +# ifdef BOOST_LIB_DIAGNOSTIC +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") +# endif +#endif + +#else +# error "some required macros where not defined (internal logic error)." +#endif + + +#endif // _MSC_VER || __BORLANDC__ + +// +// finally undef any macros we may have set: +// +#ifdef BOOST_LIB_PREFIX +# undef BOOST_LIB_PREFIX +#endif +#if defined(BOOST_LIB_NAME) +# undef BOOST_LIB_NAME +#endif +// Don't undef this one: it can be set by the user and should be the +// same for all libraries: +//#if defined(BOOST_LIB_TOOLSET) +//# undef BOOST_LIB_TOOLSET +//#endif +#if defined(BOOST_LIB_THREAD_OPT) +# undef BOOST_LIB_THREAD_OPT +#endif +#if defined(BOOST_LIB_RT_OPT) +# undef BOOST_LIB_RT_OPT +#endif +#if defined(BOOST_LIB_LINK_OPT) +# undef BOOST_LIB_LINK_OPT +#endif +#if defined(BOOST_LIB_DEBUG_OPT) +# undef BOOST_LIB_DEBUG_OPT +#endif +#if defined(BOOST_DYN_LINK) +# undef BOOST_DYN_LINK +#endif + diff --git a/contrib/prebuilt/include/boost/config/compiler/borland.hpp b/contrib/prebuilt/include/boost/config/compiler/borland.hpp new file mode 100644 index 0000000..cffa8ea --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/borland.hpp @@ -0,0 +1,287 @@ +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright David Abrahams 2002 - 2003. +// (C) Copyright Aleksey Gurtovoy 2002. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// Borland C++ compiler setup: + +// +// versions check: +// we don't support Borland prior to version 5.4: +#if __BORLANDC__ < 0x540 +# error "Compiler not supported or configured - please reconfigure" +#endif + +// last known compiler version: +#if (__BORLANDC__ > 0x613) +//# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +//# else +//# pragma message( "Unknown compiler version - please run the configure tests and report the results") +//# endif +#elif (__BORLANDC__ == 0x600) +# error "CBuilderX preview compiler is no longer supported" +#endif + +// +// Support macros to help with standard library detection +#if (__BORLANDC__ < 0x560) || defined(_USE_OLD_RW_STL) +# define BOOST_BCB_WITH_ROGUE_WAVE +#elif __BORLANDC__ < 0x570 +# define BOOST_BCB_WITH_STLPORT +#else +# define BOOST_BCB_WITH_DINKUMWARE +#endif + +// +// Version 5.0 and below: +# if __BORLANDC__ <= 0x0550 +// Borland C++Builder 4 and 5: +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# if __BORLANDC__ == 0x0550 +// Borland C++Builder 5, command-line compiler 5.5: +# define BOOST_NO_OPERATORS_IN_NAMESPACE +# endif +// Variadic macros do not exist for C++ Builder versions 5 and below +#define BOOST_NO_CXX11_VARIADIC_MACROS +# endif + +// Version 5.51 and below: +#if (__BORLANDC__ <= 0x551) +# define BOOST_NO_CV_SPECIALIZATIONS +# define BOOST_NO_CV_VOID_SPECIALIZATIONS +# define BOOST_NO_DEDUCED_TYPENAME +// workaround for missing WCHAR_MAX/WCHAR_MIN: +#ifdef __cplusplus +#include +#include +#else +#include +#include +#endif // __cplusplus +#ifndef WCHAR_MAX +# define WCHAR_MAX 0xffff +#endif +#ifndef WCHAR_MIN +# define WCHAR_MIN 0 +#endif +#endif + +// Borland C++ Builder 6 and below: +#if (__BORLANDC__ <= 0x564) + +# if defined(NDEBUG) && defined(__cplusplus) + // fix broken so that Boost.test works: +# include +# undef strcmp +# endif + // fix broken errno declaration: +# include +# ifndef errno +# define errno errno +# endif + +#endif + +// +// new bug in 5.61: +#if (__BORLANDC__ >= 0x561) && (__BORLANDC__ <= 0x580) + // this seems to be needed by the command line compiler, but not the IDE: +# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +#endif + +// Borland C++ Builder 2006 Update 2 and below: +#if (__BORLANDC__ <= 0x582) +# define BOOST_NO_SFINAE +# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +# define BOOST_NO_TEMPLATE_TEMPLATES + +# define BOOST_NO_PRIVATE_IN_AGGREGATE + +# ifdef _WIN32 +# define BOOST_NO_SWPRINTF +# elif defined(linux) || defined(__linux__) || defined(__linux) + // we should really be able to do without this + // but the wcs* functions aren't imported into std:: +# define BOOST_NO_STDC_NAMESPACE + // _CPPUNWIND doesn't get automatically set for some reason: +# pragma defineonoption BOOST_CPPUNWIND -x +# endif +#endif + +#if (__BORLANDC__ <= 0x613) // Beman has asked Alisdair for more info + // we shouldn't really need this - but too many things choke + // without it, this needs more investigation: +# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +# define BOOST_NO_IS_ABSTRACT +# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +# define BOOST_NO_USING_TEMPLATE +# define BOOST_SP_NO_SP_CONVERTIBLE + +// Temporary workaround +#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS +#endif + +// Borland C++ Builder 2008 and below: +# define BOOST_NO_INTEGRAL_INT64_T +# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP +# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +# define BOOST_NO_NESTED_FRIENDSHIP +# define BOOST_NO_TYPENAME_WITH_CTOR +#if (__BORLANDC__ < 0x600) +# define BOOST_ILLEGAL_CV_REFERENCES +#endif + +// +// Positive Feature detection +// +// Borland C++ Builder 2008 and below: +#if (__BORLANDC__ >= 0x599) +# pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax +#endif +// +// C++0x Macros: +// +#if !defined( BOOST_CODEGEAR_0X_SUPPORT ) || (__BORLANDC__ < 0x610) +# define BOOST_NO_CXX11_CHAR16_T +# define BOOST_NO_CXX11_CHAR32_T +# define BOOST_NO_CXX11_DECLTYPE +# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_CXX11_EXTERN_TEMPLATE +# define BOOST_NO_CXX11_RVALUE_REFERENCES +# define BOOST_NO_CXX11_SCOPED_ENUMS +# define BOOST_NO_CXX11_STATIC_ASSERT +#else +# define BOOST_HAS_ALIGNOF +# define BOOST_HAS_CHAR16_T +# define BOOST_HAS_CHAR32_T +# define BOOST_HAS_DECLTYPE +# define BOOST_HAS_EXPLICIT_CONVERSION_OPS +# define BOOST_HAS_REF_QUALIFIER +# define BOOST_HAS_RVALUE_REFS +# define BOOST_HAS_STATIC_ASSERT +#endif + +#define BOOST_NO_CXX11_AUTO_DECLARATIONS +#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +#define BOOST_NO_CXX11_CONSTEXPR +#define BOOST_NO_CXX11_DECLTYPE_N3276 +#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#define BOOST_NO_CXX11_DELETED_FUNCTIONS +#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +#define BOOST_NO_CXX11_LAMBDAS +#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +#define BOOST_NO_CXX11_NULLPTR +#define BOOST_NO_CXX11_RANGE_BASED_FOR +#define BOOST_NO_CXX11_RAW_LITERALS +#define BOOST_NO_CXX11_RVALUE_REFERENCES +#define BOOST_NO_CXX11_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_TEMPLATE_ALIASES +#define BOOST_NO_CXX11_UNICODE_LITERALS // UTF-8 still not supported +#define BOOST_NO_CXX11_VARIADIC_TEMPLATES +#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX + +#if __BORLANDC__ >= 0x590 +# define BOOST_HAS_TR1_HASH + +# define BOOST_HAS_MACRO_USE_FACET +#endif + +// +// Post 0x561 we have long long and stdint.h: +#if __BORLANDC__ >= 0x561 +# ifndef __NO_LONG_LONG +# define BOOST_HAS_LONG_LONG +# else +# define BOOST_NO_LONG_LONG +# endif + // On non-Win32 platforms let the platform config figure this out: +# ifdef _WIN32 +# define BOOST_HAS_STDINT_H +# endif +#endif + +// Borland C++Builder 6 defaults to using STLPort. If _USE_OLD_RW_STL is +// defined, then we have 0x560 or greater with the Rogue Wave implementation +// which presumably has the std::DBL_MAX bug. +#if defined( BOOST_BCB_WITH_ROGUE_WAVE ) +// is partly broken, some macros define symbols that are really in +// namespace std, so you end up having to use illegal constructs like +// std::DBL_MAX, as a fix we'll just include float.h and have done with: +#include +#endif +// +// __int64: +// +#if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__) +# define BOOST_HAS_MS_INT64 +#endif +// +// check for exception handling support: +// +#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +#endif +// +// all versions have a : +// +#ifndef __STRICT_ANSI__ +# define BOOST_HAS_DIRENT_H +#endif +// +// all versions support __declspec: +// +#if defined(__STRICT_ANSI__) +// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined +# define BOOST_SYMBOL_EXPORT +#endif +// +// ABI fixing headers: +// +#if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet +#ifndef BOOST_ABI_PREFIX +# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp" +#endif +#ifndef BOOST_ABI_SUFFIX +# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp" +#endif +#endif +// +// Disable Win32 support in ANSI mode: +// +#if __BORLANDC__ < 0x600 +# pragma defineonoption BOOST_DISABLE_WIN32 -A +#elif defined(__STRICT_ANSI__) +# define BOOST_DISABLE_WIN32 +#endif +// +// MSVC compatibility mode does some nasty things: +// TODO: look up if this doesn't apply to the whole 12xx range +// +#if defined(_MSC_VER) && (_MSC_VER <= 1200) +# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# define BOOST_NO_VOID_RETURNS +#endif + +// Borland did not implement value-initialization completely, as I reported +// in 2007, Borland Report 51854, "Value-initialization: POD struct should be +// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854 +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +// (Niels Dekker, LKEB, April 2010) +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION + +#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__) + + + + diff --git a/contrib/prebuilt/include/boost/config/compiler/clang.hpp b/contrib/prebuilt/include/boost/config/compiler/clang.hpp new file mode 100644 index 0000000..aab3c61 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/clang.hpp @@ -0,0 +1,135 @@ +// (C) Copyright Douglas Gregor 2010 +// +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// Clang compiler setup. + +#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +#endif + +#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_RTTI) +# define BOOST_NO_RTTI +#endif + +#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_TYPEID) +# define BOOST_NO_TYPEID +#endif + +#if defined(__int64) +# define BOOST_HAS_MS_INT64 +#endif + +#define BOOST_HAS_NRVO + +// Clang supports "long long" in all compilation modes. +#define BOOST_HAS_LONG_LONG + +#if !__has_feature(cxx_auto_type) +# define BOOST_NO_CXX11_AUTO_DECLARATIONS +# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +#endif + +#if !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) +# define BOOST_NO_CXX11_CHAR16_T +# define BOOST_NO_CXX11_CHAR32_T +#endif + +#if !__has_feature(cxx_constexpr) +# define BOOST_NO_CXX11_CONSTEXPR +#endif + +#if !__has_feature(cxx_decltype) +# define BOOST_NO_CXX11_DECLTYPE +#endif + +#if !__has_feature(cxx_decltype_incomplete_return_types) +# define BOOST_NO_CXX11_DECLTYPE_N3276 +#endif + +#if !__has_feature(cxx_defaulted_functions) +# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#endif + +#if !__has_feature(cxx_deleted_functions) +# define BOOST_NO_CXX11_DELETED_FUNCTIONS +#endif + +#if !__has_feature(cxx_explicit_conversions) +# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +#endif + +#if !__has_feature(cxx_default_function_template_args) +# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#endif + +#if !__has_feature(cxx_generalized_initializers) +# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +#endif + +#if !__has_feature(cxx_lambdas) +# define BOOST_NO_CXX11_LAMBDAS +#endif + +#if !__has_feature(cxx_local_type_template_args) +# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +#endif + +#if !__has_feature(cxx_noexcept) +# define BOOST_NO_CXX11_NOEXCEPT +#endif + +#if !__has_feature(cxx_nullptr) +# define BOOST_NO_CXX11_NULLPTR +#endif + +#if !__has_feature(cxx_range_for) +# define BOOST_NO_CXX11_RANGE_BASED_FOR +#endif + +#if !__has_feature(cxx_raw_string_literals) +# define BOOST_NO_CXX11_RAW_LITERALS +#endif + +#if !__has_feature(cxx_generalized_initializers) +# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#endif + +#if !__has_feature(cxx_rvalue_references) +# define BOOST_NO_CXX11_RVALUE_REFERENCES +#endif + +#if !__has_feature(cxx_strong_enums) +# define BOOST_NO_CXX11_SCOPED_ENUMS +#endif + +#if !__has_feature(cxx_static_assert) +# define BOOST_NO_CXX11_STATIC_ASSERT +#endif + +#if !__has_feature(cxx_alias_templates) +# define BOOST_NO_CXX11_TEMPLATE_ALIASES +#endif + +#if !__has_feature(cxx_unicode_literals) +# define BOOST_NO_CXX11_UNICODE_LITERALS +#endif + +#if !__has_feature(cxx_variadic_templates) +# define BOOST_NO_CXX11_VARIADIC_TEMPLATES +#endif + +// Clang always supports variadic macros +// Clang always supports extern templates + +#ifndef BOOST_COMPILER +# define BOOST_COMPILER "Clang version " __clang_version__ +#endif + +// Macro used to identify the Clang compiler. +#define BOOST_CLANG 1 + diff --git a/contrib/prebuilt/include/boost/config/compiler/codegear.hpp b/contrib/prebuilt/include/boost/config/compiler/codegear.hpp new file mode 100644 index 0000000..1a6df33 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/codegear.hpp @@ -0,0 +1,179 @@ +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright David Abrahams 2002 - 2003. +// (C) Copyright Aleksey Gurtovoy 2002. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// CodeGear C++ compiler setup: + +#if !defined( BOOST_WITH_CODEGEAR_WARNINGS ) +// these warnings occur frequently in optimized template code +# pragma warn -8004 // var assigned value, but never used +# pragma warn -8008 // condition always true/false +# pragma warn -8066 // dead code can never execute +# pragma warn -8104 // static members with ctors not threadsafe +# pragma warn -8105 // reference member in class without ctors +#endif +// +// versions check: +// last known and checked version is 0x621 +#if (__CODEGEARC__ > 0x621) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# else +# pragma message( "Unknown compiler version - please run the configure tests and report the results") +# endif +#endif + +// CodeGear C++ Builder 2009 +#if (__CODEGEARC__ <= 0x613) +# define BOOST_NO_INTEGRAL_INT64_T +# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +# define BOOST_NO_PRIVATE_IN_AGGREGATE +# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE + // we shouldn't really need this - but too many things choke + // without it, this needs more investigation: +# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +# define BOOST_SP_NO_SP_CONVERTIBLE +#endif + +// CodeGear C++ Builder 2010 +#if (__CODEGEARC__ <= 0x621) +# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type +# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member +# define BOOST_NO_USING_TEMPLATE +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP +// Temporary hack, until specific MPL preprocessed headers are generated +# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS + +// CodeGear has not yet completely implemented value-initialization, for +// example for array types, as I reported in 2010: Embarcadero Report 83751, +// "Value-initialization: arrays should have each element value-initialized", +// http://qc.embarcadero.com/wc/qcmain.aspx?d=83751 +// Last checked version: Embarcadero C++ 6.21 +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +// (Niels Dekker, LKEB, April 2010) +# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION + +# if defined(NDEBUG) && defined(__cplusplus) + // fix broken so that Boost.test works: +# include +# undef strcmp +# endif + // fix broken errno declaration: +# include +# ifndef errno +# define errno errno +# endif + +#endif +// +// C++0x macros: +// +#if (__CODEGEARC__ <= 0x620) +#define BOOST_NO_CXX11_STATIC_ASSERT +#else +#define BOOST_HAS_STATIC_ASSERT +#endif +#define BOOST_HAS_CHAR16_T +#define BOOST_HAS_CHAR32_T +#define BOOST_HAS_LONG_LONG +// #define BOOST_HAS_ALIGNOF +#define BOOST_HAS_DECLTYPE +#define BOOST_HAS_EXPLICIT_CONVERSION_OPS +// #define BOOST_HAS_RVALUE_REFS +#define BOOST_HAS_SCOPED_ENUM +// #define BOOST_HAS_STATIC_ASSERT +#define BOOST_HAS_STD_TYPE_TRAITS + +#define BOOST_NO_CXX11_AUTO_DECLARATIONS +#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +#define BOOST_NO_CXX11_CONSTEXPR +#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#define BOOST_NO_CXX11_DELETED_FUNCTIONS +#define BOOST_NO_CXX11_EXTERN_TEMPLATE +#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#define BOOST_NO_CXX11_LAMBDAS +#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_NULLPTR +#define BOOST_NO_CXX11_RANGE_BASED_FOR +#define BOOST_NO_CXX11_RAW_LITERALS +#define BOOST_NO_CXX11_RVALUE_REFERENCES +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_TEMPLATE_ALIASES +#define BOOST_NO_CXX11_UNICODE_LITERALS +#define BOOST_NO_CXX11_VARIADIC_TEMPLATES +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX + +// +// TR1 macros: +// +#define BOOST_HAS_TR1_HASH +#define BOOST_HAS_TR1_TYPE_TRAITS +#define BOOST_HAS_TR1_UNORDERED_MAP +#define BOOST_HAS_TR1_UNORDERED_SET + +#define BOOST_HAS_MACRO_USE_FACET + +#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST + +// On non-Win32 platforms let the platform config figure this out: +#ifdef _WIN32 +# define BOOST_HAS_STDINT_H +#endif + +// +// __int64: +// +#if !defined(__STRICT_ANSI__) +# define BOOST_HAS_MS_INT64 +#endif +// +// check for exception handling support: +// +#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +#endif +// +// all versions have a : +// +#if !defined(__STRICT_ANSI__) +# define BOOST_HAS_DIRENT_H +#endif +// +// all versions support __declspec: +// +#if defined(__STRICT_ANSI__) +// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined +# define BOOST_SYMBOL_EXPORT +#endif +// +// ABI fixing headers: +// +#ifndef BOOST_ABI_PREFIX +# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp" +#endif +#ifndef BOOST_ABI_SUFFIX +# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp" +#endif +// +// Disable Win32 support in ANSI mode: +// +# pragma defineonoption BOOST_DISABLE_WIN32 -A +// +// MSVC compatibility mode does some nasty things: +// TODO: look up if this doesn't apply to the whole 12xx range +// +#if defined(_MSC_VER) && (_MSC_VER <= 1200) +# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# define BOOST_NO_VOID_RETURNS +#endif + +#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__) + diff --git a/contrib/prebuilt/include/boost/config/compiler/comeau.hpp b/contrib/prebuilt/include/boost/config/compiler/comeau.hpp new file mode 100644 index 0000000..278222d --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/comeau.hpp @@ -0,0 +1,59 @@ +// (C) Copyright John Maddock 2001. +// (C) Copyright Douglas Gregor 2001. +// (C) Copyright Peter Dimov 2001. +// (C) Copyright Aleksey Gurtovoy 2003. +// (C) Copyright Beman Dawes 2003. +// (C) Copyright Jens Maurer 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// Comeau C++ compiler setup: + +#include "boost/config/compiler/common_edg.hpp" + +#if (__COMO_VERSION__ <= 4245) + +# if defined(_MSC_VER) && _MSC_VER <= 1300 +# if _MSC_VER > 100 + // only set this in non-strict mode: +# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# endif +# endif + +// Void returns don't work when emulating VC 6 (Peter Dimov) +// TODO: look up if this doesn't apply to the whole 12xx range +# if defined(_MSC_VER) && (_MSC_VER < 1300) +# define BOOST_NO_VOID_RETURNS +# endif + +#endif // version 4245 + +// +// enable __int64 support in VC emulation mode +// +# if defined(_MSC_VER) && (_MSC_VER >= 1200) +# define BOOST_HAS_MS_INT64 +# endif + +#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__) + +// +// versions check: +// we don't know Comeau prior to version 4245: +#if __COMO_VERSION__ < 4245 +# error "Compiler not configured - please reconfigure" +#endif +// +// last known and checked version is 4245: +#if (__COMO_VERSION__ > 4245) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + + + diff --git a/contrib/prebuilt/include/boost/config/compiler/common_edg.hpp b/contrib/prebuilt/include/boost/config/compiler/common_edg.hpp new file mode 100644 index 0000000..441a055 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/common_edg.hpp @@ -0,0 +1,103 @@ +// (C) Copyright John Maddock 2001 - 2002. +// (C) Copyright Jens Maurer 2001. +// (C) Copyright David Abrahams 2002. +// (C) Copyright Aleksey Gurtovoy 2002. +// (C) Copyright Markus Schoepflin 2005. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// +// Options common to all edg based compilers. +// +// This is included from within the individual compiler mini-configs. + +#ifndef __EDG_VERSION__ +# error This file requires that __EDG_VERSION__ be defined. +#endif + +#if (__EDG_VERSION__ <= 238) +# define BOOST_NO_INTEGRAL_INT64_T +# define BOOST_NO_SFINAE +#endif + +#if (__EDG_VERSION__ <= 240) +# define BOOST_NO_VOID_RETURNS +#endif + +#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) +# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +#endif + +#if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES) +# define BOOST_NO_TEMPLATE_TEMPLATES +#endif + +#if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT) +# define BOOST_NO_IS_ABSTRACT +#endif + +#if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL) +# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +#endif + +// See also kai.hpp which checks a Kai-specific symbol for EH +# if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +# endif + +# if !defined(__NO_LONG_LONG) +# define BOOST_HAS_LONG_LONG +# else +# define BOOST_NO_LONG_LONG +# endif + +// +// C++0x features +// +// See above for BOOST_NO_LONG_LONG +// +#if (__EDG_VERSION__ < 310) +# define BOOST_NO_CXX11_EXTERN_TEMPLATE +#endif +#if (__EDG_VERSION__ <= 310) +// No support for initializer lists +# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +#endif +#if (__EDG_VERSION__ < 400) +# define BOOST_NO_CXX11_VARIADIC_MACROS +#endif + +#define BOOST_NO_CXX11_AUTO_DECLARATIONS +#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +#define BOOST_NO_CXX11_CHAR16_T +#define BOOST_NO_CXX11_CHAR32_T +#define BOOST_NO_CXX11_CONSTEXPR +#define BOOST_NO_CXX11_DECLTYPE +#define BOOST_NO_CXX11_DECLTYPE_N3276 +#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#define BOOST_NO_CXX11_DELETED_FUNCTIONS +#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#define BOOST_NO_CXX11_LAMBDAS +#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_NULLPTR +#define BOOST_NO_CXX11_RANGE_BASED_FOR +#define BOOST_NO_CXX11_RAW_LITERALS +#define BOOST_NO_CXX11_RVALUE_REFERENCES +#define BOOST_NO_CXX11_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_STATIC_ASSERT +#define BOOST_NO_CXX11_TEMPLATE_ALIASES +#define BOOST_NO_CXX11_UNICODE_LITERALS +#define BOOST_NO_CXX11_VARIADIC_TEMPLATES +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX + +#ifdef c_plusplus +// EDG has "long long" in non-strict mode +// However, some libraries have insufficient "long long" support +// #define BOOST_HAS_LONG_LONG +#endif diff --git a/contrib/prebuilt/include/boost/config/compiler/compaq_cxx.hpp b/contrib/prebuilt/include/boost/config/compiler/compaq_cxx.hpp new file mode 100644 index 0000000..b44486c --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/compaq_cxx.hpp @@ -0,0 +1,19 @@ +// (C) Copyright John Maddock 2001 - 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// Tru64 C++ compiler setup (now HP): + +#define BOOST_COMPILER "HP Tru64 C++ " BOOST_STRINGIZE(__DECCXX_VER) + +#include "boost/config/compiler/common_edg.hpp" + +// +// versions check: +// Nothing to do here? + + + diff --git a/contrib/prebuilt/include/boost/config/compiler/cray.hpp b/contrib/prebuilt/include/boost/config/compiler/cray.hpp new file mode 100644 index 0000000..5463ea0 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/cray.hpp @@ -0,0 +1,63 @@ +// (C) Copyright John Maddock 2011. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// Greenhills C compiler setup: + +#define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE) + +#if _RELEASE < 7 +# error "Boost is not configured for Cray compilers prior to version 7, please try the configure script." +#endif + +// +// Check this is a recent EDG based compiler, otherwise we don't support it here: +// +#ifndef __EDG_VERSION__ +# error "Unsupported Cray compiler, please try running the configure script." +#endif + +#include "boost/config/compiler/common_edg.hpp" + +// +// Cray peculiarities, probably version 7 specific: +// +#undef BOOST_NO_CXX11_AUTO_DECLARATIONS +#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +#define BOOST_HAS_NRVO +#define BOOST_NO_CXX11_VARIADIC_TEMPLATES +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#define BOOST_NO_CXX11_UNICODE_LITERALS +#define BOOST_NO_TWO_PHASE_NAME_LOOKUP +#define BOOST_HAS_NRVO +#define BOOST_NO_CXX11_TEMPLATE_ALIASES +#define BOOST_NO_CXX11_STATIC_ASSERT +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SCOPED_ENUMS +#define BOOST_NO_CXX11_RVALUE_REFERENCES +#define BOOST_NO_CXX11_RANGE_BASED_FOR +#define BOOST_NO_CXX11_RAW_LITERALS +#define BOOST_NO_CXX11_NULLPTR +#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_LAMBDAS +#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_CXX11_DELETED_FUNCTIONS +#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#define BOOST_NO_CXX11_DECLTYPE_N3276 +#define BOOST_NO_CXX11_DECLTYPE +#define BOOST_NO_CXX11_CONSTEXPR +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#define BOOST_NO_CXX11_CHAR32_T +#define BOOST_NO_CXX11_CHAR16_T +//#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +#define BOOST_MATH_DISABLE_STD_FPCLASSIFY +//#define BOOST_HAS_FPCLASSIFY + +#define BOOST_SP_USE_PTHREADS +#define BOOST_AC_USE_PTHREADS + diff --git a/contrib/prebuilt/include/boost/config/compiler/digitalmars.hpp b/contrib/prebuilt/include/boost/config/compiler/digitalmars.hpp new file mode 100644 index 0000000..15cc209 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/digitalmars.hpp @@ -0,0 +1,103 @@ +// Copyright (C) Christof Meerwald 2003 +// Copyright (C) Dan Watkins 2003 +// +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// Digital Mars C++ compiler setup: +#define BOOST_COMPILER __DMC_VERSION_STRING__ + +#define BOOST_HAS_LONG_LONG +#define BOOST_HAS_PRAGMA_ONCE + +#if (__DMC__ <= 0x833) +#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +#define BOOST_NO_TEMPLATE_TEMPLATES +#define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING +#define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS +#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +#endif +#if (__DMC__ <= 0x840) || !defined(BOOST_STRICT_CONFIG) +#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +#define BOOST_NO_OPERATORS_IN_NAMESPACE +#define BOOST_NO_UNREACHABLE_RETURN_DETECTION +#define BOOST_NO_SFINAE +#define BOOST_NO_USING_TEMPLATE +#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +#endif + +// +// has macros: +#if (__DMC__ >= 0x840) +#define BOOST_HAS_DIRENT_H +#define BOOST_HAS_STDINT_H +#define BOOST_HAS_WINTHREADS +#endif + +#if (__DMC__ >= 0x847) +#define BOOST_HAS_EXPM1 +#define BOOST_HAS_LOG1P +#endif + +// +// Is this really the best way to detect whether the std lib is in namespace std? +// +#ifdef __cplusplus +#include +#endif +#if !defined(__STL_IMPORT_VENDOR_CSTD) && !defined(_STLP_IMPORT_VENDOR_CSTD) +# define BOOST_NO_STDC_NAMESPACE +#endif + + +// check for exception handling support: +#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +#endif + +// +// C++0x features +// +#define BOOST_NO_CXX11_AUTO_DECLARATIONS +#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +#define BOOST_NO_CXX11_CHAR16_T +#define BOOST_NO_CXX11_CHAR32_T +#define BOOST_NO_CXX11_CONSTEXPR +#define BOOST_NO_CXX11_DECLTYPE +#define BOOST_NO_CXX11_DECLTYPE_N3276 +#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#define BOOST_NO_CXX11_DELETED_FUNCTIONS +#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_CXX11_EXTERN_TEMPLATE +#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +#define BOOST_NO_CXX11_LAMBDAS +#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_NULLPTR +#define BOOST_NO_CXX11_RANGE_BASED_FOR +#define BOOST_NO_CXX11_RAW_LITERALS +#define BOOST_NO_CXX11_RVALUE_REFERENCES +#define BOOST_NO_CXX11_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_STATIC_ASSERT +#define BOOST_NO_CXX11_TEMPLATE_ALIASES +#define BOOST_NO_CXX11_UNICODE_LITERALS +#define BOOST_NO_CXX11_VARIADIC_TEMPLATES +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX + +#if (__DMC__ < 0x812) +#define BOOST_NO_CXX11_VARIADIC_MACROS +#endif + +#if __DMC__ < 0x800 +#error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is ...: +#if (__DMC__ > 0x848) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif diff --git a/contrib/prebuilt/include/boost/config/compiler/gcc.hpp b/contrib/prebuilt/include/boost/config/compiler/gcc.hpp new file mode 100644 index 0000000..f42fd79 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/gcc.hpp @@ -0,0 +1,254 @@ +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright Darin Adler 2001 - 2002. +// (C) Copyright Jens Maurer 2001 - 2002. +// (C) Copyright Beman Dawes 2001 - 2003. +// (C) Copyright Douglas Gregor 2002. +// (C) Copyright David Abrahams 2002 - 2003. +// (C) Copyright Synge Todo 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// GNU C++ compiler setup: + +#if __GNUC__ < 3 +# if __GNUC_MINOR__ == 91 + // egcs 1.1 won't parse shared_ptr.hpp without this: +# define BOOST_NO_AUTO_PTR +# endif +# if __GNUC_MINOR__ < 95 + // + // Prior to gcc 2.95 member templates only partly + // work - define BOOST_MSVC6_MEMBER_TEMPLATES + // instead since inline member templates mostly work. + // +# define BOOST_NO_MEMBER_TEMPLATES +# if __GNUC_MINOR__ >= 9 +# define BOOST_MSVC6_MEMBER_TEMPLATES +# endif +# endif + +# if __GNUC_MINOR__ < 96 +# define BOOST_NO_SFINAE +# endif + +# if __GNUC_MINOR__ <= 97 +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_OPERATORS_IN_NAMESPACE +# endif + +# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +# define BOOST_NO_IS_ABSTRACT +# define BOOST_NO_CXX11_EXTERN_TEMPLATE +// Variadic macros do not exist for gcc versions before 3.0 +# define BOOST_NO_CXX11_VARIADIC_MACROS +#elif __GNUC__ == 3 +# if defined (__PATHSCALE__) +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP +# define BOOST_NO_IS_ABSTRACT +# endif + // + // gcc-3.x problems: + // + // Bug specific to gcc 3.1 and 3.2: + // +# if ((__GNUC_MINOR__ == 1) || (__GNUC_MINOR__ == 2)) +# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +# endif +# if __GNUC_MINOR__ < 4 +# define BOOST_NO_IS_ABSTRACT +# endif +# define BOOST_NO_CXX11_EXTERN_TEMPLATE +#endif +#if __GNUC__ < 4 +// +// All problems to gcc-3.x and earlier here: +// +#define BOOST_NO_TWO_PHASE_NAME_LOOKUP +# ifdef __OPEN64__ +# define BOOST_NO_IS_ABSTRACT +# endif +#endif + +#if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 ) +// Previous versions of GCC did not completely implement value-initialization: +// GCC Bug 30111, "Value-initialization of POD base class doesn't initialize +// members", reported by Jonathan Wakely in 2006, +// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 (fixed for GCC 4.4) +// GCC Bug 33916, "Default constructor fails to initialize array members", +// reported by Michael Elizabeth Chastain in 2007, +// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4) +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#endif + +#if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +#endif + + +// +// Threading support: Turn this on unconditionally here (except for +// those platforms where we can know for sure). It will get turned off again +// later if no threading API is detected. +// +#if !defined(__MINGW32__) && !defined(linux) && !defined(__linux) && !defined(__linux__) +# define BOOST_HAS_THREADS +#endif + +// +// gcc has "long long" +// +#define BOOST_HAS_LONG_LONG + +// +// gcc implements the named return value optimization since version 3.1 +// +#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 ) +#define BOOST_HAS_NRVO +#endif + +// +// Dynamic shared object (DSO) and dynamic-link library (DLL) support +// +#if __GNUC__ >= 4 +# if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(__CYGWIN__) + // All Win32 development environments, including 64-bit Windows and MinGW, define + // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment, + // so does not define _WIN32 or its variants. +# define BOOST_HAS_DECLSPEC +# define BOOST_SYMBOL_EXPORT __attribute__((dllexport)) +# define BOOST_SYMBOL_IMPORT __attribute__((dllimport)) +# else +# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default"))) +# define BOOST_SYMBOL_IMPORT +# endif +# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default"))) +#else +// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined +# define BOOST_SYMBOL_EXPORT +#endif + +// +// RTTI and typeinfo detection is possible post gcc-4.3: +// +#if __GNUC__ * 100 + __GNUC_MINOR__ >= 403 +# ifndef __GXX_RTTI +# ifndef BOOST_NO_TYPEID +# define BOOST_NO_TYPEID +# endif +# ifndef BOOST_NO_RTTI +# define BOOST_NO_RTTI +# endif +# endif +#endif + + +// C++0x features in 4.3.n and later +// +#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__) +// C++0x features are only enabled when -std=c++0x or -std=gnu++0x are +// passed on the command line, which in turn defines +// __GXX_EXPERIMENTAL_CXX0X__. +# define BOOST_HAS_DECLTYPE +# define BOOST_HAS_RVALUE_REFS +# define BOOST_HAS_STATIC_ASSERT +# define BOOST_HAS_VARIADIC_TMPL +#else +# define BOOST_NO_CXX11_DECLTYPE +# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +# define BOOST_NO_CXX11_RVALUE_REFERENCES +# define BOOST_NO_CXX11_STATIC_ASSERT + +// Variadic templates compiler: +// http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html +# if defined(__VARIADIC_TEMPLATES) || (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4) && defined(__GXX_EXPERIMENTAL_CXX0X__)) +# define BOOST_HAS_VARIADIC_TMPL +# else +# define BOOST_NO_CXX11_VARIADIC_TEMPLATES +# endif +#endif + +// C++0x features in 4.4.n and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_NO_CXX11_AUTO_DECLARATIONS +# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +# define BOOST_NO_CXX11_CHAR16_T +# define BOOST_NO_CXX11_CHAR32_T +# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +# define BOOST_NO_CXX11_DELETED_FUNCTIONS +#endif + +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) +# define BOOST_NO_SFINAE_EXPR +#endif + +// C++0x features in 4.5.0 and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_CXX11_LAMBDAS +# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +# define BOOST_NO_CXX11_RAW_LITERALS +# define BOOST_NO_CXX11_UNICODE_LITERALS +#endif + +// C++0x features in 4.5.1 and later +// +#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40501) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_CXX11_SCOPED_ENUMS before 4.5.1 +// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 +# define BOOST_NO_CXX11_SCOPED_ENUMS +#endif + +// C++0x features in 4.6.n and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +#define BOOST_NO_CXX11_CONSTEXPR +#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_NULLPTR +#define BOOST_NO_CXX11_RANGE_BASED_FOR +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#endif + +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_NO_CXX11_TEMPLATE_ALIASES +#endif +// C++0x features not supported at all yet +// +#define BOOST_NO_CXX11_DECLTYPE_N3276 + +#ifndef BOOST_COMPILER +# define BOOST_COMPILER "GNU C++ version " __VERSION__ +#endif + +// ConceptGCC compiler: +// http://www.generic-programming.org/software/ConceptGCC/ +#ifdef __GXX_CONCEPTS__ +# define BOOST_HAS_CONCEPTS +# define BOOST_COMPILER "ConceptGCC version " __VERSION__ +#endif + +// versions check: +// we don't know gcc prior to version 2.90: +#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90) +# error "Compiler not configured - please reconfigure" +#endif +// +// last known and checked version is 4.6 (Pre-release): +#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6)) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# else +// we don't emit warnings here anymore since there are no defect macros defined for +// gcc post 3.4, so any failures are gcc regressions... +//# warning "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + diff --git a/contrib/prebuilt/include/boost/config/compiler/gcc_xml.hpp b/contrib/prebuilt/include/boost/config/compiler/gcc_xml.hpp new file mode 100644 index 0000000..eaed4b5 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/gcc_xml.hpp @@ -0,0 +1,60 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// GCC-XML C++ compiler setup: + +# if !defined(__GCCXML_GNUC__) || ((__GCCXML_GNUC__ <= 3) && (__GCCXML_GNUC_MINOR__ <= 3)) +# define BOOST_NO_IS_ABSTRACT +# endif + +// +// Threading support: Turn this on unconditionally here (except for +// those platforms where we can know for sure). It will get turned off again +// later if no threading API is detected. +// +#if !defined(__MINGW32__) && !defined(_MSC_VER) && !defined(linux) && !defined(__linux) && !defined(__linux__) +# define BOOST_HAS_THREADS +#endif + +// +// gcc has "long long" +// +#define BOOST_HAS_LONG_LONG + +// C++0x features: +// +# define BOOST_NO_CXX11_CONSTEXPR +# define BOOST_NO_CXX11_NULLPTR +# define BOOST_NO_CXX11_TEMPLATE_ALIASES +# define BOOST_NO_CXX11_DECLTYPE +# define BOOST_NO_CXX11_DECLTYPE_N3276 +# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +# define BOOST_NO_CXX11_RVALUE_REFERENCES +# define BOOST_NO_CXX11_STATIC_ASSERT +# define BOOST_NO_CXX11_VARIADIC_TEMPLATES +# define BOOST_NO_CXX11_VARIADIC_MACROS +# define BOOST_NO_CXX11_AUTO_DECLARATIONS +# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +# define BOOST_NO_CXX11_CHAR16_T +# define BOOST_NO_CXX11_CHAR32_T +# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +# define BOOST_NO_CXX11_DELETED_FUNCTIONS +# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +# define BOOST_NO_CXX11_SCOPED_ENUMS +# define BOOST_NO_SFINAE_EXPR +# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_CXX11_LAMBDAS +# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +# define BOOST_NO_CXX11_RANGE_BASED_FOR +# define BOOST_NO_CXX11_RAW_LITERALS +# define BOOST_NO_CXX11_UNICODE_LITERALS +# define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX + +#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ + + diff --git a/contrib/prebuilt/include/boost/config/compiler/greenhills.hpp b/contrib/prebuilt/include/boost/config/compiler/greenhills.hpp new file mode 100644 index 0000000..038b6b2 --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/greenhills.hpp @@ -0,0 +1,28 @@ +// (C) Copyright John Maddock 2001. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// Greenhills C++ compiler setup: + +#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs) + +#include "boost/config/compiler/common_edg.hpp" + +// +// versions check: +// we don't support Greenhills prior to version 0: +#if __ghs < 0 +# error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 0: +#if (__ghs > 0) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + diff --git a/contrib/prebuilt/include/boost/config/compiler/hp_acc.hpp b/contrib/prebuilt/include/boost/config/compiler/hp_acc.hpp new file mode 100644 index 0000000..4f5f81b --- /dev/null +++ b/contrib/prebuilt/include/boost/config/compiler/hp_acc.hpp @@ -0,0 +1,140 @@ +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright Jens Maurer 2001 - 2003. +// (C) Copyright Aleksey Gurtovoy 2002. +// (C) Copyright David Abrahams 2002 - 2003. +// (C) Copyright Toon Knapen 2003. +// (C) Copyright Boris Gubenko 2006 - 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// HP aCC C++ compiler setup: + +#if defined(__EDG__) +#include "boost/config/compiler/common_edg.hpp" +#endif + +#if (__HP_aCC <= 33100) +# define BOOST_NO_INTEGRAL_INT64_T +# define BOOST_NO_OPERATORS_IN_NAMESPACE +# if !defined(_NAMESPACE_STD) +# define BOOST_NO_STD_LOCALE +# define BOOST_NO_STRINGSTREAM +# endif +#endif + +#if (__HP_aCC <= 33300) +// member templates are sufficiently broken that we disable them for now +# define BOOST_NO_MEMBER_TEMPLATES +# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +#endif + +#if (__HP_aCC <= 38000) +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP +#endif + +#if (__HP_aCC > 50000) && (__HP_aCC < 60000) +# define BOOST_NO_UNREACHABLE_RETURN_DETECTION +# define BOOST_NO_TEMPLATE_TEMPLATES +# define BOOST_NO_SWPRINTF +# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +# define BOOST_NO_IS_ABSTRACT +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +#endif + +// optional features rather than defects: +#if (__HP_aCC >= 33900) +# define BOOST_HAS_LONG_LONG +# define BOOST_HAS_PARTIAL_STD_ALLOCATOR +#endif + +#if (__HP_aCC >= 50000 ) && (__HP_aCC <= 53800 ) || (__HP_aCC < 31300 ) +# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD +#endif + +// This macro should not be defined when compiling in strict ansi +// mode, but, currently, we don't have the ability to determine +// what standard mode we are compiling with. Some future version +// of aCC6 compiler will provide predefined macros reflecting the +// compilation options, including the standard mode. +#if (__HP_aCC >= 60000) || ((__HP_aCC > 38000) && defined(__hpxstd98)) +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP +#endif + +#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC) + +// +// versions check: +// we don't support HP aCC prior to version 33000: +#i