From 60475b244144ea7b4ad23b10843e3f70a83aebd6 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Thu, 14 Jul 2011 03:36:58 +0300 Subject: [PATCH] Updated boost to 1.47 --- .../boost/accumulators/accumulators_fwd.hpp | 3 + .../boost/boost/accumulators/statistics.hpp | 2 + .../accumulators/statistics/sum_kahan.hpp | 188 + .../statistics/weighted_sum_kahan.hpp | 138 + .../boost/accumulators/statistics_fwd.hpp | 13 + .../algorithm/string/detail/formatter.hpp | 25 + .../boost/algorithm/string/formatter.hpp | 23 +- .../boost/boost/algorithm/string/trim_all.hpp | 217 + 3party/boost/boost/array.hpp | 2 +- 3party/boost/boost/asio.hpp | 6 + .../boost/asio/basic_datagram_socket.hpp | 186 +- .../boost/boost/asio/basic_deadline_timer.hpp | 83 +- 3party/boost/boost/asio/basic_io_object.hpp | 182 +- 3party/boost/boost/asio/basic_raw_socket.hpp | 185 +- .../boost/asio/basic_seq_packet_socket.hpp | 514 ++ 3party/boost/boost/asio/basic_serial_port.hpp | 159 +- 3party/boost/boost/asio/basic_signal_set.hpp | 384 ++ 3party/boost/boost/asio/basic_socket.hpp | 536 +- .../boost/asio/basic_socket_acceptor.hpp | 364 +- .../boost/asio/basic_socket_iostream.hpp | 145 +- .../boost/asio/basic_socket_streambuf.hpp | 390 +- .../boost/boost/asio/basic_stream_socket.hpp | 146 +- 3party/boost/boost/asio/basic_streambuf.hpp | 4 +- 3party/boost/boost/asio/buffer.hpp | 1346 +++- .../boost/boost/asio/buffered_read_stream.hpp | 99 +- 3party/boost/boost/asio/buffered_stream.hpp | 7 - .../boost/asio/buffered_write_stream.hpp | 87 +- 3party/boost/boost/asio/buffers_iterator.hpp | 53 +- .../boost/boost/asio/completion_condition.hpp | 56 + 3party/boost/boost/asio/connect.hpp | 816 +++ .../boost/asio/datagram_socket_service.hpp | 107 +- .../boost/asio/deadline_timer_service.hpp | 24 +- 3party/boost/boost/asio/detail/array.hpp | 40 + 3party/boost/boost/asio/detail/array_fwd.hpp | 9 + .../boost/boost/asio/detail/atomic_count.hpp | 40 + .../boost/boost/asio/detail/bind_handler.hpp | 96 +- .../asio/detail/buffer_sequence_adapter.hpp | 60 +- .../asio/detail/buffered_stream_storage.hpp | 19 +- .../boost/asio/detail/completion_handler.hpp | 10 +- 3party/boost/boost/asio/detail/config.hpp | 122 + .../asio/detail/deadline_timer_service.hpp | 30 +- .../boost/asio/detail/descriptor_ops.hpp | 10 +- .../boost/asio/detail/descriptor_read_op.hpp | 8 +- .../boost/asio/detail/descriptor_write_op.hpp | 8 +- .../boost/asio/detail/dev_poll_reactor.hpp | 30 +- .../boost/boost/asio/detail/epoll_reactor.hpp | 35 +- .../detail/eventfd_select_interrupter.hpp | 9 + .../asio/detail/gcc_arm_fenced_block.hpp | 5 + .../asio/detail/handler_alloc_helpers.hpp | 4 +- .../asio/detail/handler_invoke_helpers.hpp | 15 +- .../boost/asio/detail/handler_tracking.hpp | 161 + .../asio/detail/handler_type_requirements.hpp | 362 + 3party/boost/boost/asio/detail/hash_map.hpp | 36 +- .../boost/asio/detail/impl/descriptor_ops.ipp | 85 +- .../asio/detail/impl/dev_poll_reactor.hpp | 5 +- .../asio/detail/impl/dev_poll_reactor.ipp | 121 +- .../boost/asio/detail/impl/epoll_reactor.hpp | 5 +- .../boost/asio/detail/impl/epoll_reactor.ipp | 180 +- .../impl/eventfd_select_interrupter.ipp | 47 +- .../asio/detail/impl/handler_tracking.ipp | 299 + .../boost/asio/detail/impl/kqueue_reactor.hpp | 5 +- .../boost/asio/detail/impl/kqueue_reactor.ipp | 139 +- .../detail/impl/pipe_select_interrupter.ipp | 25 + .../impl/reactive_descriptor_service.ipp | 85 +- .../impl/reactive_serial_port_service.ipp | 6 +- .../impl/reactive_socket_service_base.ipp | 69 +- .../detail/impl/resolver_service_base.ipp | 32 +- .../boost/asio/detail/impl/select_reactor.hpp | 5 +- .../boost/asio/detail/impl/select_reactor.ipp | 39 +- .../asio/detail/impl/service_registry.ipp | 32 +- .../asio/detail/impl/signal_set_service.ipp | 592 ++ .../boost/asio/detail/impl/socket_ops.ipp | 243 +- .../detail/impl/socket_select_interrupter.ipp | 20 + .../boost/asio/detail/impl/strand_service.hpp | 46 +- .../boost/asio/detail/impl/strand_service.ipp | 41 +- .../asio/detail/impl/task_io_service.hpp | 16 +- .../asio/detail/impl/task_io_service.ipp | 14 + .../boost/asio/detail/impl/timer_queue.ipp | 4 +- .../detail/impl/win_iocp_handle_service.ipp | 84 +- .../asio/detail/impl/win_iocp_io_service.hpp | 21 +- .../asio/detail/impl/win_iocp_io_service.ipp | 20 +- .../impl/win_iocp_serial_port_service.ipp | 6 +- .../impl/win_iocp_socket_service_base.ipp | 102 +- .../asio/detail/impl/win_static_mutex.ipp | 120 + .../boost/asio/detail/impl/win_thread.ipp | 13 +- 3party/boost/boost/asio/detail/io_control.hpp | 4 +- .../boost/asio/detail/kqueue_reactor.hpp | 28 +- .../boost/asio/detail/null_static_mutex.hpp | 62 + .../boost/asio/detail/old_win_sdk_compat.hpp | 124 - .../asio/detail/pipe_select_interrupter.hpp | 9 + .../boost/asio/detail/posix_static_mutex.hpp | 66 + .../boost/boost/asio/detail/posix_thread.hpp | 2 +- .../detail/reactive_descriptor_service.hpp | 61 +- .../asio/detail/reactive_null_buffers_op.hpp | 8 +- .../detail/reactive_serial_port_service.hpp | 27 +- .../asio/detail/reactive_socket_accept_op.hpp | 8 +- .../detail/reactive_socket_connect_op.hpp | 8 +- .../asio/detail/reactive_socket_recv_op.hpp | 10 +- .../detail/reactive_socket_recvfrom_op.hpp | 8 +- .../detail/reactive_socket_recvmsg_op.hpp | 126 + .../asio/detail/reactive_socket_send_op.hpp | 8 +- .../asio/detail/reactive_socket_sendto_op.hpp | 8 +- .../asio/detail/reactive_socket_service.hpp | 46 +- .../detail/reactive_socket_service_base.hpp | 139 +- .../boost/asio/detail/resolve_endpoint_op.hpp | 8 +- 3party/boost/boost/asio/detail/resolve_op.hpp | 8 +- .../boost/asio/detail/resolver_service.hpp | 12 +- .../asio/detail/resolver_service_base.hpp | 12 +- 3party/boost/boost/asio/detail/scoped_ptr.hpp | 81 + .../boost/asio/detail/select_reactor.hpp | 27 +- .../boost/asio/detail/service_registry.hpp | 3 + 3party/boost/boost/asio/detail/shared_ptr.hpp | 12 +- .../boost/asio/detail/signal_handler.hpp | 82 + 3party/boost/boost/asio/detail/signal_op.hpp | 51 + .../boost/asio/detail/signal_set_service.hpp | 213 + 3party/boost/boost/asio/detail/socket_ops.hpp | 31 +- .../asio/detail/socket_select_interrupter.hpp | 9 + .../boost/boost/asio/detail/socket_types.hpp | 2 + .../boost/boost/asio/detail/static_mutex.hpp | 49 + .../boost/asio/detail/strand_service.hpp | 13 +- .../boost/asio/detail/task_io_service.hpp | 13 +- .../asio/detail/task_io_service_operation.hpp | 3 +- .../boost/boost/asio/detail/timer_queue.hpp | 16 +- .../boost/boost/asio/detail/wait_handler.hpp | 8 +- 3party/boost/boost/asio/detail/weak_ptr.hpp | 13 +- .../asio/detail/win_iocp_handle_read_op.hpp | 9 +- .../asio/detail/win_iocp_handle_service.hpp | 49 +- .../asio/detail/win_iocp_handle_write_op.hpp | 8 +- .../boost/asio/detail/win_iocp_io_service.hpp | 20 +- .../asio/detail/win_iocp_null_buffers_op.hpp | 8 +- .../boost/asio/detail/win_iocp_operation.hpp | 2 + .../asio/detail/win_iocp_overlapped_op.hpp | 8 +- .../asio/detail/win_iocp_overlapped_ptr.hpp | 8 +- .../detail/win_iocp_serial_port_service.hpp | 26 +- .../asio/detail/win_iocp_socket_accept_op.hpp | 10 +- .../asio/detail/win_iocp_socket_recv_op.hpp | 8 +- .../detail/win_iocp_socket_recvfrom_op.hpp | 8 +- .../detail/win_iocp_socket_recvmsg_op.hpp | 115 + .../asio/detail/win_iocp_socket_send_op.hpp | 8 +- .../asio/detail/win_iocp_socket_service.hpp | 61 +- .../detail/win_iocp_socket_service_base.hpp | 127 +- .../boost/asio/detail/win_static_mutex.hpp | 76 + .../boost/boost/asio/detail/wince_thread.hpp | 2 +- .../boost/asio/detail/wrapped_handler.hpp | 63 +- 3party/boost/boost/asio/error.hpp | 24 +- 3party/boost/boost/asio/impl/connect.hpp | 391 ++ 3party/boost/boost/asio/impl/error.ipp | 26 - 3party/boost/boost/asio/impl/io_service.hpp | 32 +- 3party/boost/boost/asio/impl/io_service.ipp | 14 + 3party/boost/boost/asio/impl/read.hpp | 200 +- 3party/boost/boost/asio/impl/read_at.hpp | 209 +- 3party/boost/boost/asio/impl/read_until.hpp | 286 +- 3party/boost/boost/asio/impl/src.hpp | 3 + 3party/boost/boost/asio/impl/write.hpp | 233 +- 3party/boost/boost/asio/impl/write_at.hpp | 238 +- 3party/boost/boost/asio/io_service.hpp | 125 +- 3party/boost/boost/asio/ip/address.hpp | 19 + 3party/boost/boost/asio/ip/address_v4.hpp | 41 +- 3party/boost/boost/asio/ip/address_v6.hpp | 22 +- 3party/boost/boost/asio/ip/basic_endpoint.hpp | 26 +- 3party/boost/boost/asio/ip/basic_resolver.hpp | 27 +- .../boost/asio/ip/basic_resolver_entry.hpp | 10 +- .../boost/asio/ip/basic_resolver_iterator.hpp | 25 +- .../boost/asio/ip/basic_resolver_query.hpp | 65 +- .../boost/boost/asio/ip/detail/endpoint.hpp | 5 +- .../boost/asio/ip/detail/impl/endpoint.ipp | 20 +- .../boost/asio/ip/detail/socket_option.hpp | 43 +- 3party/boost/boost/asio/ip/icmp.hpp | 12 +- 3party/boost/boost/asio/ip/impl/address.ipp | 40 + .../boost/boost/asio/ip/impl/address_v4.ipp | 24 +- .../boost/boost/asio/ip/impl/address_v6.ipp | 89 +- .../boost/boost/asio/ip/resolver_service.hpp | 30 +- 3party/boost/boost/asio/ip/tcp.hpp | 10 +- 3party/boost/boost/asio/ip/udp.hpp | 10 +- .../boost/boost/asio/local/basic_endpoint.hpp | 29 +- .../boost/boost/asio/local/connect_pair.hpp | 2 +- .../boost/asio/local/detail/endpoint.hpp | 4 +- .../boost/asio/local/detail/impl/endpoint.ipp | 20 +- 3party/boost/boost/asio/placeholders.hpp | 14 + .../boost/asio/posix/basic_descriptor.hpp | 238 +- .../asio/posix/basic_stream_descriptor.hpp | 80 +- .../boost/asio/posix/descriptor_base.hpp | 3 +- .../asio/posix/stream_descriptor_service.hpp | 98 +- .../boost/boost/asio/raw_socket_service.hpp | 107 +- 3party/boost/boost/asio/read.hpp | 78 +- 3party/boost/boost/asio/read_at.hpp | 90 +- 3party/boost/boost/asio/read_until.hpp | 34 +- .../boost/asio/seq_packet_socket_service.hpp | 341 + .../boost/boost/asio/serial_port_service.hpp | 66 +- 3party/boost/boost/asio/signal_set.hpp | 30 + .../boost/boost/asio/signal_set_service.hpp | 128 + .../boost/asio/socket_acceptor_service.hpp | 84 +- 3party/boost/boost/asio/socket_base.hpp | 8 +- 3party/boost/boost/asio/ssl.hpp | 4 + 3party/boost/boost/asio/ssl/basic_context.hpp | 408 +- 3party/boost/boost/asio/ssl/context.hpp | 507 +- 3party/boost/boost/asio/ssl/context_base.hpp | 23 +- .../boost/boost/asio/ssl/context_service.hpp | 148 +- 3party/boost/boost/asio/ssl/detail/engine.hpp | 162 + .../boost/asio/ssl/detail/handshake_op.hpp | 70 + .../boost/asio/ssl/detail/impl/engine.ipp | 302 + .../asio/ssl/detail/impl/openssl_init.ipp | 109 + 3party/boost/boost/asio/ssl/detail/io.hpp | 336 + .../boost/asio/ssl/detail/openssl_init.hpp | 114 +- .../boost/asio/ssl/detail/openssl_types.hpp | 3 +- .../asio/ssl/detail/password_callback.hpp | 74 + .../boost/boost/asio/ssl/detail/read_op.hpp | 75 + .../boost/asio/ssl/detail/shutdown_op.hpp | 62 + .../boost/asio/ssl/detail/stream_core.hpp | 88 + .../boost/asio/ssl/detail/verify_callback.hpp | 70 + .../boost/boost/asio/ssl/detail/write_op.hpp | 75 + 3party/boost/boost/asio/ssl/error.hpp | 72 + 3party/boost/boost/asio/ssl/impl/context.hpp | 73 + 3party/boost/boost/asio/ssl/impl/context.ipp | 527 ++ 3party/boost/boost/asio/ssl/impl/error.ipp | 59 + .../asio/ssl/impl/rfc2818_verification.ipp | 158 + 3party/boost/boost/asio/ssl/impl/src.hpp | 28 + .../boost/asio/ssl/old/basic_context.hpp | 436 ++ .../boost/asio/ssl/old/context_service.hpp | 176 + .../detail/openssl_context_service.hpp | 23 +- .../{ => old}/detail/openssl_operation.hpp | 13 +- .../detail/openssl_stream_service.hpp | 14 +- 3party/boost/boost/asio/ssl/old/stream.hpp | 503 ++ .../boost/asio/ssl/old/stream_service.hpp | 186 + .../boost/asio/ssl/rfc2818_verification.hpp | 102 + 3party/boost/boost/asio/ssl/stream.hpp | 401 +- 3party/boost/boost/asio/ssl/stream_base.hpp | 2 +- .../boost/boost/asio/ssl/stream_service.hpp | 158 +- .../boost/boost/asio/ssl/verify_context.hpp | 75 + 3party/boost/boost/asio/ssl/verify_mode.hpp | 65 + 3party/boost/boost/asio/strand.hpp | 35 +- .../boost/asio/stream_socket_service.hpp | 96 +- 3party/boost/boost/asio/version.hpp | 2 +- .../boost/boost/asio/windows/basic_handle.hpp | 90 +- .../windows/basic_random_access_handle.hpp | 94 +- .../asio/windows/basic_stream_handle.hpp | 85 +- .../boost/asio/windows/overlapped_ptr.hpp | 10 +- .../windows/random_access_handle_service.hpp | 70 +- .../asio/windows/stream_handle_service.hpp | 66 +- 3party/boost/boost/asio/write.hpp | 80 +- 3party/boost/boost/asio/write_at.hpp | 89 +- 3party/boost/boost/chrono.hpp | 20 + 3party/boost/boost/chrono/chrono.hpp | 15 + 3party/boost/boost/chrono/chrono_io.hpp | 654 ++ 3party/boost/boost/chrono/config.hpp | 152 + .../boost/chrono/detail/inlined/chrono.hpp | 44 + .../chrono/detail/inlined/mac/chrono.hpp | 238 + .../detail/inlined/mac/process_clock.hpp | 104 + .../detail/inlined/mac/process_cpu_clocks.hpp | 251 + .../detail/inlined/mac/thread_clock.hpp | 15 + .../chrono/detail/inlined/posix/chrono.hpp | 124 + .../detail/inlined/posix/process_clock.hpp | 97 + .../inlined/posix/process_cpu_clocks.hpp | 250 + .../detail/inlined/posix/thread_clock.hpp | 89 + .../chrono/detail/inlined/process_clock.hpp | 54 + .../detail/inlined/process_cpu_clocks.hpp | 80 + .../boost/chrono/detail/inlined/run_timer.hpp | 193 + .../detail/inlined/run_timer_static.hpp | 37 + .../chrono/detail/inlined/thread_clock.hpp | 44 + .../chrono/detail/inlined/win/chrono.hpp | 163 + .../detail/inlined/win/process_clock.hpp | 80 + .../detail/inlined/win/process_cpu_clocks.hpp | 215 + .../detail/inlined/win/thread_clock.hpp | 104 + .../chrono/detail/is_evenly_divisible_by.hpp | 29 + .../boost/chrono/detail/scan_keyword.hpp | 162 + .../boost/chrono/detail/static_assert.hpp | 30 + 3party/boost/boost/chrono/detail/system.hpp | 26 + 3party/boost/boost/chrono/duration.hpp | 786 +++ 3party/boost/boost/chrono/include.hpp | 21 + .../boost/boost/chrono/process_cpu_clocks.hpp | 300 + 3party/boost/boost/chrono/process_times.hpp | 212 + 3party/boost/boost/chrono/system_clocks.hpp | 175 + 3party/boost/boost/chrono/thread_clock.hpp | 49 + 3party/boost/boost/chrono/time_point.hpp | 368 + 3party/boost/boost/chrono/timer.hpp | 62 + .../chrono/typeof/boost/chrono/chrono.hpp | 33 + .../boost/boost/chrono/typeof/boost/ratio.hpp | 26 + .../concept/detail/backward_compatibility.hpp | 2 +- 3party/boost/boost/config.hpp | 2 +- .../boost/boost/config/compiler/borland.hpp | 11 +- 3party/boost/boost/config/compiler/clang.hpp | 3 +- .../boost/boost/config/compiler/codegear.hpp | 5 +- .../boost/config/compiler/common_edg.hpp | 3 +- .../boost/config/compiler/digitalmars.hpp | 6 +- 3party/boost/boost/config/compiler/gcc.hpp | 38 +- .../boost/boost/config/compiler/gcc_xml.hpp | 2 + 3party/boost/boost/config/compiler/hp_acc.hpp | 2 +- 3party/boost/boost/config/compiler/intel.hpp | 15 +- .../boost/config/compiler/metrowerks.hpp | 3 +- 3party/boost/boost/config/compiler/mpw.hpp | 3 +- .../boost/boost/config/compiler/pathscale.hpp | 7 +- 3party/boost/boost/config/compiler/pgi.hpp | 3 +- .../boost/boost/config/compiler/sunpro_cc.hpp | 3 +- 3party/boost/boost/config/compiler/vacpp.hpp | 3 +- .../boost/boost/config/compiler/visualc.hpp | 13 +- 3party/boost/boost/config/platform/linux.hpp | 5 + 3party/boost/boost/config/platform/macos.hpp | 9 +- .../boost/boost/config/platform/symbian.hpp | 7 +- .../boost/config/select_compiler_config.hpp | 27 - .../boost/config/select_stdlib_config.hpp | 6 +- .../boost/boost/config/stdlib/dinkumware.hpp | 12 +- 3party/boost/boost/config/stdlib/libcomo.hpp | 4 - 3party/boost/boost/config/stdlib/libcpp.hpp | 12 +- .../boost/boost/config/stdlib/libstdcpp3.hpp | 28 +- 3party/boost/boost/config/stdlib/modena.hpp | 4 - 3party/boost/boost/config/stdlib/msl.hpp | 4 - .../boost/boost/config/stdlib/roguewave.hpp | 12 +- 3party/boost/boost/config/stdlib/sgi.hpp | 4 - 3party/boost/boost/config/stdlib/stlport.hpp | 4 - 3party/boost/boost/config/stdlib/vacpp.hpp | 4 - 3party/boost/boost/config/suffix.hpp | 13 +- 3party/boost/boost/config/warning_disable.hpp | 2 +- 3party/boost/boost/date_time/c_time.hpp | 18 +- .../boost/boost/date_time/date_formatting.hpp | 8 +- .../boost/date_time/filetime_functions.hpp | 8 +- .../boost/date_time/gregorian_calendar.ipp | 4 +- .../date_time/posix_time/time_serialize.hpp | 26 +- .../boost/date_time/strings_from_facet.hpp | 6 +- 3party/boost/boost/date_time/time_facet.hpp | 202 +- 3party/boost/boost/date_time/tz_db_base.hpp | 17 +- 3party/boost/boost/detail/container_fwd.hpp | 3 +- 3party/boost/boost/detail/interlocked.hpp | 31 +- 3party/boost/boost/detail/is_sorted.hpp | 56 + .../boost/boost/detail/lightweight_test.hpp | 46 +- .../boost/detail/win/GetCurrentProcess.hpp | 25 + .../boost/detail/win/GetCurrentThread.hpp | 34 + .../boost/boost/detail/win/GetLastError.hpp | 27 + .../boost/detail/win/GetProcessTimes.hpp | 35 + .../boost/boost/detail/win/GetThreadTimes.hpp | 33 + 3party/boost/boost/detail/win/LocalFree.hpp | 29 + 3party/boost/boost/detail/win/basic_types.hpp | 111 + .../boost/detail/win/directory_management.hpp | 43 + 3party/boost/boost/detail/win/dll.hpp | 52 + .../boost/boost/detail/win/error_handling.hpp | 88 + .../boost/detail/win/file_management.hpp | 126 + 3party/boost/boost/detail/win/handles.hpp | 37 + 3party/boost/boost/detail/win/memory.hpp | 59 + 3party/boost/boost/detail/win/process.hpp | 33 + 3party/boost/boost/detail/win/security.hpp | 62 + .../boost/detail/win/synchronization.hpp | 125 + 3party/boost/boost/detail/win/system.hpp | 50 + 3party/boost/boost/detail/win/thread.hpp | 45 + 3party/boost/boost/detail/win/time.hpp | 72 + 3party/boost/boost/detail/win/timers.hpp | 41 + .../boost/dynamic_bitset/dynamic_bitset.hpp | 4 +- .../detail/clone_current_exception.hpp | 47 + .../boost/exception/detail/exception_ptr.hpp | 314 +- .../boost/exception/detail/type_info.hpp | 6 +- .../exception/diagnostic_information.hpp | 60 +- .../exception/errinfo_nested_exception.hpp | 5 +- 3party/boost/boost/exception/exception.hpp | 22 +- 3party/boost/boost/exception/info.hpp | 1 - .../boost/boost/filesystem/v3/operations.hpp | 34 +- 3party/boost/boost/filesystem/v3/path.hpp | 13 +- 3party/boost/boost/foreach.hpp | 40 +- 3party/boost/boost/function.hpp | 4 +- 3party/boost/boost/function/function_base.hpp | 24 +- .../boost/function/function_template.hpp | 72 +- .../boost/boost/function_types/components.hpp | 8 +- .../boost/functional/forward_adapter.hpp | 4 +- .../lightweight_forward_adapter.hpp | 4 +- .../boost/fusion/algorithm/auxiliary.hpp | 12 + .../boost/fusion/algorithm/auxiliary/copy.hpp | 73 + .../fusion/functional/adapter/unfused.hpp | 0 .../boost/boost/fusion/include/auxiliary.hpp | 12 + 3party/boost/boost/fusion/include/copy.hpp | 12 + 3party/boost/boost/geometry.hpp | 19 + .../boost/geometry/algorithms/append.hpp | 230 + .../boost/boost/geometry/algorithms/area.hpp | 287 + .../boost/geometry/algorithms/assign.hpp | 281 + .../boost/geometry/algorithms/buffer.hpp | 167 + .../boost/geometry/algorithms/centroid.hpp | 470 ++ .../boost/boost/geometry/algorithms/clear.hpp | 159 + .../algorithms/comparable_distance.hpp | 74 + .../boost/geometry/algorithms/convert.hpp | 269 + .../boost/geometry/algorithms/convex_hull.hpp | 247 + .../boost/geometry/algorithms/correct.hpp | 270 + .../geometry/algorithms/detail/as_range.hpp | 107 + .../algorithms/detail/assign_values.hpp | 450 ++ .../algorithms/detail/calculate_null.hpp | 38 + .../algorithms/detail/calculate_sum.hpp | 64 + .../detail/convert_point_to_point.hpp | 68 + .../geometry/algorithms/detail/disjoint.hpp | 225 + .../detail/equals/collect_vectors.hpp | 315 + .../algorithms/detail/for_each_range.hpp | 125 + .../detail/has_self_intersections.hpp | 121 + .../boost/geometry/algorithms/detail/not.hpp | 50 + .../algorithms/detail/overlay/add_rings.hpp | 134 + .../detail/overlay/assign_parents.hpp | 338 + .../overlay/calculate_distance_policy.hpp | 52 + .../detail/overlay/check_enrich.hpp | 172 + .../detail/overlay/clip_linestring.hpp | 241 + .../detail/overlay/convert_ring.hpp | 99 + .../detail/overlay/copy_segment_point.hpp | 295 + .../detail/overlay/copy_segments.hpp | 281 + .../detail/overlay/debug_turn_info.hpp | 64 + .../overlay/enrich_intersection_points.hpp | 531 ++ .../detail/overlay/enrichment_info.hpp | 66 + .../overlay/get_intersection_points.hpp | 146 + .../detail/overlay/get_relative_order.hpp | 108 + .../algorithms/detail/overlay/get_ring.hpp | 102 + .../detail/overlay/get_turn_info.hpp | 897 +++ .../algorithms/detail/overlay/get_turns.hpp | 842 +++ .../detail/overlay/handle_tangencies.hpp | 666 ++ .../detail/overlay/intersection_insert.hpp | 484 ++ .../algorithms/detail/overlay/overlay.hpp | 301 + .../detail/overlay/overlay_type.hpp | 29 + .../detail/overlay/ring_properties.hpp | 78 + .../detail/overlay/segment_identifier.hpp | 91 + .../detail/overlay/select_rings.hpp | 282 + .../detail/overlay/self_turn_points.hpp | 247 + .../algorithms/detail/overlay/stream_info.hpp | 75 + .../detail/overlay/traversal_info.hpp | 47 + .../algorithms/detail/overlay/traverse.hpp | 472 ++ .../algorithms/detail/overlay/turn_info.hpp | 142 + .../algorithms/detail/overlay/visit_info.hpp | 136 + .../algorithms/detail/overlay/within_util.hpp | 98 + .../geometry/algorithms/detail/partition.hpp | 389 ++ .../algorithms/detail/point_on_border.hpp | 243 + .../algorithms/detail/ring_identifier.hpp | 70 + .../detail/sections/range_by_section.hpp | 131 + .../detail/sections/sectionalize.hpp | 647 ++ .../boost/geometry/algorithms/difference.hpp | 148 + .../boost/geometry/algorithms/disjoint.hpp | 253 + .../boost/geometry/algorithms/distance.hpp | 569 ++ .../boost/geometry/algorithms/envelope.hpp | 279 + .../boost/geometry/algorithms/equals.hpp | 319 + .../boost/geometry/algorithms/expand.hpp | 319 + .../boost/geometry/algorithms/for_each.hpp | 351 + .../geometry/algorithms/intersection.hpp | 237 + .../boost/geometry/algorithms/intersects.hpp | 105 + .../boost/geometry/algorithms/length.hpp | 199 + .../boost/boost/geometry/algorithms/make.hpp | 200 + .../geometry/algorithms/num_geometries.hpp | 95 + .../algorithms/num_interior_rings.hpp | 88 + .../boost/geometry/algorithms/num_points.hpp | 171 + .../boost/geometry/algorithms/overlaps.hpp | 200 + .../boost/geometry/algorithms/perimeter.hpp | 139 + .../boost/geometry/algorithms/reverse.hpp | 134 + .../boost/geometry/algorithms/simplify.hpp | 405 ++ .../geometry/algorithms/sym_difference.hpp | 149 + .../boost/geometry/algorithms/transform.hpp | 351 + .../boost/boost/geometry/algorithms/union.hpp | 284 + .../boost/geometry/algorithms/unique.hpp | 153 + .../boost/geometry/algorithms/within.hpp | 465 ++ .../boost/geometry/arithmetic/arithmetic.hpp | 281 + .../boost/geometry/arithmetic/dot_product.hpp | 82 + 3party/boost/boost/geometry/core/access.hpp | 324 + 3party/boost/boost/geometry/core/closure.hpp | 180 + .../geometry/core/coordinate_dimension.hpp | 126 + .../boost/geometry/core/coordinate_system.hpp | 97 + .../boost/geometry/core/coordinate_type.hpp | 102 + 3party/boost/boost/geometry/core/cs.hpp | 220 + .../boost/boost/geometry/core/exception.hpp | 34 + .../boost/geometry/core/exterior_ring.hpp | 144 + .../boost/boost/geometry/core/geometry_id.hpp | 94 + .../boost/geometry/core/interior_rings.hpp | 139 + .../boost/geometry/core/interior_type.hpp | 161 + 3party/boost/boost/geometry/core/is_areal.hpp | 60 + .../boost/geometry/core/mutable_range.hpp | 98 + .../boost/boost/geometry/core/point_order.hpp | 162 + .../boost/boost/geometry/core/point_type.hpp | 130 + .../boost/geometry/core/radian_access.hpp | 152 + .../boost/geometry/core/reverse_dispatch.hpp | 67 + .../boost/boost/geometry/core/ring_type.hpp | 170 + 3party/boost/boost/geometry/core/tag.hpp | 70 + 3party/boost/boost/geometry/core/tag_cast.hpp | 84 + 3party/boost/boost/geometry/core/tags.hpp | 88 + .../geometry/core/topological_dimension.hpp | 88 + .../boost/geometry/domains/gis/io/io.hpp | 65 + .../domains/gis/io/wkt/detail/wkt.hpp | 49 + .../domains/gis/io/wkt/detail/wkt_multi.hpp | 56 + .../geometry/domains/gis/io/wkt/read_wkt.hpp | 692 ++ .../domains/gis/io/wkt/read_wkt_multi.hpp | 112 + .../boost/geometry/domains/gis/io/wkt/wkt.hpp | 25 + .../geometry/domains/gis/io/wkt/write_wkt.hpp | 394 ++ .../domains/gis/io/wkt/write_wkt_multi.hpp | 117 + .../geometries/adapted/boost_array.hpp | 120 + .../geometries/adapted/boost_fusion.hpp | 172 + .../geometries/adapted/boost_polygon.hpp | 18 + .../geometries/adapted/boost_polygon/box.hpp | 141 + .../adapted/boost_polygon/hole_iterator.hpp | 84 + .../adapted/boost_polygon/holes_proxy.hpp | 204 + .../adapted/boost_polygon/point.hpp | 102 + .../adapted/boost_polygon/polygon.hpp | 111 + .../geometries/adapted/boost_polygon/ring.hpp | 163 + .../adapted/boost_polygon/ring_proxy.hpp | 301 + .../adapted/boost_range/adjacent_filtered.hpp | 40 + .../adapted/boost_range/filtered.hpp | 40 + .../adapted/boost_range/reversed.hpp | 40 + .../geometries/adapted/boost_range/sliced.hpp | 36 + .../adapted/boost_range/strided.hpp | 36 + .../adapted/boost_range/uniqued.hpp | 40 + .../geometries/adapted/boost_tuple.hpp | 109 + .../geometry/geometries/adapted/c_array.hpp | 111 + .../adapted/std_pair_as_segment.hpp | 98 + .../boost/boost/geometry/geometries/box.hpp | 134 + .../geometries/concepts/box_concept.hpp | 136 + .../geometry/geometries/concepts/check.hpp | 171 + .../concepts/linestring_concept.hpp | 125 + .../geometries/concepts/point_concept.hpp | 176 + .../geometries/concepts/polygon_concept.hpp | 135 + .../geometries/concepts/ring_concept.hpp | 99 + .../geometries/concepts/segment_concept.hpp | 135 + .../boost/geometry/geometries/geometries.hpp | 25 + .../boost/geometry/geometries/linestring.hpp | 95 + .../boost/boost/geometry/geometries/point.hpp | 178 + .../boost/geometry/geometries/point_xy.hpp | 125 + .../boost/geometry/geometries/polygon.hpp | 319 + .../geometry/geometries/register/box.hpp | 179 + .../geometries/register/linestring.hpp | 60 + .../geometry/geometries/register/point.hpp | 173 + .../geometry/geometries/register/ring.hpp | 60 + .../geometry/geometries/register/segment.hpp | 129 + .../boost/boost/geometry/geometries/ring.hpp | 153 + .../boost/geometry/geometries/segment.hpp | 203 + 3party/boost/boost/geometry/geometry.hpp | 87 + .../boost/boost/geometry/iterators/base.hpp | 70 + .../geometry/iterators/closing_iterator.hpp | 157 + .../iterators/ever_circling_iterator.hpp | 164 + .../boost/geometry/multi/algorithms/area.hpp | 56 + .../geometry/multi/algorithms/centroid.hpp | 178 + .../boost/geometry/multi/algorithms/clear.hpp | 43 + .../geometry/multi/algorithms/correct.hpp | 66 + .../algorithms/detail/for_each_range.hpp | 86 + .../multi/algorithms/detail/modify.hpp | 53 + .../detail/modify_with_predicate.hpp | 52 + .../multi/algorithms/detail/multi_sum.hpp | 58 + .../detail/overlay/copy_segment_point.hpp | 101 + .../detail/overlay/copy_segments.hpp | 104 + .../algorithms/detail/overlay/get_ring.hpp | 54 + .../algorithms/detail/overlay/get_turns.hpp | 111 + .../detail/overlay/select_rings.hpp | 61 + .../detail/overlay/self_turn_points.hpp | 56 + .../algorithms/detail/point_on_border.hpp | 95 + .../detail/sections/range_by_section.hpp | 90 + .../detail/sections/sectionalize.hpp | 95 + .../geometry/multi/algorithms/distance.hpp | 130 + .../geometry/multi/algorithms/envelope.hpp | 117 + .../geometry/multi/algorithms/equals.hpp | 70 + .../geometry/multi/algorithms/for_each.hpp | 129 + .../multi/algorithms/intersection.hpp | 232 + .../geometry/multi/algorithms/length.hpp | 56 + .../multi/algorithms/num_geometries.hpp | 51 + .../multi/algorithms/num_interior_rings.hpp | 61 + .../geometry/multi/algorithms/num_points.hpp | 81 + .../geometry/multi/algorithms/perimeter.hpp | 55 + .../geometry/multi/algorithms/reverse.hpp | 69 + .../geometry/multi/algorithms/simplify.hpp | 117 + .../geometry/multi/algorithms/transform.hpp | 102 + .../geometry/multi/algorithms/unique.hpp | 102 + .../geometry/multi/algorithms/within.hpp | 94 + .../boost/geometry/multi/core/closure.hpp | 58 + .../boost/geometry/multi/core/geometry_id.hpp | 56 + .../geometry/multi/core/interior_rings.hpp | 55 + .../boost/geometry/multi/core/is_areal.hpp | 43 + .../boost/geometry/multi/core/point_order.hpp | 57 + .../boost/geometry/multi/core/point_type.hpp | 64 + .../boost/geometry/multi/core/ring_type.hpp | 66 + .../boost/boost/geometry/multi/core/tags.hpp | 71 + .../multi/core/topological_dimension.hpp | 52 + .../multi/geometries/concepts/check.hpp | 83 + .../concepts/multi_linestring_concept.hpp | 86 + .../concepts/multi_point_concept.hpp | 85 + .../concepts/multi_polygon_concept.hpp | 86 + .../multi/geometries/multi_linestring.hpp | 80 + .../geometry/multi/geometries/multi_point.hpp | 94 + .../multi/geometries/multi_polygon.hpp | 78 + .../geometries/register/multi_linestring.hpp | 59 + .../multi/geometries/register/multi_point.hpp | 59 + .../geometries/register/multi_polygon.hpp | 59 + 3party/boost/boost/geometry/multi/multi.hpp | 73 + .../strategies/cartesian/centroid_average.hpp | 116 + .../boost/geometry/multi/util/write_dsv.hpp | 78 + .../multi/views/detail/range_type.hpp | 62 + .../boost/boost/geometry/policies/compare.hpp | 242 + .../boost/geometry/policies/relate/de9im.hpp | 185 + .../geometry/policies/relate/direction.hpp | 348 + .../policies/relate/intersection_points.hpp | 182 + .../intersection_points_determinant.hpp | 176 + .../relate/intersection_points_slope.hpp | 213 + .../boost/geometry/policies/relate/tupled.hpp | 182 + .../agnostic/hull_graham_andrew.hpp | 426 ++ .../point_in_poly_oriented_winding.hpp | 208 + .../agnostic/point_in_poly_winding.hpp | 213 + .../agnostic/simplify_douglas_peucker.hpp | 225 + .../boost/boost/geometry/strategies/area.hpp | 50 + .../strategies/cartesian/area_surveyor.hpp | 131 + .../strategies/cartesian/cart_intersect.hpp | 466 ++ .../cartesian/centroid_bashein_detmer.hpp | 241 + .../cartesian/centroid_weighted_length.hpp | 144 + .../cartesian/distance_projected_point.hpp | 315 + .../cartesian/distance_pythagoras.hpp | 345 + .../point_in_poly_crossings_multiply.hpp | 124 + .../cartesian/point_in_poly_franklin.hpp | 118 + .../strategies/cartesian/side_by_triangle.hpp | 118 + .../boost/geometry/strategies/centroid.hpp | 72 + .../boost/geometry/strategies/compare.hpp | 172 + .../strategies/concepts/area_concept.hpp | 75 + .../strategies/concepts/centroid_concept.hpp | 78 + .../concepts/convex_hull_concept.hpp | 75 + .../strategies/concepts/distance_concept.hpp | 263 + .../concepts/segment_intersect_concept.hpp | 78 + .../strategies/concepts/simplify_concept.hpp | 109 + .../strategies/concepts/within_concept.hpp | 80 + .../boost/geometry/strategies/convex_hull.hpp | 42 + .../strategies/default_area_result.hpp | 51 + .../strategies/default_distance_result.hpp | 50 + .../strategies/default_length_result.hpp | 46 + .../boost/geometry/strategies/distance.hpp | 135 + .../geometry/strategies/intersection.hpp | 93 + .../strategies/intersection_result.hpp | 174 + .../boost/boost/geometry/strategies/side.hpp | 55 + .../boost/geometry/strategies/side_info.hpp | 93 + .../strategies/spherical/area_huiller.hpp | 202 + .../strategies/spherical/compare_circular.hpp | 152 + .../spherical/distance_cross_track.hpp | 349 + .../spherical/distance_haversine.hpp | 330 + .../spherical/side_by_cross_track.hpp | 100 + .../geometry/strategies/spherical/ssf.hpp | 136 + .../boost/geometry/strategies/strategies.hpp | 56 + .../strategies/strategy_transform.hpp | 443 ++ .../boost/boost/geometry/strategies/tags.hpp | 41 + .../boost/geometry/strategies/transform.hpp | 63 + .../transform/inverse_transformer.hpp | 78 + .../strategies/transform/map_transformer.hpp | 165 + .../transform/matrix_transformers.hpp | 422 ++ .../boost/geometry/strategies/within.hpp | 68 + .../boost/geometry/util/add_const_if_c.hpp | 56 + .../boost/geometry/util/closure_as_bool.hpp | 46 + .../boost/geometry/util/coordinate_cast.hpp | 55 + .../geometry/util/for_each_coordinate.hpp | 94 + 3party/boost/boost/geometry/util/math.hpp | 168 + .../geometry/util/order_as_direction.hpp | 46 + .../geometry/util/promote_floating_point.hpp | 50 + 3party/boost/boost/geometry/util/readme.txt | 17 + .../geometry/util/select_calculation_type.hpp | 57 + .../geometry/util/select_coordinate_type.hpp | 45 + .../geometry/util/select_most_precise.hpp | 162 + .../boost/boost/geometry/util/write_dsv.hpp | 396 ++ .../boost/boost/geometry/views/box_view.hpp | 114 + .../boost/geometry/views/closeable_view.hpp | 100 + .../geometry/views/detail/points_view.hpp | 141 + .../geometry/views/detail/range_type.hpp | 93 + .../boost/geometry/views/identity_view.hpp | 53 + .../boost/geometry/views/reversible_view.hpp | 74 + .../boost/geometry/views/segment_view.hpp | 100 + .../boost/graph/chrobak_payne_drawing.hpp | 18 +- 3party/boost/boost/graph/detail/is_same.hpp | 48 - .../distributed/connected_components.hpp | 24 +- 3party/boost/boost/graph/graph_concepts.hpp | 4 +- 3party/boost/boost/graph/graph_traits.hpp | 1 + .../boost/boost/graph/kolmogorov_max_flow.hpp | 814 --- 3party/boost/boost/icl/closed_interval.hpp | 5 +- .../boost/icl/concept/element_associator.hpp | 6 + .../boost/boost/icl/concept/element_map.hpp | 13 +- .../boost/boost/icl/concept/element_set.hpp | 9 +- 3party/boost/boost/icl/concept/interval.hpp | 161 +- .../boost/icl/concept/interval_associator.hpp | 6 +- .../icl/concept/interval_associator_base.hpp | 10 +- .../boost/icl/concept/interval_bounds.hpp | 6 - .../boost/boost/icl/concept/interval_map.hpp | 20 +- 3party/boost/boost/icl/concept/joinable.hpp | 4 +- 3party/boost/boost/icl/concept/map_value.hpp | 4 +- .../boost/boost/icl/continuous_interval.hpp | 5 +- .../boost/boost/icl/detail/design_config.hpp | 10 +- .../boost/icl/detail/interval_map_algo.hpp | 12 +- 3party/boost/boost/icl/detail/map_algo.hpp | 2 +- 3party/boost/boost/icl/detail/std_set.hpp | 7 + 3party/boost/boost/icl/discrete_interval.hpp | 9 +- 3party/boost/boost/icl/functors.hpp | 6 +- 3party/boost/boost/icl/interval.hpp | 2 +- 3party/boost/boost/icl/interval_base_map.hpp | 126 +- 3party/boost/boost/icl/interval_base_set.hpp | 17 +- 3party/boost/boost/icl/interval_map.hpp | 12 +- 3party/boost/boost/icl/interval_set.hpp | 2 +- 3party/boost/boost/icl/left_open_interval.hpp | 10 +- 3party/boost/boost/icl/map.hpp | 22 +- 3party/boost/boost/icl/open_interval.hpp | 8 +- .../boost/boost/icl/right_open_interval.hpp | 7 +- .../boost/boost/icl/separate_interval_set.hpp | 2 +- 3party/boost/boost/icl/split_interval_map.hpp | 12 +- 3party/boost/boost/icl/split_interval_set.hpp | 4 +- .../icl/type_traits/difference_type_of.hpp | 53 +- .../boost/boost/icl/type_traits/infinity.hpp | 188 +- .../icl/type_traits/interval_type_default.hpp | 2 +- .../boost/icl/type_traits/is_container.hpp | 2 +- .../boost/icl/type_traits/is_discrete.hpp | 25 +- .../boost/icl/type_traits/is_increasing.hpp | 34 + .../icl/type_traits/is_key_container_of.hpp | 1 + .../boost/icl/type_traits/is_numeric.hpp | 50 +- .../boost/icl/type_traits/rep_type_of.hpp | 70 + .../boost/icl/type_traits/size_type_of.hpp | 56 +- .../boost/boost/icl/type_traits/succ_pred.hpp | 70 +- 3party/boost/boost/integer_traits.hpp | 4 +- 3party/boost/boost/iostreams/chain.hpp | 6 +- .../boost/iostreams/detail/config/rtl.hpp | 2 +- 3party/boost/boost/iostreams/detail/path.hpp | 51 +- 3party/boost/boost/iterator.hpp | 2 +- .../iterator/function_input_iterator.hpp | 150 + .../boost/boost/iterator/iterator_adaptor.hpp | 8 +- .../boost/iterator/transform_iterator.hpp | 25 +- 3party/boost/boost/iterator/zip_iterator.hpp | 2 +- .../boost/lambda/detail/function_adaptors.hpp | 17 +- 3party/boost/boost/lexical_cast.hpp | 784 ++- 3party/boost/boost/logic/tribool.hpp | 4 +- 3party/boost/boost/logic/tribool_io.hpp | 3 +- 3party/boost/boost/math/bindings/e_float.hpp | 803 +++ .../boost/math/concepts/distributions.hpp | 95 +- .../boost/math/concepts/real_type_concept.hpp | 12 + .../boost/math/distributions/bernoulli.hpp | 10 +- .../boost/boost/math/distributions/beta.hpp | 18 +- .../boost/math/distributions/binomial.hpp | 16 +- .../boost/boost/math/distributions/cauchy.hpp | 6 +- .../boost/math/distributions/exponential.hpp | 14 +- .../math/distributions/extreme_value.hpp | 14 +- .../boost/math/distributions/fisher_f.hpp | 20 +- .../boost/boost/math/distributions/gamma.hpp | 20 +- .../boost/math/distributions/geometric.hpp | 18 +- .../math/distributions/hypergeometric.hpp | 10 +- .../math/distributions/inverse_gamma.hpp | 22 +- .../math/distributions/inverse_gaussian.hpp | 10 +- .../boost/math/distributions/laplace.hpp | 10 +- .../boost/math/distributions/logistic.hpp | 10 +- .../boost/math/distributions/lognormal.hpp | 22 +- .../math/distributions/negative_binomial.hpp | 18 +- .../boost/boost/math/distributions/normal.hpp | 10 +- .../boost/boost/math/distributions/pareto.hpp | 24 +- .../boost/math/distributions/poisson.hpp | 10 +- .../boost/math/distributions/rayleigh.hpp | 14 +- .../boost/math/distributions/triangular.hpp | 24 +- .../boost/math/distributions/uniform.hpp | 22 +- .../boost/math/distributions/weibull.hpp | 22 +- 3party/boost/boost/math/octonion.hpp | 4 +- .../boost/math/policies/error_handling.hpp | 2 +- 3party/boost/boost/math/policies/policy.hpp | 6 +- 3party/boost/boost/math/quaternion.hpp | 4 +- .../boost/math/special_functions/atanh.hpp | 2 +- .../boost/math/special_functions/beta.hpp | 8 +- .../boost/math/special_functions/cbrt.hpp | 2 + .../special_functions/detail/fp_traits.hpp | 3 +- .../detail/t_distribution_inv.hpp | 5 +- .../boost/math/special_functions/gamma.hpp | 15 + .../boost/math/special_functions/math_fwd.hpp | 17 +- .../nonfinite_num_facets.hpp | 543 ++ .../boost/math/special_functions/sign.hpp | 59 +- 3party/boost/boost/math/tools/config.hpp | 8 +- 3party/boost/boost/math/tools/precision.hpp | 6 +- 3party/boost/boost/math/tr1.hpp | 804 +-- 3party/boost/boost/math/tr1_c_macros.ipp | 810 +++ .../msm/active_state_switching_policies.hpp | 55 + 3party/boost/boost/msm/back/any_event.hpp | 54 + .../boost/msm/back/favor_compile_time.hpp | 47 +- 3party/boost/boost/msm/back/fold_to_list.hpp | 27 +- 3party/boost/boost/msm/back/metafunctions.hpp | 49 + 3party/boost/boost/msm/back/state_machine.hpp | 152 +- 3party/boost/boost/msm/common.hpp | 2 + 3party/boost/boost/msm/front/euml/common.hpp | 150 +- 3party/boost/boost/msm/front/euml/euml.hpp | 3 + .../boost/msm/front/euml/guard_grammar.hpp | 2 +- .../msm/front/euml/phoenix_placeholders.hpp | 26 + .../boost/msm/front/euml/state_grammar.hpp | 495 +- .../boost/msm/front/euml/stt_grammar.hpp | 42 +- 3party/boost/boost/msm/front/functor_row.hpp | 3 - .../boost/msm/front/state_machine_def.hpp | 2 - .../boost/msm/mpl_graph/detail/as_mpl_map.hpp | 100 - .../boost/boost/msm/mpl_graph/mpl_graph.hpp | 0 3party/boost/boost/msm/msm_grammar.hpp | 46 + 3party/boost/boost/msm/proto_config.hpp | 20 +- .../boost/boost/multi_index/composite_key.hpp | 6 +- .../boost/multi_index/detail/scope_guard.hpp | 185 +- .../boost/boost/multi_index/hashed_index.hpp | 4 +- 3party/boost/boost/nondet_random.hpp | 124 +- 3party/boost/boost/none.hpp | 2 +- 3party/boost/boost/operators.hpp | 4 +- 3party/boost/boost/optional/optional_fwd.hpp | 9 +- 3party/boost/boost/phoenix.hpp | 13 + 3party/boost/boost/phoenix/bind.hpp | 20 + .../boost/phoenix/bind/bind_function.hpp | 118 + .../phoenix/bind/bind_function_object.hpp | 79 + .../phoenix/bind/bind_member_function.hpp | 245 + .../phoenix/bind/bind_member_variable.hpp | 49 + .../phoenix/bind/detail/function_ptr.hpp | 151 + .../bind/detail/member_function_ptr.hpp | 149 + .../phoenix/bind/detail/member_variable.hpp | 78 + .../bind/detail/preprocessed/function_ptr.hpp | 25 + .../detail/preprocessed/function_ptr_10.hpp | 222 + .../detail/preprocessed/function_ptr_20.hpp | 462 ++ .../detail/preprocessed/function_ptr_30.hpp | 702 ++ .../detail/preprocessed/function_ptr_40.hpp | 942 +++ .../detail/preprocessed/function_ptr_50.hpp | 1182 ++++ .../preprocessed/member_function_ptr.hpp | 25 + .../preprocessed/member_function_ptr_10.hpp | 316 + .../preprocessed/member_function_ptr_20.hpp | 626 ++ .../preprocessed/member_function_ptr_30.hpp | 936 +++ .../preprocessed/member_function_ptr_40.hpp | 1246 ++++ .../preprocessed/member_function_ptr_50.hpp | 1556 +++++ .../bind/preprocessed/bind_function.hpp | 25 + .../bind/preprocessed/bind_function_10.hpp | 326 + .../bind/preprocessed/bind_function_20.hpp | 726 ++ .../bind/preprocessed/bind_function_30.hpp | 1126 +++ .../bind/preprocessed/bind_function_40.hpp | 1526 +++++ .../bind/preprocessed/bind_function_50.hpp | 1926 ++++++ .../preprocessed/bind_function_object.hpp | 25 + .../preprocessed/bind_function_object_10.hpp | 222 + .../preprocessed/bind_function_object_20.hpp | 462 ++ .../preprocessed/bind_function_object_30.hpp | 702 ++ .../preprocessed/bind_function_object_40.hpp | 942 +++ .../preprocessed/bind_function_object_50.hpp | 1182 ++++ .../preprocessed/bind_member_function.hpp | 25 + .../preprocessed/bind_member_function_10.hpp | 1113 +++ .../preprocessed/bind_member_function_20.hpp | 2343 +++++++ .../preprocessed/bind_member_function_30.hpp | 3573 ++++++++++ .../preprocessed/bind_member_function_40.hpp | 4803 +++++++++++++ .../preprocessed/bind_member_function_50.hpp | 6033 +++++++++++++++++ 3party/boost/boost/phoenix/core.hpp | 26 + 3party/boost/boost/phoenix/core/actor.hpp | 297 + 3party/boost/boost/phoenix/core/argument.hpp | 150 + 3party/boost/boost/phoenix/core/arity.hpp | 86 + 3party/boost/boost/phoenix/core/as_actor.hpp | 28 + 3party/boost/boost/phoenix/core/call.hpp | 75 + .../phoenix/core/detail/actor_operator.hpp | 179 + .../phoenix/core/detail/actor_result_of.hpp | 107 + .../boost/phoenix/core/detail/argument.hpp | 44 + .../boost/boost/phoenix/core/detail/call.hpp | 95 + .../boost/phoenix/core/detail/expression.hpp | 409 ++ .../phoenix/core/detail/function_eval.hpp | 210 + .../boost/phoenix/core/detail/phx2_result.hpp | 105 + .../detail/preprocessed/actor_operator.hpp | 25 + .../detail/preprocessed/actor_operator_10.hpp | 567 ++ .../detail/preprocessed/actor_operator_20.hpp | 1237 ++++ .../detail/preprocessed/actor_operator_30.hpp | 1907 ++++++ .../detail/preprocessed/actor_operator_40.hpp | 2577 +++++++ .../detail/preprocessed/actor_operator_50.hpp | 3247 +++++++++ .../detail/preprocessed/actor_result_of.hpp | 25 + .../preprocessed/actor_result_of_10.hpp | 260 + .../preprocessed/actor_result_of_20.hpp | 480 ++ .../preprocessed/actor_result_of_30.hpp | 700 ++ .../preprocessed/actor_result_of_40.hpp | 920 +++ .../preprocessed/actor_result_of_50.hpp | 1140 ++++ .../phoenix/core/detail/preprocessed/call.hpp | 25 + .../core/detail/preprocessed/call_10.hpp | 351 + .../core/detail/preprocessed/call_20.hpp | 691 ++ .../core/detail/preprocessed/call_30.hpp | 1031 +++ .../core/detail/preprocessed/call_40.hpp | 1371 ++++ .../core/detail/preprocessed/call_50.hpp | 1711 +++++ .../detail/preprocessed/function_eval.hpp | 25 + .../detail/preprocessed/function_eval_10.hpp | 507 ++ .../detail/preprocessed/function_eval_20.hpp | 1007 +++ .../detail/preprocessed/function_eval_30.hpp | 1507 ++++ .../detail/preprocessed/function_eval_40.hpp | 2007 ++++++ .../detail/preprocessed/function_eval_50.hpp | 2507 +++++++ .../core/detail/preprocessed/phx2_result.hpp | 25 + .../detail/preprocessed/phx2_result_10.hpp | 294 + .../detail/preprocessed/phx2_result_20.hpp | 614 ++ .../detail/preprocessed/phx2_result_30.hpp | 934 +++ .../detail/preprocessed/phx2_result_40.hpp | 1254 ++++ .../detail/preprocessed/phx2_result_50.hpp | 1574 +++++ 3party/boost/boost/phoenix/core/domain.hpp | 35 + .../boost/boost/phoenix/core/environment.hpp | 454 ++ .../boost/boost/phoenix/core/expression.hpp | 130 + .../boost/phoenix/core/function_equal.hpp | 174 + 3party/boost/boost/phoenix/core/is_actor.hpp | 46 + .../boost/boost/phoenix/core/is_nullary.hpp | 177 + 3party/boost/boost/phoenix/core/limits.hpp | 100 + .../boost/boost/phoenix/core/meta_grammar.hpp | 156 + 3party/boost/boost/phoenix/core/nothing.hpp | 61 + .../boost/phoenix/core/preprocessed/actor.hpp | 25 + .../phoenix/core/preprocessed/actor_10.hpp | 16 + .../phoenix/core/preprocessed/actor_20.hpp | 16 + .../phoenix/core/preprocessed/actor_30.hpp | 16 + .../phoenix/core/preprocessed/actor_40.hpp | 16 + .../phoenix/core/preprocessed/actor_50.hpp | 16 + .../phoenix/core/preprocessed/argument.hpp | 45 + .../phoenix/core/preprocessed/argument_10.hpp | 23 + .../argument_no_predefined_10.hpp | 18 + .../argument_no_predefined_20.hpp | 18 + .../argument_no_predefined_30.hpp | 18 + .../argument_no_predefined_40.hpp | 18 + .../argument_no_predefined_50.hpp | 18 + .../preprocessed/argument_predefined_10.hpp | 22 + .../preprocessed/argument_predefined_20.hpp | 22 + .../preprocessed/argument_predefined_30.hpp | 22 + .../preprocessed/argument_predefined_40.hpp | 22 + .../preprocessed/argument_predefined_50.hpp | 22 + .../phoenix/core/preprocessed/expression.hpp | 25 + .../core/preprocessed/expression_10.hpp | 445 ++ .../core/preprocessed/expression_20.hpp | 865 +++ .../core/preprocessed/expression_30.hpp | 1285 ++++ .../core/preprocessed/expression_40.hpp | 1705 +++++ .../core/preprocessed/expression_50.hpp | 2125 ++++++ .../core/preprocessed/function_equal.hpp | 25 + .../core/preprocessed/function_equal_10.hpp | 1 + .../core/preprocessed/function_equal_20.hpp | 1 + .../core/preprocessed/function_equal_30.hpp | 1 + .../core/preprocessed/function_equal_40.hpp | 1 + .../core/preprocessed/function_equal_50.hpp | 1 + 3party/boost/boost/phoenix/core/reference.hpp | 148 + 3party/boost/boost/phoenix/core/terminal.hpp | 137 + .../boost/boost/phoenix/core/terminal_fwd.hpp | 27 + 3party/boost/boost/phoenix/core/v2_eval.hpp | 51 + 3party/boost/boost/phoenix/core/value.hpp | 112 + .../boost/boost/phoenix/core/visit_each.hpp | 42 + 3party/boost/boost/phoenix/function.hpp | 15 + .../boost/phoenix/function/adapt_callable.hpp | 58 + .../boost/phoenix/function/adapt_function.hpp | 99 + .../function/detail/function_operator.hpp | 58 + .../function/detail/function_result_of.hpp | 57 + .../detail/preprocessed/function_operator.hpp | 25 + .../preprocessed/function_operator_10.hpp | 177 + .../preprocessed/function_operator_20.hpp | 347 + .../preprocessed/function_operator_30.hpp | 517 ++ .../preprocessed/function_operator_40.hpp | 687 ++ .../preprocessed/function_operator_50.hpp | 857 +++ .../preprocessed/function_result_of.hpp | 25 + .../preprocessed/function_result_of_10.hpp | 167 + .../preprocessed/function_result_of_20.hpp | 327 + .../preprocessed/function_result_of_30.hpp | 487 ++ .../preprocessed/function_result_of_40.hpp | 647 ++ .../preprocessed/function_result_of_50.hpp | 807 +++ .../boost/boost/phoenix/function/function.hpp | 57 + 3party/boost/boost/phoenix/fusion.hpp | 17 + 3party/boost/boost/phoenix/fusion/at.hpp | 48 + 3party/boost/boost/phoenix/object.hpp | 23 + .../boost/boost/phoenix/object/const_cast.hpp | 64 + .../boost/boost/phoenix/object/construct.hpp | 73 + 3party/boost/boost/phoenix/object/delete.hpp | 50 + .../boost/phoenix/object/detail/construct.hpp | 58 + .../phoenix/object/detail/construct_eval.hpp | 81 + .../boost/boost/phoenix/object/detail/new.hpp | 58 + .../boost/phoenix/object/detail/new_eval.hpp | 89 + .../object/detail/preprocessed/construct.hpp | 25 + .../detail/preprocessed/construct_10.hpp | 177 + .../detail/preprocessed/construct_20.hpp | 347 + .../detail/preprocessed/construct_30.hpp | 517 ++ .../detail/preprocessed/construct_40.hpp | 687 ++ .../detail/preprocessed/construct_50.hpp | 857 +++ .../detail/preprocessed/construct_eval.hpp | 25 + .../detail/preprocessed/construct_eval_10.hpp | 241 + .../detail/preprocessed/construct_eval_20.hpp | 501 ++ .../detail/preprocessed/construct_eval_30.hpp | 761 +++ .../detail/preprocessed/construct_eval_40.hpp | 1021 +++ .../detail/preprocessed/construct_eval_50.hpp | 1281 ++++ .../object/detail/preprocessed/new.hpp | 25 + .../object/detail/preprocessed/new_10.hpp | 177 + .../object/detail/preprocessed/new_20.hpp | 347 + .../object/detail/preprocessed/new_30.hpp | 517 ++ .../object/detail/preprocessed/new_40.hpp | 687 ++ .../object/detail/preprocessed/new_50.hpp | 857 +++ .../object/detail/preprocessed/new_eval.hpp | 25 + .../detail/preprocessed/new_eval_10.hpp | 304 + .../detail/preprocessed/new_eval_20.hpp | 634 ++ .../detail/preprocessed/new_eval_30.hpp | 964 +++ .../detail/preprocessed/new_eval_40.hpp | 1294 ++++ .../detail/preprocessed/new_eval_50.hpp | 1624 +++++ .../boost/phoenix/object/detail/target.hpp | 47 + .../boost/phoenix/object/dynamic_cast.hpp | 64 + 3party/boost/boost/phoenix/object/new.hpp | 72 + .../boost/phoenix/object/reinterpret_cast.hpp | 64 + .../boost/phoenix/object/static_cast.hpp | 63 + 3party/boost/boost/phoenix/operator.hpp | 22 + .../boost/phoenix/operator/arithmetic.hpp | 54 + .../boost/boost/phoenix/operator/bitwise.hpp | 49 + .../boost/phoenix/operator/comparision.hpp | 36 + .../operator/detail/define_operator.hpp | 123 + .../detail/mem_fun_ptr_eval_result_of.hpp | 56 + .../operator/detail/mem_fun_ptr_gen.hpp | 94 + .../detail/preprocessed/mem_fun_ptr_gen.hpp | 25 + .../preprocessed/mem_fun_ptr_gen_10.hpp | 217 + .../preprocessed/mem_fun_ptr_gen_20.hpp | 427 ++ .../preprocessed/mem_fun_ptr_gen_30.hpp | 637 ++ .../preprocessed/mem_fun_ptr_gen_40.hpp | 847 +++ .../preprocessed/mem_fun_ptr_gen_50.hpp | 1057 +++ .../operator/detail/undef_operator.hpp | 17 + .../boost/boost/phoenix/operator/if_else.hpp | 50 + 3party/boost/boost/phoenix/operator/io.hpp | 94 + .../boost/boost/phoenix/operator/logical.hpp | 33 + .../boost/boost/phoenix/operator/member.hpp | 138 + .../phoenix/operator/preprocessed/member.hpp | 25 + .../operator/preprocessed/member_10.hpp | 490 ++ .../operator/preprocessed/member_20.hpp | 990 +++ .../operator/preprocessed/member_30.hpp | 1490 ++++ .../operator/preprocessed/member_40.hpp | 1990 ++++++ .../operator/preprocessed/member_50.hpp | 2490 +++++++ 3party/boost/boost/phoenix/operator/self.hpp | 32 + 3party/boost/boost/phoenix/phoenix.hpp | 20 + 3party/boost/boost/phoenix/scope.hpp | 17 + .../boost/phoenix/scope/detail/dynamic.hpp | 98 + .../boost/phoenix/scope/detail/local_gen.hpp | 66 + .../phoenix/scope/detail/local_variable.hpp | 232 + .../phoenix/scope/detail/make_locals.hpp | 108 + .../scope/detail/preprocessed/dynamic.hpp | 25 + .../scope/detail/preprocessed/dynamic_10.hpp | 347 + .../scope/detail/preprocessed/dynamic_20.hpp | 687 ++ .../scope/detail/preprocessed/dynamic_30.hpp | 1027 +++ .../scope/detail/preprocessed/dynamic_40.hpp | 1367 ++++ .../scope/detail/preprocessed/dynamic_50.hpp | 1707 +++++ .../scope/detail/preprocessed/make_locals.hpp | 25 + .../detail/preprocessed/make_locals_10.hpp | 227 + .../detail/preprocessed/make_locals_20.hpp | 447 ++ .../detail/preprocessed/make_locals_30.hpp | 667 ++ .../detail/preprocessed/make_locals_40.hpp | 887 +++ .../detail/preprocessed/make_locals_50.hpp | 1107 +++ 3party/boost/boost/phoenix/scope/dynamic.hpp | 176 + 3party/boost/boost/phoenix/scope/lambda.hpp | 393 ++ 3party/boost/boost/phoenix/scope/let.hpp | 204 + .../boost/phoenix/scope/local_variable.hpp | 195 + .../phoenix/scope/preprocessed/lambda.hpp | 25 + .../phoenix/scope/preprocessed/lambda_10.hpp | 569 ++ .../phoenix/scope/preprocessed/lambda_20.hpp | 829 +++ .../phoenix/scope/preprocessed/lambda_30.hpp | 1089 +++ .../phoenix/scope/preprocessed/lambda_40.hpp | 1349 ++++ .../phoenix/scope/preprocessed/lambda_50.hpp | 1609 +++++ .../phoenix/scope/scoped_environment.hpp | 178 + 3party/boost/boost/phoenix/scope/this.hpp | 191 + 3party/boost/boost/phoenix/statement.hpp | 24 + .../statement/detail/catch_push_back.hpp | 132 + .../detail/preprocessed/catch_push_back.hpp | 25 + .../preprocessed/catch_push_back_10.hpp | 629 ++ .../preprocessed/catch_push_back_20.hpp | 1319 ++++ .../preprocessed/catch_push_back_30.hpp | 2009 ++++++ .../preprocessed/catch_push_back_40.hpp | 2699 ++++++++ .../preprocessed/catch_push_back_50.hpp | 3389 +++++++++ .../statement/detail/preprocessed/switch.hpp | 25 + .../detail/preprocessed/switch_10.hpp | 583 ++ .../detail/preprocessed/switch_20.hpp | 1223 ++++ .../detail/preprocessed/switch_30.hpp | 1863 +++++ .../detail/preprocessed/switch_40.hpp | 2503 +++++++ .../detail/preprocessed/switch_50.hpp | 3143 +++++++++ .../detail/preprocessed/try_catch_eval.hpp | 25 + .../detail/preprocessed/try_catch_eval_10.hpp | 477 ++ .../detail/preprocessed/try_catch_eval_20.hpp | 947 +++ .../detail/preprocessed/try_catch_eval_30.hpp | 1417 ++++ .../detail/preprocessed/try_catch_eval_40.hpp | 1887 ++++++ .../detail/preprocessed/try_catch_eval_50.hpp | 2357 +++++++ .../preprocessed/try_catch_expression.hpp | 25 + .../preprocessed/try_catch_expression_10.hpp | 282 + .../preprocessed/try_catch_expression_20.hpp | 532 ++ .../preprocessed/try_catch_expression_30.hpp | 782 +++ .../preprocessed/try_catch_expression_40.hpp | 1032 +++ .../preprocessed/try_catch_expression_50.hpp | 1282 ++++ .../boost/phoenix/statement/detail/switch.hpp | 165 + .../statement/detail/try_catch_eval.hpp | 113 + .../statement/detail/try_catch_expression.hpp | 70 + .../boost/phoenix/statement/do_while.hpp | 75 + 3party/boost/boost/phoenix/statement/for.hpp | 87 + 3party/boost/boost/phoenix/statement/if.hpp | 165 + .../boost/phoenix/statement/sequence.hpp | 44 + .../boost/boost/phoenix/statement/switch.hpp | 291 + .../boost/boost/phoenix/statement/throw.hpp | 110 + .../boost/phoenix/statement/try_catch.hpp | 331 + .../boost/boost/phoenix/statement/while.hpp | 70 + 3party/boost/boost/phoenix/stl.hpp | 19 + 3party/boost/boost/phoenix/stl/algorithm.hpp | 17 + .../phoenix/stl/algorithm/detail/begin.hpp | 28 + .../stl/algorithm/detail/decay_array.hpp | 36 + .../phoenix/stl/algorithm/detail/end.hpp | 28 + .../stl/algorithm/detail/has_equal_range.hpp | 51 + .../phoenix/stl/algorithm/detail/has_find.hpp | 47 + .../stl/algorithm/detail/has_lower_bound.hpp | 51 + .../stl/algorithm/detail/has_remove.hpp | 30 + .../stl/algorithm/detail/has_remove_if.hpp | 34 + .../stl/algorithm/detail/has_reverse.hpp | 34 + .../phoenix/stl/algorithm/detail/has_sort.hpp | 30 + .../stl/algorithm/detail/has_unique.hpp | 34 + .../stl/algorithm/detail/has_upper_bound.hpp | 47 + .../stl/algorithm/detail/is_std_hash_map.hpp | 83 + .../stl/algorithm/detail/is_std_hash_set.hpp | 79 + .../stl/algorithm/detail/is_std_list.hpp | 37 + .../stl/algorithm/detail/is_std_map.hpp | 54 + .../stl/algorithm/detail/is_std_set.hpp | 56 + .../stl/algorithm/detail/std_hash_map_fwd.hpp | 70 + .../stl/algorithm/detail/std_hash_set_fwd.hpp | 62 + .../boost/phoenix/stl/algorithm/iteration.hpp | 97 + .../boost/phoenix/stl/algorithm/querying.hpp | 658 ++ .../phoenix/stl/algorithm/transformation.hpp | 1195 ++++ 3party/boost/boost/phoenix/stl/cmath.hpp | 69 + 3party/boost/boost/phoenix/stl/container.hpp | 13 + .../boost/phoenix/stl/container/container.hpp | 826 +++ .../stl/container/detail/container.hpp | 173 + .../boost/phoenix/support/detail/iterate.hpp | 89 + .../phoenix/support/detail/iterate_define.hpp | 155 + .../phoenix/support/detail/iterate_undef.hpp | 35 + .../boost/boost/phoenix/support/iterate.hpp | 20 + .../phoenix/support/preprocessed/vector.hpp | 25 + .../support/preprocessed/vector_10.hpp | 357 + .../support/preprocessed/vector_20.hpp | 667 ++ .../support/preprocessed/vector_30.hpp | 977 +++ .../support/preprocessed/vector_40.hpp | 1287 ++++ .../support/preprocessed/vector_50.hpp | 1597 +++++ .../phoenix/support/preprocessor/round.hpp | 71 + 3party/boost/boost/phoenix/support/vector.hpp | 134 + 3party/boost/boost/phoenix/version.hpp | 18 + .../boost/polygon/detail/polygon_simplify.hpp | 116 + .../polygon/detail/polygon_sort_adaptor.hpp | 0 3party/boost/boost/polygon/gmp_override.hpp | 0 3party/boost/boost/polygon/gtl.hpp | 0 .../boost/boost/polygon/interval_concept.hpp | 0 3party/boost/boost/polygon/interval_data.hpp | 0 .../boost/boost/polygon/interval_traits.hpp | 0 3party/boost/boost/polygon/isotropy.hpp | 0 .../boost/boost/polygon/point_3d_concept.hpp | 0 3party/boost/boost/polygon/point_3d_data.hpp | 0 .../boost/boost/polygon/point_3d_traits.hpp | 0 3party/boost/boost/polygon/point_concept.hpp | 0 3party/boost/boost/polygon/point_data.hpp | 0 3party/boost/boost/polygon/point_traits.hpp | 0 3party/boost/boost/polygon/polygon.hpp | 0 .../boost/boost/polygon/polygon_45_data.hpp | 0 .../boost/polygon/polygon_45_set_concept.hpp | 0 .../boost/polygon/polygon_45_set_data.hpp | 0 .../boost/polygon/polygon_45_set_traits.hpp | 0 .../polygon/polygon_45_with_holes_data.hpp | 0 .../boost/boost/polygon/polygon_90_data.hpp | 0 .../boost/polygon/polygon_90_set_concept.hpp | 0 .../boost/polygon/polygon_90_set_data.hpp | 0 .../boost/polygon/polygon_90_set_traits.hpp | 0 .../polygon/polygon_90_with_holes_data.hpp | 0 3party/boost/boost/polygon/polygon_data.hpp | 0 .../boost/polygon/polygon_set_concept.hpp | 30 +- .../boost/boost/polygon/polygon_set_data.hpp | 0 .../boost/polygon/polygon_set_traits.hpp | 0 3party/boost/boost/polygon/polygon_traits.hpp | 21 +- .../boost/polygon/polygon_with_holes_data.hpp | 0 .../boost/boost/polygon/rectangle_concept.hpp | 0 3party/boost/boost/polygon/rectangle_data.hpp | 0 .../boost/boost/polygon/rectangle_traits.hpp | 0 3party/boost/boost/polygon/transform.hpp | 0 3party/boost/boost/preprocessor/seq/cat.hpp | 9 +- 3party/boost/boost/preprocessor/seq/size.hpp | 1 - .../property_tree/detail/json_parser_read.hpp | 4 +- .../detail/ptree_implementation.hpp | 4 +- .../boost/property_tree/detail/rapidxml.hpp | 70 +- .../boost/boost/property_tree/ini_parser.hpp | 3 +- 3party/boost/boost/property_tree/ptree.hpp | 5 +- .../boost/boost/property_tree/string_path.hpp | 10 +- 3party/boost/boost/proto/args.hpp | 370 +- 3party/boost/boost/proto/context/callable.hpp | 517 +- 3party/boost/boost/proto/context/default.hpp | 804 +-- .../proto/context/detail/callable_eval.hpp | 113 + .../proto/context/detail/default_eval.hpp | 82 + .../boost/proto/context/detail/null_eval.hpp | 54 + .../detail/preprocessed/callable_eval.hpp | 597 ++ .../detail/preprocessed/default_eval.hpp | 279 + .../context/detail/preprocessed/null_eval.hpp | 97 + 3party/boost/boost/proto/context/null.hpp | 121 +- 3party/boost/boost/proto/deep_copy.hpp | 330 +- 3party/boost/boost/proto/detail/and_n.hpp | 94 + 3party/boost/boost/proto/detail/args.hpp | 85 + .../boost/boost/proto/detail/basic_expr.hpp | 179 + .../boost/boost/proto/detail/classtypeof.hpp | 49 + 3party/boost/boost/proto/detail/decltype.hpp | 37 +- .../boost/proto/detail/deduce_domain.hpp | 78 +- .../boost/proto/detail/deduce_domain_n.hpp | 64 + 3party/boost/boost/proto/detail/deep_copy.hpp | 79 + .../proto/detail/{expr0.hpp => expr.hpp} | 257 +- 3party/boost/boost/proto/detail/expr1.hpp | 47 - .../boost/boost/proto/detail/expr_funop.hpp | 43 + .../boost/proto/detail/extends_funop.hpp | 43 + .../proto/detail/extends_funop_const.hpp | 42 + 3party/boost/boost/proto/detail/funop.hpp | 70 +- .../boost/proto/detail/generate_by_value.hpp | 91 + .../boost/proto/detail/lambda_matches.hpp | 61 + 3party/boost/boost/proto/detail/make_expr.hpp | 73 + .../boost/boost/proto/detail/make_expr_.hpp | 103 + .../boost/proto/detail/make_expr_funop.hpp | 66 + 3party/boost/boost/proto/detail/matches_.hpp | 96 + .../boost/boost/proto/detail/memfun_funop.hpp | 44 + 3party/boost/boost/proto/detail/or_n.hpp | 59 + .../boost/proto/detail/poly_function.hpp | 470 +- .../proto/detail/poly_function_funop.hpp | 74 + .../proto/detail/poly_function_traits.hpp | 65 + .../boost/proto/detail/preprocessed/and_n.hpp | 310 + .../boost/proto/detail/preprocessed/args.hpp | 162 + .../proto/detail/preprocessed/basic_expr.hpp | 774 +++ .../proto/detail/preprocessed/classtypeof.hpp | 117 + .../detail/preprocessed/deduce_domain_n.hpp | 119 + .../proto/detail/preprocessed/deep_copy.hpp | 237 + .../boost/proto/detail/preprocessed/expr.hpp | 3528 ++++++++++ .../detail/preprocessed/expr_variadic.hpp | 2102 ++++++ .../detail/preprocessed/extends_funop.hpp | 18 + .../preprocessed/extends_funop_const.hpp | 18 + .../boost/proto/detail/preprocessed/funop.hpp | 357 + .../detail/preprocessed/generate_by_value.hpp | 467 ++ .../detail/preprocessed/lambda_matches.hpp | 142 + .../proto/detail/preprocessed/make_expr.hpp | 313 + .../proto/detail/preprocessed/make_expr_.hpp | 320 + .../detail/preprocessed/make_expr_funop.hpp | 250 + .../proto/detail/preprocessed/matches_.hpp | 277 + .../detail/preprocessed/memfun_funop.hpp | 67 + .../boost/proto/detail/preprocessed/or_n.hpp | 123 + .../preprocessed/poly_function_funop.hpp | 237 + .../preprocessed/poly_function_traits.hpp | 247 + .../preprocessed/template_arity_helper.hpp | 67 + .../proto/detail/preprocessed/traits.hpp | 1464 ++++ .../detail/preprocessed/unpack_expr_.hpp | 445 ++ .../preprocessed/vararg_matches_impl.hpp | 178 + .../boost/proto/detail/template_arity.hpp | 67 + .../proto/detail/template_arity_helper.hpp | 44 + 3party/boost/boost/proto/detail/traits.hpp | 219 + .../boost/boost/proto/detail/unpack_expr_.hpp | 195 + .../proto/detail/vararg_matches_impl.hpp | 58 + 3party/boost/boost/proto/domain.hpp | 7 + 3party/boost/boost/proto/expr.hpp | 33 +- 3party/boost/boost/proto/extends.hpp | 61 +- 3party/boost/boost/proto/fusion.hpp | 2 +- 3party/boost/boost/proto/generate.hpp | 838 ++- 3party/boost/boost/proto/make_expr.hpp | 1244 ++-- 3party/boost/boost/proto/matches.hpp | 1885 +++-- 3party/boost/boost/proto/operators.hpp | 4 +- 3party/boost/boost/proto/proto_fwd.hpp | 42 +- 3party/boost/boost/proto/traits.hpp | 2407 +++---- 3party/boost/boost/proto/transform.hpp | 1 + 3party/boost/boost/proto/transform/call.hpp | 733 +- .../boost/boost/proto/transform/default.hpp | 1137 ++-- .../boost/proto/transform/detail/call.hpp | 86 + .../transform/detail/construct_funop.hpp | 43 + .../transform/detail/construct_pod_funop.hpp | 44 + .../detail/default_function_impl.hpp | 97 + .../proto/transform/detail/fold_impl.hpp | 143 + .../boost/proto/transform/detail/lazy.hpp | 58 + .../boost/proto/transform/detail/make.hpp | 174 + .../transform/detail/make_gcc_workaround.hpp | 98 + .../transform/detail/pass_through_impl.hpp | 95 + .../transform/detail/preprocessed/call.hpp | 217 + .../detail/preprocessed/construct_funop.hpp | 57 + .../preprocessed/construct_pod_funop.hpp | 67 + .../preprocessed/default_function_impl.hpp | 392 ++ .../detail/preprocessed/fold_impl.hpp | 387 ++ .../transform/detail/preprocessed/lazy.hpp | 227 + .../transform/detail/preprocessed/make.hpp | 1056 +++ .../preprocessed/make_gcc_workaround.hpp | 459 ++ .../detail/preprocessed/pass_through_impl.hpp | 329 + .../transform/detail/preprocessed/when.hpp | 744 ++ .../boost/proto/transform/detail/when.hpp | 109 + 3party/boost/boost/proto/transform/fold.hpp | 534 +- .../boost/proto/transform/integral_c.hpp | 111 + 3party/boost/boost/proto/transform/lazy.hpp | 115 +- 3party/boost/boost/proto/transform/make.hpp | 693 +- .../boost/proto/transform/pass_through.hpp | 310 +- 3party/boost/boost/proto/transform/when.hpp | 453 +- .../boost/ptr_container/indirect_fun.hpp | 34 +- 3party/boost/boost/python/override.hpp | 2 +- 3party/boost/boost/random.hpp | 75 +- .../boost/boost/random/additive_combine.hpp | 383 +- .../boost/random/bernoulli_distribution.hpp | 218 +- .../boost/random/binomial_distribution.hpp | 461 +- .../boost/random/cauchy_distribution.hpp | 241 +- .../boost/random/chi_squared_distribution.hpp | 209 + .../boost/boost/random/detail/const_mod.hpp | 363 +- .../boost/random/detail/generator_bits.hpp | 36 + .../random/detail/generator_seed_seq.hpp | 40 + .../boost/random/detail/integer_log2.hpp | 72 + .../boost/random/detail/large_arithmetic.hpp | 122 + .../boost/boost/random/detail/operators.hpp | 84 + .../random/detail/pass_through_engine.hpp | 100 - 3party/boost/boost/random/detail/seed.hpp | 29 +- .../boost/boost/random/detail/seed_impl.hpp | 397 ++ .../boost/random/detail/uniform_int_float.hpp | 83 +- .../boost/boost/random/detail/vector_io.hpp | 75 + 3party/boost/boost/random/discard_block.hpp | 246 +- .../boost/random/discrete_distribution.hpp | 453 ++ .../boost/random/exponential_distribution.hpp | 178 +- .../random/extreme_value_distribution.hpp | 177 + .../boost/random/fisher_f_distribution.hpp | 183 + .../boost/boost/random/gamma_distribution.hpp | 343 +- .../boost/boost/random/generate_canonical.hpp | 97 + .../boost/random/geometric_distribution.hpp | 283 +- .../boost/boost/random/independent_bits.hpp | 260 + .../boost/random/inversive_congruential.hpp | 268 +- .../boost/boost/random/lagged_fibonacci.hpp | 841 ++- .../boost/random/linear_congruential.hpp | 621 +- .../boost/random/linear_feedback_shift.hpp | 275 +- .../boost/random/lognormal_distribution.hpp | 289 +- .../boost/boost/random/mersenne_twister.hpp | 704 +- .../random/negative_binomial_distribution.hpp | 220 + .../boost/random/normal_distribution.hpp | 254 +- .../piecewise_constant_distribution.hpp | 466 ++ .../random/piecewise_linear_distribution.hpp | 530 ++ .../boost/random/poisson_distribution.hpp | 392 +- 3party/boost/boost/random/random_device.hpp | 142 + .../boost/random/random_number_generator.hpp | 66 +- 3party/boost/boost/random/ranlux.hpp | 54 +- 3party/boost/boost/random/seed_seq.hpp | 118 + 3party/boost/boost/random/shuffle_order.hpp | 269 + 3party/boost/boost/random/shuffle_output.hpp | 229 +- .../boost/random/student_t_distribution.hpp | 180 + .../boost/random/subtract_with_carry.hpp | 862 ++- 3party/boost/boost/random/taus88.hpp | 45 + .../boost/random/triangle_distribution.hpp | 254 +- 3party/boost/boost/random/uniform_01.hpp | 22 +- 3party/boost/boost/random/uniform_int.hpp | 309 +- .../boost/random/uniform_int_distribution.hpp | 400 ++ .../boost/boost/random/uniform_on_sphere.hpp | 230 +- 3party/boost/boost/random/uniform_real.hpp | 110 +- .../random/uniform_real_distribution.hpp | 239 + .../boost/boost/random/uniform_smallint.hpp | 314 +- .../boost/boost/random/variate_generator.hpp | 212 +- .../boost/random/weibull_distribution.hpp | 177 + 3party/boost/boost/random/xor_combine.hpp | 289 +- .../boost/range/adaptor/adjacent_filtered.hpp | 4 - .../boost/range/adaptor/argument_fwd.hpp | 0 3party/boost/boost/range/adaptor/copied.hpp | 0 .../boost/range/adaptor/define_adaptor.hpp | 18 - 3party/boost/boost/range/adaptor/filtered.hpp | 0 3party/boost/boost/range/adaptor/indexed.hpp | 0 3party/boost/boost/range/adaptor/map.hpp | 0 3party/boost/boost/range/adaptor/reversed.hpp | 0 3party/boost/boost/range/adaptor/sliced.hpp | 0 3party/boost/boost/range/adaptor/strided.hpp | 43 +- .../boost/boost/range/adaptor/tokenized.hpp | 0 .../boost/boost/range/adaptor/transformed.hpp | 4 +- 3party/boost/boost/range/adaptor/uniqued.hpp | 0 3party/boost/boost/range/adaptors.hpp | 0 3party/boost/boost/range/algorithm.hpp | 0 .../boost/range/algorithm/adjacent_find.hpp | 0 .../boost/range/algorithm/binary_search.hpp | 0 .../boost/range/algorithm/copy_backward.hpp | 0 3party/boost/boost/range/algorithm/count.hpp | 0 .../boost/boost/range/algorithm/count_if.hpp | 0 3party/boost/boost/range/algorithm/equal.hpp | 0 .../boost/range/algorithm/equal_range.hpp | 0 3party/boost/boost/range/algorithm/fill.hpp | 0 3party/boost/boost/range/algorithm/fill_n.hpp | 0 3party/boost/boost/range/algorithm/find.hpp | 0 .../boost/boost/range/algorithm/find_end.hpp | 0 .../boost/range/algorithm/find_first_of.hpp | 0 .../boost/boost/range/algorithm/find_if.hpp | 0 .../boost/boost/range/algorithm/for_each.hpp | 66 +- .../boost/boost/range/algorithm/generate.hpp | 0 .../boost/range/algorithm/heap_algorithm.hpp | 0 .../boost/range/algorithm/inplace_merge.hpp | 0 .../algorithm/lexicographical_compare.hpp | 0 .../boost/range/algorithm/lower_bound.hpp | 0 .../boost/range/algorithm/max_element.hpp | 0 3party/boost/boost/range/algorithm/merge.hpp | 0 .../boost/range/algorithm/min_element.hpp | 0 .../boost/boost/range/algorithm/mismatch.hpp | 0 .../boost/range/algorithm/nth_element.hpp | 0 .../boost/range/algorithm/partial_sort.hpp | 0 .../range/algorithm/partial_sort_copy.hpp | 0 .../boost/boost/range/algorithm/partition.hpp | 0 .../boost/range/algorithm/permutation.hpp | 0 .../boost/range/algorithm/random_shuffle.hpp | 0 3party/boost/boost/range/algorithm/remove.hpp | 0 .../boost/range/algorithm/remove_copy.hpp | 0 .../boost/range/algorithm/remove_copy_if.hpp | 0 .../boost/boost/range/algorithm/remove_if.hpp | 0 .../boost/boost/range/algorithm/replace.hpp | 0 .../boost/range/algorithm/replace_copy.hpp | 0 .../boost/range/algorithm/replace_copy_if.hpp | 0 .../boost/range/algorithm/replace_if.hpp | 0 .../boost/boost/range/algorithm/reverse.hpp | 0 .../boost/range/algorithm/reverse_copy.hpp | 0 3party/boost/boost/range/algorithm/rotate.hpp | 0 .../boost/range/algorithm/rotate_copy.hpp | 0 3party/boost/boost/range/algorithm/search.hpp | 0 .../boost/boost/range/algorithm/search_n.hpp | 0 .../boost/range/algorithm/set_algorithm.hpp | 0 3party/boost/boost/range/algorithm/sort.hpp | 0 .../range/algorithm/stable_partition.hpp | 0 .../boost/range/algorithm/stable_sort.hpp | 0 .../boost/range/algorithm/swap_ranges.hpp | 0 .../boost/boost/range/algorithm/transform.hpp | 0 3party/boost/boost/range/algorithm/unique.hpp | 0 .../boost/range/algorithm/unique_copy.hpp | 0 .../boost/range/algorithm/upper_bound.hpp | 0 3party/boost/boost/range/algorithm_ext.hpp | 0 .../boost/range/algorithm_ext/copy_n.hpp | 0 .../boost/boost/range/algorithm_ext/erase.hpp | 0 .../boost/range/algorithm_ext/for_each.hpp | 0 .../boost/range/algorithm_ext/insert.hpp | 0 .../boost/range/algorithm_ext/is_sorted.hpp | 42 +- .../boost/range/algorithm_ext/overwrite.hpp | 0 .../boost/range/algorithm_ext/push_back.hpp | 0 .../boost/range/algorithm_ext/push_front.hpp | 0 3party/boost/boost/range/any_range.hpp | 1 + 3party/boost/boost/range/combine.hpp | 0 3party/boost/boost/range/counting_range.hpp | 0 .../detail/demote_iterator_traversal_tag.hpp | 16 +- .../boost/boost/range/detail/detail_str.hpp | 4 +- .../range/detail/extract_optional_type.hpp | 0 .../boost/range/detail/join_iterator.hpp | 30 +- .../boost/boost/range/detail/misc_concept.hpp | 0 .../boost/boost/range/detail/range_return.hpp | 0 .../boost/boost/range/has_range_iterator.hpp | 2 +- 3party/boost/boost/range/irange.hpp | 18 +- 3party/boost/boost/range/istream_range.hpp | 0 .../boost/boost/range/iterator_range_core.hpp | 102 +- .../boost/boost/range/iterator_range_io.hpp | 0 3party/boost/boost/range/join.hpp | 8 + 3party/boost/boost/range/numeric.hpp | 0 3party/boost/boost/range/sub_range.hpp | 63 +- 3party/boost/boost/ratio.hpp | 14 + 3party/boost/boost/ratio/detail/mpl/abs.hpp | 89 + 3party/boost/boost/ratio/detail/mpl/gcd.hpp | 99 + 3party/boost/boost/ratio/detail/mpl/lcm.hpp | 99 + 3party/boost/boost/ratio/detail/mpl/sign.hpp | 89 + .../boost/ratio/detail/overflow_helpers.hpp | 373 + 3party/boost/boost/ratio/include.hpp | 15 + 3party/boost/boost/ratio/mpl/abs.hpp | 30 + 3party/boost/boost/ratio/mpl/arithmetic.hpp | 22 + 3party/boost/boost/ratio/mpl/comparison.hpp | 19 + 3party/boost/boost/ratio/mpl/divides.hpp | 30 + 3party/boost/boost/ratio/mpl/equal_to.hpp | 30 + 3party/boost/boost/ratio/mpl/gcd.hpp | 30 + 3party/boost/boost/ratio/mpl/greater.hpp | 30 + .../boost/boost/ratio/mpl/greater_equal.hpp | 30 + 3party/boost/boost/ratio/mpl/lcm.hpp | 30 + 3party/boost/boost/ratio/mpl/less.hpp | 30 + 3party/boost/boost/ratio/mpl/less_equal.hpp | 30 + 3party/boost/boost/ratio/mpl/minus.hpp | 30 + 3party/boost/boost/ratio/mpl/negate.hpp | 30 + 3party/boost/boost/ratio/mpl/not_equal_to.hpp | 30 + 3party/boost/boost/ratio/mpl/numeric_cast.hpp | 31 + 3party/boost/boost/ratio/mpl/plus.hpp | 30 + .../boost/boost/ratio/mpl/rational_c_tag.hpp | 25 + .../boost/ratio/mpl/rational_constant.hpp | 15 + 3party/boost/boost/ratio/mpl/sign.hpp | 30 + 3party/boost/boost/ratio/mpl/times.hpp | 30 + 3party/boost/boost/ratio/ratio.hpp | 233 + 3party/boost/boost/ratio/ratio_fwd.hpp | 89 + 3party/boost/boost/ratio/ratio_io.hpp | 793 +++ .../boost/boost/ratio/ratio_static_string.hpp | 631 ++ 3party/boost/boost/regex/config.hpp | 4 +- .../boost/regex/pending/object_cache.hpp | 2 +- .../boost/regex/pending/unicode_iterator.hpp | 7 + 3party/boost/boost/regex/v4/basic_regex.hpp | 8 +- .../boost/regex/v4/basic_regex_parser.hpp | 2 + .../boost/boost/regex/v4/cpp_regex_traits.hpp | 12 +- .../regex/v4/u32regex_token_iterator.hpp | 6 +- 3party/boost/boost/serialization/export.hpp | 2 +- .../boost/serialization/strong_typedef.hpp | 4 +- 3party/boost/boost/serialization/version.hpp | 5 + .../boost/signals2/detail/signal_template.hpp | 5 +- .../signals2/detail/signals_common_macros.hpp | 15 +- .../boost/signals2/preprocessed_signal.hpp | 1 + .../boost/boost/signals2/variadic_signal.hpp | 1 + 3party/boost/boost/smart_ptr.hpp | 6 + .../boost/smart_ptr/detail/shared_count.hpp | 88 + .../smart_ptr/detail/sp_counted_impl.hpp | 12 +- .../boost/smart_ptr/detail/sp_has_sync.hpp | 2 +- .../boost/boost/smart_ptr/detail/spinlock.hpp | 5 +- .../boost/smart_ptr/detail/spinlock_pool.hpp | 4 + .../boost/boost/smart_ptr/intrusive_ptr.hpp | 9 - 3party/boost/boost/smart_ptr/make_shared.hpp | 517 +- 3party/boost/boost/smart_ptr/shared_ptr.hpp | 21 +- .../home/classic/actor/ref_value_actor.hpp | 3 + .../spirit/home/classic/debug/minimal.hpp | 2 +- .../home/classic/iterator/file_iterator.hpp | 2 +- .../classic/iterator/impl/file_iterator.ipp | 10 +- .../boost/spirit/home/karma/auto/auto.hpp | 20 +- .../spirit/home/karma/auto/meta_create.hpp | 238 +- .../spirit/home/karma/auxiliary/attr_cast.hpp | 2 + .../boost/spirit/home/karma/auxiliary/eol.hpp | 2 + .../boost/spirit/home/karma/auxiliary/eps.hpp | 2 + .../spirit/home/karma/auxiliary/lazy.hpp | 45 +- .../boost/spirit/home/karma/binary/binary.hpp | 35 +- .../spirit/home/karma/binary/padding.hpp | 4 +- .../boost/spirit/home/karma/char/char.hpp | 2 + .../spirit/home/karma/char/char_class.hpp | 2 +- .../karma/detail/alternative_function.hpp | 4 +- .../spirit/home/karma/detail/attributes.hpp | 2 +- .../spirit/home/karma/detail/extract_from.hpp | 132 +- .../home/karma/detail/indirect_iterator.hpp | 96 + .../home/karma/detail/output_iterator.hpp | 2 +- .../home/karma/detail/pass_container.hpp | 337 +- .../home/karma/detail/string_compare.hpp | 2 +- .../boost/spirit/home/karma/directive/as.hpp | 6 +- .../spirit/home/karma/directive/buffer.hpp | 2 + .../home/karma/directive/center_alignment.hpp | 6 +- .../spirit/home/karma/directive/columns.hpp | 8 + .../spirit/home/karma/directive/delimit.hpp | 2 + .../spirit/home/karma/directive/duplicate.hpp | 2 + .../home/karma/directive/left_alignment.hpp | 2 + .../spirit/home/karma/directive/maxwidth.hpp | 2 + .../home/karma/directive/no_delimit.hpp | 2 + .../spirit/home/karma/directive/omit.hpp | 4 +- .../spirit/home/karma/directive/repeat.hpp | 74 +- .../home/karma/directive/right_alignment.hpp | 8 +- .../home/karma/directive/strict_relaxed.hpp | 4 +- .../spirit/home/karma/directive/verbatim.hpp | 2 + .../boost/boost/spirit/home/karma/domain.hpp | 21 +- .../boost/spirit/home/karma/generate.hpp | 65 +- .../nonterminal/detail/parameterized.hpp | 13 + .../spirit/home/karma/nonterminal/grammar.hpp | 2 +- .../spirit/home/karma/nonterminal/rule.hpp | 98 +- .../home/karma/nonterminal/simple_trace.hpp | 2 +- .../boost/spirit/home/karma/numeric/bool.hpp | 56 +- .../karma/numeric/detail/numeric_utils.hpp | 749 +- .../home/karma/numeric/detail/real_utils.hpp | 87 +- .../boost/spirit/home/karma/numeric/int.hpp | 88 +- .../boost/spirit/home/karma/numeric/real.hpp | 60 +- .../home/karma/numeric/real_policies.hpp | 21 +- .../boost/spirit/home/karma/numeric/uint.hpp | 108 +- .../home/karma/operator/alternative.hpp | 10 +- .../spirit/home/karma/operator/kleene.hpp | 69 +- .../boost/spirit/home/karma/operator/list.hpp | 79 +- .../spirit/home/karma/operator/optional.hpp | 4 +- .../boost/spirit/home/karma/operator/plus.hpp | 87 +- .../spirit/home/karma/operator/sequence.hpp | 96 +- .../spirit/home/karma/phoenix_attributes.hpp | 14 +- .../boost/spirit/home/karma/stream/stream.hpp | 16 +- .../boost/spirit/home/karma/string/lit.hpp | 2 + .../spirit/home/karma/string/symbols.hpp | 17 +- .../boost/boost/spirit/home/lex/argument.hpp | 139 +- .../spirit/home/lex/argument_phoenix.hpp | 251 + .../spirit/home/lex/lexer/char_token_def.hpp | 96 +- .../boost/spirit/home/lex/lexer/lexer.hpp | 7 + .../spirit/home/lex/lexer/lexertl/functor.hpp | 3 + .../home/lex/lexer/lexertl/functor_data.hpp | 148 +- .../lex/lexer/lexertl/generate_static.hpp | 4 +- .../lex/lexer/lexertl/iterator_tokenizer.hpp | 8 +- .../spirit/home/lex/lexer/lexertl/lexer.hpp | 8 +- .../home/lex/lexer/lexertl/position_token.hpp | 938 +++ .../lex/lexer/lexertl/static_functor_data.hpp | 167 +- .../spirit/home/lex/lexer/lexertl/token.hpp | 59 +- .../home/lex/lexer/lexertl/wrap_action.hpp | 40 +- .../home/lex/lexer/string_token_def.hpp | 62 +- .../home/lex/lexer/support_functions.hpp | 45 +- .../lexer/support_functions_expression.hpp | 135 + .../boost/spirit/home/lex/lexer/terminals.hpp | 1 - 3party/boost/boost/spirit/home/lex/qi.hpp | 2 + .../boost/spirit/home/lex/qi/in_state.hpp | 1 - .../spirit/home/lex/qi/plain_raw_token.hpp | 147 + .../boost/spirit/home/lex/qi/plain_token.hpp | 15 +- .../spirit/home/lex/qi/plain_tokenid.hpp | 17 +- .../spirit/home/lex/qi/plain_tokenid_mask.hpp | 136 + .../spirit/home/lex/qi/state_switcher.hpp | 8 +- .../spirit/home/lex/tokenize_and_parse.hpp | 4 +- .../home/lex/tokenize_and_parse_attr.hpp | 2 +- .../boost/spirit/home/phoenix/core/actor.hpp | 25 +- .../spirit/home/phoenix/core/argument.hpp | 18 +- .../boost/spirit/home/phoenix/core/value.hpp | 13 +- .../boost/spirit/home/qi/action/action.hpp | 56 +- .../boost/boost/spirit/home/qi/auto/auto.hpp | 5 +- .../boost/spirit/home/qi/auto/meta_create.hpp | 52 +- .../boost/spirit/home/qi/auxiliary/attr.hpp | 16 +- .../boost/spirit/home/qi/auxiliary/eoi.hpp | 2 + .../boost/spirit/home/qi/auxiliary/eol.hpp | 2 + .../boost/spirit/home/qi/auxiliary/eps.hpp | 2 + .../boost/spirit/home/qi/auxiliary/lazy.hpp | 59 +- .../boost/spirit/home/qi/binary/binary.hpp | 23 +- .../boost/boost/spirit/home/qi/char/char.hpp | 4 +- .../home/qi/detail/alternative_function.hpp | 124 +- .../boost/spirit/home/qi/detail/assign_to.hpp | 188 +- .../spirit/home/qi/detail/attributes.hpp | 15 +- .../boost/spirit/home/qi/detail/construct.hpp | 66 +- .../spirit/home/qi/detail/pass_container.hpp | 337 +- .../boost/spirit/home/qi/directive/as.hpp | 39 +- .../boost/spirit/home/qi/directive/hold.hpp | 2 + .../boost/spirit/home/qi/directive/lexeme.hpp | 2 + .../spirit/home/qi/directive/matches.hpp | 2 + .../spirit/home/qi/directive/no_skip.hpp | 2 + .../boost/spirit/home/qi/directive/omit.hpp | 2 + .../boost/spirit/home/qi/directive/raw.hpp | 2 + .../boost/spirit/home/qi/directive/repeat.hpp | 94 +- .../boost/spirit/home/qi/directive/skip.hpp | 2 + 3party/boost/boost/spirit/home/qi/domain.hpp | 18 + .../boost/spirit/home/qi/nonterminal.hpp | 1 + .../home/qi/nonterminal/debug_handler.hpp | 14 +- .../qi/nonterminal/detail/parameterized.hpp | 13 + .../home/qi/nonterminal/error_handler.hpp | 4 +- .../spirit/home/qi/nonterminal/grammar.hpp | 2 +- .../boost/spirit/home/qi/nonterminal/rule.hpp | 65 +- .../home/qi/nonterminal/simple_trace.hpp | 2 +- .../home/qi/nonterminal/success_handler.hpp | 83 + .../boost/spirit/home/qi/numeric/bool.hpp | 29 +- .../home/qi/numeric/detail/numeric_utils.hpp | 192 +- .../home/qi/numeric/detail/real_impl.hpp | 4 +- .../boost/spirit/home/qi/numeric/int.hpp | 58 +- .../spirit/home/qi/numeric/numeric_utils.hpp | 3 +- .../boost/spirit/home/qi/numeric/real.hpp | 39 +- .../boost/spirit/home/qi/numeric/uint.hpp | 58 +- .../boost/spirit/home/qi/operator/expect.hpp | 5 +- .../boost/spirit/home/qi/operator/kleene.hpp | 37 +- .../boost/spirit/home/qi/operator/list.hpp | 47 +- .../spirit/home/qi/operator/optional.hpp | 36 +- .../boost/spirit/home/qi/operator/plus.hpp | 42 +- .../spirit/home/qi/operator/sequence.hpp | 5 +- .../spirit/home/qi/operator/sequence_base.hpp | 3 +- 3party/boost/boost/spirit/home/qi/parse.hpp | 36 +- .../home/qi/stream/detail/iterator_source.hpp | 27 +- .../boost/spirit/home/qi/stream/stream.hpp | 16 +- .../boost/boost/spirit/home/qi/string/lit.hpp | 4 +- .../boost/spirit/home/qi/string/symbols.hpp | 9 + .../spirit/home/support/action_dispatch.hpp | 136 +- .../home/support/adapt_adt_attributes.hpp | 254 +- .../boost/spirit/home/support/argument.hpp | 98 +- .../home/support/argument_expression.hpp | 132 + .../boost/spirit/home/support/attributes.hpp | 335 +- .../spirit/home/support/attributes_fwd.hpp | 27 +- .../spirit/home/support/auto/meta_create.hpp | 1 + .../boost/spirit/home/support/char_class.hpp | 318 +- .../spirit/home/support/common_terminals.hpp | 159 +- .../boost/spirit/home/support/container.hpp | 68 +- .../boost/spirit/home/support/context.hpp | 134 +- .../spirit/home/support/detail/endian.hpp | 2 +- .../spirit/home/support/detail/hold_any.hpp | 140 +- .../home/support/detail/is_spirit_tag.hpp | 20 + .../spirit/home/support/detail/make_cons.hpp | 1 + .../spirit/home/support/detail/pow10.hpp | 119 +- .../home/support/detail/what_function.hpp | 3 +- .../iterators/detail/combine_policies.hpp | 6 +- .../iterators/detail/functor_input_policy.hpp | 4 +- .../iterators/detail/istream_policy.hpp | 2 +- .../support/iterators/line_pos_iterator.hpp | 65 +- .../boost/boost/spirit/home/support/lazy.hpp | 8 +- .../boost/spirit/home/support/limits.hpp | 35 + .../spirit/home/support/make_component.hpp | 168 +- .../spirit/home/support/meta_compiler.hpp | 2 + .../boost/spirit/home/support/modify.hpp | 1 + .../spirit/home/support/numeric_traits.hpp | 21 + .../spirit/home/support/string_traits.hpp | 11 +- .../boost/spirit/home/support/terminal.hpp | 224 +- .../home/support/terminal_expression.hpp | 75 + .../boost/boost/spirit/home/support/utree.hpp | 20 + .../support/utree/detail/utree_detail1.hpp | 146 + .../support/utree/detail/utree_detail2.hpp | 1632 +++++ .../spirit/home/support/utree/operators.hpp | 704 ++ .../boost/spirit/home/support/utree/utree.hpp | 642 ++ .../home/support/utree/utree_traits.hpp | 1294 ++++ .../home/support/utree/utree_traits_fwd.hpp | 24 + .../include/lex_lexertl_position_token.hpp | 18 + .../spirit/include/lex_lexertl_token.hpp | 18 + .../boost/spirit/include/lex_plain_token.hpp | 18 + 3party/boost/boost/spirit/include/phoenix.hpp | 6 + .../spirit/include/phoenix_algorithm.hpp | 6 + .../boost/spirit/include/phoenix_bind.hpp | 6 + .../spirit/include/phoenix_container.hpp | 6 + .../boost/spirit/include/phoenix_core.hpp | 7 + .../boost/spirit/include/phoenix_function.hpp | 6 + .../boost/spirit/include/phoenix_fusion.hpp | 6 + .../boost/spirit/include/phoenix_limits.hpp | 16 + .../boost/spirit/include/phoenix_object.hpp | 6 + .../boost/spirit/include/phoenix_operator.hpp | 6 + .../boost/spirit/include/phoenix_scope.hpp | 6 + .../spirit/include/phoenix_statement.hpp | 6 + .../boost/spirit/include/phoenix_stl.hpp | 6 + .../boost/spirit/include/qi_as_string.hpp | 18 + .../boost/spirit/include/support_info.hpp | 17 + .../boost/spirit/include/support_utree.hpp | 18 + 3party/boost/boost/spirit/include/version.hpp | 4 +- .../boost/boost/spirit/repository/home/qi.hpp | 1 + .../spirit/repository/home/qi/directive.hpp | 1 + .../repository/home/qi/directive/kwd.hpp | 588 ++ .../home/qi/nonterminal/subrule.hpp | 4 +- .../spirit/repository/home/qi/operator.hpp | 17 + .../home/qi/operator/detail/keywords.hpp | 115 + .../repository/home/qi/operator/keywords.hpp | 640 ++ .../spirit/repository/home/qi/primitive.hpp | 1 + .../repository/home/qi/primitive/advance.hpp | 130 + .../spirit/repository/home/support/confix.hpp | 2 +- .../repository/home/support/distinct.hpp | 2 +- .../spirit/repository/home/support/kwd.hpp | 22 + .../spirit/repository/include/qi_advance.hpp | 17 + .../spirit/repository/include/qi_keywords.hpp | 19 + .../spirit/repository/include/qi_kwd.hpp | 38 + 3party/boost/boost/spirit/version.hpp | 4 +- .../thread/pthread/condition_variable.hpp | 36 +- .../boost/boost/thread/win32/thread_data.hpp | 6 +- .../boost/thread/win32/thread_heap_alloc.hpp | 4 +- 3party/boost/boost/token_functions.hpp | 40 +- 3party/boost/boost/tuple/tuple_io.hpp | 39 + .../type_traits/add_rvalue_reference.hpp | 3 +- .../boost/boost/type_traits/alignment_of.hpp | 2 +- .../boost/boost/type_traits/common_type.hpp | 10 +- .../type_traits/detail/bool_trait_def.hpp | 17 +- .../type_traits/detail/common_type_imp.hpp | 81 +- .../type_traits/detail/cv_traits_impl.hpp | 2 +- .../type_traits/detail/size_t_trait_def.hpp | 10 +- .../type_traits/detail/type_trait_def.hpp | 10 +- .../boost/type_traits/has_nothrow_assign.hpp | 16 +- .../type_traits/has_nothrow_constructor.hpp | 24 +- .../boost/type_traits/has_nothrow_copy.hpp | 24 +- .../boost/type_traits/has_trivial_assign.hpp | 17 +- .../type_traits/has_trivial_constructor.hpp | 8 + .../boost/type_traits/has_trivial_copy.hpp | 25 +- .../type_traits/has_trivial_destructor.hpp | 17 +- .../type_traits/has_virtual_destructor.hpp | 4 + .../boost/type_traits/integral_promotion.hpp | 20 +- 3party/boost/boost/type_traits/intrinsics.hpp | 99 +- 3party/boost/boost/type_traits/is_const.hpp | 4 +- .../boost/type_traits/is_convertible.hpp | 27 +- 3party/boost/boost/type_traits/is_empty.hpp | 16 +- 3party/boost/boost/type_traits/is_enum.hpp | 2 +- .../boost/boost/type_traits/is_function.hpp | 6 +- .../boost/type_traits/is_fundamental.hpp | 2 +- .../is_member_function_pointer.hpp | 4 +- .../boost/type_traits/is_member_pointer.hpp | 4 +- 3party/boost/boost/type_traits/is_pod.hpp | 14 +- 3party/boost/boost/type_traits/is_pointer.hpp | 4 +- 3party/boost/boost/type_traits/is_union.hpp | 8 + .../boost/type_traits/is_virtual_base_of.hpp | 4 +- .../boost/boost/type_traits/is_volatile.hpp | 4 +- .../boost/boost/type_traits/msvc/typeof.hpp | 4 +- 3party/boost/boost/type_traits/promote.hpp | 2 +- .../boost/type_traits/remove_pointer.hpp | 53 +- .../boost/type_traits/type_with_alignment.hpp | 4 +- 3party/boost/boost/units/base_dimension.hpp | 10 + 3party/boost/boost/units/base_unit.hpp | 10 + 3party/boost/boost/units/io.hpp | 81 +- .../boost/units/systems/angle/degrees.hpp | 1 - .../boost/units/systems/angle/gradians.hpp | 1 - .../boost/units/systems/angle/revolutions.hpp | 1 - 3party/boost/boost/units/systems/si/area.hpp | 3 - .../units/systems/temperature/fahrenheit.hpp | 1 - 3party/boost/boost/units/unit.hpp | 2 +- 3party/boost/boost/uuid/name_generator.hpp | 8 +- 3party/boost/boost/uuid/random_generator.hpp | 3 +- 3party/boost/boost/uuid/seed_rng.hpp | 1 - 3party/boost/boost/uuid/string_generator.hpp | 5 +- .../variant/detail/apply_visitor_delayed.hpp | 4 +- .../boost/variant/detail/visitation_impl.hpp | 5 +- .../boost/boost/variant/recursive_variant.hpp | 63 +- 3party/boost/boost/variant/variant.hpp | 60 +- 3party/boost/boost/variant/variant_fwd.hpp | 2 +- 3party/boost/boost/version.hpp | 4 +- 3party/boost/boost/wave/cpp_context.hpp | 14 +- .../boost/wave/grammars/cpp_chlit_grammar.hpp | 12 +- .../wave/grammars/cpp_expression_grammar.hpp | 22 +- .../wave/grammars/cpp_literal_grammar_gen.hpp | 4 +- .../boost/boost/wave/preprocessing_hooks.hpp | 75 +- .../boost/wave/util/cpp_include_paths.hpp | 6 +- 3party/boost/boost/wave/util/cpp_iterator.hpp | 15 +- 3party/boost/boost/wave/util/cpp_macromap.hpp | 1 + .../boost/wave/util/cpp_macromap_predef.hpp | 2 +- .../boost/wave/util/cpp_macromap_utils.hpp | 50 +- .../boost/boost/wave/util/macro_helpers.hpp | 30 +- .../boost/wave/util/unput_queue_iterator.hpp | 2 +- 3party/boost/boost/wave/wave_config.hpp | 16 + 3party/boost/boost/wave/wave_version.hpp | 4 +- .../boost/xpressive/detail/core/adaptor.hpp | 2 +- .../boost/xpressive/detail/detail_fwd.hpp | 3 +- .../boost/boost/xpressive/match_results.hpp | 7 +- .../boost/boost/xpressive/regex_actions.hpp | 170 +- .../boost/boost/xpressive/xpressive_fwd.hpp | 34 + 1737 files changed, 298091 insertions(+), 21352 deletions(-) create mode 100644 3party/boost/boost/accumulators/statistics/sum_kahan.hpp create mode 100644 3party/boost/boost/accumulators/statistics/weighted_sum_kahan.hpp create mode 100644 3party/boost/boost/algorithm/string/trim_all.hpp create mode 100644 3party/boost/boost/asio/basic_seq_packet_socket.hpp create mode 100644 3party/boost/boost/asio/basic_signal_set.hpp create mode 100644 3party/boost/boost/asio/connect.hpp create mode 100644 3party/boost/boost/asio/detail/array.hpp create mode 100644 3party/boost/boost/asio/detail/atomic_count.hpp create mode 100644 3party/boost/boost/asio/detail/handler_tracking.hpp create mode 100644 3party/boost/boost/asio/detail/handler_type_requirements.hpp create mode 100644 3party/boost/boost/asio/detail/impl/handler_tracking.ipp create mode 100644 3party/boost/boost/asio/detail/impl/signal_set_service.ipp create mode 100644 3party/boost/boost/asio/detail/impl/win_static_mutex.ipp create mode 100644 3party/boost/boost/asio/detail/null_static_mutex.hpp create mode 100644 3party/boost/boost/asio/detail/posix_static_mutex.hpp create mode 100644 3party/boost/boost/asio/detail/reactive_socket_recvmsg_op.hpp create mode 100644 3party/boost/boost/asio/detail/scoped_ptr.hpp create mode 100644 3party/boost/boost/asio/detail/signal_handler.hpp create mode 100644 3party/boost/boost/asio/detail/signal_op.hpp create mode 100644 3party/boost/boost/asio/detail/signal_set_service.hpp create mode 100644 3party/boost/boost/asio/detail/static_mutex.hpp create mode 100644 3party/boost/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp create mode 100644 3party/boost/boost/asio/detail/win_static_mutex.hpp create mode 100644 3party/boost/boost/asio/impl/connect.hpp create mode 100644 3party/boost/boost/asio/seq_packet_socket_service.hpp create mode 100644 3party/boost/boost/asio/signal_set.hpp create mode 100644 3party/boost/boost/asio/signal_set_service.hpp create mode 100644 3party/boost/boost/asio/ssl/detail/engine.hpp create mode 100644 3party/boost/boost/asio/ssl/detail/handshake_op.hpp create mode 100644 3party/boost/boost/asio/ssl/detail/impl/engine.ipp create mode 100644 3party/boost/boost/asio/ssl/detail/impl/openssl_init.ipp create mode 100644 3party/boost/boost/asio/ssl/detail/io.hpp create mode 100644 3party/boost/boost/asio/ssl/detail/password_callback.hpp create mode 100644 3party/boost/boost/asio/ssl/detail/read_op.hpp create mode 100644 3party/boost/boost/asio/ssl/detail/shutdown_op.hpp create mode 100644 3party/boost/boost/asio/ssl/detail/stream_core.hpp create mode 100644 3party/boost/boost/asio/ssl/detail/verify_callback.hpp create mode 100644 3party/boost/boost/asio/ssl/detail/write_op.hpp create mode 100644 3party/boost/boost/asio/ssl/error.hpp create mode 100644 3party/boost/boost/asio/ssl/impl/context.hpp create mode 100644 3party/boost/boost/asio/ssl/impl/context.ipp create mode 100644 3party/boost/boost/asio/ssl/impl/error.ipp create mode 100644 3party/boost/boost/asio/ssl/impl/rfc2818_verification.ipp create mode 100644 3party/boost/boost/asio/ssl/impl/src.hpp create mode 100644 3party/boost/boost/asio/ssl/old/basic_context.hpp create mode 100644 3party/boost/boost/asio/ssl/old/context_service.hpp rename 3party/boost/boost/asio/ssl/{ => old}/detail/openssl_context_service.hpp (93%) rename 3party/boost/boost/asio/ssl/{ => old}/detail/openssl_operation.hpp (97%) rename 3party/boost/boost/asio/ssl/{ => old}/detail/openssl_stream_service.hpp (97%) create mode 100644 3party/boost/boost/asio/ssl/old/stream.hpp create mode 100644 3party/boost/boost/asio/ssl/old/stream_service.hpp create mode 100644 3party/boost/boost/asio/ssl/rfc2818_verification.hpp create mode 100644 3party/boost/boost/asio/ssl/verify_context.hpp create mode 100644 3party/boost/boost/asio/ssl/verify_mode.hpp create mode 100644 3party/boost/boost/chrono.hpp create mode 100644 3party/boost/boost/chrono/chrono.hpp create mode 100644 3party/boost/boost/chrono/chrono_io.hpp create mode 100644 3party/boost/boost/chrono/config.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/chrono.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/mac/chrono.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/mac/process_clock.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/mac/thread_clock.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/posix/chrono.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/posix/process_clock.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/posix/thread_clock.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/process_clock.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/process_cpu_clocks.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/run_timer.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/run_timer_static.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/thread_clock.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/win/chrono.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/win/process_clock.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/win/process_cpu_clocks.hpp create mode 100644 3party/boost/boost/chrono/detail/inlined/win/thread_clock.hpp create mode 100644 3party/boost/boost/chrono/detail/is_evenly_divisible_by.hpp create mode 100644 3party/boost/boost/chrono/detail/scan_keyword.hpp create mode 100644 3party/boost/boost/chrono/detail/static_assert.hpp create mode 100644 3party/boost/boost/chrono/detail/system.hpp create mode 100644 3party/boost/boost/chrono/duration.hpp create mode 100644 3party/boost/boost/chrono/include.hpp create mode 100644 3party/boost/boost/chrono/process_cpu_clocks.hpp create mode 100644 3party/boost/boost/chrono/process_times.hpp create mode 100644 3party/boost/boost/chrono/system_clocks.hpp create mode 100644 3party/boost/boost/chrono/thread_clock.hpp create mode 100644 3party/boost/boost/chrono/time_point.hpp create mode 100644 3party/boost/boost/chrono/timer.hpp create mode 100644 3party/boost/boost/chrono/typeof/boost/chrono/chrono.hpp create mode 100644 3party/boost/boost/chrono/typeof/boost/ratio.hpp create mode 100644 3party/boost/boost/detail/is_sorted.hpp create mode 100644 3party/boost/boost/detail/win/GetCurrentProcess.hpp create mode 100644 3party/boost/boost/detail/win/GetCurrentThread.hpp create mode 100644 3party/boost/boost/detail/win/GetLastError.hpp create mode 100644 3party/boost/boost/detail/win/GetProcessTimes.hpp create mode 100644 3party/boost/boost/detail/win/GetThreadTimes.hpp create mode 100644 3party/boost/boost/detail/win/LocalFree.hpp create mode 100644 3party/boost/boost/detail/win/basic_types.hpp create mode 100644 3party/boost/boost/detail/win/directory_management.hpp create mode 100644 3party/boost/boost/detail/win/dll.hpp create mode 100644 3party/boost/boost/detail/win/error_handling.hpp create mode 100644 3party/boost/boost/detail/win/file_management.hpp create mode 100644 3party/boost/boost/detail/win/handles.hpp create mode 100644 3party/boost/boost/detail/win/memory.hpp create mode 100644 3party/boost/boost/detail/win/process.hpp create mode 100644 3party/boost/boost/detail/win/security.hpp create mode 100644 3party/boost/boost/detail/win/synchronization.hpp create mode 100644 3party/boost/boost/detail/win/system.hpp create mode 100644 3party/boost/boost/detail/win/thread.hpp create mode 100644 3party/boost/boost/detail/win/time.hpp create mode 100644 3party/boost/boost/detail/win/timers.hpp create mode 100644 3party/boost/boost/exception/detail/clone_current_exception.hpp create mode 100644 3party/boost/boost/fusion/algorithm/auxiliary.hpp create mode 100644 3party/boost/boost/fusion/algorithm/auxiliary/copy.hpp mode change 100755 => 100644 3party/boost/boost/fusion/functional/adapter/unfused.hpp create mode 100644 3party/boost/boost/fusion/include/auxiliary.hpp create mode 100644 3party/boost/boost/fusion/include/copy.hpp create mode 100644 3party/boost/boost/geometry.hpp create mode 100644 3party/boost/boost/geometry/algorithms/append.hpp create mode 100644 3party/boost/boost/geometry/algorithms/area.hpp create mode 100644 3party/boost/boost/geometry/algorithms/assign.hpp create mode 100644 3party/boost/boost/geometry/algorithms/buffer.hpp create mode 100644 3party/boost/boost/geometry/algorithms/centroid.hpp create mode 100644 3party/boost/boost/geometry/algorithms/clear.hpp create mode 100644 3party/boost/boost/geometry/algorithms/comparable_distance.hpp create mode 100644 3party/boost/boost/geometry/algorithms/convert.hpp create mode 100644 3party/boost/boost/geometry/algorithms/convex_hull.hpp create mode 100644 3party/boost/boost/geometry/algorithms/correct.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/as_range.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/assign_values.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/calculate_null.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/calculate_sum.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/convert_point_to_point.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/disjoint.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/equals/collect_vectors.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/for_each_range.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/has_self_intersections.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/not.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/add_rings.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/assign_parents.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/calculate_distance_policy.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/check_enrich.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/clip_linestring.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/convert_ring.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/copy_segments.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/get_relative_order.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/get_ring.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/get_turns.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/handle_tangencies.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/overlay.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/overlay_type.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/ring_properties.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/segment_identifier.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/select_rings.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/stream_info.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/traversal_info.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/traverse.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/turn_info.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/visit_info.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/overlay/within_util.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/partition.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/point_on_border.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/ring_identifier.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/sections/range_by_section.hpp create mode 100644 3party/boost/boost/geometry/algorithms/detail/sections/sectionalize.hpp create mode 100644 3party/boost/boost/geometry/algorithms/difference.hpp create mode 100644 3party/boost/boost/geometry/algorithms/disjoint.hpp create mode 100644 3party/boost/boost/geometry/algorithms/distance.hpp create mode 100644 3party/boost/boost/geometry/algorithms/envelope.hpp create mode 100644 3party/boost/boost/geometry/algorithms/equals.hpp create mode 100644 3party/boost/boost/geometry/algorithms/expand.hpp create mode 100644 3party/boost/boost/geometry/algorithms/for_each.hpp create mode 100644 3party/boost/boost/geometry/algorithms/intersection.hpp create mode 100644 3party/boost/boost/geometry/algorithms/intersects.hpp create mode 100644 3party/boost/boost/geometry/algorithms/length.hpp create mode 100644 3party/boost/boost/geometry/algorithms/make.hpp create mode 100644 3party/boost/boost/geometry/algorithms/num_geometries.hpp create mode 100644 3party/boost/boost/geometry/algorithms/num_interior_rings.hpp create mode 100644 3party/boost/boost/geometry/algorithms/num_points.hpp create mode 100644 3party/boost/boost/geometry/algorithms/overlaps.hpp create mode 100644 3party/boost/boost/geometry/algorithms/perimeter.hpp create mode 100644 3party/boost/boost/geometry/algorithms/reverse.hpp create mode 100644 3party/boost/boost/geometry/algorithms/simplify.hpp create mode 100644 3party/boost/boost/geometry/algorithms/sym_difference.hpp create mode 100644 3party/boost/boost/geometry/algorithms/transform.hpp create mode 100644 3party/boost/boost/geometry/algorithms/union.hpp create mode 100644 3party/boost/boost/geometry/algorithms/unique.hpp create mode 100644 3party/boost/boost/geometry/algorithms/within.hpp create mode 100644 3party/boost/boost/geometry/arithmetic/arithmetic.hpp create mode 100644 3party/boost/boost/geometry/arithmetic/dot_product.hpp create mode 100644 3party/boost/boost/geometry/core/access.hpp create mode 100644 3party/boost/boost/geometry/core/closure.hpp create mode 100644 3party/boost/boost/geometry/core/coordinate_dimension.hpp create mode 100644 3party/boost/boost/geometry/core/coordinate_system.hpp create mode 100644 3party/boost/boost/geometry/core/coordinate_type.hpp create mode 100644 3party/boost/boost/geometry/core/cs.hpp create mode 100644 3party/boost/boost/geometry/core/exception.hpp create mode 100644 3party/boost/boost/geometry/core/exterior_ring.hpp create mode 100644 3party/boost/boost/geometry/core/geometry_id.hpp create mode 100644 3party/boost/boost/geometry/core/interior_rings.hpp create mode 100644 3party/boost/boost/geometry/core/interior_type.hpp create mode 100644 3party/boost/boost/geometry/core/is_areal.hpp create mode 100644 3party/boost/boost/geometry/core/mutable_range.hpp create mode 100644 3party/boost/boost/geometry/core/point_order.hpp create mode 100644 3party/boost/boost/geometry/core/point_type.hpp create mode 100644 3party/boost/boost/geometry/core/radian_access.hpp create mode 100644 3party/boost/boost/geometry/core/reverse_dispatch.hpp create mode 100644 3party/boost/boost/geometry/core/ring_type.hpp create mode 100644 3party/boost/boost/geometry/core/tag.hpp create mode 100644 3party/boost/boost/geometry/core/tag_cast.hpp create mode 100644 3party/boost/boost/geometry/core/tags.hpp create mode 100644 3party/boost/boost/geometry/core/topological_dimension.hpp create mode 100644 3party/boost/boost/geometry/domains/gis/io/io.hpp create mode 100644 3party/boost/boost/geometry/domains/gis/io/wkt/detail/wkt.hpp create mode 100644 3party/boost/boost/geometry/domains/gis/io/wkt/detail/wkt_multi.hpp create mode 100644 3party/boost/boost/geometry/domains/gis/io/wkt/read_wkt.hpp create mode 100644 3party/boost/boost/geometry/domains/gis/io/wkt/read_wkt_multi.hpp create mode 100644 3party/boost/boost/geometry/domains/gis/io/wkt/wkt.hpp create mode 100644 3party/boost/boost/geometry/domains/gis/io/wkt/write_wkt.hpp create mode 100644 3party/boost/boost/geometry/domains/gis/io/wkt/write_wkt_multi.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_array.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_fusion.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_polygon.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_polygon/box.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_polygon/hole_iterator.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_polygon/holes_proxy.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_polygon/point.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_polygon/polygon.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_polygon/ring.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_polygon/ring_proxy.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_range/adjacent_filtered.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_range/filtered.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_range/reversed.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_range/sliced.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_range/strided.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_range/uniqued.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/boost_tuple.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/c_array.hpp create mode 100644 3party/boost/boost/geometry/geometries/adapted/std_pair_as_segment.hpp create mode 100644 3party/boost/boost/geometry/geometries/box.hpp create mode 100644 3party/boost/boost/geometry/geometries/concepts/box_concept.hpp create mode 100644 3party/boost/boost/geometry/geometries/concepts/check.hpp create mode 100644 3party/boost/boost/geometry/geometries/concepts/linestring_concept.hpp create mode 100644 3party/boost/boost/geometry/geometries/concepts/point_concept.hpp create mode 100644 3party/boost/boost/geometry/geometries/concepts/polygon_concept.hpp create mode 100644 3party/boost/boost/geometry/geometries/concepts/ring_concept.hpp create mode 100644 3party/boost/boost/geometry/geometries/concepts/segment_concept.hpp create mode 100644 3party/boost/boost/geometry/geometries/geometries.hpp create mode 100644 3party/boost/boost/geometry/geometries/linestring.hpp create mode 100644 3party/boost/boost/geometry/geometries/point.hpp create mode 100644 3party/boost/boost/geometry/geometries/point_xy.hpp create mode 100644 3party/boost/boost/geometry/geometries/polygon.hpp create mode 100644 3party/boost/boost/geometry/geometries/register/box.hpp create mode 100644 3party/boost/boost/geometry/geometries/register/linestring.hpp create mode 100644 3party/boost/boost/geometry/geometries/register/point.hpp create mode 100644 3party/boost/boost/geometry/geometries/register/ring.hpp create mode 100644 3party/boost/boost/geometry/geometries/register/segment.hpp create mode 100644 3party/boost/boost/geometry/geometries/ring.hpp create mode 100644 3party/boost/boost/geometry/geometries/segment.hpp create mode 100644 3party/boost/boost/geometry/geometry.hpp create mode 100644 3party/boost/boost/geometry/iterators/base.hpp create mode 100644 3party/boost/boost/geometry/iterators/closing_iterator.hpp create mode 100644 3party/boost/boost/geometry/iterators/ever_circling_iterator.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/area.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/centroid.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/clear.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/correct.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/for_each_range.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/modify.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/multi_sum.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/overlay/get_ring.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/overlay/select_rings.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/overlay/self_turn_points.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/point_on_border.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/distance.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/envelope.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/equals.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/for_each.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/intersection.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/length.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/num_geometries.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/num_interior_rings.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/num_points.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/perimeter.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/reverse.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/simplify.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/transform.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/unique.hpp create mode 100644 3party/boost/boost/geometry/multi/algorithms/within.hpp create mode 100644 3party/boost/boost/geometry/multi/core/closure.hpp create mode 100644 3party/boost/boost/geometry/multi/core/geometry_id.hpp create mode 100644 3party/boost/boost/geometry/multi/core/interior_rings.hpp create mode 100644 3party/boost/boost/geometry/multi/core/is_areal.hpp create mode 100644 3party/boost/boost/geometry/multi/core/point_order.hpp create mode 100644 3party/boost/boost/geometry/multi/core/point_type.hpp create mode 100644 3party/boost/boost/geometry/multi/core/ring_type.hpp create mode 100644 3party/boost/boost/geometry/multi/core/tags.hpp create mode 100644 3party/boost/boost/geometry/multi/core/topological_dimension.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/concepts/check.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/concepts/multi_linestring_concept.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/concepts/multi_point_concept.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/concepts/multi_polygon_concept.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/multi_linestring.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/multi_point.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/multi_polygon.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/register/multi_linestring.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/register/multi_point.hpp create mode 100644 3party/boost/boost/geometry/multi/geometries/register/multi_polygon.hpp create mode 100644 3party/boost/boost/geometry/multi/multi.hpp create mode 100644 3party/boost/boost/geometry/multi/strategies/cartesian/centroid_average.hpp create mode 100644 3party/boost/boost/geometry/multi/util/write_dsv.hpp create mode 100644 3party/boost/boost/geometry/multi/views/detail/range_type.hpp create mode 100644 3party/boost/boost/geometry/policies/compare.hpp create mode 100644 3party/boost/boost/geometry/policies/relate/de9im.hpp create mode 100644 3party/boost/boost/geometry/policies/relate/direction.hpp create mode 100644 3party/boost/boost/geometry/policies/relate/intersection_points.hpp create mode 100644 3party/boost/boost/geometry/policies/relate/intersection_points_determinant.hpp create mode 100644 3party/boost/boost/geometry/policies/relate/intersection_points_slope.hpp create mode 100644 3party/boost/boost/geometry/policies/relate/tupled.hpp create mode 100644 3party/boost/boost/geometry/strategies/agnostic/hull_graham_andrew.hpp create mode 100644 3party/boost/boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp create mode 100644 3party/boost/boost/geometry/strategies/agnostic/point_in_poly_winding.hpp create mode 100644 3party/boost/boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp create mode 100644 3party/boost/boost/geometry/strategies/area.hpp create mode 100644 3party/boost/boost/geometry/strategies/cartesian/area_surveyor.hpp create mode 100644 3party/boost/boost/geometry/strategies/cartesian/cart_intersect.hpp create mode 100644 3party/boost/boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp create mode 100644 3party/boost/boost/geometry/strategies/cartesian/centroid_weighted_length.hpp create mode 100644 3party/boost/boost/geometry/strategies/cartesian/distance_projected_point.hpp create mode 100644 3party/boost/boost/geometry/strategies/cartesian/distance_pythagoras.hpp create mode 100644 3party/boost/boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp create mode 100644 3party/boost/boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp create mode 100644 3party/boost/boost/geometry/strategies/cartesian/side_by_triangle.hpp create mode 100644 3party/boost/boost/geometry/strategies/centroid.hpp create mode 100644 3party/boost/boost/geometry/strategies/compare.hpp create mode 100644 3party/boost/boost/geometry/strategies/concepts/area_concept.hpp create mode 100644 3party/boost/boost/geometry/strategies/concepts/centroid_concept.hpp create mode 100644 3party/boost/boost/geometry/strategies/concepts/convex_hull_concept.hpp create mode 100644 3party/boost/boost/geometry/strategies/concepts/distance_concept.hpp create mode 100644 3party/boost/boost/geometry/strategies/concepts/segment_intersect_concept.hpp create mode 100644 3party/boost/boost/geometry/strategies/concepts/simplify_concept.hpp create mode 100644 3party/boost/boost/geometry/strategies/concepts/within_concept.hpp create mode 100644 3party/boost/boost/geometry/strategies/convex_hull.hpp create mode 100644 3party/boost/boost/geometry/strategies/default_area_result.hpp create mode 100644 3party/boost/boost/geometry/strategies/default_distance_result.hpp create mode 100644 3party/boost/boost/geometry/strategies/default_length_result.hpp create mode 100644 3party/boost/boost/geometry/strategies/distance.hpp create mode 100644 3party/boost/boost/geometry/strategies/intersection.hpp create mode 100644 3party/boost/boost/geometry/strategies/intersection_result.hpp create mode 100644 3party/boost/boost/geometry/strategies/side.hpp create mode 100644 3party/boost/boost/geometry/strategies/side_info.hpp create mode 100644 3party/boost/boost/geometry/strategies/spherical/area_huiller.hpp create mode 100644 3party/boost/boost/geometry/strategies/spherical/compare_circular.hpp create mode 100644 3party/boost/boost/geometry/strategies/spherical/distance_cross_track.hpp create mode 100644 3party/boost/boost/geometry/strategies/spherical/distance_haversine.hpp create mode 100644 3party/boost/boost/geometry/strategies/spherical/side_by_cross_track.hpp create mode 100644 3party/boost/boost/geometry/strategies/spherical/ssf.hpp create mode 100644 3party/boost/boost/geometry/strategies/strategies.hpp create mode 100644 3party/boost/boost/geometry/strategies/strategy_transform.hpp create mode 100644 3party/boost/boost/geometry/strategies/tags.hpp create mode 100644 3party/boost/boost/geometry/strategies/transform.hpp create mode 100644 3party/boost/boost/geometry/strategies/transform/inverse_transformer.hpp create mode 100644 3party/boost/boost/geometry/strategies/transform/map_transformer.hpp create mode 100644 3party/boost/boost/geometry/strategies/transform/matrix_transformers.hpp create mode 100644 3party/boost/boost/geometry/strategies/within.hpp create mode 100644 3party/boost/boost/geometry/util/add_const_if_c.hpp create mode 100644 3party/boost/boost/geometry/util/closure_as_bool.hpp create mode 100644 3party/boost/boost/geometry/util/coordinate_cast.hpp create mode 100644 3party/boost/boost/geometry/util/for_each_coordinate.hpp create mode 100644 3party/boost/boost/geometry/util/math.hpp create mode 100644 3party/boost/boost/geometry/util/order_as_direction.hpp create mode 100644 3party/boost/boost/geometry/util/promote_floating_point.hpp create mode 100644 3party/boost/boost/geometry/util/readme.txt create mode 100644 3party/boost/boost/geometry/util/select_calculation_type.hpp create mode 100644 3party/boost/boost/geometry/util/select_coordinate_type.hpp create mode 100644 3party/boost/boost/geometry/util/select_most_precise.hpp create mode 100644 3party/boost/boost/geometry/util/write_dsv.hpp create mode 100644 3party/boost/boost/geometry/views/box_view.hpp create mode 100644 3party/boost/boost/geometry/views/closeable_view.hpp create mode 100644 3party/boost/boost/geometry/views/detail/points_view.hpp create mode 100644 3party/boost/boost/geometry/views/detail/range_type.hpp create mode 100644 3party/boost/boost/geometry/views/identity_view.hpp create mode 100644 3party/boost/boost/geometry/views/reversible_view.hpp create mode 100644 3party/boost/boost/geometry/views/segment_view.hpp delete mode 100644 3party/boost/boost/graph/detail/is_same.hpp delete mode 100644 3party/boost/boost/graph/kolmogorov_max_flow.hpp create mode 100644 3party/boost/boost/icl/type_traits/is_increasing.hpp create mode 100644 3party/boost/boost/icl/type_traits/rep_type_of.hpp create mode 100644 3party/boost/boost/iterator/function_input_iterator.hpp create mode 100644 3party/boost/boost/math/bindings/e_float.hpp create mode 100644 3party/boost/boost/math/special_functions/nonfinite_num_facets.hpp create mode 100644 3party/boost/boost/math/tr1_c_macros.ipp create mode 100644 3party/boost/boost/msm/active_state_switching_policies.hpp create mode 100644 3party/boost/boost/msm/back/any_event.hpp create mode 100644 3party/boost/boost/msm/front/euml/phoenix_placeholders.hpp delete mode 100644 3party/boost/boost/msm/mpl_graph/detail/as_mpl_map.hpp mode change 100755 => 100644 3party/boost/boost/msm/mpl_graph/mpl_graph.hpp create mode 100644 3party/boost/boost/msm/msm_grammar.hpp create mode 100644 3party/boost/boost/phoenix.hpp create mode 100644 3party/boost/boost/phoenix/bind.hpp create mode 100644 3party/boost/boost/phoenix/bind/bind_function.hpp create mode 100644 3party/boost/boost/phoenix/bind/bind_function_object.hpp create mode 100644 3party/boost/boost/phoenix/bind/bind_member_function.hpp create mode 100644 3party/boost/boost/phoenix/bind/bind_member_variable.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/function_ptr.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/member_function_ptr.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/member_variable.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/function_ptr.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/function_ptr_10.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/function_ptr_20.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/function_ptr_30.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/function_ptr_40.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/function_ptr_50.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/member_function_ptr.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/member_function_ptr_10.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/member_function_ptr_20.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/member_function_ptr_30.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/member_function_ptr_40.hpp create mode 100644 3party/boost/boost/phoenix/bind/detail/preprocessed/member_function_ptr_50.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_10.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_20.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_30.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_40.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_50.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_object.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_object_10.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_object_20.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_object_30.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_object_40.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_function_object_50.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_member_function.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_member_function_10.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_member_function_20.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_member_function_30.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_member_function_40.hpp create mode 100644 3party/boost/boost/phoenix/bind/preprocessed/bind_member_function_50.hpp create mode 100644 3party/boost/boost/phoenix/core.hpp create mode 100644 3party/boost/boost/phoenix/core/actor.hpp create mode 100644 3party/boost/boost/phoenix/core/argument.hpp create mode 100644 3party/boost/boost/phoenix/core/arity.hpp create mode 100644 3party/boost/boost/phoenix/core/as_actor.hpp create mode 100644 3party/boost/boost/phoenix/core/call.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/actor_operator.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/actor_result_of.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/argument.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/call.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/expression.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/function_eval.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/phx2_result.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_operator.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_operator_10.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_operator_20.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_operator_30.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_operator_40.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_operator_50.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_result_of.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_result_of_10.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_result_of_20.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_result_of_30.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_result_of_40.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/actor_result_of_50.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/call.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/call_10.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/call_20.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/call_30.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/call_40.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/call_50.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/function_eval.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/function_eval_10.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/function_eval_20.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/function_eval_30.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/function_eval_40.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/function_eval_50.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/phx2_result.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/phx2_result_10.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/phx2_result_20.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/phx2_result_30.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/phx2_result_40.hpp create mode 100644 3party/boost/boost/phoenix/core/detail/preprocessed/phx2_result_50.hpp create mode 100644 3party/boost/boost/phoenix/core/domain.hpp create mode 100644 3party/boost/boost/phoenix/core/environment.hpp create mode 100644 3party/boost/boost/phoenix/core/expression.hpp create mode 100644 3party/boost/boost/phoenix/core/function_equal.hpp create mode 100644 3party/boost/boost/phoenix/core/is_actor.hpp create mode 100644 3party/boost/boost/phoenix/core/is_nullary.hpp create mode 100644 3party/boost/boost/phoenix/core/limits.hpp create mode 100644 3party/boost/boost/phoenix/core/meta_grammar.hpp create mode 100644 3party/boost/boost/phoenix/core/nothing.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/actor.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/actor_10.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/actor_20.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/actor_30.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/actor_40.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/actor_50.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_10.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_no_predefined_10.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_no_predefined_20.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_no_predefined_30.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_no_predefined_40.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_no_predefined_50.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_predefined_10.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_predefined_20.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_predefined_30.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_predefined_40.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/argument_predefined_50.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/expression.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/expression_10.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/expression_20.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/expression_30.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/expression_40.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/expression_50.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/function_equal.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/function_equal_10.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/function_equal_20.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/function_equal_30.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/function_equal_40.hpp create mode 100644 3party/boost/boost/phoenix/core/preprocessed/function_equal_50.hpp create mode 100644 3party/boost/boost/phoenix/core/reference.hpp create mode 100644 3party/boost/boost/phoenix/core/terminal.hpp create mode 100644 3party/boost/boost/phoenix/core/terminal_fwd.hpp create mode 100644 3party/boost/boost/phoenix/core/v2_eval.hpp create mode 100644 3party/boost/boost/phoenix/core/value.hpp create mode 100644 3party/boost/boost/phoenix/core/visit_each.hpp create mode 100644 3party/boost/boost/phoenix/function.hpp create mode 100644 3party/boost/boost/phoenix/function/adapt_callable.hpp create mode 100644 3party/boost/boost/phoenix/function/adapt_function.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/function_operator.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/function_result_of.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_operator.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_operator_10.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_operator_20.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_operator_30.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_operator_40.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_operator_50.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_result_of.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_result_of_10.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_result_of_20.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_result_of_30.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_result_of_40.hpp create mode 100644 3party/boost/boost/phoenix/function/detail/preprocessed/function_result_of_50.hpp create mode 100644 3party/boost/boost/phoenix/function/function.hpp create mode 100644 3party/boost/boost/phoenix/fusion.hpp create mode 100644 3party/boost/boost/phoenix/fusion/at.hpp create mode 100644 3party/boost/boost/phoenix/object.hpp create mode 100644 3party/boost/boost/phoenix/object/const_cast.hpp create mode 100644 3party/boost/boost/phoenix/object/construct.hpp create mode 100644 3party/boost/boost/phoenix/object/delete.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/construct.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/construct_eval.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/new.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/new_eval.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_10.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_20.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_30.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_40.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_50.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_eval.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_10.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_20.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_30.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_40.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_50.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_eval.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp create mode 100644 3party/boost/boost/phoenix/object/detail/target.hpp create mode 100644 3party/boost/boost/phoenix/object/dynamic_cast.hpp create mode 100644 3party/boost/boost/phoenix/object/new.hpp create mode 100644 3party/boost/boost/phoenix/object/reinterpret_cast.hpp create mode 100644 3party/boost/boost/phoenix/object/static_cast.hpp create mode 100644 3party/boost/boost/phoenix/operator.hpp create mode 100644 3party/boost/boost/phoenix/operator/arithmetic.hpp create mode 100644 3party/boost/boost/phoenix/operator/bitwise.hpp create mode 100644 3party/boost/boost/phoenix/operator/comparision.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/define_operator.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_10.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_20.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_30.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_40.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_50.hpp create mode 100644 3party/boost/boost/phoenix/operator/detail/undef_operator.hpp create mode 100644 3party/boost/boost/phoenix/operator/if_else.hpp create mode 100644 3party/boost/boost/phoenix/operator/io.hpp create mode 100644 3party/boost/boost/phoenix/operator/logical.hpp create mode 100644 3party/boost/boost/phoenix/operator/member.hpp create mode 100644 3party/boost/boost/phoenix/operator/preprocessed/member.hpp create mode 100644 3party/boost/boost/phoenix/operator/preprocessed/member_10.hpp create mode 100644 3party/boost/boost/phoenix/operator/preprocessed/member_20.hpp create mode 100644 3party/boost/boost/phoenix/operator/preprocessed/member_30.hpp create mode 100644 3party/boost/boost/phoenix/operator/preprocessed/member_40.hpp create mode 100644 3party/boost/boost/phoenix/operator/preprocessed/member_50.hpp create mode 100644 3party/boost/boost/phoenix/operator/self.hpp create mode 100644 3party/boost/boost/phoenix/phoenix.hpp create mode 100644 3party/boost/boost/phoenix/scope.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/dynamic.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/local_gen.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/local_variable.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/make_locals.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/dynamic.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/dynamic_10.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/dynamic_20.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/dynamic_30.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/dynamic_40.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/dynamic_50.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/make_locals.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/make_locals_10.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/make_locals_20.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/make_locals_30.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/make_locals_40.hpp create mode 100644 3party/boost/boost/phoenix/scope/detail/preprocessed/make_locals_50.hpp create mode 100644 3party/boost/boost/phoenix/scope/dynamic.hpp create mode 100644 3party/boost/boost/phoenix/scope/lambda.hpp create mode 100644 3party/boost/boost/phoenix/scope/let.hpp create mode 100644 3party/boost/boost/phoenix/scope/local_variable.hpp create mode 100644 3party/boost/boost/phoenix/scope/preprocessed/lambda.hpp create mode 100644 3party/boost/boost/phoenix/scope/preprocessed/lambda_10.hpp create mode 100644 3party/boost/boost/phoenix/scope/preprocessed/lambda_20.hpp create mode 100644 3party/boost/boost/phoenix/scope/preprocessed/lambda_30.hpp create mode 100644 3party/boost/boost/phoenix/scope/preprocessed/lambda_40.hpp create mode 100644 3party/boost/boost/phoenix/scope/preprocessed/lambda_50.hpp create mode 100644 3party/boost/boost/phoenix/scope/scoped_environment.hpp create mode 100644 3party/boost/boost/phoenix/scope/this.hpp create mode 100644 3party/boost/boost/phoenix/statement.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/catch_push_back.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/switch.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/switch_10.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/switch_20.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/switch_30.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/switch_40.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/switch_50.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/switch.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/try_catch_eval.hpp create mode 100644 3party/boost/boost/phoenix/statement/detail/try_catch_expression.hpp create mode 100644 3party/boost/boost/phoenix/statement/do_while.hpp create mode 100644 3party/boost/boost/phoenix/statement/for.hpp create mode 100644 3party/boost/boost/phoenix/statement/if.hpp create mode 100644 3party/boost/boost/phoenix/statement/sequence.hpp create mode 100644 3party/boost/boost/phoenix/statement/switch.hpp create mode 100644 3party/boost/boost/phoenix/statement/throw.hpp create mode 100644 3party/boost/boost/phoenix/statement/try_catch.hpp create mode 100644 3party/boost/boost/phoenix/statement/while.hpp create mode 100644 3party/boost/boost/phoenix/stl.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/begin.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/decay_array.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/end.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/has_equal_range.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/has_find.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/has_remove.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/has_remove_if.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/has_reverse.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/has_sort.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/has_unique.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/is_std_list.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/is_std_map.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/is_std_set.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/iteration.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/querying.hpp create mode 100644 3party/boost/boost/phoenix/stl/algorithm/transformation.hpp create mode 100644 3party/boost/boost/phoenix/stl/cmath.hpp create mode 100644 3party/boost/boost/phoenix/stl/container.hpp create mode 100644 3party/boost/boost/phoenix/stl/container/container.hpp create mode 100644 3party/boost/boost/phoenix/stl/container/detail/container.hpp create mode 100644 3party/boost/boost/phoenix/support/detail/iterate.hpp create mode 100644 3party/boost/boost/phoenix/support/detail/iterate_define.hpp create mode 100644 3party/boost/boost/phoenix/support/detail/iterate_undef.hpp create mode 100644 3party/boost/boost/phoenix/support/iterate.hpp create mode 100644 3party/boost/boost/phoenix/support/preprocessed/vector.hpp create mode 100644 3party/boost/boost/phoenix/support/preprocessed/vector_10.hpp create mode 100644 3party/boost/boost/phoenix/support/preprocessed/vector_20.hpp create mode 100644 3party/boost/boost/phoenix/support/preprocessed/vector_30.hpp create mode 100644 3party/boost/boost/phoenix/support/preprocessed/vector_40.hpp create mode 100644 3party/boost/boost/phoenix/support/preprocessed/vector_50.hpp create mode 100644 3party/boost/boost/phoenix/support/preprocessor/round.hpp create mode 100644 3party/boost/boost/phoenix/support/vector.hpp create mode 100644 3party/boost/boost/phoenix/version.hpp create mode 100644 3party/boost/boost/polygon/detail/polygon_simplify.hpp mode change 100755 => 100644 3party/boost/boost/polygon/detail/polygon_sort_adaptor.hpp mode change 100755 => 100644 3party/boost/boost/polygon/gmp_override.hpp mode change 100755 => 100644 3party/boost/boost/polygon/gtl.hpp mode change 100755 => 100644 3party/boost/boost/polygon/interval_concept.hpp mode change 100755 => 100644 3party/boost/boost/polygon/interval_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/interval_traits.hpp mode change 100755 => 100644 3party/boost/boost/polygon/isotropy.hpp mode change 100755 => 100644 3party/boost/boost/polygon/point_3d_concept.hpp mode change 100755 => 100644 3party/boost/boost/polygon/point_3d_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/point_3d_traits.hpp mode change 100755 => 100644 3party/boost/boost/polygon/point_concept.hpp mode change 100755 => 100644 3party/boost/boost/polygon/point_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/point_traits.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_45_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_45_set_concept.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_45_set_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_45_set_traits.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_45_with_holes_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_90_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_90_set_concept.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_90_set_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_90_set_traits.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_90_with_holes_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_set_concept.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_set_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_set_traits.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_traits.hpp mode change 100755 => 100644 3party/boost/boost/polygon/polygon_with_holes_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/rectangle_concept.hpp mode change 100755 => 100644 3party/boost/boost/polygon/rectangle_data.hpp mode change 100755 => 100644 3party/boost/boost/polygon/rectangle_traits.hpp mode change 100755 => 100644 3party/boost/boost/polygon/transform.hpp create mode 100644 3party/boost/boost/proto/context/detail/callable_eval.hpp create mode 100644 3party/boost/boost/proto/context/detail/default_eval.hpp create mode 100644 3party/boost/boost/proto/context/detail/null_eval.hpp create mode 100644 3party/boost/boost/proto/context/detail/preprocessed/callable_eval.hpp create mode 100644 3party/boost/boost/proto/context/detail/preprocessed/default_eval.hpp create mode 100644 3party/boost/boost/proto/context/detail/preprocessed/null_eval.hpp create mode 100644 3party/boost/boost/proto/detail/and_n.hpp create mode 100644 3party/boost/boost/proto/detail/args.hpp create mode 100644 3party/boost/boost/proto/detail/basic_expr.hpp create mode 100644 3party/boost/boost/proto/detail/classtypeof.hpp create mode 100644 3party/boost/boost/proto/detail/deduce_domain_n.hpp create mode 100644 3party/boost/boost/proto/detail/deep_copy.hpp rename 3party/boost/boost/proto/detail/{expr0.hpp => expr.hpp} (66%) delete mode 100644 3party/boost/boost/proto/detail/expr1.hpp create mode 100644 3party/boost/boost/proto/detail/expr_funop.hpp create mode 100644 3party/boost/boost/proto/detail/extends_funop.hpp create mode 100644 3party/boost/boost/proto/detail/extends_funop_const.hpp create mode 100644 3party/boost/boost/proto/detail/generate_by_value.hpp create mode 100644 3party/boost/boost/proto/detail/lambda_matches.hpp create mode 100644 3party/boost/boost/proto/detail/make_expr.hpp create mode 100644 3party/boost/boost/proto/detail/make_expr_.hpp create mode 100644 3party/boost/boost/proto/detail/make_expr_funop.hpp create mode 100644 3party/boost/boost/proto/detail/matches_.hpp create mode 100644 3party/boost/boost/proto/detail/memfun_funop.hpp create mode 100644 3party/boost/boost/proto/detail/or_n.hpp create mode 100644 3party/boost/boost/proto/detail/poly_function_funop.hpp create mode 100644 3party/boost/boost/proto/detail/poly_function_traits.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/and_n.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/args.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/basic_expr.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/classtypeof.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/deduce_domain_n.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/deep_copy.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/expr.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/expr_variadic.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/extends_funop.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/extends_funop_const.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/funop.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/generate_by_value.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/lambda_matches.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/make_expr.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/make_expr_.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/make_expr_funop.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/matches_.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/memfun_funop.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/or_n.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/poly_function_funop.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/poly_function_traits.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/template_arity_helper.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/traits.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/unpack_expr_.hpp create mode 100644 3party/boost/boost/proto/detail/preprocessed/vararg_matches_impl.hpp create mode 100644 3party/boost/boost/proto/detail/template_arity.hpp create mode 100644 3party/boost/boost/proto/detail/template_arity_helper.hpp create mode 100644 3party/boost/boost/proto/detail/traits.hpp create mode 100644 3party/boost/boost/proto/detail/unpack_expr_.hpp create mode 100644 3party/boost/boost/proto/detail/vararg_matches_impl.hpp create mode 100644 3party/boost/boost/proto/transform/detail/call.hpp create mode 100644 3party/boost/boost/proto/transform/detail/construct_funop.hpp create mode 100644 3party/boost/boost/proto/transform/detail/construct_pod_funop.hpp create mode 100644 3party/boost/boost/proto/transform/detail/default_function_impl.hpp create mode 100644 3party/boost/boost/proto/transform/detail/fold_impl.hpp create mode 100644 3party/boost/boost/proto/transform/detail/lazy.hpp create mode 100644 3party/boost/boost/proto/transform/detail/make.hpp create mode 100644 3party/boost/boost/proto/transform/detail/make_gcc_workaround.hpp create mode 100644 3party/boost/boost/proto/transform/detail/pass_through_impl.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/call.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/construct_funop.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/construct_pod_funop.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/default_function_impl.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/fold_impl.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/lazy.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/make.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/pass_through_impl.hpp create mode 100644 3party/boost/boost/proto/transform/detail/preprocessed/when.hpp create mode 100644 3party/boost/boost/proto/transform/detail/when.hpp create mode 100644 3party/boost/boost/proto/transform/integral_c.hpp create mode 100644 3party/boost/boost/random/chi_squared_distribution.hpp create mode 100644 3party/boost/boost/random/detail/generator_bits.hpp create mode 100644 3party/boost/boost/random/detail/generator_seed_seq.hpp create mode 100644 3party/boost/boost/random/detail/integer_log2.hpp create mode 100644 3party/boost/boost/random/detail/large_arithmetic.hpp create mode 100644 3party/boost/boost/random/detail/operators.hpp delete mode 100644 3party/boost/boost/random/detail/pass_through_engine.hpp create mode 100644 3party/boost/boost/random/detail/seed_impl.hpp create mode 100644 3party/boost/boost/random/detail/vector_io.hpp create mode 100644 3party/boost/boost/random/discrete_distribution.hpp create mode 100644 3party/boost/boost/random/extreme_value_distribution.hpp create mode 100644 3party/boost/boost/random/fisher_f_distribution.hpp create mode 100644 3party/boost/boost/random/generate_canonical.hpp create mode 100644 3party/boost/boost/random/independent_bits.hpp create mode 100644 3party/boost/boost/random/negative_binomial_distribution.hpp create mode 100644 3party/boost/boost/random/piecewise_constant_distribution.hpp create mode 100644 3party/boost/boost/random/piecewise_linear_distribution.hpp create mode 100644 3party/boost/boost/random/random_device.hpp create mode 100644 3party/boost/boost/random/seed_seq.hpp create mode 100644 3party/boost/boost/random/shuffle_order.hpp create mode 100644 3party/boost/boost/random/student_t_distribution.hpp create mode 100644 3party/boost/boost/random/taus88.hpp create mode 100644 3party/boost/boost/random/uniform_int_distribution.hpp create mode 100644 3party/boost/boost/random/uniform_real_distribution.hpp create mode 100644 3party/boost/boost/random/weibull_distribution.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/argument_fwd.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/copied.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/filtered.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/indexed.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/map.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/reversed.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/sliced.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/strided.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/tokenized.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/transformed.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptor/uniqued.hpp mode change 100755 => 100644 3party/boost/boost/range/adaptors.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/adjacent_find.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/binary_search.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/copy_backward.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/count.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/count_if.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/equal.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/equal_range.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/fill.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/fill_n.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/find.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/find_end.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/find_first_of.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/find_if.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/for_each.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/generate.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/heap_algorithm.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/inplace_merge.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/lexicographical_compare.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/lower_bound.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/max_element.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/merge.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/min_element.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/mismatch.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/nth_element.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/partial_sort.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/partial_sort_copy.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/partition.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/permutation.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/random_shuffle.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/remove.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/remove_copy.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/remove_copy_if.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/remove_if.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/replace.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/replace_copy.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/replace_copy_if.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/replace_if.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/reverse.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/reverse_copy.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/rotate.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/rotate_copy.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/search.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/search_n.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/set_algorithm.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/sort.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/stable_partition.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/stable_sort.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/swap_ranges.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/transform.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/unique.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/unique_copy.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm/upper_bound.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm_ext.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm_ext/copy_n.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm_ext/erase.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm_ext/for_each.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm_ext/insert.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm_ext/is_sorted.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm_ext/overwrite.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm_ext/push_back.hpp mode change 100755 => 100644 3party/boost/boost/range/algorithm_ext/push_front.hpp mode change 100755 => 100644 3party/boost/boost/range/combine.hpp mode change 100755 => 100644 3party/boost/boost/range/counting_range.hpp mode change 100755 => 100644 3party/boost/boost/range/detail/demote_iterator_traversal_tag.hpp mode change 100755 => 100644 3party/boost/boost/range/detail/extract_optional_type.hpp mode change 100755 => 100644 3party/boost/boost/range/detail/misc_concept.hpp mode change 100755 => 100644 3party/boost/boost/range/detail/range_return.hpp mode change 100755 => 100644 3party/boost/boost/range/istream_range.hpp mode change 100755 => 100644 3party/boost/boost/range/iterator_range_core.hpp mode change 100755 => 100644 3party/boost/boost/range/iterator_range_io.hpp mode change 100755 => 100644 3party/boost/boost/range/numeric.hpp create mode 100644 3party/boost/boost/ratio.hpp create mode 100644 3party/boost/boost/ratio/detail/mpl/abs.hpp create mode 100644 3party/boost/boost/ratio/detail/mpl/gcd.hpp create mode 100644 3party/boost/boost/ratio/detail/mpl/lcm.hpp create mode 100644 3party/boost/boost/ratio/detail/mpl/sign.hpp create mode 100644 3party/boost/boost/ratio/detail/overflow_helpers.hpp create mode 100644 3party/boost/boost/ratio/include.hpp create mode 100644 3party/boost/boost/ratio/mpl/abs.hpp create mode 100644 3party/boost/boost/ratio/mpl/arithmetic.hpp create mode 100644 3party/boost/boost/ratio/mpl/comparison.hpp create mode 100644 3party/boost/boost/ratio/mpl/divides.hpp create mode 100644 3party/boost/boost/ratio/mpl/equal_to.hpp create mode 100644 3party/boost/boost/ratio/mpl/gcd.hpp create mode 100644 3party/boost/boost/ratio/mpl/greater.hpp create mode 100644 3party/boost/boost/ratio/mpl/greater_equal.hpp create mode 100644 3party/boost/boost/ratio/mpl/lcm.hpp create mode 100644 3party/boost/boost/ratio/mpl/less.hpp create mode 100644 3party/boost/boost/ratio/mpl/less_equal.hpp create mode 100644 3party/boost/boost/ratio/mpl/minus.hpp create mode 100644 3party/boost/boost/ratio/mpl/negate.hpp create mode 100644 3party/boost/boost/ratio/mpl/not_equal_to.hpp create mode 100644 3party/boost/boost/ratio/mpl/numeric_cast.hpp create mode 100644 3party/boost/boost/ratio/mpl/plus.hpp create mode 100644 3party/boost/boost/ratio/mpl/rational_c_tag.hpp create mode 100644 3party/boost/boost/ratio/mpl/rational_constant.hpp create mode 100644 3party/boost/boost/ratio/mpl/sign.hpp create mode 100644 3party/boost/boost/ratio/mpl/times.hpp create mode 100644 3party/boost/boost/ratio/ratio.hpp create mode 100644 3party/boost/boost/ratio/ratio_fwd.hpp create mode 100644 3party/boost/boost/ratio/ratio_io.hpp create mode 100644 3party/boost/boost/ratio/ratio_static_string.hpp create mode 100644 3party/boost/boost/spirit/home/karma/detail/indirect_iterator.hpp create mode 100644 3party/boost/boost/spirit/home/lex/argument_phoenix.hpp create mode 100644 3party/boost/boost/spirit/home/lex/lexer/lexertl/position_token.hpp create mode 100644 3party/boost/boost/spirit/home/lex/lexer/support_functions_expression.hpp create mode 100644 3party/boost/boost/spirit/home/lex/qi/plain_raw_token.hpp create mode 100644 3party/boost/boost/spirit/home/lex/qi/plain_tokenid_mask.hpp create mode 100644 3party/boost/boost/spirit/home/qi/nonterminal/success_handler.hpp create mode 100644 3party/boost/boost/spirit/home/support/argument_expression.hpp create mode 100644 3party/boost/boost/spirit/home/support/detail/is_spirit_tag.hpp create mode 100644 3party/boost/boost/spirit/home/support/limits.hpp create mode 100644 3party/boost/boost/spirit/home/support/terminal_expression.hpp create mode 100644 3party/boost/boost/spirit/home/support/utree.hpp create mode 100644 3party/boost/boost/spirit/home/support/utree/detail/utree_detail1.hpp create mode 100644 3party/boost/boost/spirit/home/support/utree/detail/utree_detail2.hpp create mode 100644 3party/boost/boost/spirit/home/support/utree/operators.hpp create mode 100644 3party/boost/boost/spirit/home/support/utree/utree.hpp create mode 100644 3party/boost/boost/spirit/home/support/utree/utree_traits.hpp create mode 100644 3party/boost/boost/spirit/home/support/utree/utree_traits_fwd.hpp create mode 100644 3party/boost/boost/spirit/include/lex_lexertl_position_token.hpp create mode 100644 3party/boost/boost/spirit/include/lex_lexertl_token.hpp create mode 100644 3party/boost/boost/spirit/include/lex_plain_token.hpp create mode 100644 3party/boost/boost/spirit/include/phoenix_limits.hpp create mode 100644 3party/boost/boost/spirit/include/qi_as_string.hpp create mode 100644 3party/boost/boost/spirit/include/support_info.hpp create mode 100644 3party/boost/boost/spirit/include/support_utree.hpp create mode 100644 3party/boost/boost/spirit/repository/home/qi/directive/kwd.hpp create mode 100644 3party/boost/boost/spirit/repository/home/qi/operator.hpp create mode 100644 3party/boost/boost/spirit/repository/home/qi/operator/detail/keywords.hpp create mode 100644 3party/boost/boost/spirit/repository/home/qi/operator/keywords.hpp create mode 100644 3party/boost/boost/spirit/repository/home/qi/primitive/advance.hpp create mode 100644 3party/boost/boost/spirit/repository/home/support/kwd.hpp create mode 100644 3party/boost/boost/spirit/repository/include/qi_advance.hpp create mode 100644 3party/boost/boost/spirit/repository/include/qi_keywords.hpp create mode 100644 3party/boost/boost/spirit/repository/include/qi_kwd.hpp diff --git a/3party/boost/boost/accumulators/accumulators_fwd.hpp b/3party/boost/boost/accumulators/accumulators_fwd.hpp index d5ca5c2958..9986a537b1 100644 --- a/3party/boost/boost/accumulators/accumulators_fwd.hpp +++ b/3party/boost/boost/accumulators/accumulators_fwd.hpp @@ -48,6 +48,9 @@ # define BOOST_ACCUMULATORS_PROTO_DISABLE_IF_IS_CONST(T) #endif +#define BOOST_ACCUMULATORS_GCC_VERSION \ + (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) + namespace boost { namespace accumulators { diff --git a/3party/boost/boost/accumulators/statistics.hpp b/3party/boost/boost/accumulators/statistics.hpp index 6f505c8d9d..1d136e58eb 100644 --- a/3party/boost/boost/accumulators/statistics.hpp +++ b/3party/boost/boost/accumulators/statistics.hpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -48,6 +49,7 @@ #include #include #include +#include #include #include #include diff --git a/3party/boost/boost/accumulators/statistics/sum_kahan.hpp b/3party/boost/boost/accumulators/statistics/sum_kahan.hpp new file mode 100644 index 0000000000..b5b9958643 --- /dev/null +++ b/3party/boost/boost/accumulators/statistics/sum_kahan.hpp @@ -0,0 +1,188 @@ +/////////////////////////////////////////////////////////////////////////////// +// sum_kahan.hpp +// +// Copyright 2010 Gaetano Mendola, 2011 Simon West. 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_ACCUMULATORS_STATISTICS_SUM_KAHAN_HPP_EAN_26_07_2010 +#define BOOST_ACCUMULATORS_STATISTICS_SUM_KAHAN_HPP_EAN_26_07_2010 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace accumulators +{ + +namespace impl +{ + +#if _MSC_VER > 1400 +# pragma float_control(push) +# pragma float_control(precise, on) +#endif + +template +struct sum_kahan_impl + : accumulator_base +{ + typedef Sample result_type; + + //////////////////////////////////////////////////////////////////////////// + // sum_kahan_impl + /** + @brief Kahan summation algorithm + + The Kahan summation algorithm reduces the numerical error obtained with standard + sequential sum. + + */ + template + sum_kahan_impl(Args const & args) + : sum(args[parameter::keyword::get() | Sample()]), + compensation(boost::numeric_cast(0.0)) + { + } + + template + void +#if BOOST_ACCUMULATORS_GCC_VERSION > 40305 + __attribute__((optimize("no-associative-math"))) +#endif + operator ()(Args const & args) + { + const Sample myTmp1 = args[parameter::keyword::get()] - this->compensation; + const Sample myTmp2 = this->sum + myTmp1; + this->compensation = (myTmp2 - this->sum) - myTmp1; + this->sum = myTmp2; + } + + result_type result(dont_care) const + { + return this->sum; + } + +private: + Sample sum; + Sample compensation; +}; + +#if _MSC_VER > 1400 +# pragma float_control(pop) +#endif + +} // namespace impl + +/////////////////////////////////////////////////////////////////////////////// +// tag::sum_kahan +// tag::sum_of_weights_kahan +// tag::sum_of_variates_kahan +// +namespace tag +{ + + struct sum_kahan + : depends_on<> + { + /// INTERNAL ONLY + /// + typedef impl::sum_kahan_impl< mpl::_1, tag::sample > impl; + }; + + struct sum_of_weights_kahan + : depends_on<> + { + typedef mpl::true_ is_weight_accumulator; + /// INTERNAL ONLY + /// + typedef accumulators::impl::sum_kahan_impl impl; + }; + + template + struct sum_of_variates_kahan + : depends_on<> + { + /// INTERNAL ONLY + /// + typedef mpl::always > impl; + }; + +} // namespace tag + +/////////////////////////////////////////////////////////////////////////////// +// extract::sum_kahan +// extract::sum_of_weights_kahan +// extract::sum_of_variates_kahan +// +namespace extract +{ + extractor const sum_kahan = {}; + extractor const sum_of_weights_kahan = {}; + extractor const sum_of_variates_kahan = {}; + + BOOST_ACCUMULATORS_IGNORE_GLOBAL(sum_kahan) + BOOST_ACCUMULATORS_IGNORE_GLOBAL(sum_of_weights_kahan) + BOOST_ACCUMULATORS_IGNORE_GLOBAL(sum_of_variates_kahan) +} // namespace extract + +using extract::sum_kahan; +using extract::sum_of_weights_kahan; +using extract::sum_of_variates_kahan; + +// sum(kahan) -> sum_kahan +template<> +struct as_feature +{ + typedef tag::sum_kahan type; +}; + +// sum_of_weights(kahan) -> sum_of_weights_kahan +template<> +struct as_feature +{ + typedef tag::sum_of_weights_kahan type; +}; + +// So that sum_kahan can be automatically substituted with +// weighted_sum_kahan when the weight parameter is non-void. +template<> +struct as_weighted_feature +{ + typedef tag::weighted_sum_kahan type; +}; + +template<> +struct feature_of + : feature_of +{}; + +// for the purposes of feature-based dependency resolution, +// sum_kahan provides the same feature as sum +template<> +struct feature_of + : feature_of +{ +}; + +// for the purposes of feature-based dependency resolution, +// sum_of_weights_kahan provides the same feature as sum_of_weights +template<> +struct feature_of + : feature_of +{ +}; + +template +struct feature_of > + : feature_of +{ +}; + +}} // namespace boost::accumulators + +#endif + diff --git a/3party/boost/boost/accumulators/statistics/weighted_sum_kahan.hpp b/3party/boost/boost/accumulators/statistics/weighted_sum_kahan.hpp new file mode 100644 index 0000000000..ad9b83d4b9 --- /dev/null +++ b/3party/boost/boost/accumulators/statistics/weighted_sum_kahan.hpp @@ -0,0 +1,138 @@ +/////////////////////////////////////////////////////////////////////////////// +// weighted_sum_kahan.hpp +// +// Copyright 2011 Simon West. 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_ACCUMULATORS_STATISTICS_WEIGHTED_SUM_KAHAN_HPP_EAN_11_05_2011 +#define BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SUM_KAHAN_HPP_EAN_11_05_2011 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace accumulators +{ + +namespace impl +{ +#if _MSC_VER > 1400 +# pragma float_control(push) +# pragma float_control(precise, on) +#endif + + /////////////////////////////////////////////////////////////////////////////// + // weighted_sum_kahan_impl + template + struct weighted_sum_kahan_impl + : accumulator_base + { + typedef typename numeric::functional::multiplies::result_type weighted_sample; + + // for boost::result_of + typedef weighted_sample result_type; + + template + weighted_sum_kahan_impl(Args const &args) + : weighted_sum_( + args[parameter::keyword::get() | Sample()] * numeric::one::value), + compensation(boost::numeric_cast(0.0)) + { + } + + template + void +#if BOOST_ACCUMULATORS_GCC_VERSION > 40305 + __attribute__((optimize("no-associative-math"))) +#endif + operator ()(Args const &args) + { + const weighted_sample myTmp1 = args[parameter::keyword::get()] * args[weight] - this->compensation; + const weighted_sample myTmp2 = this->weighted_sum_ + myTmp1; + this->compensation = (myTmp2 - this->weighted_sum_) - myTmp1; + this->weighted_sum_ = myTmp2; + + } + + result_type result(dont_care) const + { + return this->weighted_sum_; + } + + private: + weighted_sample weighted_sum_; + weighted_sample compensation; + }; + +#if _MSC_VER > 1400 +# pragma float_control(pop) +#endif + +} // namespace impl + +/////////////////////////////////////////////////////////////////////////////// +// tag::weighted_sum_kahan +// tag::weighted_sum_of_variates_kahan +// +namespace tag +{ + struct weighted_sum_kahan + : depends_on<> + { + /// INTERNAL ONLY + /// + typedef accumulators::impl::weighted_sum_kahan_impl impl; + }; + + template + struct weighted_sum_of_variates_kahan + : depends_on<> + { + /// INTERNAL ONLY + /// + typedef accumulators::impl::weighted_sum_kahan_impl impl; + }; + +} + +/////////////////////////////////////////////////////////////////////////////// +// extract::weighted_sum_kahan +// extract::weighted_sum_of_variates_kahan +// +namespace extract +{ + extractor const weighted_sum_kahan = {}; + extractor const weighted_sum_of_variates_kahan = {}; + + BOOST_ACCUMULATORS_IGNORE_GLOBAL(weighted_sum_kahan) + BOOST_ACCUMULATORS_IGNORE_GLOBAL(weighted_sum_of_variates_kahan) +} + +using extract::weighted_sum_kahan; +using extract::weighted_sum_of_variates_kahan; + +// weighted_sum(kahan) -> weighted_sum_kahan +template<> +struct as_feature +{ + typedef tag::weighted_sum_kahan type; +}; + +template +struct feature_of > + : feature_of +{ +}; + +}} // namespace boost::accumulators + +#endif diff --git a/3party/boost/boost/accumulators/statistics_fwd.hpp b/3party/boost/boost/accumulators/statistics_fwd.hpp index 196814b686..61904f30b3 100644 --- a/3party/boost/boost/accumulators/statistics_fwd.hpp +++ b/3party/boost/boost/accumulators/statistics_fwd.hpp @@ -109,6 +109,10 @@ namespace tag struct sum_of_weights; template struct sum_of_variates; + struct sum_kahan; + struct sum_of_weights_kahan; + template + struct sum_of_variates_kahan; template struct tail; template @@ -263,6 +267,9 @@ namespace impl template struct sum_impl; + template + struct sum_kahan_impl; + template struct tail_impl; @@ -338,6 +345,9 @@ namespace impl template struct weighted_sum_impl; + template + struct weighted_sum_kahan_impl; + template struct non_coherent_weighted_tail_mean_impl; @@ -414,6 +424,9 @@ struct quadratic {}; struct regular {}; struct for_median {}; +// modifier for sum_kahan, sum_of_weights_kahan, sum_of_variates_kahan, weighted_sum_kahan +struct kahan {}; + }} // namespace boost::accumulators #endif diff --git a/3party/boost/boost/algorithm/string/detail/formatter.hpp b/3party/boost/boost/algorithm/string/detail/formatter.hpp index bd6a780297..8e7b727e7d 100644 --- a/3party/boost/boost/algorithm/string/detail/formatter.hpp +++ b/3party/boost/boost/algorithm/string/detail/formatter.hpp @@ -87,6 +87,31 @@ namespace boost { } }; +// 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 diff --git a/3party/boost/boost/algorithm/string/formatter.hpp b/3party/boost/boost/algorithm/string/formatter.hpp index 50006df102..ab5921e730 100644 --- a/3party/boost/boost/algorithm/string/formatter.hpp +++ b/3party/boost/boost/algorithm/string/formatter.hpp @@ -36,7 +36,7 @@ namespace boost { //! Constant formatter /*! - Construct the \c const_formatter. Const formatter always returns + 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 @@ -55,7 +55,7 @@ namespace boost { //! Identity formatter /*! - Construct the \c identity_formatter. Identity formatter always returns + Constructs an \c identity_formatter. Identity formatter always returns the parameter. \return An instance of the \c identity_formatter object. @@ -73,7 +73,7 @@ namespace boost { //! Empty formatter /*! - Construct the \c empty_formatter. Empty formatter always returns an empty + Constructs an \c empty_formatter. Empty formatter always returns an empty sequence. \param Input container used to select a correct value_type for the @@ -89,6 +89,22 @@ namespace boost { 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 @@ -96,6 +112,7 @@ namespace boost { using algorithm::const_formatter; using algorithm::identity_formatter; using algorithm::empty_formatter; + using algorithm::dissect_formatter; } // namespace boost diff --git a/3party/boost/boost/algorithm/string/trim_all.hpp b/3party/boost/boost/algorithm/string/trim_all.hpp new file mode 100644 index 0000000000..70fd0412ec --- /dev/null +++ b/3party/boost/boost/algorithm/string/trim_all.hpp @@ -0,0 +1,217 @@ +// 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_ALL_HPP +#define BOOST_STRING_TRIM_ALL_HPP + +#include + +#include +#include +#include +#include +#include +#include + +/*! \file + Defines trim_all algorithms. + + Just like \c trim, \c trim_all removes all trailing and leading spaces from a + sequence (string). In addition, spaces in the middle of the sequence are truncated + to just one character. Space is recognized using given locales. + + \c trim_fill acts as trim_all, but the spaces in the middle are replaces with + a user-define sequence of character. + + 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 { + + // multi line trim ----------------------------------------------- // + + //! Trim All - parametric + /*! + Remove all leading and trailing spaces from the input and + compress all other spaces to a single character. + The result is a trimmed copy of the input + + \param Input An input sequence + \param IsSpace An unary predicate identifying spaces + \return A trimmed copy of the input + */ + template + inline SequenceT trim_all_copy_if(const SequenceT& Input, PredicateT IsSpace) + { + return + ::boost::find_format_all_copy( + ::boost::trim_copy_if(Input, IsSpace), + ::boost::token_finder(IsSpace, ::boost::token_compress_on), + ::boost::dissect_formatter(::boost::head_finder(1))); + } + + + //! Trim All + /*! + Remove all leading and trailing spaces from the input and + compress all other spaces to a single character. + The input sequence is modified in-place. + + \param Input An input sequence + \param IsSpace An unary predicate identifying spaces + */ + template + inline void trim_all_if(SequenceT& Input, PredicateT IsSpace) + { + ::boost::trim_if(Input, IsSpace); + ::boost::find_format_all( + Input, + ::boost::token_finder(IsSpace, ::boost::token_compress_on), + ::boost::dissect_formatter(::boost::head_finder(1))); + } + + + //! Trim All + /*! + Remove all leading and trailing spaces from the input and + compress all other spaces to a single character. + 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 + */ + template + inline SequenceT trim_all_copy(const SequenceT& Input, const std::locale& Loc =std::locale()) + { + return trim_all_copy_if(Input, ::boost::is_space(Loc)); + } + + + //! Trim All + /*! + Remove all leading and trailing spaces from the input and + compress all other spaces to a single character. + The input sequence is modified in-place. + + \param Input An input sequence + \param Loc A locale used for 'space' classification + \return A trimmed copy of the input + */ + template + inline void trim_all(SequenceT& Input, const std::locale& Loc =std::locale()) + { + trim_all_if(Input, ::boost::is_space(Loc)); + } + + + //! Trim Fill - parametric + /*! + Remove all leading and trailing spaces from the input and + replace all every block of consecutive spaces with a fill string + defined by user. + The result is a trimmed copy of the input + + \param Input An input sequence + \param Fill A string used to fill the inner spaces + \param IsSpace An unary predicate identifying spaces + \return A trimmed copy of the input + */ + template + inline SequenceT trim_fill_copy_if(const SequenceT& Input, const RangeT& Fill, PredicateT IsSpace) + { + return + ::boost::find_format_all_copy( + ::boost::trim_copy_if(Input, IsSpace), + ::boost::token_finder(IsSpace, ::boost::token_compress_on), + ::boost::const_formatter(::boost::as_literal(Fill))); + } + + + //! Trim Fill + /*! + Remove all leading and trailing spaces from the input and + replace all every block of consecutive spaces with a fill string + defined by user. + The input sequence is modified in-place. + + \param Input An input sequence + \param Fill A string used to fill the inner spaces + \param IsSpace An unary predicate identifying spaces + */ + template + inline void trim_fill_if(SequenceT& Input, const RangeT& Fill, PredicateT IsSpace) + { + ::boost::trim_if(Input, IsSpace); + ::boost::find_format_all( + Input, + ::boost::token_finder(IsSpace, ::boost::token_compress_on), + ::boost::const_formatter(::boost::as_literal(Fill))); + } + + + //! Trim Fill + /*! + Remove all leading and trailing spaces from the input and + replace all every block of consecutive spaces with a fill string + defined by user. + The result is a trimmed copy of the input + + \param Input An input sequence + \param Fill A string used to fill the inner spaces + \param Loc A locale used for 'space' classification + \return A trimmed copy of the input + */ + template + inline SequenceT trim_fill_copy(const SequenceT& Input, const RangeT& Fill, const std::locale& Loc =std::locale()) + { + return trim_fill_copy_if(Input, Fill, ::boost::is_space(Loc)); + } + + + //! Trim Fill + /*! + Remove all leading and trailing spaces from the input and + replace all every block of consecutive spaces with a fill string + defined by user. + The input sequence is modified in-place. + + \param Input An input sequence + \param Fill A string used to fill the inner spaces + \param Loc A locale used for 'space' classification + \return A trimmed copy of the input + */ + template + inline void trim_fill(SequenceT& Input, const RangeT& Fill, const std::locale& Loc =std::locale()) + { + trim_fill_if(Input, Fill, ::boost::is_space(Loc)); + } + + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::trim_all; + using algorithm::trim_all_if; + using algorithm::trim_all_copy; + using algorithm::trim_all_copy_if; + using algorithm::trim_fill; + using algorithm::trim_fill_if; + using algorithm::trim_fill_copy; + using algorithm::trim_fill_copy_if; + +} // namespace boost + +#endif // BOOST_STRING_TRIM_ALL_HPP diff --git a/3party/boost/boost/array.hpp b/3party/boost/boost/array.hpp index 85b63a2800..ffb504bdbb 100644 --- a/3party/boost/boost/array.hpp +++ b/3party/boost/boost/array.hpp @@ -322,7 +322,7 @@ namespace boost { 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) +#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 diff --git a/3party/boost/boost/asio.hpp b/3party/boost/boost/asio.hpp index 26818068e2..fdfd7fa7b7 100644 --- a/3party/boost/boost/asio.hpp +++ b/3party/boost/boost/asio.hpp @@ -21,7 +21,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -36,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -76,9 +79,12 @@ #include #include #include +#include #include #include #include +#include +#include #include #include #include diff --git a/3party/boost/boost/asio/basic_datagram_socket.hpp b/3party/boost/boost/asio/basic_datagram_socket.hpp index a79967f420..bdbcec14e2 100644 --- a/3party/boost/boost/asio/basic_datagram_socket.hpp +++ b/3party/boost/boost/asio/basic_datagram_socket.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -42,8 +43,12 @@ class basic_datagram_socket : public basic_socket { public: + /// (Deprecated: Use native_handle_type.) The native representation of a + /// socket. + typedef typename DatagramSocketService::native_handle_type native_type; + /// The native representation of a socket. - typedef typename DatagramSocketService::native_type native_type; + typedef typename DatagramSocketService::native_handle_type native_handle_type; /// The protocol type. typedef Protocol protocol_type; @@ -121,12 +126,48 @@ public: * @throws boost::system::system_error Thrown on failure. */ basic_datagram_socket(boost::asio::io_service& io_service, - const protocol_type& protocol, const native_type& native_socket) + const protocol_type& protocol, const native_handle_type& native_socket) : basic_socket( io_service, protocol, native_socket) { } +#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move-construct a basic_datagram_socket from another. + /** + * This constructor moves a datagram socket from one object to another. + * + * @param other The other basic_datagram_socket object from which the move + * will occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_datagram_socket(io_service&) constructor. + */ + basic_datagram_socket(basic_datagram_socket&& other) + : basic_socket( + BOOST_ASIO_MOVE_CAST(basic_datagram_socket)(other)) + { + } + + /// Move-assign a basic_datagram_socket from another. + /** + * This assignment operator moves a datagram socket from one object to + * another. + * + * @param other The other basic_datagram_socket object from which the move + * will occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_datagram_socket(io_service&) constructor. + */ + basic_datagram_socket& operator=(basic_datagram_socket&& other) + { + basic_socket::operator=( + BOOST_ASIO_MOVE_CAST(basic_datagram_socket)(other)); + return *this; + } +#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Send some data on a connected socket. /** * This function is used to send data on the datagram socket. The function @@ -153,8 +194,9 @@ public: std::size_t send(const ConstBufferSequence& buffers) { boost::system::error_code ec; - std::size_t s = this->service.send(this->implementation, buffers, 0, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().send( + this->get_implementation(), buffers, 0, ec); + boost::asio::detail::throw_error(ec, "send"); return s; } @@ -180,9 +222,9 @@ public: socket_base::message_flags flags) { boost::system::error_code ec; - std::size_t s = this->service.send( - this->implementation, buffers, flags, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().send( + this->get_implementation(), buffers, flags, ec); + boost::asio::detail::throw_error(ec, "send"); return s; } @@ -207,7 +249,8 @@ public: std::size_t send(const ConstBufferSequence& buffers, socket_base::message_flags flags, boost::system::error_code& ec) { - return this->service.send(this->implementation, buffers, flags, ec); + return this->get_service().send( + this->get_implementation(), buffers, flags, ec); } /// Start an asynchronous send on a connected socket. @@ -247,9 +290,15 @@ public: * std::vector. */ template - void async_send(const ConstBufferSequence& buffers, WriteHandler handler) + void async_send(const ConstBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - this->service.async_send(this->implementation, buffers, 0, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_send(this->get_implementation(), + buffers, 0, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Start an asynchronous send on a connected socket. @@ -283,9 +332,15 @@ public: */ template void async_send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, WriteHandler handler) + socket_base::message_flags flags, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - this->service.async_send(this->implementation, buffers, flags, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_send(this->get_implementation(), + buffers, flags, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Send a datagram to the specified endpoint. @@ -318,9 +373,9 @@ public: const endpoint_type& destination) { boost::system::error_code ec; - std::size_t s = this->service.send_to( - this->implementation, buffers, destination, 0, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().send_to( + this->get_implementation(), buffers, destination, 0, ec); + boost::asio::detail::throw_error(ec, "send_to"); return s; } @@ -345,9 +400,9 @@ public: const endpoint_type& destination, socket_base::message_flags flags) { boost::system::error_code ec; - std::size_t s = this->service.send_to( - this->implementation, buffers, destination, flags, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().send_to( + this->get_implementation(), buffers, destination, flags, ec); + boost::asio::detail::throw_error(ec, "send_to"); return s; } @@ -372,7 +427,7 @@ public: const endpoint_type& destination, socket_base::message_flags flags, boost::system::error_code& ec) { - return this->service.send_to(this->implementation, + return this->get_service().send_to(this->get_implementation(), buffers, destination, flags, ec); } @@ -415,10 +470,15 @@ public: */ template void async_send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, WriteHandler handler) + const endpoint_type& destination, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - this->service.async_send_to(this->implementation, buffers, destination, 0, - handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_send_to(this->get_implementation(), buffers, + destination, 0, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Start an asynchronous send. @@ -451,10 +511,14 @@ public: template void async_send_to(const ConstBufferSequence& buffers, const endpoint_type& destination, socket_base::message_flags flags, - WriteHandler handler) + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - this->service.async_send_to(this->implementation, buffers, destination, - flags, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_send_to(this->get_implementation(), buffers, + destination, flags, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Receive some data on a connected socket. @@ -485,9 +549,9 @@ public: std::size_t receive(const MutableBufferSequence& buffers) { boost::system::error_code ec; - std::size_t s = this->service.receive( - this->implementation, buffers, 0, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().receive( + this->get_implementation(), buffers, 0, ec); + boost::asio::detail::throw_error(ec, "receive"); return s; } @@ -514,9 +578,9 @@ public: socket_base::message_flags flags) { boost::system::error_code ec; - std::size_t s = this->service.receive( - this->implementation, buffers, flags, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().receive( + this->get_implementation(), buffers, flags, ec); + boost::asio::detail::throw_error(ec, "receive"); return s; } @@ -542,7 +606,8 @@ public: std::size_t receive(const MutableBufferSequence& buffers, socket_base::message_flags flags, boost::system::error_code& ec) { - return this->service.receive(this->implementation, buffers, flags, ec); + return this->get_service().receive( + this->get_implementation(), buffers, flags, ec); } /// Start an asynchronous receive on a connected socket. @@ -582,9 +647,15 @@ public: * std::vector. */ template - void async_receive(const MutableBufferSequence& buffers, ReadHandler handler) + void async_receive(const MutableBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - this->service.async_receive(this->implementation, buffers, 0, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive(this->get_implementation(), + buffers, 0, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } /// Start an asynchronous receive on a connected socket. @@ -617,9 +688,15 @@ public: */ template void async_receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags, ReadHandler handler) + socket_base::message_flags flags, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - this->service.async_receive(this->implementation, buffers, flags, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive(this->get_implementation(), + buffers, flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } /// Receive a datagram with the endpoint of the sender. @@ -653,9 +730,9 @@ public: endpoint_type& sender_endpoint) { boost::system::error_code ec; - std::size_t s = this->service.receive_from( - this->implementation, buffers, sender_endpoint, 0, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().receive_from( + this->get_implementation(), buffers, sender_endpoint, 0, ec); + boost::asio::detail::throw_error(ec, "receive_from"); return s; } @@ -680,9 +757,9 @@ public: endpoint_type& sender_endpoint, socket_base::message_flags flags) { boost::system::error_code ec; - std::size_t s = this->service.receive_from( - this->implementation, buffers, sender_endpoint, flags, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().receive_from( + this->get_implementation(), buffers, sender_endpoint, flags, ec); + boost::asio::detail::throw_error(ec, "receive_from"); return s; } @@ -707,8 +784,8 @@ public: endpoint_type& sender_endpoint, socket_base::message_flags flags, boost::system::error_code& ec) { - return this->service.receive_from(this->implementation, buffers, - sender_endpoint, flags, ec); + return this->get_service().receive_from(this->get_implementation(), + buffers, sender_endpoint, flags, ec); } /// Start an asynchronous receive. @@ -749,10 +826,15 @@ public: */ template void async_receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, ReadHandler handler) + endpoint_type& sender_endpoint, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - this->service.async_receive_from(this->implementation, buffers, - sender_endpoint, 0, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive_from(this->get_implementation(), buffers, + sender_endpoint, 0, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } /// Start an asynchronous receive. @@ -787,10 +869,14 @@ public: template void async_receive_from(const MutableBufferSequence& buffers, endpoint_type& sender_endpoint, socket_base::message_flags flags, - ReadHandler handler) + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - this->service.async_receive_from(this->implementation, buffers, - sender_endpoint, flags, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive_from(this->get_implementation(), buffers, + sender_endpoint, flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } }; diff --git a/3party/boost/boost/asio/basic_deadline_timer.hpp b/3party/boost/boost/asio/basic_deadline_timer.hpp index 452999d35a..c90cbeebc6 100644 --- a/3party/boost/boost/asio/basic_deadline_timer.hpp +++ b/3party/boost/boost/asio/basic_deadline_timer.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -161,7 +162,7 @@ public: { boost::system::error_code ec; this->service.expires_at(this->implementation, expiry_time, ec); - boost::asio::detail::throw_error(ec); + boost::asio::detail::throw_error(ec, "expires_at"); } /// Constructor to set a particular expiry time relative to now. @@ -180,7 +181,7 @@ public: { boost::system::error_code ec; this->service.expires_from_now(this->implementation, expiry_time, ec); - boost::asio::detail::throw_error(ec); + boost::asio::detail::throw_error(ec, "expires_from_now"); } /// Cancel any asynchronous operations that are waiting on the timer. @@ -209,7 +210,7 @@ public: { boost::system::error_code ec; std::size_t s = this->service.cancel(this->implementation, ec); - boost::asio::detail::throw_error(ec); + boost::asio::detail::throw_error(ec, "cancel"); return s; } @@ -240,6 +241,67 @@ public: return this->service.cancel(this->implementation, ec); } + /// Cancels one asynchronous operation that is waiting on the timer. + /** + * This function forces the completion of one pending asynchronous wait + * operation against the timer. Handlers are cancelled in FIFO order. The + * handler for the cancelled operation will be invoked with the + * boost::asio::error::operation_aborted error code. + * + * Cancelling the timer does not change the expiry time. + * + * @return The number of asynchronous operations that were cancelled. That is, + * either 0 or 1. + * + * @throws boost::system::system_error Thrown on failure. + * + * @note If the timer has already expired when cancel_one() is called, then + * the handlers for asynchronous wait operations will: + * + * @li have already been invoked; or + * + * @li have been queued for invocation in the near future. + * + * These handlers can no longer be cancelled, and therefore are passed an + * error code that indicates the successful completion of the wait operation. + */ + std::size_t cancel_one() + { + boost::system::error_code ec; + std::size_t s = this->service.cancel_one(this->implementation, ec); + boost::asio::detail::throw_error(ec, "cancel_one"); + return s; + } + + /// Cancels one asynchronous operation that is waiting on the timer. + /** + * This function forces the completion of one pending asynchronous wait + * operation against the timer. Handlers are cancelled in FIFO order. The + * handler for the cancelled operation will be invoked with the + * boost::asio::error::operation_aborted error code. + * + * Cancelling the timer does not change the expiry time. + * + * @param ec Set to indicate what error occurred, if any. + * + * @return The number of asynchronous operations that were cancelled. That is, + * either 0 or 1. + * + * @note If the timer has already expired when cancel_one() is called, then + * the handlers for asynchronous wait operations will: + * + * @li have already been invoked; or + * + * @li have been queued for invocation in the near future. + * + * These handlers can no longer be cancelled, and therefore are passed an + * error code that indicates the successful completion of the wait operation. + */ + std::size_t cancel_one(boost::system::error_code& ec) + { + return this->service.cancel_one(this->implementation, ec); + } + /// Get the timer's expiry time as an absolute time. /** * This function may be used to obtain the timer's current expiry time. @@ -277,7 +339,7 @@ public: boost::system::error_code ec; std::size_t s = this->service.expires_at( this->implementation, expiry_time, ec); - boost::asio::detail::throw_error(ec); + boost::asio::detail::throw_error(ec, "expires_at"); return s; } @@ -346,7 +408,7 @@ public: boost::system::error_code ec; std::size_t s = this->service.expires_from_now( this->implementation, expiry_time, ec); - boost::asio::detail::throw_error(ec); + boost::asio::detail::throw_error(ec, "expires_from_now"); return s; } @@ -390,7 +452,7 @@ public: { boost::system::error_code ec; this->service.wait(this->implementation, ec); - boost::asio::detail::throw_error(ec); + boost::asio::detail::throw_error(ec, "wait"); } /// Perform a blocking wait on the timer. @@ -430,9 +492,14 @@ public: * boost::asio::io_service::post(). */ template - void async_wait(WaitHandler handler) + void async_wait(BOOST_ASIO_MOVE_ARG(WaitHandler) handler) { - this->service.async_wait(this->implementation, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WaitHandler. + BOOST_ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check; + + this->service.async_wait(this->implementation, + BOOST_ASIO_MOVE_CAST(WaitHandler)(handler)); } }; diff --git a/3party/boost/boost/asio/basic_io_object.hpp b/3party/boost/boost/asio/basic_io_object.hpp index 8e137e76de..57a73971d6 100644 --- a/3party/boost/boost/asio/basic_io_object.hpp +++ b/3party/boost/boost/asio/basic_io_object.hpp @@ -16,7 +16,6 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include -#include #include #include @@ -24,10 +23,42 @@ namespace boost { namespace asio { +#if defined(BOOST_ASIO_HAS_MOVE) +namespace detail +{ + // Type trait used to determine whether a service supports move. + template + class service_has_move + { + private: + typedef IoObjectService service_type; + typedef typename service_type::implementation_type implementation_type; + + template + static auto eval(T* t, U* u) -> decltype(t->move_construct(*u, *u), char()); + static char (&eval(...))[2]; + + public: + static const bool value = + sizeof(service_has_move::eval( + static_cast(0), + static_cast(0))) == 1; + }; +} +#endif // defined(BOOST_ASIO_HAS_MOVE) + /// Base class for all I/O objects. +/** + * @note All I/O objects are non-copyable. However, when using C++0x, certain + * I/O objects do support move construction and move assignment. + */ +#if !defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) template +#else +template ::value> +#endif class basic_io_object - : private noncopyable { public: /// The type of the service that will be used to provide I/O operations. @@ -36,20 +67,6 @@ public: /// The underlying implementation type of I/O object. typedef typename service_type::implementation_type implementation_type; - /// (Deprecated: use get_io_service().) Get the io_service associated with - /// the object. - /** - * This function may be used to obtain the io_service object that the I/O - * object uses to dispatch handlers for asynchronous operations. - * - * @return A reference to the io_service object that the I/O object will use - * to dispatch handlers. Ownership is not transferred to the caller. - */ - boost::asio::io_service& io_service() - { - return service.get_io_service(); - } - /// Get the io_service associated with the object. /** * This function may be used to obtain the io_service object that the I/O @@ -67,7 +84,7 @@ protected: /// Construct a basic_io_object. /** * Performs: - * @code service.construct(implementation); @endcode + * @code get_service().construct(get_implementation()); @endcode */ explicit basic_io_object(boost::asio::io_service& io_service) : service(boost::asio::use_service(io_service)) @@ -75,23 +92,148 @@ protected: service.construct(implementation); } +#if defined(GENERATING_DOCUMENTATION) + /// Move-construct a basic_io_object. + /** + * Performs: + * @code get_service().move_construct( + * get_implementation(), other.get_implementation()); @endcode + * + * @note Available only for services that support movability, + */ + basic_io_object(basic_io_object&& other); + + /// Move-assign a basic_io_object. + /** + * Performs: + * @code get_service().move_assign(get_implementation(), + * other.get_service(), other.get_implementation()); @endcode + * + * @note Available only for services that support movability, + */ + basic_io_object& operator=(basic_io_object&& other); +#endif // defined(GENERATING_DOCUMENTATION) + /// Protected destructor to prevent deletion through this type. /** * Performs: - * @code service.destroy(implementation); @endcode + * @code get_service().destroy(get_implementation()); @endcode */ ~basic_io_object() { service.destroy(implementation); } - /// The service associated with the I/O object. + /// Get the service associated with the I/O object. + service_type& get_service() + { + return service; + } + + /// Get the service associated with the I/O object. + const service_type& get_service() const + { + return service; + } + + /// (Deprecated: Use get_service().) The service associated with the I/O + /// object. + /** + * @note Available only for services that do not support movability. + */ service_type& service; - /// The underlying implementation of the I/O object. + /// Get the underlying implementation of the I/O object. + implementation_type& get_implementation() + { + return implementation; + } + + /// Get the underlying implementation of the I/O object. + const implementation_type& get_implementation() const + { + return implementation; + } + + /// (Deprecated: Use get_implementation().) The underlying implementation of + /// the I/O object. implementation_type implementation; + +private: + basic_io_object(const basic_io_object&); + basic_io_object& operator=(const basic_io_object&); }; +#if defined(BOOST_ASIO_HAS_MOVE) +// Specialisation for movable objects. +template +class basic_io_object +{ +public: + typedef IoObjectService service_type; + typedef typename service_type::implementation_type implementation_type; + + boost::asio::io_service& get_io_service() + { + return service_->get_io_service(); + } + +protected: + explicit basic_io_object(boost::asio::io_service& io_service) + : service_(&boost::asio::use_service(io_service)) + { + service_->construct(implementation); + } + + basic_io_object(basic_io_object&& other) + : service_(&other.get_service()) + { + service_->move_construct(implementation, other.implementation); + } + + ~basic_io_object() + { + service_->destroy(implementation); + } + + basic_io_object& operator=(basic_io_object&& other) + { + service_->move_assign(implementation, + *other.service_, other.implementation); + service_ = other.service_; + return *this; + } + + service_type& get_service() + { + return *service_; + } + + const service_type& get_service() const + { + return *service_; + } + + implementation_type& get_implementation() + { + return implementation; + } + + const implementation_type& get_implementation() const + { + return implementation; + } + + implementation_type implementation; + +private: + basic_io_object(const basic_io_object&); + void operator=(const basic_io_object&); + + IoObjectService* service_; +}; +#endif // defined(BOOST_ASIO_HAS_MOVE) + } // namespace asio } // namespace boost diff --git a/3party/boost/boost/asio/basic_raw_socket.hpp b/3party/boost/boost/asio/basic_raw_socket.hpp index 0e58e7f314..b29dd6288f 100644 --- a/3party/boost/boost/asio/basic_raw_socket.hpp +++ b/3party/boost/boost/asio/basic_raw_socket.hpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -42,8 +43,12 @@ class basic_raw_socket : public basic_socket { public: + /// (Deprecated: Use native_handle_type.) The native representation of a + /// socket. + typedef typename RawSocketService::native_handle_type native_type; + /// The native representation of a socket. - typedef typename RawSocketService::native_type native_type; + typedef typename RawSocketService::native_handle_type native_handle_type; /// The protocol type. typedef Protocol protocol_type; @@ -121,12 +126,47 @@ public: * @throws boost::system::system_error Thrown on failure. */ basic_raw_socket(boost::asio::io_service& io_service, - const protocol_type& protocol, const native_type& native_socket) + const protocol_type& protocol, const native_handle_type& native_socket) : basic_socket( io_service, protocol, native_socket) { } +#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move-construct a basic_raw_socket from another. + /** + * This constructor moves a raw socket from one object to another. + * + * @param other The other basic_raw_socket object from which the move + * will occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_raw_socket(io_service&) constructor. + */ + basic_raw_socket(basic_raw_socket&& other) + : basic_socket( + BOOST_ASIO_MOVE_CAST(basic_raw_socket)(other)) + { + } + + /// Move-assign a basic_raw_socket from another. + /** + * This assignment operator moves a raw socket from one object to another. + * + * @param other The other basic_raw_socket object from which the move + * will occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_raw_socket(io_service&) constructor. + */ + basic_raw_socket& operator=(basic_raw_socket&& other) + { + basic_socket::operator=( + BOOST_ASIO_MOVE_CAST(basic_raw_socket)(other)); + return *this; + } +#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Send some data on a connected socket. /** * This function is used to send data on the raw socket. The function call @@ -152,8 +192,9 @@ public: std::size_t send(const ConstBufferSequence& buffers) { boost::system::error_code ec; - std::size_t s = this->service.send(this->implementation, buffers, 0, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().send( + this->get_implementation(), buffers, 0, ec); + boost::asio::detail::throw_error(ec, "send"); return s; } @@ -178,9 +219,9 @@ public: socket_base::message_flags flags) { boost::system::error_code ec; - std::size_t s = this->service.send( - this->implementation, buffers, flags, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().send( + this->get_implementation(), buffers, flags, ec); + boost::asio::detail::throw_error(ec, "send"); return s; } @@ -204,7 +245,8 @@ public: std::size_t send(const ConstBufferSequence& buffers, socket_base::message_flags flags, boost::system::error_code& ec) { - return this->service.send(this->implementation, buffers, flags, ec); + return this->get_service().send( + this->get_implementation(), buffers, flags, ec); } /// Start an asynchronous send on a connected socket. @@ -243,9 +285,15 @@ public: * std::vector. */ template - void async_send(const ConstBufferSequence& buffers, WriteHandler handler) + void async_send(const ConstBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - this->service.async_send(this->implementation, buffers, 0, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_send(this->get_implementation(), + buffers, 0, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Start an asynchronous send on a connected socket. @@ -278,9 +326,15 @@ public: */ template void async_send(const ConstBufferSequence& buffers, - socket_base::message_flags flags, WriteHandler handler) + socket_base::message_flags flags, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - this->service.async_send(this->implementation, buffers, flags, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_send(this->get_implementation(), + buffers, flags, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Send raw data to the specified endpoint. @@ -313,9 +367,9 @@ public: const endpoint_type& destination) { boost::system::error_code ec; - std::size_t s = this->service.send_to( - this->implementation, buffers, destination, 0, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().send_to( + this->get_implementation(), buffers, destination, 0, ec); + boost::asio::detail::throw_error(ec, "send_to"); return s; } @@ -340,9 +394,9 @@ public: const endpoint_type& destination, socket_base::message_flags flags) { boost::system::error_code ec; - std::size_t s = this->service.send_to( - this->implementation, buffers, destination, flags, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().send_to( + this->get_implementation(), buffers, destination, flags, ec); + boost::asio::detail::throw_error(ec, "send_to"); return s; } @@ -367,7 +421,7 @@ public: const endpoint_type& destination, socket_base::message_flags flags, boost::system::error_code& ec) { - return this->service.send_to(this->implementation, + return this->get_service().send_to(this->get_implementation(), buffers, destination, flags, ec); } @@ -410,10 +464,15 @@ public: */ template void async_send_to(const ConstBufferSequence& buffers, - const endpoint_type& destination, WriteHandler handler) + const endpoint_type& destination, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - this->service.async_send_to(this->implementation, buffers, destination, 0, - handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_send_to(this->get_implementation(), buffers, + destination, 0, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Start an asynchronous send. @@ -446,10 +505,14 @@ public: template void async_send_to(const ConstBufferSequence& buffers, const endpoint_type& destination, socket_base::message_flags flags, - WriteHandler handler) + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - this->service.async_send_to(this->implementation, buffers, destination, - flags, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_send_to(this->get_implementation(), buffers, + destination, flags, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Receive some data on a connected socket. @@ -480,9 +543,9 @@ public: std::size_t receive(const MutableBufferSequence& buffers) { boost::system::error_code ec; - std::size_t s = this->service.receive( - this->implementation, buffers, 0, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().receive( + this->get_implementation(), buffers, 0, ec); + boost::asio::detail::throw_error(ec, "receive"); return s; } @@ -509,9 +572,9 @@ public: socket_base::message_flags flags) { boost::system::error_code ec; - std::size_t s = this->service.receive( - this->implementation, buffers, flags, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().receive( + this->get_implementation(), buffers, flags, ec); + boost::asio::detail::throw_error(ec, "receive"); return s; } @@ -537,7 +600,8 @@ public: std::size_t receive(const MutableBufferSequence& buffers, socket_base::message_flags flags, boost::system::error_code& ec) { - return this->service.receive(this->implementation, buffers, flags, ec); + return this->get_service().receive( + this->get_implementation(), buffers, flags, ec); } /// Start an asynchronous receive on a connected socket. @@ -577,9 +641,15 @@ public: * std::vector. */ template - void async_receive(const MutableBufferSequence& buffers, ReadHandler handler) + void async_receive(const MutableBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - this->service.async_receive(this->implementation, buffers, 0, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive(this->get_implementation(), + buffers, 0, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } /// Start an asynchronous receive on a connected socket. @@ -612,9 +682,15 @@ public: */ template void async_receive(const MutableBufferSequence& buffers, - socket_base::message_flags flags, ReadHandler handler) + socket_base::message_flags flags, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - this->service.async_receive(this->implementation, buffers, flags, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive(this->get_implementation(), + buffers, flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } /// Receive raw data with the endpoint of the sender. @@ -648,9 +724,9 @@ public: endpoint_type& sender_endpoint) { boost::system::error_code ec; - std::size_t s = this->service.receive_from( - this->implementation, buffers, sender_endpoint, 0, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().receive_from( + this->get_implementation(), buffers, sender_endpoint, 0, ec); + boost::asio::detail::throw_error(ec, "receive_from"); return s; } @@ -675,9 +751,9 @@ public: endpoint_type& sender_endpoint, socket_base::message_flags flags) { boost::system::error_code ec; - std::size_t s = this->service.receive_from( - this->implementation, buffers, sender_endpoint, flags, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().receive_from( + this->get_implementation(), buffers, sender_endpoint, flags, ec); + boost::asio::detail::throw_error(ec, "receive_from"); return s; } @@ -702,8 +778,8 @@ public: endpoint_type& sender_endpoint, socket_base::message_flags flags, boost::system::error_code& ec) { - return this->service.receive_from(this->implementation, buffers, - sender_endpoint, flags, ec); + return this->get_service().receive_from(this->get_implementation(), + buffers, sender_endpoint, flags, ec); } /// Start an asynchronous receive. @@ -744,10 +820,15 @@ public: */ template void async_receive_from(const MutableBufferSequence& buffers, - endpoint_type& sender_endpoint, ReadHandler handler) + endpoint_type& sender_endpoint, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - this->service.async_receive_from(this->implementation, buffers, - sender_endpoint, 0, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive_from(this->get_implementation(), buffers, + sender_endpoint, 0, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } /// Start an asynchronous receive. @@ -782,10 +863,14 @@ public: template void async_receive_from(const MutableBufferSequence& buffers, endpoint_type& sender_endpoint, socket_base::message_flags flags, - ReadHandler handler) + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - this->service.async_receive_from(this->implementation, buffers, - sender_endpoint, flags, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive_from(this->get_implementation(), buffers, + sender_endpoint, flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } }; diff --git a/3party/boost/boost/asio/basic_seq_packet_socket.hpp b/3party/boost/boost/asio/basic_seq_packet_socket.hpp new file mode 100644 index 0000000000..17e15e7a3f --- /dev/null +++ b/3party/boost/boost/asio/basic_seq_packet_socket.hpp @@ -0,0 +1,514 @@ +// +// basic_seq_packet_socket.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// 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_ASIO_BASIC_SEQ_PACKET_SOCKET_HPP +#define BOOST_ASIO_BASIC_SEQ_PACKET_SOCKET_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { + +/// Provides sequenced packet socket functionality. +/** + * The basic_seq_packet_socket class template provides asynchronous and blocking + * sequenced packet socket functionality. + * + * @par Thread Safety + * @e Distinct @e objects: Safe.@n + * @e Shared @e objects: Unsafe. + */ +template > +class basic_seq_packet_socket + : public basic_socket +{ +public: + /// (Deprecated: Use native_handle_type.) The native representation of a + /// socket. + typedef typename SeqPacketSocketService::native_handle_type native_type; + + /// The native representation of a socket. + typedef typename SeqPacketSocketService::native_handle_type + native_handle_type; + + /// The protocol type. + typedef Protocol protocol_type; + + /// The endpoint type. + typedef typename Protocol::endpoint endpoint_type; + + /// Construct a basic_seq_packet_socket without opening it. + /** + * This constructor creates a sequenced packet socket without opening it. The + * socket needs to be opened and then connected or accepted before data can + * be sent or received on it. + * + * @param io_service The io_service object that the sequenced packet socket + * will use to dispatch handlers for any asynchronous operations performed on + * the socket. + */ + explicit basic_seq_packet_socket(boost::asio::io_service& io_service) + : basic_socket(io_service) + { + } + + /// Construct and open a basic_seq_packet_socket. + /** + * This constructor creates and opens a sequenced_packet socket. The socket + * needs to be connected or accepted before data can be sent or received on + * it. + * + * @param io_service The io_service object that the sequenced packet socket + * will use to dispatch handlers for any asynchronous operations performed on + * the socket. + * + * @param protocol An object specifying protocol parameters to be used. + * + * @throws boost::system::system_error Thrown on failure. + */ + basic_seq_packet_socket(boost::asio::io_service& io_service, + const protocol_type& protocol) + : basic_socket(io_service, protocol) + { + } + + /// Construct a basic_seq_packet_socket, opening it and binding it to the + /// given local endpoint. + /** + * This constructor creates a sequenced packet socket and automatically opens + * it bound to the specified endpoint on the local machine. The protocol used + * is the protocol associated with the given endpoint. + * + * @param io_service The io_service object that the sequenced packet socket + * will use to dispatch handlers for any asynchronous operations performed on + * the socket. + * + * @param endpoint An endpoint on the local machine to which the sequenced + * packet socket will be bound. + * + * @throws boost::system::system_error Thrown on failure. + */ + basic_seq_packet_socket(boost::asio::io_service& io_service, + const endpoint_type& endpoint) + : basic_socket(io_service, endpoint) + { + } + + /// Construct a basic_seq_packet_socket on an existing native socket. + /** + * This constructor creates a sequenced packet socket object to hold an + * existing native socket. + * + * @param io_service The io_service object that the sequenced packet socket + * will use to dispatch handlers for any asynchronous operations performed on + * the socket. + * + * @param protocol An object specifying protocol parameters to be used. + * + * @param native_socket The new underlying socket implementation. + * + * @throws boost::system::system_error Thrown on failure. + */ + basic_seq_packet_socket(boost::asio::io_service& io_service, + const protocol_type& protocol, const native_handle_type& native_socket) + : basic_socket( + io_service, protocol, native_socket) + { + } + +#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move-construct a basic_seq_packet_socket from another. + /** + * This constructor moves a sequenced packet socket from one object to + * another. + * + * @param other The other basic_seq_packet_socket object from which the move + * will occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_seq_packet_socket(io_service&) constructor. + */ + basic_seq_packet_socket(basic_seq_packet_socket&& other) + : basic_socket( + BOOST_ASIO_MOVE_CAST(basic_seq_packet_socket)(other)) + { + } + + /// Move-assign a basic_seq_packet_socket from another. + /** + * This assignment operator moves a sequenced packet socket from one object to + * another. + * + * @param other The other basic_seq_packet_socket object from which the move + * will occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_seq_packet_socket(io_service&) constructor. + */ + basic_seq_packet_socket& operator=(basic_seq_packet_socket&& other) + { + basic_socket::operator=( + BOOST_ASIO_MOVE_CAST(basic_seq_packet_socket)(other)); + return *this; + } +#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + + /// Send some data on the socket. + /** + * This function is used to send data on the sequenced packet socket. The + * function call will block until the data has been sent successfully, or an + * until error occurs. + * + * @param buffers One or more data buffers to be sent on the socket. + * + * @param flags Flags specifying how the send call is to be made. + * + * @returns The number of bytes sent. + * + * @throws boost::system::system_error Thrown on failure. + * + * @par Example + * To send a single data buffer use the @ref buffer function as follows: + * @code + * socket.send(boost::asio::buffer(data, size), 0); + * @endcode + * See the @ref buffer documentation for information on sending multiple + * buffers in one go, and how to use it with arrays, boost::array or + * std::vector. + */ + template + std::size_t send(const ConstBufferSequence& buffers, + socket_base::message_flags flags) + { + boost::system::error_code ec; + std::size_t s = this->get_service().send( + this->get_implementation(), buffers, flags, ec); + boost::asio::detail::throw_error(ec, "send"); + return s; + } + + /// Send some data on the socket. + /** + * This function is used to send data on the sequenced packet socket. The + * function call will block the data has been sent successfully, or an until + * error occurs. + * + * @param buffers One or more data buffers to be sent on the socket. + * + * @param flags Flags specifying how the send call is to be made. + * + * @param ec Set to indicate what error occurred, if any. + * + * @returns The number of bytes sent. Returns 0 if an error occurred. + * + * @note The send operation may not transmit all of the data to the peer. + * Consider using the @ref write function if you need to ensure that all data + * is written before the blocking operation completes. + */ + template + std::size_t send(const ConstBufferSequence& buffers, + socket_base::message_flags flags, boost::system::error_code& ec) + { + return this->get_service().send( + this->get_implementation(), buffers, flags, ec); + } + + /// Start an asynchronous send. + /** + * This function is used to asynchronously send data on the sequenced packet + * socket. The function call always returns immediately. + * + * @param buffers One or more data buffers to be sent on the socket. Although + * the buffers object may be copied as necessary, ownership of the underlying + * memory blocks is retained by the caller, which must guarantee that they + * remain valid until the handler is called. + * + * @param flags Flags specifying how the send call is to be made. + * + * @param handler The handler to be called when the send operation completes. + * Copies will be made of the handler as required. The function signature of + * the handler must be: + * @code void handler( + * const boost::system::error_code& error, // Result of operation. + * std::size_t bytes_transferred // Number of bytes sent. + * ); @endcode + * Regardless of whether the asynchronous operation completes immediately or + * not, the handler will not be invoked from within this function. Invocation + * of the handler will be performed in a manner equivalent to using + * boost::asio::io_service::post(). + * + * @par Example + * To send a single data buffer use the @ref buffer function as follows: + * @code + * socket.async_send(boost::asio::buffer(data, size), 0, handler); + * @endcode + * See the @ref buffer documentation for information on sending multiple + * buffers in one go, and how to use it with arrays, boost::array or + * std::vector. + */ + template + void async_send(const ConstBufferSequence& buffers, + socket_base::message_flags flags, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) + { + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_send(this->get_implementation(), + buffers, flags, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); + } + + /// Receive some data on the socket. + /** + * This function is used to receive data on the sequenced packet socket. The + * function call will block until data has been received successfully, or + * until an error occurs. + * + * @param buffers One or more buffers into which the data will be received. + * + * @param out_flags After the receive call completes, contains flags + * associated with the received data. For example, if the + * socket_base::message_end_of_record bit is set then the received data marks + * the end of a record. + * + * @returns The number of bytes received. + * + * @throws boost::system::system_error Thrown on failure. An error code of + * boost::asio::error::eof indicates that the connection was closed by the + * peer. + * + * @par Example + * To receive into a single data buffer use the @ref buffer function as + * follows: + * @code + * socket.receive(boost::asio::buffer(data, size), out_flags); + * @endcode + * See the @ref buffer documentation for information on receiving into + * multiple buffers in one go, and how to use it with arrays, boost::array or + * std::vector. + */ + template + std::size_t receive(const MutableBufferSequence& buffers, + socket_base::message_flags& out_flags) + { + boost::system::error_code ec; + std::size_t s = this->get_service().receive( + this->get_implementation(), buffers, 0, out_flags, ec); + boost::asio::detail::throw_error(ec, "receive"); + return s; + } + + /// Receive some data on the socket. + /** + * This function is used to receive data on the sequenced packet socket. The + * function call will block until data has been received successfully, or + * until an error occurs. + * + * @param buffers One or more buffers into which the data will be received. + * + * @param in_flags Flags specifying how the receive call is to be made. + * + * @param out_flags After the receive call completes, contains flags + * associated with the received data. For example, if the + * socket_base::message_end_of_record bit is set then the received data marks + * the end of a record. + * + * @returns The number of bytes received. + * + * @throws boost::system::system_error Thrown on failure. An error code of + * boost::asio::error::eof indicates that the connection was closed by the + * peer. + * + * @note The receive operation may not receive all of the requested number of + * bytes. Consider using the @ref read function if you need to ensure that the + * requested amount of data is read before the blocking operation completes. + * + * @par Example + * To receive into a single data buffer use the @ref buffer function as + * follows: + * @code + * socket.receive(boost::asio::buffer(data, size), 0, out_flags); + * @endcode + * See the @ref buffer documentation for information on receiving into + * multiple buffers in one go, and how to use it with arrays, boost::array or + * std::vector. + */ + template + std::size_t receive(const MutableBufferSequence& buffers, + socket_base::message_flags in_flags, + socket_base::message_flags& out_flags) + { + boost::system::error_code ec; + std::size_t s = this->get_service().receive( + this->get_implementation(), buffers, in_flags, out_flags, ec); + boost::asio::detail::throw_error(ec, "receive"); + return s; + } + + /// Receive some data on a connected socket. + /** + * This function is used to receive data on the sequenced packet socket. The + * function call will block until data has been received successfully, or + * until an error occurs. + * + * @param buffers One or more buffers into which the data will be received. + * + * @param in_flags Flags specifying how the receive call is to be made. + * + * @param out_flags After the receive call completes, contains flags + * associated with the received data. For example, if the + * socket_base::message_end_of_record bit is set then the received data marks + * the end of a record. + * + * @param ec Set to indicate what error occurred, if any. + * + * @returns The number of bytes received. Returns 0 if an error occurred. + * + * @note The receive operation may not receive all of the requested number of + * bytes. Consider using the @ref read function if you need to ensure that the + * requested amount of data is read before the blocking operation completes. + */ + template + std::size_t receive(const MutableBufferSequence& buffers, + socket_base::message_flags in_flags, + socket_base::message_flags& out_flags, boost::system::error_code& ec) + { + return this->get_service().receive(this->get_implementation(), + buffers, in_flags, out_flags, ec); + } + + /// Start an asynchronous receive. + /** + * This function is used to asynchronously receive data from the sequenced + * packet socket. The function call always returns immediately. + * + * @param buffers One or more buffers into which the data will be received. + * Although the buffers object may be copied as necessary, ownership of the + * underlying memory blocks is retained by the caller, which must guarantee + * that they remain valid until the handler is called. + * + * @param out_flags Once the asynchronous operation completes, contains flags + * associated with the received data. For example, if the + * socket_base::message_end_of_record bit is set then the received data marks + * the end of a record. The caller must guarantee that the referenced + * variable remains valid until the handler is called. + * + * @param handler The handler to be called when the receive operation + * completes. Copies will be made of the handler as required. The function + * signature of the handler must be: + * @code void handler( + * const boost::system::error_code& error, // Result of operation. + * std::size_t bytes_transferred // Number of bytes received. + * ); @endcode + * Regardless of whether the asynchronous operation completes immediately or + * not, the handler will not be invoked from within this function. Invocation + * of the handler will be performed in a manner equivalent to using + * boost::asio::io_service::post(). + * + * @par Example + * To receive into a single data buffer use the @ref buffer function as + * follows: + * @code + * socket.async_receive(boost::asio::buffer(data, size), out_flags, handler); + * @endcode + * See the @ref buffer documentation for information on receiving into + * multiple buffers in one go, and how to use it with arrays, boost::array or + * std::vector. + */ + template + void async_receive(const MutableBufferSequence& buffers, + socket_base::message_flags& out_flags, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) + { + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive(this->get_implementation(), buffers, + 0, out_flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); + } + + /// Start an asynchronous receive. + /** + * This function is used to asynchronously receive data from the sequenced + * data socket. The function call always returns immediately. + * + * @param buffers One or more buffers into which the data will be received. + * Although the buffers object may be copied as necessary, ownership of the + * underlying memory blocks is retained by the caller, which must guarantee + * that they remain valid until the handler is called. + * + * @param in_flags Flags specifying how the receive call is to be made. + * + * @param out_flags Once the asynchronous operation completes, contains flags + * associated with the received data. For example, if the + * socket_base::message_end_of_record bit is set then the received data marks + * the end of a record. The caller must guarantee that the referenced + * variable remains valid until the handler is called. + * + * @param handler The handler to be called when the receive operation + * completes. Copies will be made of the handler as required. The function + * signature of the handler must be: + * @code void handler( + * const boost::system::error_code& error, // Result of operation. + * std::size_t bytes_transferred // Number of bytes received. + * ); @endcode + * Regardless of whether the asynchronous operation completes immediately or + * not, the handler will not be invoked from within this function. Invocation + * of the handler will be performed in a manner equivalent to using + * boost::asio::io_service::post(). + * + * @par Example + * To receive into a single data buffer use the @ref buffer function as + * follows: + * @code + * socket.async_receive( + * boost::asio::buffer(data, size), + * 0, out_flags, handler); + * @endcode + * See the @ref buffer documentation for information on receiving into + * multiple buffers in one go, and how to use it with arrays, boost::array or + * std::vector. + */ + template + void async_receive(const MutableBufferSequence& buffers, + socket_base::message_flags in_flags, + socket_base::message_flags& out_flags, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) + { + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_receive(this->get_implementation(), buffers, + in_flags, out_flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); + } +}; + +} // namespace asio +} // namespace boost + +#include + +#endif // BOOST_ASIO_BASIC_SEQ_PACKET_SOCKET_HPP diff --git a/3party/boost/boost/asio/basic_serial_port.hpp b/3party/boost/boost/asio/basic_serial_port.hpp index 744fd3b958..a94b0e542b 100644 --- a/3party/boost/boost/asio/basic_serial_port.hpp +++ b/3party/boost/boost/asio/basic_serial_port.hpp @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -48,8 +49,12 @@ class basic_serial_port public serial_port_base { public: + /// (Deprecated: Use native_handle_type.) The native representation of a + /// serial port. + typedef typename SerialPortService::native_handle_type native_type; + /// The native representation of a serial port. - typedef typename SerialPortService::native_type native_type; + typedef typename SerialPortService::native_handle_type native_handle_type; /// A basic_serial_port is always the lowest layer. typedef basic_serial_port lowest_layer_type; @@ -82,8 +87,8 @@ public: : basic_io_object(io_service) { boost::system::error_code ec; - this->service.open(this->implementation, device, ec); - boost::asio::detail::throw_error(ec); + this->get_service().open(this->get_implementation(), device, ec); + boost::asio::detail::throw_error(ec, "open"); } /// Construct and open a basic_serial_port. @@ -102,8 +107,8 @@ public: : basic_io_object(io_service) { boost::system::error_code ec; - this->service.open(this->implementation, device, ec); - boost::asio::detail::throw_error(ec); + this->get_service().open(this->get_implementation(), device, ec); + boost::asio::detail::throw_error(ec, "open"); } /// Construct a basic_serial_port on an existing native serial port. @@ -119,14 +124,50 @@ public: * @throws boost::system::system_error Thrown on failure. */ basic_serial_port(boost::asio::io_service& io_service, - const native_type& native_serial_port) + const native_handle_type& native_serial_port) : basic_io_object(io_service) { boost::system::error_code ec; - this->service.assign(this->implementation, native_serial_port, ec); - boost::asio::detail::throw_error(ec); + this->get_service().assign(this->get_implementation(), + native_serial_port, ec); + boost::asio::detail::throw_error(ec, "assign"); } +#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move-construct a basic_serial_port from another. + /** + * This constructor moves a serial port from one object to another. + * + * @param other The other basic_serial_port object from which the move will + * occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_serial_port(io_service&) constructor. + */ + basic_serial_port(basic_serial_port&& other) + : basic_io_object( + BOOST_ASIO_MOVE_CAST(basic_serial_port)(other)) + { + } + + /// Move-assign a basic_serial_port from another. + /** + * This assignment operator moves a serial port from one object to another. + * + * @param other The other basic_serial_port object from which the move will + * occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_serial_port(io_service&) constructor. + */ + basic_serial_port& operator=(basic_serial_port&& other) + { + basic_io_object::operator=( + BOOST_ASIO_MOVE_CAST(basic_serial_port)(other)); + return *this; + } +#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Get a reference to the lowest layer. /** * This function returns a reference to the lowest layer in a stack of @@ -166,8 +207,8 @@ public: void open(const std::string& device) { boost::system::error_code ec; - this->service.open(this->implementation, device, ec); - boost::asio::detail::throw_error(ec); + this->get_service().open(this->get_implementation(), device, ec); + boost::asio::detail::throw_error(ec, "open"); } /// Open the serial port using the specified device name. @@ -182,7 +223,7 @@ public: boost::system::error_code open(const std::string& device, boost::system::error_code& ec) { - return this->service.open(this->implementation, device, ec); + return this->get_service().open(this->get_implementation(), device, ec); } /// Assign an existing native serial port to the serial port. @@ -193,11 +234,12 @@ public: * * @throws boost::system::system_error Thrown on failure. */ - void assign(const native_type& native_serial_port) + void assign(const native_handle_type& native_serial_port) { boost::system::error_code ec; - this->service.assign(this->implementation, native_serial_port, ec); - boost::asio::detail::throw_error(ec); + this->get_service().assign(this->get_implementation(), + native_serial_port, ec); + boost::asio::detail::throw_error(ec, "assign"); } /// Assign an existing native serial port to the serial port. @@ -208,16 +250,17 @@ public: * * @param ec Set to indicate what error occurred, if any. */ - boost::system::error_code assign(const native_type& native_serial_port, + boost::system::error_code assign(const native_handle_type& native_serial_port, boost::system::error_code& ec) { - return this->service.assign(this->implementation, native_serial_port, ec); + return this->get_service().assign(this->get_implementation(), + native_serial_port, ec); } /// Determine whether the serial port is open. bool is_open() const { - return this->service.is_open(this->implementation); + return this->get_service().is_open(this->get_implementation()); } /// Close the serial port. @@ -231,8 +274,8 @@ public: void close() { boost::system::error_code ec; - this->service.close(this->implementation, ec); - boost::asio::detail::throw_error(ec); + this->get_service().close(this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "close"); } /// Close the serial port. @@ -245,7 +288,19 @@ public: */ boost::system::error_code close(boost::system::error_code& ec) { - return this->service.close(this->implementation, ec); + return this->get_service().close(this->get_implementation(), ec); + } + + /// (Deprecated: Use native_handle().) Get the native serial port + /// representation. + /** + * This function may be used to obtain the underlying representation of the + * serial port. This is intended to allow access to native serial port + * functionality that is not otherwise provided. + */ + native_type native() + { + return this->get_service().native_handle(this->get_implementation()); } /// Get the native serial port representation. @@ -254,9 +309,9 @@ public: * serial port. This is intended to allow access to native serial port * functionality that is not otherwise provided. */ - native_type native() + native_handle_type native_handle() { - return this->service.native(this->implementation); + return this->get_service().native_handle(this->get_implementation()); } /// Cancel all asynchronous operations associated with the serial port. @@ -270,8 +325,8 @@ public: void cancel() { boost::system::error_code ec; - this->service.cancel(this->implementation, ec); - boost::asio::detail::throw_error(ec); + this->get_service().cancel(this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "cancel"); } /// Cancel all asynchronous operations associated with the serial port. @@ -284,7 +339,7 @@ public: */ boost::system::error_code cancel(boost::system::error_code& ec) { - return this->service.cancel(this->implementation, ec); + return this->get_service().cancel(this->get_implementation(), ec); } /// Send a break sequence to the serial port. @@ -297,8 +352,8 @@ public: void send_break() { boost::system::error_code ec; - this->service.send_break(this->implementation, ec); - boost::asio::detail::throw_error(ec); + this->get_service().send_break(this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "send_break"); } /// Send a break sequence to the serial port. @@ -310,7 +365,7 @@ public: */ boost::system::error_code send_break(boost::system::error_code& ec) { - return this->service.send_break(this->implementation, ec); + return this->get_service().send_break(this->get_implementation(), ec); } /// Set an option on the serial port. @@ -332,8 +387,8 @@ public: void set_option(const SettableSerialPortOption& option) { boost::system::error_code ec; - this->service.set_option(this->implementation, option, ec); - boost::asio::detail::throw_error(ec); + this->get_service().set_option(this->get_implementation(), option, ec); + boost::asio::detail::throw_error(ec, "set_option"); } /// Set an option on the serial port. @@ -355,7 +410,8 @@ public: boost::system::error_code set_option(const SettableSerialPortOption& option, boost::system::error_code& ec) { - return this->service.set_option(this->implementation, option, ec); + return this->get_service().set_option( + this->get_implementation(), option, ec); } /// Get an option from the serial port. @@ -378,8 +434,8 @@ public: void get_option(GettableSerialPortOption& option) { boost::system::error_code ec; - this->service.get_option(this->implementation, option, ec); - boost::asio::detail::throw_error(ec); + this->get_service().get_option(this->get_implementation(), option, ec); + boost::asio::detail::throw_error(ec, "get_option"); } /// Get an option from the serial port. @@ -402,7 +458,8 @@ public: boost::system::error_code get_option(GettableSerialPortOption& option, boost::system::error_code& ec) { - return this->service.get_option(this->implementation, option, ec); + return this->get_service().get_option( + this->get_implementation(), option, ec); } /// Write some data to the serial port. @@ -436,8 +493,9 @@ public: std::size_t write_some(const ConstBufferSequence& buffers) { boost::system::error_code ec; - std::size_t s = this->service.write_some(this->implementation, buffers, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().write_some( + this->get_implementation(), buffers, ec); + boost::asio::detail::throw_error(ec, "write_some"); return s; } @@ -461,7 +519,8 @@ public: std::size_t write_some(const ConstBufferSequence& buffers, boost::system::error_code& ec) { - return this->service.write_some(this->implementation, buffers, ec); + return this->get_service().write_some( + this->get_implementation(), buffers, ec); } /// Start an asynchronous write. @@ -501,9 +560,14 @@ public: */ template void async_write_some(const ConstBufferSequence& buffers, - WriteHandler handler) + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - this->service.async_write_some(this->implementation, buffers, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + this->get_service().async_write_some(this->get_implementation(), + buffers, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Read some data from the serial port. @@ -538,8 +602,9 @@ public: std::size_t read_some(const MutableBufferSequence& buffers) { boost::system::error_code ec; - std::size_t s = this->service.read_some(this->implementation, buffers, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().read_some( + this->get_implementation(), buffers, ec); + boost::asio::detail::throw_error(ec, "read_some"); return s; } @@ -564,7 +629,8 @@ public: std::size_t read_some(const MutableBufferSequence& buffers, boost::system::error_code& ec) { - return this->service.read_some(this->implementation, buffers, ec); + return this->get_service().read_some( + this->get_implementation(), buffers, ec); } /// Start an asynchronous read. @@ -605,9 +671,14 @@ public: */ template void async_read_some(const MutableBufferSequence& buffers, - ReadHandler handler) + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - this->service.async_read_some(this->implementation, buffers, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + this->get_service().async_read_some(this->get_implementation(), + buffers, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } }; diff --git a/3party/boost/boost/asio/basic_signal_set.hpp b/3party/boost/boost/asio/basic_signal_set.hpp new file mode 100644 index 0000000000..2f84a14fe1 --- /dev/null +++ b/3party/boost/boost/asio/basic_signal_set.hpp @@ -0,0 +1,384 @@ +// +// basic_signal_set.hpp +// ~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// 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_ASIO_BASIC_SIGNAL_SET_HPP +#define BOOST_ASIO_BASIC_SIGNAL_SET_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { + +/// Provides signal functionality. +/** + * The basic_signal_set class template provides the ability to perform an + * asynchronous wait for one or more signals to occur. + * + * Most applications will use the boost::asio::signal_set typedef. + * + * @par Thread Safety + * @e Distinct @e objects: Safe.@n + * @e Shared @e objects: Unsafe. + * + * @par Example + * Performing an asynchronous wait: + * @code + * void handler( + * const boost::system::error_code& error, + * int signal_number) + * { + * if (!error) + * { + * // A signal occurred. + * } + * } + * + * ... + * + * // Construct a signal set registered for process termination. + * boost::asio::signal_set signals(io_service, SIGINT, SIGTERM); + * + * // Start an asynchronous wait for one of the signals to occur. + * signals.async_wait(handler); + * @endcode + * + * @par Queueing of signal notifications + * + * If a signal is registered with a signal_set, and the signal occurs when + * there are no waiting handlers, then the signal notification is queued. The + * next async_wait operation on that signal_set will dequeue the notification. + * If multiple notifications are queued, subsequent async_wait operations + * dequeue them one at a time. Signal notifications are dequeued in order of + * ascending signal number. + * + * If a signal number is removed from a signal_set (using the @c remove or @c + * erase member functions) then any queued notifications for that signal are + * discarded. + * + * @par Multiple registration of signals + * + * The same signal number may be registered with different signal_set objects. + * When the signal occurs, one handler is called for each signal_set object. + * + * Note that multiple registration only works for signals that are registered + * using Asio. The application must not also register a signal handler using + * functions such as @c signal() or @c sigaction(). + * + * @par Signal masking on POSIX platforms + * + * POSIX allows signals to be blocked using functions such as @c sigprocmask() + * and @c pthread_sigmask(). For signals to be delivered, programs must ensure + * that any signals registered using signal_set objects are unblocked in at + * least one thread. + */ +template +class basic_signal_set + : public basic_io_object +{ +public: + /// Construct a signal set without adding any signals. + /** + * This constructor creates a signal set without registering for any signals. + * + * @param io_service The io_service object that the signal set will use to + * dispatch handlers for any asynchronous operations performed on the set. + */ + explicit basic_signal_set(boost::asio::io_service& io_service) + : basic_io_object(io_service) + { + } + + /// Construct a signal set and add one signal. + /** + * This constructor creates a signal set and registers for one signal. + * + * @param io_service The io_service object that the signal set will use to + * dispatch handlers for any asynchronous operations performed on the set. + * + * @param signal_number_1 The signal number to be added. + * + * @note This constructor is equivalent to performing: + * @code boost::asio::signal_set signals(io_service); + * signals.add(signal_number_1); @endcode + */ + basic_signal_set(boost::asio::io_service& io_service, int signal_number_1) + : basic_io_object(io_service) + { + boost::system::error_code ec; + this->service.add(this->implementation, signal_number_1, ec); + boost::asio::detail::throw_error(ec, "add"); + } + + /// Construct a signal set and add two signals. + /** + * This constructor creates a signal set and registers for two signals. + * + * @param io_service The io_service object that the signal set will use to + * dispatch handlers for any asynchronous operations performed on the set. + * + * @param signal_number_1 The first signal number to be added. + * + * @param signal_number_2 The second signal number to be added. + * + * @note This constructor is equivalent to performing: + * @code boost::asio::signal_set signals(io_service); + * signals.add(signal_number_1); + * signals.add(signal_number_2); @endcode + */ + basic_signal_set(boost::asio::io_service& io_service, int signal_number_1, + int signal_number_2) + : basic_io_object(io_service) + { + boost::system::error_code ec; + this->service.add(this->implementation, signal_number_1, ec); + boost::asio::detail::throw_error(ec, "add"); + this->service.add(this->implementation, signal_number_2, ec); + boost::asio::detail::throw_error(ec, "add"); + } + + /// Construct a signal set and add three signals. + /** + * This constructor creates a signal set and registers for three signals. + * + * @param io_service The io_service object that the signal set will use to + * dispatch handlers for any asynchronous operations performed on the set. + * + * @param signal_number_1 The first signal number to be added. + * + * @param signal_number_2 The second signal number to be added. + * + * @param signal_number_3 The third signal number to be added. + * + * @note This constructor is equivalent to performing: + * @code boost::asio::signal_set signals(io_service); + * signals.add(signal_number_1); + * signals.add(signal_number_2); + * signals.add(signal_number_3); @endcode + */ + basic_signal_set(boost::asio::io_service& io_service, int signal_number_1, + int signal_number_2, int signal_number_3) + : basic_io_object(io_service) + { + boost::system::error_code ec; + this->service.add(this->implementation, signal_number_1, ec); + boost::asio::detail::throw_error(ec, "add"); + this->service.add(this->implementation, signal_number_2, ec); + boost::asio::detail::throw_error(ec, "add"); + this->service.add(this->implementation, signal_number_3, ec); + boost::asio::detail::throw_error(ec, "add"); + } + + /// Add a signal to a signal_set. + /** + * This function adds the specified signal to the set. It has no effect if the + * signal is already in the set. + * + * @param signal_number The signal to be added to the set. + * + * @throws boost::system::system_error Thrown on failure. + */ + void add(int signal_number) + { + boost::system::error_code ec; + this->service.add(this->implementation, signal_number, ec); + boost::asio::detail::throw_error(ec, "add"); + } + + /// Add a signal to a signal_set. + /** + * This function adds the specified signal to the set. It has no effect if the + * signal is already in the set. + * + * @param signal_number The signal to be added to the set. + * + * @param ec Set to indicate what error occurred, if any. + */ + boost::system::error_code add(int signal_number, + boost::system::error_code& ec) + { + return this->service.add(this->implementation, signal_number, ec); + } + + /// Remove a signal from a signal_set. + /** + * This function removes the specified signal from the set. It has no effect + * if the signal is not in the set. + * + * @param signal_number The signal to be removed from the set. + * + * @throws boost::system::system_error Thrown on failure. + * + * @note Removes any notifications that have been queued for the specified + * signal number. + */ + void remove(int signal_number) + { + boost::system::error_code ec; + this->service.remove(this->implementation, signal_number, ec); + boost::asio::detail::throw_error(ec, "remove"); + } + + /// Remove a signal from a signal_set. + /** + * This function removes the specified signal from the set. It has no effect + * if the signal is not in the set. + * + * @param signal_number The signal to be removed from the set. + * + * @param ec Set to indicate what error occurred, if any. + * + * @note Removes any notifications that have been queued for the specified + * signal number. + */ + boost::system::error_code remove(int signal_number, + boost::system::error_code& ec) + { + return this->service.remove(this->implementation, signal_number, ec); + } + + /// Remove all signals from a signal_set. + /** + * This function removes all signals from the set. It has no effect if the set + * is already empty. + * + * @throws boost::system::system_error Thrown on failure. + * + * @note Removes all queued notifications. + */ + void clear() + { + boost::system::error_code ec; + this->service.clear(this->implementation, ec); + boost::asio::detail::throw_error(ec, "clear"); + } + + /// Remove all signals from a signal_set. + /** + * This function removes all signals from the set. It has no effect if the set + * is already empty. + * + * @param ec Set to indicate what error occurred, if any. + * + * @note Removes all queued notifications. + */ + boost::system::error_code clear(boost::system::error_code& ec) + { + return this->service.clear(this->implementation, ec); + } + + /// Cancel all operations associated with the signal set. + /** + * This function forces the completion of any pending asynchronous wait + * operations against the signal set. The handler for each cancelled + * operation will be invoked with the boost::asio::error::operation_aborted + * error code. + * + * Cancellation does not alter the set of registered signals. + * + * @throws boost::system::system_error Thrown on failure. + * + * @note If a registered signal occurred before cancel() is called, then the + * handlers for asynchronous wait operations will: + * + * @li have already been invoked; or + * + * @li have been queued for invocation in the near future. + * + * These handlers can no longer be cancelled, and therefore are passed an + * error code that indicates the successful completion of the wait operation. + */ + void cancel() + { + boost::system::error_code ec; + this->service.cancel(this->implementation, ec); + boost::asio::detail::throw_error(ec, "cancel"); + } + + /// Cancel all operations associated with the signal set. + /** + * This function forces the completion of any pending asynchronous wait + * operations against the signal set. The handler for each cancelled + * operation will be invoked with the boost::asio::error::operation_aborted + * error code. + * + * Cancellation does not alter the set of registered signals. + * + * @param ec Set to indicate what error occurred, if any. + * + * @note If a registered signal occurred before cancel() is called, then the + * handlers for asynchronous wait operations will: + * + * @li have already been invoked; or + * + * @li have been queued for invocation in the near future. + * + * These handlers can no longer be cancelled, and therefore are passed an + * error code that indicates the successful completion of the wait operation. + */ + boost::system::error_code cancel(boost::system::error_code& ec) + { + return this->service.cancel(this->implementation, ec); + } + + /// Start an asynchronous operation to wait for a signal to be delivered. + /** + * This function may be used to initiate an asynchronous wait against the + * signal set. It always returns immediately. + * + * For each call to async_wait(), the supplied handler will be called exactly + * once. The handler will be called when: + * + * @li One of the registered signals in the signal set occurs; or + * + * @li The signal set was cancelled, in which case the handler is passed the + * error code boost::asio::error::operation_aborted. + * + * @param handler The handler to be called when the signal occurs. Copies + * will be made of the handler as required. The function signature of the + * handler must be: + * @code void handler( + * const boost::system::error_code& error, // Result of operation. + * int signal_number // Indicates which signal occurred. + * ); @endcode + * Regardless of whether the asynchronous operation completes immediately or + * not, the handler will not be invoked from within this function. Invocation + * of the handler will be performed in a manner equivalent to using + * boost::asio::io_service::post(). + */ + template + void async_wait(BOOST_ASIO_MOVE_ARG(SignalHandler) handler) + { + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a SignalHandler. + BOOST_ASIO_SIGNAL_HANDLER_CHECK(SignalHandler, handler) type_check; + + this->service.async_wait(this->implementation, + BOOST_ASIO_MOVE_CAST(SignalHandler)(handler)); + } +}; + +} // namespace asio +} // namespace boost + +#include + +#endif // BOOST_ASIO_BASIC_SIGNAL_SET_HPP diff --git a/3party/boost/boost/asio/basic_socket.hpp b/3party/boost/boost/asio/basic_socket.hpp index 11ce5c99a8..28c5be1cc5 100644 --- a/3party/boost/boost/asio/basic_socket.hpp +++ b/3party/boost/boost/asio/basic_socket.hpp @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -41,8 +42,12 @@ class basic_socket public socket_base { public: + /// (Deprecated: Use native_handle_type.) The native representation of a + /// socket. + typedef typename SocketService::native_handle_type native_type; + /// The native representation of a socket. - typedef typename SocketService::native_type native_type; + typedef typename SocketService::native_handle_type native_handle_type; /// The protocol type. typedef Protocol protocol_type; @@ -81,8 +86,8 @@ public: : basic_io_object(io_service) { boost::system::error_code ec; - this->service.open(this->implementation, protocol, ec); - boost::asio::detail::throw_error(ec); + this->get_service().open(this->get_implementation(), protocol, ec); + boost::asio::detail::throw_error(ec, "open"); } /// Construct a basic_socket, opening it and binding it to the given local @@ -105,10 +110,11 @@ public: : basic_io_object(io_service) { boost::system::error_code ec; - this->service.open(this->implementation, endpoint.protocol(), ec); - boost::asio::detail::throw_error(ec); - this->service.bind(this->implementation, endpoint, ec); - boost::asio::detail::throw_error(ec); + const protocol_type protocol = endpoint.protocol(); + this->get_service().open(this->get_implementation(), protocol, ec); + boost::asio::detail::throw_error(ec, "open"); + this->get_service().bind(this->get_implementation(), endpoint, ec); + boost::asio::detail::throw_error(ec, "bind"); } /// Construct a basic_socket on an existing native socket. @@ -125,14 +131,50 @@ public: * @throws boost::system::system_error Thrown on failure. */ basic_socket(boost::asio::io_service& io_service, - const protocol_type& protocol, const native_type& native_socket) + const protocol_type& protocol, const native_handle_type& native_socket) : basic_io_object(io_service) { boost::system::error_code ec; - this->service.assign(this->implementation, protocol, native_socket, ec); - boost::asio::detail::throw_error(ec); + this->get_service().assign(this->get_implementation(), + protocol, native_socket, ec); + boost::asio::detail::throw_error(ec, "assign"); } +#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move-construct a basic_socket from another. + /** + * This constructor moves a socket from one object to another. + * + * @param other The other basic_socket object from which the move will + * occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_socket(io_service&) constructor. + */ + basic_socket(basic_socket&& other) + : basic_io_object( + BOOST_ASIO_MOVE_CAST(basic_socket)(other)) + { + } + + /// Move-assign a basic_socket from another. + /** + * This assignment operator moves a socket from one object to another. + * + * @param other The other basic_socket object from which the move will + * occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_socket(io_service&) constructor. + */ + basic_socket& operator=(basic_socket&& other) + { + basic_io_object::operator=( + BOOST_ASIO_MOVE_CAST(basic_socket)(other)); + return *this; + } +#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Get a reference to the lowest layer. /** * This function returns a reference to the lowest layer in a stack of @@ -178,8 +220,8 @@ public: void open(const protocol_type& protocol = protocol_type()) { boost::system::error_code ec; - this->service.open(this->implementation, protocol, ec); - boost::asio::detail::throw_error(ec); + this->get_service().open(this->get_implementation(), protocol, ec); + boost::asio::detail::throw_error(ec, "open"); } /// Open the socket using the specified protocol. @@ -204,7 +246,7 @@ public: boost::system::error_code open(const protocol_type& protocol, boost::system::error_code& ec) { - return this->service.open(this->implementation, protocol, ec); + return this->get_service().open(this->get_implementation(), protocol, ec); } /// Assign an existing native socket to the socket. @@ -217,11 +259,13 @@ public: * * @throws boost::system::system_error Thrown on failure. */ - void assign(const protocol_type& protocol, const native_type& native_socket) + void assign(const protocol_type& protocol, + const native_handle_type& native_socket) { boost::system::error_code ec; - this->service.assign(this->implementation, protocol, native_socket, ec); - boost::asio::detail::throw_error(ec); + this->get_service().assign(this->get_implementation(), + protocol, native_socket, ec); + boost::asio::detail::throw_error(ec, "assign"); } /// Assign an existing native socket to the socket. @@ -235,16 +279,16 @@ public: * @param ec Set to indicate what error occurred, if any. */ boost::system::error_code assign(const protocol_type& protocol, - const native_type& native_socket, boost::system::error_code& ec) + const native_handle_type& native_socket, boost::system::error_code& ec) { - return this->service.assign(this->implementation, + return this->get_service().assign(this->get_implementation(), protocol, native_socket, ec); } /// Determine whether the socket is open. bool is_open() const { - return this->service.is_open(this->implementation); + return this->get_service().is_open(this->get_implementation()); } /// Close the socket. @@ -253,7 +297,8 @@ public: * or connect operations will be cancelled immediately, and will complete * with the boost::asio::error::operation_aborted error. * - * @throws boost::system::system_error Thrown on failure. + * @throws boost::system::system_error Thrown on failure. Note that, even if + * the function indicates an error, the underlying descriptor is closed. * * @note For portable behaviour with respect to graceful closure of a * connected socket, call shutdown() before closing the socket. @@ -261,8 +306,8 @@ public: void close() { boost::system::error_code ec; - this->service.close(this->implementation, ec); - boost::asio::detail::throw_error(ec); + this->get_service().close(this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "close"); } /// Close the socket. @@ -271,7 +316,8 @@ public: * or connect operations will be cancelled immediately, and will complete * with the boost::asio::error::operation_aborted error. * - * @param ec Set to indicate what error occurred, if any. + * @param ec Set to indicate what error occurred, if any. Note that, even if + * the function indicates an error, the underlying descriptor is closed. * * @par Example * @code @@ -290,7 +336,18 @@ public: */ boost::system::error_code close(boost::system::error_code& ec) { - return this->service.close(this->implementation, ec); + return this->get_service().close(this->get_implementation(), ec); + } + + /// (Deprecated: Use native_handle().) Get the native socket representation. + /** + * This function may be used to obtain the underlying representation of the + * socket. This is intended to allow access to native socket functionality + * that is not otherwise provided. + */ + native_type native() + { + return this->get_service().native_handle(this->get_implementation()); } /// Get the native socket representation. @@ -299,9 +356,9 @@ public: * socket. This is intended to allow access to native socket functionality * that is not otherwise provided. */ - native_type native() + native_handle_type native_handle() { - return this->service.native(this->implementation); + return this->get_service().native_handle(this->get_implementation()); } /// Cancel all asynchronous operations associated with the socket. @@ -348,8 +405,8 @@ public: void cancel() { boost::system::error_code ec; - this->service.cancel(this->implementation, ec); - boost::asio::detail::throw_error(ec); + this->get_service().cancel(this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "cancel"); } /// Cancel all asynchronous operations associated with the socket. @@ -395,7 +452,7 @@ public: #endif boost::system::error_code cancel(boost::system::error_code& ec) { - return this->service.cancel(this->implementation, ec); + return this->get_service().cancel(this->get_implementation(), ec); } /// Determine whether the socket is at the out-of-band data mark. @@ -411,8 +468,8 @@ public: bool at_mark() const { boost::system::error_code ec; - bool b = this->service.at_mark(this->implementation, ec); - boost::asio::detail::throw_error(ec); + bool b = this->get_service().at_mark(this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "at_mark"); return b; } @@ -428,7 +485,7 @@ public: */ bool at_mark(boost::system::error_code& ec) const { - return this->service.at_mark(this->implementation, ec); + return this->get_service().at_mark(this->get_implementation(), ec); } /// Determine the number of bytes available for reading. @@ -444,8 +501,9 @@ public: std::size_t available() const { boost::system::error_code ec; - std::size_t s = this->service.available(this->implementation, ec); - boost::asio::detail::throw_error(ec); + std::size_t s = this->get_service().available( + this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "available"); return s; } @@ -461,7 +519,7 @@ public: */ std::size_t available(boost::system::error_code& ec) const { - return this->service.available(this->implementation, ec); + return this->get_service().available(this->get_implementation(), ec); } /// Bind the socket to the given local endpoint. @@ -485,8 +543,8 @@ public: void bind(const endpoint_type& endpoint) { boost::system::error_code ec; - this->service.bind(this->implementation, endpoint, ec); - boost::asio::detail::throw_error(ec); + this->get_service().bind(this->get_implementation(), endpoint, ec); + boost::asio::detail::throw_error(ec, "bind"); } /// Bind the socket to the given local endpoint. @@ -515,7 +573,7 @@ public: boost::system::error_code bind(const endpoint_type& endpoint, boost::system::error_code& ec) { - return this->service.bind(this->implementation, endpoint, ec); + return this->get_service().bind(this->get_implementation(), endpoint, ec); } /// Connect the socket to the specified endpoint. @@ -546,11 +604,12 @@ public: boost::system::error_code ec; if (!is_open()) { - this->service.open(this->implementation, peer_endpoint.protocol(), ec); - boost::asio::detail::throw_error(ec); + this->get_service().open(this->get_implementation(), + peer_endpoint.protocol(), ec); + boost::asio::detail::throw_error(ec, "connect"); } - this->service.connect(this->implementation, peer_endpoint, ec); - boost::asio::detail::throw_error(ec); + this->get_service().connect(this->get_implementation(), peer_endpoint, ec); + boost::asio::detail::throw_error(ec, "connect"); } /// Connect the socket to the specified endpoint. @@ -586,14 +645,15 @@ public: { if (!is_open()) { - if (this->service.open(this->implementation, + if (this->get_service().open(this->get_implementation(), peer_endpoint.protocol(), ec)) { return ec; } } - return this->service.connect(this->implementation, peer_endpoint, ec); + return this->get_service().connect( + this->get_implementation(), peer_endpoint, ec); } /// Start an asynchronous connect. @@ -638,21 +698,28 @@ public: * @endcode */ template - void async_connect(const endpoint_type& peer_endpoint, ConnectHandler handler) + void async_connect(const endpoint_type& peer_endpoint, + BOOST_ASIO_MOVE_ARG(ConnectHandler) handler) { + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ConnectHandler. + BOOST_ASIO_CONNECT_HANDLER_CHECK(ConnectHandler, handler) type_check; + if (!is_open()) { boost::system::error_code ec; - if (this->service.open(this->implementation, - peer_endpoint.protocol(), ec)) + const protocol_type protocol = peer_endpoint.protocol(); + if (this->get_service().open(this->get_implementation(), protocol, ec)) { this->get_io_service().post( - boost::asio::detail::bind_handler(handler, ec)); + boost::asio::detail::bind_handler( + BOOST_ASIO_MOVE_CAST(ConnectHandler)(handler), ec)); return; } } - this->service.async_connect(this->implementation, peer_endpoint, handler); + this->get_service().async_connect(this->get_implementation(), + peer_endpoint, BOOST_ASIO_MOVE_CAST(ConnectHandler)(handler)); } /// Set an option on the socket. @@ -693,8 +760,8 @@ public: void set_option(const SettableSocketOption& option) { boost::system::error_code ec; - this->service.set_option(this->implementation, option, ec); - boost::asio::detail::throw_error(ec); + this->get_service().set_option(this->get_implementation(), option, ec); + boost::asio::detail::throw_error(ec, "set_option"); } /// Set an option on the socket. @@ -740,7 +807,8 @@ public: boost::system::error_code set_option(const SettableSocketOption& option, boost::system::error_code& ec) { - return this->service.set_option(this->implementation, option, ec); + return this->get_service().set_option( + this->get_implementation(), option, ec); } /// Get an option from the socket. @@ -782,8 +850,8 @@ public: void get_option(GettableSocketOption& option) const { boost::system::error_code ec; - this->service.get_option(this->implementation, option, ec); - boost::asio::detail::throw_error(ec); + this->get_service().get_option(this->get_implementation(), option, ec); + boost::asio::detail::throw_error(ec, "get_option"); } /// Get an option from the socket. @@ -830,7 +898,8 @@ public: boost::system::error_code get_option(GettableSocketOption& option, boost::system::error_code& ec) const { - return this->service.get_option(this->implementation, option, ec); + return this->get_service().get_option( + this->get_implementation(), option, ec); } /// Perform an IO control command on the socket. @@ -859,8 +928,8 @@ public: void io_control(IoControlCommand& command) { boost::system::error_code ec; - this->service.io_control(this->implementation, command, ec); - boost::asio::detail::throw_error(ec); + this->get_service().io_control(this->get_implementation(), command, ec); + boost::asio::detail::throw_error(ec, "io_control"); } /// Perform an IO control command on the socket. @@ -894,7 +963,338 @@ public: boost::system::error_code io_control(IoControlCommand& command, boost::system::error_code& ec) { - return this->service.io_control(this->implementation, command, ec); + return this->get_service().io_control( + this->get_implementation(), command, ec); + } + + /// Gets the non-blocking mode of the socket. + /** + * @returns @c true if the socket's synchronous operations will fail with + * boost::asio::error::would_block if they are unable to perform the requested + * operation immediately. If @c false, synchronous operations will block + * until complete. + * + * @note The non-blocking mode has no effect on the behaviour of asynchronous + * operations. Asynchronous operations will never fail with the error + * boost::asio::error::would_block. + */ + bool non_blocking() const + { + return this->get_service().non_blocking(this->get_implementation()); + } + + /// Sets the non-blocking mode of the socket. + /** + * @param mode If @c true, the socket's synchronous operations will fail with + * boost::asio::error::would_block if they are unable to perform the requested + * operation immediately. If @c false, synchronous operations will block + * until complete. + * + * @throws boost::system::system_error Thrown on failure. + * + * @note The non-blocking mode has no effect on the behaviour of asynchronous + * operations. Asynchronous operations will never fail with the error + * boost::asio::error::would_block. + */ + void non_blocking(bool mode) + { + boost::system::error_code ec; + this->get_service().non_blocking(this->get_implementation(), mode, ec); + boost::asio::detail::throw_error(ec, "non_blocking"); + } + + /// Sets the non-blocking mode of the socket. + /** + * @param mode If @c true, the socket's synchronous operations will fail with + * boost::asio::error::would_block if they are unable to perform the requested + * operation immediately. If @c false, synchronous operations will block + * until complete. + * + * @param ec Set to indicate what error occurred, if any. + * + * @note The non-blocking mode has no effect on the behaviour of asynchronous + * operations. Asynchronous operations will never fail with the error + * boost::asio::error::would_block. + */ + boost::system::error_code non_blocking( + bool mode, boost::system::error_code& ec) + { + return this->get_service().non_blocking( + this->get_implementation(), mode, ec); + } + + /// Gets the non-blocking mode of the native socket implementation. + /** + * This function is used to retrieve the non-blocking mode of the underlying + * native socket. This mode has no effect on the behaviour of the socket + * object's synchronous operations. + * + * @returns @c true if the underlying socket is in non-blocking mode and + * direct system calls may fail with boost::asio::error::would_block (or the + * equivalent system error). + * + * @note The current non-blocking mode is cached by the socket object. + * Consequently, the return value may be incorrect if the non-blocking mode + * was set directly on the native socket. + * + * @par Example + * This function is intended to allow the encapsulation of arbitrary + * non-blocking system calls as asynchronous operations, in a way that is + * transparent to the user of the socket object. The following example + * illustrates how Linux's @c sendfile system call might be encapsulated: + * @code template + * struct sendfile_op + * { + * tcp::socket& sock_; + * int fd_; + * Handler handler_; + * off_t offset_; + * std::size_t total_bytes_transferred_; + * + * // Function call operator meeting WriteHandler requirements. + * // Used as the handler for the async_write_some operation. + * void operator()(boost::system::error_code ec, std::size_t) + * { + * // Put the underlying socket into non-blocking mode. + * if (!ec) + * if (!sock_.native_non_blocking()) + * sock_.native_non_blocking(true, ec); + * + * if (!ec) + * { + * for (;;) + * { + * // Try the system call. + * errno = 0; + * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536); + * ec = boost::system::error_code(n < 0 ? errno : 0, + * boost::asio::error::get_system_category()); + * total_bytes_transferred_ += ec ? 0 : n; + * + * // Retry operation immediately if interrupted by signal. + * if (ec == boost::asio::error::interrupted) + * continue; + * + * // Check if we need to run the operation again. + * if (ec == boost::asio::error::would_block + * || ec == boost::asio::error::try_again) + * { + * // We have to wait for the socket to become ready again. + * sock_.async_write_some(boost::asio::null_buffers(), *this); + * return; + * } + * + * if (ec || n == 0) + * { + * // An error occurred, or we have reached the end of the file. + * // Either way we must exit the loop so we can call the handler. + * break; + * } + * + * // Loop around to try calling sendfile again. + * } + * } + * + * // Pass result back to user's handler. + * handler_(ec, total_bytes_transferred_); + * } + * }; + * + * template + * void async_sendfile(tcp::socket& sock, int fd, Handler h) + * { + * sendfile_op op = { sock, fd, h, 0, 0 }; + * sock.async_write_some(boost::asio::null_buffers(), op); + * } @endcode + */ + bool native_non_blocking() const + { + return this->get_service().native_non_blocking(this->get_implementation()); + } + + /// Sets the non-blocking mode of the native socket implementation. + /** + * This function is used to modify the non-blocking mode of the underlying + * native socket. It has no effect on the behaviour of the socket object's + * synchronous operations. + * + * @param mode If @c true, the underlying socket is put into non-blocking + * mode and direct system calls may fail with boost::asio::error::would_block + * (or the equivalent system error). + * + * @throws boost::system::system_error Thrown on failure. If the @c mode is + * @c false, but the current value of @c non_blocking() is @c true, this + * function fails with boost::asio::error::invalid_argument, as the + * combination does not make sense. + * + * @par Example + * This function is intended to allow the encapsulation of arbitrary + * non-blocking system calls as asynchronous operations, in a way that is + * transparent to the user of the socket object. The following example + * illustrates how Linux's @c sendfile system call might be encapsulated: + * @code template + * struct sendfile_op + * { + * tcp::socket& sock_; + * int fd_; + * Handler handler_; + * off_t offset_; + * std::size_t total_bytes_transferred_; + * + * // Function call operator meeting WriteHandler requirements. + * // Used as the handler for the async_write_some operation. + * void operator()(boost::system::error_code ec, std::size_t) + * { + * // Put the underlying socket into non-blocking mode. + * if (!ec) + * if (!sock_.native_non_blocking()) + * sock_.native_non_blocking(true, ec); + * + * if (!ec) + * { + * for (;;) + * { + * // Try the system call. + * errno = 0; + * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536); + * ec = boost::system::error_code(n < 0 ? errno : 0, + * boost::asio::error::get_system_category()); + * total_bytes_transferred_ += ec ? 0 : n; + * + * // Retry operation immediately if interrupted by signal. + * if (ec == boost::asio::error::interrupted) + * continue; + * + * // Check if we need to run the operation again. + * if (ec == boost::asio::error::would_block + * || ec == boost::asio::error::try_again) + * { + * // We have to wait for the socket to become ready again. + * sock_.async_write_some(boost::asio::null_buffers(), *this); + * return; + * } + * + * if (ec || n == 0) + * { + * // An error occurred, or we have reached the end of the file. + * // Either way we must exit the loop so we can call the handler. + * break; + * } + * + * // Loop around to try calling sendfile again. + * } + * } + * + * // Pass result back to user's handler. + * handler_(ec, total_bytes_transferred_); + * } + * }; + * + * template + * void async_sendfile(tcp::socket& sock, int fd, Handler h) + * { + * sendfile_op op = { sock, fd, h, 0, 0 }; + * sock.async_write_some(boost::asio::null_buffers(), op); + * } @endcode + */ + void native_non_blocking(bool mode) + { + boost::system::error_code ec; + this->get_service().native_non_blocking( + this->get_implementation(), mode, ec); + boost::asio::detail::throw_error(ec, "native_non_blocking"); + } + + /// Sets the non-blocking mode of the native socket implementation. + /** + * This function is used to modify the non-blocking mode of the underlying + * native socket. It has no effect on the behaviour of the socket object's + * synchronous operations. + * + * @param mode If @c true, the underlying socket is put into non-blocking + * mode and direct system calls may fail with boost::asio::error::would_block + * (or the equivalent system error). + * + * @param ec Set to indicate what error occurred, if any. If the @c mode is + * @c false, but the current value of @c non_blocking() is @c true, this + * function fails with boost::asio::error::invalid_argument, as the + * combination does not make sense. + * + * @par Example + * This function is intended to allow the encapsulation of arbitrary + * non-blocking system calls as asynchronous operations, in a way that is + * transparent to the user of the socket object. The following example + * illustrates how Linux's @c sendfile system call might be encapsulated: + * @code template + * struct sendfile_op + * { + * tcp::socket& sock_; + * int fd_; + * Handler handler_; + * off_t offset_; + * std::size_t total_bytes_transferred_; + * + * // Function call operator meeting WriteHandler requirements. + * // Used as the handler for the async_write_some operation. + * void operator()(boost::system::error_code ec, std::size_t) + * { + * // Put the underlying socket into non-blocking mode. + * if (!ec) + * if (!sock_.native_non_blocking()) + * sock_.native_non_blocking(true, ec); + * + * if (!ec) + * { + * for (;;) + * { + * // Try the system call. + * errno = 0; + * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536); + * ec = boost::system::error_code(n < 0 ? errno : 0, + * boost::asio::error::get_system_category()); + * total_bytes_transferred_ += ec ? 0 : n; + * + * // Retry operation immediately if interrupted by signal. + * if (ec == boost::asio::error::interrupted) + * continue; + * + * // Check if we need to run the operation again. + * if (ec == boost::asio::error::would_block + * || ec == boost::asio::error::try_again) + * { + * // We have to wait for the socket to become ready again. + * sock_.async_write_some(boost::asio::null_buffers(), *this); + * return; + * } + * + * if (ec || n == 0) + * { + * // An error occurred, or we have reached the end of the file. + * // Either way we must exit the loop so we can call the handler. + * break; + * } + * + * // Loop around to try calling sendfile again. + * } + * } + * + * // Pass result back to user's handler. + * handler_(ec, total_bytes_transferred_); + * } + * }; + * + * template + * void async_sendfile(tcp::socket& sock, int fd, Handler h) + * { + * sendfile_op op = { sock, fd, h, 0, 0 }; + * sock.async_write_some(boost::asio::null_buffers(), op); + * } @endcode + */ + boost::system::error_code native_non_blocking( + bool mode, boost::system::error_code& ec) + { + return this->get_service().native_non_blocking( + this->get_implementation(), mode, ec); } /// Get the local endpoint of the socket. @@ -915,8 +1315,9 @@ public: endpoint_type local_endpoint() const { boost::system::error_code ec; - endpoint_type ep = this->service.local_endpoint(this->implementation, ec); - boost::asio::detail::throw_error(ec); + endpoint_type ep = this->get_service().local_endpoint( + this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "local_endpoint"); return ep; } @@ -943,7 +1344,7 @@ public: */ endpoint_type local_endpoint(boost::system::error_code& ec) const { - return this->service.local_endpoint(this->implementation, ec); + return this->get_service().local_endpoint(this->get_implementation(), ec); } /// Get the remote endpoint of the socket. @@ -964,8 +1365,9 @@ public: endpoint_type remote_endpoint() const { boost::system::error_code ec; - endpoint_type ep = this->service.remote_endpoint(this->implementation, ec); - boost::asio::detail::throw_error(ec); + endpoint_type ep = this->get_service().remote_endpoint( + this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "remote_endpoint"); return ep; } @@ -992,7 +1394,7 @@ public: */ endpoint_type remote_endpoint(boost::system::error_code& ec) const { - return this->service.remote_endpoint(this->implementation, ec); + return this->get_service().remote_endpoint(this->get_implementation(), ec); } /// Disable sends or receives on the socket. @@ -1015,8 +1417,8 @@ public: void shutdown(shutdown_type what) { boost::system::error_code ec; - this->service.shutdown(this->implementation, what, ec); - boost::asio::detail::throw_error(ec); + this->get_service().shutdown(this->get_implementation(), what, ec); + boost::asio::detail::throw_error(ec, "shutdown"); } /// Disable sends or receives on the socket. @@ -1044,7 +1446,7 @@ public: boost::system::error_code shutdown(shutdown_type what, boost::system::error_code& ec) { - return this->service.shutdown(this->implementation, what, ec); + return this->get_service().shutdown(this->get_implementation(), what, ec); } protected: diff --git a/3party/boost/boost/asio/basic_socket_acceptor.hpp b/3party/boost/boost/asio/basic_socket_acceptor.hpp index a877bc3a5e..3203f59994 100644 --- a/3party/boost/boost/asio/basic_socket_acceptor.hpp +++ b/3party/boost/boost/asio/basic_socket_acceptor.hpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -55,8 +56,12 @@ class basic_socket_acceptor public socket_base { public: + /// (Deprecated: Use native_handle_type.) The native representation of an + /// acceptor. + typedef typename SocketAcceptorService::native_handle_type native_type; + /// The native representation of an acceptor. - typedef typename SocketAcceptorService::native_type native_type; + typedef typename SocketAcceptorService::native_handle_type native_handle_type; /// The protocol type. typedef Protocol protocol_type; @@ -96,8 +101,8 @@ public: : basic_io_object(io_service) { boost::system::error_code ec; - this->service.open(this->implementation, protocol, ec); - boost::asio::detail::throw_error(ec); + this->get_service().open(this->get_implementation(), protocol, ec); + boost::asio::detail::throw_error(ec, "open"); } /// Construct an acceptor opened on the given endpoint. @@ -132,19 +137,20 @@ public: : basic_io_object(io_service) { boost::system::error_code ec; - this->service.open(this->implementation, endpoint.protocol(), ec); - boost::asio::detail::throw_error(ec); + const protocol_type protocol = endpoint.protocol(); + this->get_service().open(this->get_implementation(), protocol, ec); + boost::asio::detail::throw_error(ec, "open"); if (reuse_addr) { - this->service.set_option(this->implementation, + this->get_service().set_option(this->get_implementation(), socket_base::reuse_address(true), ec); - boost::asio::detail::throw_error(ec); + boost::asio::detail::throw_error(ec, "set_option"); } - this->service.bind(this->implementation, endpoint, ec); - boost::asio::detail::throw_error(ec); - this->service.listen(this->implementation, + this->get_service().bind(this->get_implementation(), endpoint, ec); + boost::asio::detail::throw_error(ec, "bind"); + this->get_service().listen(this->get_implementation(), socket_base::max_connections, ec); - boost::asio::detail::throw_error(ec); + boost::asio::detail::throw_error(ec, "listen"); } /// Construct a basic_socket_acceptor on an existing native acceptor. @@ -163,14 +169,50 @@ public: * @throws boost::system::system_error Thrown on failure. */ basic_socket_acceptor(boost::asio::io_service& io_service, - const protocol_type& protocol, const native_type& native_acceptor) + const protocol_type& protocol, const native_handle_type& native_acceptor) : basic_io_object(io_service) { boost::system::error_code ec; - this->service.assign(this->implementation, protocol, native_acceptor, ec); - boost::asio::detail::throw_error(ec); + this->get_service().assign(this->get_implementation(), + protocol, native_acceptor, ec); + boost::asio::detail::throw_error(ec, "assign"); } +#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Move-construct a basic_socket_acceptor from another. + /** + * This constructor moves an acceptor from one object to another. + * + * @param other The other basic_socket_acceptor object from which the move + * will occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_socket_acceptor(io_service&) constructor. + */ + basic_socket_acceptor(basic_socket_acceptor&& other) + : basic_io_object( + BOOST_ASIO_MOVE_CAST(basic_socket_acceptor)(other)) + { + } + + /// Move-assign a basic_socket_acceptor from another. + /** + * This assignment operator moves an acceptor from one object to another. + * + * @param other The other basic_socket_acceptor object from which the move + * will occur. + * + * @note Following the move, the moved-from object is in the same state as if + * constructed using the @c basic_socket_acceptor(io_service&) constructor. + */ + basic_socket_acceptor& operator=(basic_socket_acceptor&& other) + { + basic_io_object::operator=( + BOOST_ASIO_MOVE_CAST(basic_socket_acceptor)(other)); + return *this; + } +#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + /// Open the acceptor using the specified protocol. /** * This function opens the socket acceptor so that it will use the specified @@ -189,8 +231,8 @@ public: void open(const protocol_type& protocol = protocol_type()) { boost::system::error_code ec; - this->service.open(this->implementation, protocol, ec); - boost::asio::detail::throw_error(ec); + this->get_service().open(this->get_implementation(), protocol, ec); + boost::asio::detail::throw_error(ec, "open"); } /// Open the acceptor using the specified protocol. @@ -216,7 +258,7 @@ public: boost::system::error_code open(const protocol_type& protocol, boost::system::error_code& ec) { - return this->service.open(this->implementation, protocol, ec); + return this->get_service().open(this->get_implementation(), protocol, ec); } /// Assigns an existing native acceptor to the acceptor. @@ -229,11 +271,13 @@ public: * * @throws boost::system::system_error Thrown on failure. */ - void assign(const protocol_type& protocol, const native_type& native_acceptor) + void assign(const protocol_type& protocol, + const native_handle_type& native_acceptor) { boost::system::error_code ec; - this->service.assign(this->implementation, protocol, native_acceptor, ec); - boost::asio::detail::throw_error(ec); + this->get_service().assign(this->get_implementation(), + protocol, native_acceptor, ec); + boost::asio::detail::throw_error(ec, "assign"); } /// Assigns an existing native acceptor to the acceptor. @@ -247,16 +291,16 @@ public: * @param ec Set to indicate what error occurred, if any. */ boost::system::error_code assign(const protocol_type& protocol, - const native_type& native_acceptor, boost::system::error_code& ec) + const native_handle_type& native_acceptor, boost::system::error_code& ec) { - return this->service.assign(this->implementation, + return this->get_service().assign(this->get_implementation(), protocol, native_acceptor, ec); } /// Determine whether the acceptor is open. bool is_open() const { - return this->service.is_open(this->implementation); + return this->get_service().is_open(this->get_implementation()); } /// Bind the acceptor to the given local endpoint. @@ -279,8 +323,8 @@ public: void bind(const endpoint_type& endpoint) { boost::system::error_code ec; - this->service.bind(this->implementation, endpoint, ec); - boost::asio::detail::throw_error(ec); + this->get_service().bind(this->get_implementation(), endpoint, ec); + boost::asio::detail::throw_error(ec, "bind"); } /// Bind the acceptor to the given local endpoint. @@ -308,7 +352,7 @@ public: boost::system::error_code bind(const endpoint_type& endpoint, boost::system::error_code& ec) { - return this->service.bind(this->implementation, endpoint, ec); + return this->get_service().bind(this->get_implementation(), endpoint, ec); } /// Place the acceptor into the state where it will listen for new @@ -324,8 +368,8 @@ public: void listen(int backlog = socket_base::max_connections) { boost::system::error_code ec; - this->service.listen(this->implementation, backlog, ec); - boost::asio::detail::throw_error(ec); + this->get_service().listen(this->get_implementation(), backlog, ec); + boost::asio::detail::throw_error(ec, "listen"); } /// Place the acceptor into the state where it will listen for new @@ -352,7 +396,7 @@ public: */ boost::system::error_code listen(int backlog, boost::system::error_code& ec) { - return this->service.listen(this->implementation, backlog, ec); + return this->get_service().listen(this->get_implementation(), backlog, ec); } /// Close the acceptor. @@ -368,8 +412,8 @@ public: void close() { boost::system::error_code ec; - this->service.close(this->implementation, ec); - boost::asio::detail::throw_error(ec); + this->get_service().close(this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "close"); } /// Close the acceptor. @@ -396,7 +440,18 @@ public: */ boost::system::error_code close(boost::system::error_code& ec) { - return this->service.close(this->implementation, ec); + return this->get_service().close(this->get_implementation(), ec); + } + + /// (Deprecated: Use native_handle().) Get the native acceptor representation. + /** + * This function may be used to obtain the underlying representation of the + * acceptor. This is intended to allow access to native acceptor functionality + * that is not otherwise provided. + */ + native_type native() + { + return this->get_service().native_handle(this->get_implementation()); } /// Get the native acceptor representation. @@ -405,9 +460,9 @@ public: * acceptor. This is intended to allow access to native acceptor functionality * that is not otherwise provided. */ - native_type native() + native_handle_type native_handle() { - return this->service.native(this->implementation); + return this->get_service().native_handle(this->get_implementation()); } /// Cancel all asynchronous operations associated with the acceptor. @@ -421,8 +476,8 @@ public: void cancel() { boost::system::error_code ec; - this->service.cancel(this->implementation, ec); - boost::asio::detail::throw_error(ec); + this->get_service().cancel(this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "cancel"); } /// Cancel all asynchronous operations associated with the acceptor. @@ -435,7 +490,7 @@ public: */ boost::system::error_code cancel(boost::system::error_code& ec) { - return this->service.cancel(this->implementation, ec); + return this->get_service().cancel(this->get_implementation(), ec); } /// Set an option on the acceptor. @@ -463,8 +518,8 @@ public: void set_option(const SettableSocketOption& option) { boost::system::error_code ec; - this->service.set_option(this->implementation, option, ec); - boost::asio::detail::throw_error(ec); + this->get_service().set_option(this->get_implementation(), option, ec); + boost::asio::detail::throw_error(ec, "set_option"); } /// Set an option on the acceptor. @@ -497,7 +552,8 @@ public: boost::system::error_code set_option(const SettableSocketOption& option, boost::system::error_code& ec) { - return this->service.set_option(this->implementation, option, ec); + return this->get_service().set_option( + this->get_implementation(), option, ec); } /// Get an option from the acceptor. @@ -526,8 +582,8 @@ public: void get_option(GettableSocketOption& option) { boost::system::error_code ec; - this->service.get_option(this->implementation, option, ec); - boost::asio::detail::throw_error(ec); + this->get_service().get_option(this->get_implementation(), option, ec); + boost::asio::detail::throw_error(ec, "get_option"); } /// Get an option from the acceptor. @@ -561,7 +617,189 @@ public: boost::system::error_code get_option(GettableSocketOption& option, boost::system::error_code& ec) { - return this->service.get_option(this->implementation, option, ec); + return this->get_service().get_option( + this->get_implementation(), option, ec); + } + + /// Perform an IO control command on the acceptor. + /** + * This function is used to execute an IO control command on the acceptor. + * + * @param command The IO control command to be performed on the acceptor. + * + * @throws boost::system::system_error Thrown on failure. + * + * @sa IoControlCommand @n + * boost::asio::socket_base::non_blocking_io + * + * @par Example + * Getting the number of bytes ready to read: + * @code + * boost::asio::ip::tcp::acceptor acceptor(io_service); + * ... + * boost::asio::ip::tcp::acceptor::non_blocking_io command(true); + * socket.io_control(command); + * @endcode + */ + template + void io_control(IoControlCommand& command) + { + boost::system::error_code ec; + this->get_service().io_control(this->get_implementation(), command, ec); + boost::asio::detail::throw_error(ec, "io_control"); + } + + /// Perform an IO control command on the acceptor. + /** + * This function is used to execute an IO control command on the acceptor. + * + * @param command The IO control command to be performed on the acceptor. + * + * @param ec Set to indicate what error occurred, if any. + * + * @sa IoControlCommand @n + * boost::asio::socket_base::non_blocking_io + * + * @par Example + * Getting the number of bytes ready to read: + * @code + * boost::asio::ip::tcp::acceptor acceptor(io_service); + * ... + * boost::asio::ip::tcp::acceptor::non_blocking_io command(true); + * boost::system::error_code ec; + * socket.io_control(command, ec); + * if (ec) + * { + * // An error occurred. + * } + * @endcode + */ + template + boost::system::error_code io_control(IoControlCommand& command, + boost::system::error_code& ec) + { + return this->get_service().io_control( + this->get_implementation(), command, ec); + } + + /// Gets the non-blocking mode of the acceptor. + /** + * @returns @c true if the acceptor's synchronous operations will fail with + * boost::asio::error::would_block if they are unable to perform the requested + * operation immediately. If @c false, synchronous operations will block + * until complete. + * + * @note The non-blocking mode has no effect on the behaviour of asynchronous + * operations. Asynchronous operations will never fail with the error + * boost::asio::error::would_block. + */ + bool non_blocking() const + { + return this->get_service().non_blocking(this->get_implementation()); + } + + /// Sets the non-blocking mode of the acceptor. + /** + * @param mode If @c true, the acceptor's synchronous operations will fail + * with boost::asio::error::would_block if they are unable to perform the + * requested operation immediately. If @c false, synchronous operations will + * block until complete. + * + * @throws boost::system::system_error Thrown on failure. + * + * @note The non-blocking mode has no effect on the behaviour of asynchronous + * operations. Asynchronous operations will never fail with the error + * boost::asio::error::would_block. + */ + void non_blocking(bool mode) + { + boost::system::error_code ec; + this->get_service().non_blocking(this->get_implementation(), mode, ec); + boost::asio::detail::throw_error(ec, "non_blocking"); + } + + /// Sets the non-blocking mode of the acceptor. + /** + * @param mode If @c true, the acceptor's synchronous operations will fail + * with boost::asio::error::would_block if they are unable to perform the + * requested operation immediately. If @c false, synchronous operations will + * block until complete. + * + * @param ec Set to indicate what error occurred, if any. + * + * @note The non-blocking mode has no effect on the behaviour of asynchronous + * operations. Asynchronous operations will never fail with the error + * boost::asio::error::would_block. + */ + boost::system::error_code non_blocking( + bool mode, boost::system::error_code& ec) + { + return this->get_service().non_blocking( + this->get_implementation(), mode, ec); + } + + /// Gets the non-blocking mode of the native acceptor implementation. + /** + * This function is used to retrieve the non-blocking mode of the underlying + * native acceptor. This mode has no effect on the behaviour of the acceptor + * object's synchronous operations. + * + * @returns @c true if the underlying acceptor is in non-blocking mode and + * direct system calls may fail with boost::asio::error::would_block (or the + * equivalent system error). + * + * @note The current non-blocking mode is cached by the acceptor object. + * Consequently, the return value may be incorrect if the non-blocking mode + * was set directly on the native acceptor. + */ + bool native_non_blocking() const + { + return this->get_service().native_non_blocking(this->get_implementation()); + } + + /// Sets the non-blocking mode of the native acceptor implementation. + /** + * This function is used to modify the non-blocking mode of the underlying + * native acceptor. It has no effect on the behaviour of the acceptor object's + * synchronous operations. + * + * @param mode If @c true, the underlying acceptor is put into non-blocking + * mode and direct system calls may fail with boost::asio::error::would_block + * (or the equivalent system error). + * + * @throws boost::system::system_error Thrown on failure. If the @c mode is + * @c false, but the current value of @c non_blocking() is @c true, this + * function fails with boost::asio::error::invalid_argument, as the + * combination does not make sense. + */ + void native_non_blocking(bool mode) + { + boost::system::error_code ec; + this->get_service().native_non_blocking( + this->get_implementation(), mode, ec); + boost::asio::detail::throw_error(ec, "native_non_blocking"); + } + + /// Sets the non-blocking mode of the native acceptor implementation. + /** + * This function is used to modify the non-blocking mode of the underlying + * native acceptor. It has no effect on the behaviour of the acceptor object's + * synchronous operations. + * + * @param mode If @c true, the underlying acceptor is put into non-blocking + * mode and direct system calls may fail with boost::asio::error::would_block + * (or the equivalent system error). + * + * @param ec Set to indicate what error occurred, if any. If the @c mode is + * @c false, but the current value of @c non_blocking() is @c true, this + * function fails with boost::asio::error::invalid_argument, as the + * combination does not make sense. + */ + boost::system::error_code native_non_blocking( + bool mode, boost::system::error_code& ec) + { + return this->get_service().native_non_blocking( + this->get_implementation(), mode, ec); } /// Get the local endpoint of the acceptor. @@ -582,8 +820,9 @@ public: endpoint_type local_endpoint() const { boost::system::error_code ec; - endpoint_type ep = this->service.local_endpoint(this->implementation, ec); - boost::asio::detail::throw_error(ec); + endpoint_type ep = this->get_service().local_endpoint( + this->get_implementation(), ec); + boost::asio::detail::throw_error(ec, "local_endpoint"); return ep; } @@ -611,7 +850,7 @@ public: */ endpoint_type local_endpoint(boost::system::error_code& ec) const { - return this->service.local_endpoint(this->implementation, ec); + return this->get_service().local_endpoint(this->get_implementation(), ec); } /// Accept a new connection. @@ -636,8 +875,8 @@ public: void accept(basic_socket& peer) { boost::system::error_code ec; - this->service.accept(this->implementation, peer, 0, ec); - boost::asio::detail::throw_error(ec); + this->get_service().accept(this->get_implementation(), peer, 0, ec); + boost::asio::detail::throw_error(ec, "accept"); } /// Accept a new connection. @@ -668,7 +907,7 @@ public: basic_socket& peer, boost::system::error_code& ec) { - return this->service.accept(this->implementation, peer, 0, ec); + return this->get_service().accept(this->get_implementation(), peer, 0, ec); } /// Start an asynchronous accept. @@ -711,9 +950,14 @@ public: */ template void async_accept(basic_socket& peer, - AcceptHandler handler) + BOOST_ASIO_MOVE_ARG(AcceptHandler) handler) { - this->service.async_accept(this->implementation, peer, 0, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a AcceptHandler. + BOOST_ASIO_ACCEPT_HANDLER_CHECK(AcceptHandler, handler) type_check; + + this->get_service().async_accept(this->get_implementation(), + peer, 0, BOOST_ASIO_MOVE_CAST(AcceptHandler)(handler)); } /// Accept a new connection and obtain the endpoint of the peer @@ -744,8 +988,9 @@ public: endpoint_type& peer_endpoint) { boost::system::error_code ec; - this->service.accept(this->implementation, peer, &peer_endpoint, ec); - boost::asio::detail::throw_error(ec); + this->get_service().accept(this->get_implementation(), + peer, &peer_endpoint, ec); + boost::asio::detail::throw_error(ec, "accept"); } /// Accept a new connection and obtain the endpoint of the peer @@ -781,7 +1026,8 @@ public: basic_socket& peer, endpoint_type& peer_endpoint, boost::system::error_code& ec) { - return this->service.accept(this->implementation, peer, &peer_endpoint, ec); + return this->get_service().accept( + this->get_implementation(), peer, &peer_endpoint, ec); } /// Start an asynchronous accept. @@ -812,10 +1058,14 @@ public: */ template void async_accept(basic_socket& peer, - endpoint_type& peer_endpoint, AcceptHandler handler) + endpoint_type& peer_endpoint, BOOST_ASIO_MOVE_ARG(AcceptHandler) handler) { - this->service.async_accept(this->implementation, - peer, &peer_endpoint, handler); + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a AcceptHandler. + BOOST_ASIO_ACCEPT_HANDLER_CHECK(AcceptHandler, handler) type_check; + + this->get_service().async_accept(this->get_implementation(), peer, + &peer_endpoint, BOOST_ASIO_MOVE_CAST(AcceptHandler)(handler)); } }; diff --git a/3party/boost/boost/asio/basic_socket_iostream.hpp b/3party/boost/boost/asio/basic_socket_iostream.hpp index 142f404c1a..4dcf20ec3c 100644 --- a/3party/boost/boost/asio/basic_socket_iostream.hpp +++ b/3party/boost/boost/asio/basic_socket_iostream.hpp @@ -19,34 +19,39 @@ #if !defined(BOOST_NO_IOSTREAM) -#include -#include -#include -#include #include #include #include -#if !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY) -#define BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY 5 -#endif // !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY) +#if !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) + +# include +# include +# include +# include + +# if !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY) +# define BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY 5 +# endif // !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY) // A macro that should expand to: // template // explicit basic_socket_iostream(T1 x1, ..., Tn xn) // : basic_iostream(&this->boost::base_from_member< -// basic_socket_streambuf >::member) +// basic_socket_streambuf >::member) // { // if (rdbuf()->connect(x1, ..., xn) == 0) // this->setstate(std::ios_base::failbit); // } // This macro should only persist within this file. -#define BOOST_ASIO_PRIVATE_CTR_DEF(z, n, data) \ +# define BOOST_ASIO_PRIVATE_CTR_DEF(z, n, data) \ template \ explicit basic_socket_iostream(BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \ : std::basic_iostream(&this->boost::base_from_member< \ - basic_socket_streambuf >::member) \ + basic_socket_streambuf >::member) \ { \ tie(this); \ if (rdbuf()->connect(BOOST_PP_ENUM_PARAMS(n, x)) == 0) \ @@ -63,7 +68,7 @@ // } // This macro should only persist within this file. -#define BOOST_ASIO_PRIVATE_CONNECT_DEF(z, n, data) \ +# define BOOST_ASIO_PRIVATE_CONNECT_DEF(z, n, data) \ template \ void connect(BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \ { \ @@ -72,6 +77,8 @@ } \ /**/ +#endif // !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) + #include namespace boost { @@ -79,17 +86,31 @@ namespace asio { /// Iostream interface for a socket. template > + typename StreamSocketService = stream_socket_service, + typename Time = boost::posix_time::ptime, + typename TimeTraits = boost::asio::time_traits